На Spectrum программного эмулятора РК86 не было. Потому что никому было не надо. Из 8-ми разрядок эмулятор РК есть только для ОРИОНА на Z80. На ОРИОНЕ нужна доработка, чтобы в области F800 программно можно было включить второе ПЗУ. Т.е в в области F800 должны быть 2 страницы ПЗУ по 2К. На этом и основан эмулятор РК86. Скорость эмулируемого процессора получается даже на ОРИОНЕ 5 МГЦ всего 150 КГЦ. Несмотря на это, игры работают с нормальной скоростью, а вот текстовые редакторы и ассемблеры дико тормозят. В описании из вложения это объяснено. Картинки эмулятора РК на ОРИОНЕ на Z80: http://barsik.ut88.ru/Screen_Shots.rarСообщение от alexm-1970
Думаю, что можно на том же самом тормозном железе сделать эмуляцию КР580 на Z80 намного быстрее. Например, имея исходник РК-программы можно вставить упр.коды, например NOP-команду 'LD A,A', и RST. Тогда встретив код 'LD A,A', эмулятор прекращает эмуляцию и делает JMP на следующую команду, а по RST возвращается в эмулятор. Тем самым, участки, где точно нет записи в экран, мы прогоняем на максимальной скорости, раза в 3 быстрее чем реальный РК86. Например, если мы точно знаем, что вызывается подпрограмма, в которой нет, ни прямых записей в экран, ни чтений порта клавиатуры, то перед этой командой CALL вставляем код LD A,A, а после неё код RST. Тогда истратив всего 2 байта мы прогоняем подпрограмму на скорости Z80.
А для PC давно пора сделать конвертор программ РК86 в код для PC. Это конвертор просто берёт игру РК86 и подключает к ней код стартёра, делая COM-файл, программу для MSDOS. При запуске этого COM-файла в этом же каталоге ищется файл RK86.EMU и запускается для эмуляции игры РК86. Эту же идею надо реализовать и для других 8-ми разрядок. А то в традиционном эмуляторе эмулируют ДОС или загрузку с МГ, что излишне, если надо только запустить игру.
Только за счёт замены ПЗУ F800, чтобы вызовы CONOUT F809 выводили символы на экран ZX, будет прогон только корректных программ, что работают только подпрограммами ПЗУ. А это лишь редактор, ассемблер и отладчик и пара корректных игр. Чтобы была эмуляция прямой записи в экран РК 76D0...7FFF, надо эмулировать покомандно. Что позволяет не только верно эмулировать отличия команд Z80 от КР580, но и отлавливать команды с записью в экранное ОЗУ и команды работы с портом клавиатуры.Сообщение от NEO-SPECTRUMAN
При эмуляции РК нужно эмулировать команды задания режима ВГ75 и соответственно перестраивать режим визуализации. А так как ВГ75 можно запрограммивать десятком способов, то это не так просто. Но кажется, что на PC всё же добились эмуляции ВГ75 для всех игр, в том числе и графических. Но можно запрограммировать ВГ75 так, что эмулятор не сработает.Сообщение от NEO-SPECTRUMAN
Сам код эмулятора занимает почти 15 кб, 32 кб - эмулируемое ОЗУ РК86, а ведь ещё нужен ZX-экран. Но проблема не в количестве, а ОЗУ должно быть на месте ПЗУ ZX. Есть ZX-клоны, где есть CP/M. Для чего ПЗУ отключается, а экран переносится выше C000. Вот на таком клоне эмулятор РК сделать несложно,. Если кто-то возьмётся это сделать, я предоставлю исходник блока эмуляции КР580 на Z80.Сообщение от NEO-SPECTRUMAN
Да, признаю. Легко напутать, когда не понимаешь сути.Сообщение от b2m
Пытался получить полубанковую коммутацию и экран выше 8000, а когда убедился, что это не работает, то отказался от этого. А т.к экспериментировал много, то файлов конфигурации накопилось ~20. В большинстве файлов удалил строки правильно, а кое-где забыл 1 цифру. Оттого, то работало, то нет. В итоге, оставил один файл конфигурации, а он как раз и оказался не до конца исправленным.




Ответить с цитированием