Эмулятор ZX Spectrum

...
  • частоту Z80 думаю взять стандартную - 3,5 МГц (хотя можно сделать в виде переменной и изменять, например, разгонять до 7 МГц, как это делали радиолюбители на настоящих спектрумах, или вообще не осуществлять задержки, тем самым можно быстрее прогонять некоторые циклы с вычислениями)
  • Проект жив!!!

    После 2 переписываний с нуля ядра эмулятора проца Z80 решил взять готовое. Выбор остановился на ядре, которое написал Santiago Romero Iglesias.
    За день напрограммировал эмулятор, который в принципе запускается и даже грузит файлы SNA. Но сделать ещё нужно очень много.

    Кто-нибудь знает, какая клавиша (в матрице спектрума) соответствует BackSpace?
    Attachments
    e80-0.1.zip (25.11 KiB)
    Downloaded 574 times
  • Клавиша BackSpace (или по спектрумовски DELETE) набирается комбинацией CAPS/0 а значит соответственно по портам #FEFE и #EFFE выдает значение ???11110b, где ??? - биты остающиеся от состояния шины данных ( как правило 111 но если шина не стабильна то могут прыгать).
    Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?
    Заглянул на огонёк
  • Alver
    Спасибо за подсказку по клавиатуре. Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?
    Вопрос на засыпку: твой эмуль проца обрабатывает регистр регенерации?

    Точно на засыпку! :) Ядро вроде поддерживает обработку этого регистра, но если честно я не пока не разбирался и сам его не обрабатывал.

    P.S. Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.
  • Сделал BackSpace, но он стирает всю строку, а не последний символ. Почему?
    Гдето глюк. А стирает где, в командной строке?
    Я живого спектрума не видел, пользовался только эмуляторами. Из инфы только 1 книга и немного факов, в основном на инглише.
    А у меня вся не слишком большая инфа по тетрадкам, да на шкафу еще Profi+ с 512 kb RAM валяется, а диски поразмагнитились давно(жалко) :( .
    Вот тут есть много книжек, не знаю может чего пригодится. http://trd.speccy.cz.
    Заглянул на огонёк
  • Хочется задать вопрос немножко не по теме. А какой платформы эмулятор написать проще: Денди или Спектрум?
  • Той, о которой больше знаешь.
    Заглянул на огонёк
  • Alver прав. Но из опыта замечу что под NES видюха (PPU) сложнее Спектрумовского, и форматов образов на порядок больше.
  • Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ... :mrgreen:
    Заглянул на огонёк
  • Зы, а если прилично эмулировать Спектрум, то (ну расширения памяти не проблема) добавь минимум AY-3-8910(12) и BetaDiskInterface с TR-DOS . Ну а если очень хорошо эмулировать то еще там всякие Kempston Mouse, GeneralSound, COVOX, примочки с графическими расширениями ...
    ну это ты уже загнул! многие эмуляторы под винду такого не могут! не то что под Колибри. например, как я буду эмулировать AY-3-8910 без дров на звуковуху?!!! :)
    Attachments
    e80-0.2.zip (25.92 KiB)
    Версия 0.2 :)
    Downloaded 603 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 0 guests