Здравствуйте!
Решил выложить здесь исходники своего старого эмулятора ZX Spectrum, потому как плохо себе представляю, где это еще может быть уместно. Прошу не судить строго - местами исходникам до 10 лет, я тогда писал как умел. Собственно, выкладываю исходники не для суждения, а для того, чтобы они принесли кому-нибудь хоть какую-то пользу.
Написано все на асме, под tasm 5.0. Вообще всего имеется 3 версии эмуля:
1) для работы в реальном/виртуальном режиме 80x86 (исходники утеряны);
2) для работы в ручном защищенном режиме (требуется чистый DOS реального режима);
3) для работы в защищенном режиме через DPMI (нерабочая версия).
В прилагаемом архиве имеется только две последних версии, причем версия 2 запустится из-под DOS при условии отсутствия EMM/QEMM и подобных менеджеров памяти, переводящих процессор в виртуальный режим. Более того, насколько я помню, работа версии 2 НЕ эмулируется ни DOSBox'ом (последний DOSBox 0.70 я еще не пробовал), ни VMWare, ни Virtual PC. Тем не менее, стоит попробовать запустить под виртуалкой последней версии, вдруг заработает.
Для того, чтобы откомпилить эмулятор, необходимы исполняемые файлы tasm.exe и tlink.exe. Батник az.bat проделает всю необходимую работу вплоть до получения exe-файла.
Далее. Для того, чтобы полученный exe-шник не ругался при запуске, необходимо положить в ту же папку файлы 48basic.rom, 128basic.rom и trdos.rom с соответствующим содержанием. Можно добавить туда же пару-тройку образов (по одному на дисковод) trd с названиями disk1.trd, disk2.trd и т.д.. Все это я не стал здесь выкладывать для минимизации размеров архива.
Теперь немного о самом эмуляторе. Называется Virtual ZX. По старту переключается в защищенный режим, проверяет командную строку (где можно указать загружаемый *.sna или *.z80), считывает файл vzx.cfg, читает и разбирает файл vzx.ini, настраивает аппаратуру (проверяет/определяет наличие SB-совместимого аудио, настраивает видеорежим) и вываливается в нормальную работу. Если был указан снэпшот, то загружает его.
В файле readme.etm указаны некоторые горячие клавиши, а также некоторые ключи для файла vzx.ini.
Что еще можно сказать. Версия 3 постепенно дорабатывается (но очень и очень медленно) до рабочего состояния. Если кто хочет помочь мне в этом нелегком деле, милости прошу. Одному осилить сложно - нет уже того задора и нет времени, тем не менее, версия 3 в архиве успела немного устареть. Возможно, буду здесь иногда выкладывать для нее обновления. Но это только тогда, когда заработает .
Много чего понаписал, постарался предоставить полную информацию, но осталось ощущение чего-то забытого. Извиняйте за сумбур
P.S. Latest version here