mike.dld - толково придумал )))
andrew_programmer - например это работает так:
t = time_stamp();
z80_run(100);
t = time_stamp() - t;
sleep(CT - t); // пусть параметр в миллесекундах
где CT - сремя в мс выполнения 100 тактов на целевой машине (Z80)
только тут надо определится с камнем - зилоги выпускали все кому не лень и с разыми частотами.
и еще не надо забывать что выполнение (эмуляция) целевого кода, ввод данных (клавиатура/джойстик/etc) и отображение вирт. экрана должно обрабатыватся в разных потокам (хотя в отображение и ввод можно объединить) иначе это будет не эмулятор а пошаговая головная боль.
Эмулятор ZX Spectrum
частоту Z80 думаю взять стандартную - 3,5 МГц (хотя можно сделать в виде переменной и изменять, например, разгонять до 7 МГц, как это делали радиолюбители на настоящих спектрумах, или вообще не осуществлять задержки, тем самым можно быстрее прогонять некоторые циклы с вычислениями)
Проект жив!!!
После 2 переписываний с нуля ядра эмулятора проца Z80 решил взять готовое. Выбор остановился на ядре, которое написал Santiago Romero Iglesias.
За день напрограммировал эмулятор, который в принципе запускается и даже грузит файлы SNA. Но сделать ещё нужно очень много.
Кто-нибудь знает, какая клавиша (в матрице спектрума) соответствует BackSpace?
После 2 переписываний с нуля ядра эмулятора проца Z80 решил взять готовое. Выбор остановился на ядре, которое написал Santiago Romero Iglesias.
За день напрограммировал эмулятор, который в принципе запускается и даже грузит файлы SNA. Но сделать ещё нужно очень много.
Кто-нибудь знает, какая клавиша (в матрице спектрума) соответствует BackSpace?
- Attachments
-
-
e80-0.1.zip (25.11 KiB)Downloaded 615 times
-
Клавиша BackSpace (или по спектрумовски DELETE) набирается комбинацией CAPS/0 а значит соответственно по портам #FEFE и #EFFE выдает значение ???11110b, где ??? - биты остающиеся от состояния шины данных ( как правило 111 но если шина не стабильна то могут прыгать).
Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?
Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?
Заглянул на огонёк
Alver
Спасибо за подсказку по клавиатуре. Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?
Точно на засыпку! Ядро вроде поддерживает обработку этого регистра, но если честно я не пока не разбирался и сам его не обрабатывал.
P.S. Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.
Спасибо за подсказку по клавиатуре. Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?
Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?
Точно на засыпку! Ядро вроде поддерживает обработку этого регистра, но если честно я не пока не разбирался и сам его не обрабатывал.
P.S. Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.
Гдето глюк. А стирает где, в командной строке?Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?
А у меня вся не слишком большая инфа по тетрадкам, да на шкафу еще Profi+ с 512 kb RAM валяется, а диски поразмагнитились давно(жалко) .Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.
Вот тут есть много книжек, не знаю может чего пригодится. http://trd.speccy.cz.
Заглянул на огонёк
Хочется задать вопрос немножко не по теме. А какой платформы эмулятор написать проще: Денди или Спектрум?
Той, о которой больше знаешь.
Заглянул на огонёк
Alver прав. Но из опыта замечу что под NES видюха (PPU) сложнее Спектрумовского, и форматов образов на порядок больше.
Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ...
Заглянул на огонёк
ну это ты уже загнул! многие эмуляторы под винду такого не могут! не то что под Колибри. например, как я буду эмулировать AY-3-8910 без дров на звуковуху?!!!Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ...
- Attachments
-
-
e80-0.2.zip (25.92 KiB)
- Версия 0.2 :)
Downloaded 643 times
-
Я так и не разобрался с управлением...
Из хаоса в космос
Если запустить e80 без параметров, то стартует BASIC. После появления информации о прошивке нужно нажать Enter. Появляется командная строка. Здесь имеется 3 режима ввода (режимы в эмуляторе вручную пока не переключаются), особенностью 2-х из которых является то, что для ввода команды требуется нажатие всего одной клавиши. Например, клавише P соответстует оператор PRINT, I - INPUT, K - LIST, A - NEW, R - RUN. Простой пример:Я так и не разобрался с управлением...
10 PRINT "HELLO"
20 INPUT A
30 PRINT A
Для ввода кавычек используется комбинация Ctrl+P. Кстати, в процедуре обработки нажатия клавиш многие клавиши (знаки препинания и математические операции, например) ещё не прописаны .
После нажатия R и Enter запускается программа - выводится на экран HELLO, ожидается ввод переменной A и производится вывод этой переменной.
Команды S (SAVE) и J (LOAD) пока не реализованы.
Albom
В обработке клавиш надо как то обрабатывать одновременные нажатия (ну хотябы с шифтами), чтобы биты одновременно нажимаемых клавиш одновременно обнулялись по соответствующимдля них портам. Тогда хотя бы основная клава спектрума будет работать как надо. А потом уже комбинации на отдельные клавиши вешать.
Блин а емуль всетаки смотрится!
Успехов!
В обработке клавиш надо как то обрабатывать одновременные нажатия (ну хотябы с шифтами), чтобы биты одновременно нажимаемых клавиш одновременно обнулялись по соответствующимдля них портам. Тогда хотя бы основная клава спектрума будет работать как надо. А потом уже комбинации на отдельные клавиши вешать.
Блин а емуль всетаки смотрится!
Успехов!
Заглянул на огонёк
так и сейчас уже есть обработка клавиш с шифтом и контроллом!В обработке клавиш надо как то обрабатывать одновременные нажатия (ну хотябы с шифтами)
значит не зря над ним работаю!Блин а емуль всетаки смотрится!
Who is online
Users browsing this forum: No registered users and 1 guest