Вход

Просмотр полной версии : Пишу на Паскале "интерпретатор" Z80



Bolt
27.09.2019, 23:18
Пишу на Паскале интерпретатор команд Z80. Это, скорее, движок для отладчика, с планами расширить его потом до eZ80.
Не реалтайм, и пока без недокументированных команд и флагов, но ZEXDOC проходит без ошибок, в z80test-1.0 failed 24 из 152.

Просьба. Накидайте, плз, для проверки симпатичных демок в формате .TAP для 48k. Без бордер-эффектов и прочих гигаскринов, этого нет.
128k тоже можно, надо только добавить внешнюю обвязку. Одного переключения страниц будет достаточно или надо что-то ещё?

Для желающих заглянуть в исходник - в файле процедура cpu_step, выполняет одну инструкцию процессора.
70117

- - - Добавлено - - -

Модераторы, это оно из-за кавычек в названии на главной форума обрезает до "Пишу на Паскале..."? :)

- - - Добавлено - - -

Да, кстати. Этот же текст (ранняя его версия) полгода назад собирался при помощи bm-pascal и работал на PIC24.

Попробовал написать на Паскале что-то типа эмулятора Z80, а к нему 16к ROM и 16к RAM. ПЗУ запускается и даже пытается тестировать память, но пока не все команды реализованы. На микроконтроллере PIC24 (120 МГц, 60 MIPS) скорость достигает 10% от реальной. Есть куда расти :)

68331

Titus
28.09.2019, 00:31
На микроконтроллере PIC24 (120 МГц, 60 MIPS) скорость достигает 10% от реальной. Есть куда расти
Это фиаско, братан)

А если серьезно, то для быстрого эмулятора НЕЛЬЗЯ делать разбор опкода перебором по if. Только по таблице.

Bolt
28.09.2019, 01:02
А если серьезно, то для быстрого эмулятора НЕЛЬЗЯ делать разбор опкода перебором по if. Только по таблице.
Это ты вот сейчас о каком языке программирования, братан?)

- - - Добавлено - - -

А если серьёзно, то мне сейчас нужен не быстрый-точный эмулятор, а что-то, на чём можно запустить реальный софт и собрать статистику, например, по частоте переходов. Или, например, сколько процессор читает кода, а сколько данных. Сколько пишет в память, и куда именно. Сколько тактов будет потеряно при промахе кэша, и т.п.

Titus
28.09.2019, 01:11
Это ты вот сейчас о каком языке программирования, братан?)
О любом)
Нельзя просто взять и перебирать сотню if'ов)

Bolt
28.09.2019, 01:16
Если на скорость фиолетово аж до посинения, то можно :)

NEO SPECTRUMAN
28.09.2019, 04:31
Если на скорость фиолетово аж до посинения, то можно
как раз для сбора статистики
лучше если бы он выдавал 400500% скорости в сравнении с...

проверить кучи софта не хватит терпения
так же как и дозапускать софтварь до того места (пропустив менюшки загрузки не пропускаемые заставки и распаковки)
где именно полезна собранная статистика

а в скоростной эмуль можно было бы не глядя пихать пачками
включить рандомное натыкивание клавиатуры
чтоб оно само все запускало\или пыталось
и проверяло тыщи софта...

char
28.09.2019, 14:01
48k:

Megademica 4K
https://www.pouet.net/prod.php?which=81065

Spirius
https://www.pouet.net/prod.php?which=7411

insane
https://www.pouet.net/prod.php?which=8676

Higher State
https://www.pouet.net/prod.php?which=1938

Irreality
https://www.pouet.net/prod.php?which=62794

life1k
https://www.pouet.net/prod.php?which=6419

Bolt
28.09.2019, 18:09
Запустились не все, надо разбираться.

Insane в формате SCL. Как с ним работать?

- - - Добавлено - - -

Irreality и life1k работают.

Megademica и Higher State запускаются, но падают.

Spirius для 128k.

char
28.09.2019, 18:22
в яндекс:
zx demo insane .tap
->
вот оно, щастье твое, для 48k:
http://zxspectrum48.i-demo.pl/ay48k_demos.html