Многозадачность в 6502

Тема в разделе "WASM.ASSEMBLER", создана пользователем ajak, 7 дек 2007.

  1. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Философский у меня вопрос товариши. Сейчас кодю эмулятор 6502 - прикольно, нравится. А на днях так задумался. Ведь мы видим и динамическую картинку и музыку слышим и ещё жмём на клавиши. И всё это в реальном времени. Так я подумал -процик то старый. Как это всё реалиется в нём, подскажите плиз. Заранее благодарен.
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    А как же Вы в таком случае эмулятор пишите? (Что за магические числа 6502 не знаю)
     
  3. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    ajak
    Как и в любом другом -- программно. Чего сложного-то?

    А смысл в эмуляторе процессора? Если уж эмулировать, то ещё и периферию, т.е. всю машину целиком...
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    censored
    8-разрядный микропроцессор, применявшийся в первых компах Aplle (до появления Макинтоша). Позднее лёг в основу процессоров приставок Денди.
     
  5. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Всё верно, пишу эмулятор денди. Основной проц там 6502 - т.е. его модификация без коррекции после опреациями над двоично десятичными числами. Но всё таки можете подробнее про много задачность как это всё реализуется. Подскажите что почитать.Ну вот к примеру я вспомнил великую игру Ларри, так она шла на 286 а там тоже и графа и и музон через бипер да ещё мыша и клава. Но для меня главнее понять как тама звук и видео одновремеено. Подскажите может создать такую тему в другой ветки форума или на другом ресурсе.
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    ajak

    Если конкретно многозадачность -- то сохраняются и восстанавливаются регистры процессора. Кроме того, в классическом 6502 ещё и стек пересылать приходилось (там указатель стека всего 8-разрядный, поэтому стек имеет размер 256 байт и размещается в фиксированной области памяти -- если склероз не изменяет, в адресах 0100-01FF). В более поздних версиях вроде как ввели регистр базы стека, что позволяет размещать стек в любом месте памяти -- но насчёт этого достоверно не знаю, не сталкивался.

    Ну а в Денди наверняка никакой многозадачности нет. И ничего "одновременно" не происходит, всё идёт строго последовательно, но быстро, поэтому человеку и кажется, что одновременно.
     
  7. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Так я не понял под многозадачностью это и понимается, когда идёт всё настолько быстро что не успевыем всё заметить или есть ещё какая-то другая многозадачность.
     
  8. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    ajak

    Есть многозадачность, реализуемая операционными системами, например, Windows и Linux. В них одновременно выполняется несколько задач (программ), а операционная система быстро (десятки или сотни раз в секунду) переключает процессор с одной задачи на другую, из-за чего для человека создаётся иллюзия одновременного выполнения. Причём, следует заметить, все эти задачи понятия не имеют, что они выполняются не в гордом одиночестве: для них создаётся иллюзия, что они непрерывно владеют процессором.

    Ну а в традиционных игрушках, в том числе для Денди, никакой многозадачности нет: выполняется одна-единственная программа, которая и выполняет все требующиеся действия (чтение с клавиатуры и джойстиков, вывод на экран, проигрывание звука и т.п.).
     
  9. twgt

    twgt New Member

    Публикаций:
    0
    Регистрация:
    15 янв 2007
    Сообщения:
    1.494
    ajak
    Найди файл ap_dendy.rar, внутри будет "Архитектура и программирование Денди.doc"
    Там много молезного найдёшь.

    В аттаче исходники плеера музыки из бомбермэна, может пригодится.

    Блин, ненавижу gprs, файл выложил в dump.ru/files/n/n1808217239/
     
  10. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Проснись и пой - эмулей для дендей с сорцами как собак навалом к примеру www.zophar.net/nes.html

    Собственно как и гамес :)
     
  11. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    А знаеш есть такое понятие как интерес как разобраться в системе, или хобби?
    Не понимаю как это всё происходит он что по одной ноте играет потом рисует один пиксель или как? Всё ж должно быть синхронизировано. Подскажите что почитать. Ну вот к примеру вопрос.Есть у меня в паскале две процедуры
    Первая играет музыку
    Procedure Play_My_Sound();
    Вторая рисует картинку -ну пусть изменяющиеся предметы
    Procedure Draw_My_Primitiv();
    И тперь самый главный вопрос.Как сделать всё это в одно и тоже время ,ведь если пока не выполнится первая процедура вторая не начнётся выполняться.
     
  12. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    Ну играть постоянно ноту ненадо =) Отдал или синтезатору или таймеру что делать и нота играется, а ты этим временем можешь, до момента начала проигрывания следующей ноты, заняться чемнибудь полезным, клавиатуру опросить или спрайт перерисовать или коллизии объектов посчитать .... ну вобщем стоит расматривать игровую приставку не как 1 процессор который может в 1 момент времени выполнять 1 инструкцию но и как всю "обвязку" вокруг CPU ( таймеры, синтезаторы, сопроцессоры, контролеры etc. ) да и за время пока ты сможешь досчитать до 1 процессор сделает это оч.много раз
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Примерно так и есть.

    Ну так и получается идеальная синхронизация: всё происходит в определённые моменты времени, как задумано программистом.

    Несколько путей есть. Один указал dag -- пока соответствующая железяка исполняет одну ноту, можно заняться другой работой. Надо лишь "помнить" о том, что нужно вовремя вернуться и поменять воспроизводимую ноту.
     
  14. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    ajak
    Dos Помнишь ? я имею ввиду классический, монозадачный. И Игрушки там эти работали. Если мнемного подумать, но можно вспомнить, что для работы со звуковыми устройствами использовались прерывания, сами устройства могли юзать DMA, и как правило, времени это съедало не так много. А резиденты? Вспомнил? вся эта каша варилась за счет прерываний. Которые отбирали управления у одной кучки кода и передавали другой. Так вот, могу тебя обрадовать, в современных ОС ничего в этом плане не изменилось) В том же порядке используются теже самые инты)) Вот тебе и многозадачность.
     
  15. bugaga

    bugaga New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    361
    Ну канешна знаю...

    Кстати сам думал над подобным, когда собрал Sega эмуль Gens "невероятно, как это так! х86 эмулирует не тока два проца z80 и Motorola, а еще и микросхему синтезатора! и спрайтовый видеоускоритель... причем практически одновременно!"))))
     
  16. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Прикольно. Спасибо. Да я вспомнил чудесный и эротичный и просто классический квест Ларри с красивой графикой для того врмени и ведь тама и музон играл и мышака работала. И картинка рисовалась. А теперь товарищи приведети линки или кусок кода, или исходник на эту тему а то это всё на словах. Хочется вживую.
     
  17. dag

    dag New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2004
    Сообщения:
    446
    Жужль в помощь =) А ваще берешь какую нибудь игрушку от денди (или от Spectrum) и в IDA
     
  18. ajak

    ajak New Member

    Публикаций:
    0
    Регистрация:
    24 окт 2007
    Сообщения:
    463
    Не но всё же.
    А разве IDA держит 6502 набор инструкций?
     
  19. reverser

    reverser New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2004
    Сообщения:
    615
    Вполне. Где-то даже был загрузчик NES файлов, но что-то не найду.