В 2009 я написал первую версию эмулятора Радио-86РК на JavaScript. Тогда мне очень хотелось проверить саму идею подобного эмулятора, поэтому непосредственно реализация вышла несколько сумбурной, хотя и работала в итоге. Тогда я тестировал эмуляцию процессора Intel 8080 в основном визуально, на играх. Поэтому какой-либо рефакторинг кода был мучителен, так как было элементарно что-то сломать.
Недавно я запустил эмулятор РК на микрокомпьютере Maximite. В процессе работы эмуляция ядра Intel 8080 выделилась в отдельный проект i8080-core, в котором также появилась система тестирования. Тесты, особенно, 8080 CPU Execercier, позволяют весьма тщательно проверить качество эмуляции, особенно на предмет недокументированного поведения.
И тут пришла идея вернуться к эмулятору на JavaScript и перетестировать его. В итоге я фактически переписал эмулятор с нуля, разделив его на ядро процессора i8080-js, и, собственно, эмулятор РК.
Ядро i8080-js теперь проходит все те же тесты, что и i8080-core. Тестирование можно делать либо прямо в браузере, либо в командной строке, если есть под рукой интерпретаторы JavaScript'а V8 или SpiderMonkey. Эмулятор Intel 8080 сделан независимым от конкретной аппаратуры и может быть легко использован для эмуляции других машин, основанных на Intel 8080 (или КР580ВМ80А).
Эмулятор РК теперь разделен на модули: UI, Screen, I8080, Memory, IO. Также улучшена работа с клавиатурой, и загрузка программ происходит динамически при их выборе.
Запустить новый эмулятор можно на demin.ws/rk (в закладки).
Старая версия (до 0.6 включительно) все еще доступна, но ее развитие остановлено, а исходники проекта теперь на GitHub'е.
В новой версии (теперь это 1.0) я также добавил десяток новых игр и утилит. Кстати, зацените мою демку (файл rk86demo.bin) и ремейк Сокобана (файл sokoban.bin).
Я тестировал на последних версиях Google Chrome и Safari (Mac и Windows). В Firefox, увы, есть какой-то странный визуальный глюк в виде горизонтальных полосок.
Под занавес несколько скриншотов.
Автор: begoon