Тест точности эмуляции 8080

Эмулятор Радио-86РК и других советских компьютеров на КР580ВМ80А http://www.emu80.org

Moderator: Pyk

User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Тест точности эмуляции 8080

Post by Shaos »

Кто-то может поделиться программой (ассемблерный код или программа для РК,Ориона,Специалиста и т.д.) для проверки точности эмуляции процессора КР580ВМ80А (8080)? У меня есть собственный код эмуляции, но на нём не все программы корректно работают, хотелось бы отыскать проблему, которая судя по всему находится в реализации ядра процессора.
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Неточности обычно с флагами. А какого рода проги глючат? Как проявляется глюк?
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

У меня в эмуляторе есть возможность записать ход исполнения (только регистр PC) или полный лог исполнения, со всеми регистрами и флагами. Потом можно сравнить. Если интересует, могу рассказать, как можно это сделать (в двух словах не получится).
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:У меня в эмуляторе есть возможность записать ход исполнения (только регистр PC) или полный лог исполнения, со всеми регистрами и флагами. Потом можно сравнить. Если интересует, могу рассказать, как можно это сделать (в двух словах не получится).
Ну у меня тоже можно записать - вот только с чем потом сравнивать? ;)
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Я имел ввиду записать в одинаковом формате, а потом сравнить твой и мой, хоть diff-ом, хоть fc /b. Там, откуда начнётся разница, и копать. Для начала можно ограничиться одним PC.
Какая прога не работает? Кидай мне или скажи где взять. Может у меня тоже не заработает.
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:Я имел ввиду записать в одинаковом формате, а потом сравнить твой и мой, хоть diff-ом, хоть fc /b. Там, откуда начнётся разница, и копать. Для начала можно ограничиться одним PC.
Какая прога не работает? Кидай мне или скажи где взять. Может у меня тоже не заработает.
CP/M на моём эмуле толком не работает, потом некоторые орионовские программы не идут нормально
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

Shaos wrote:CP/M на моём эмуле толком не работает
У меня тоже очень давно, когда я только начинал делать эмуль, был глюк с CP/M. Причина была - неправильная установка флагов в командах INR DCR (устанавливаются все, кроме переноса). Из последних исправленных глюков - команда DAA и неизменяемые биты в регистре флагов - никак не влияли на работу CP/M. Неизменяемые биты странным образом влияли на программу ADSKOK на Специалисте (в стек там кладётся psw, а вынимается регистровая пара, и наоборот, причём флаги как-то используются). Команды сдвига, которые тоже используются в CP/M при всяких там рассчётах, я думаю, ты без ошибок реализовал, но всё равно проверь. Флаг паритета тоже частенько неправильно реализуют или не везде, где надо, устанавливают (INR DCR и все ALU). Остальное, вроде, очевидно.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Интересно, прогнать бы это все на моем эмуле.... Где взять прожки и саму CP/M для i8080?
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

HardWareMan wrote:Интересно, прогнать бы это все на моем эмуле.... Где взять прожки и саму CP/M для i8080?
На моём сайте bashkiria-2m.narod.ru есть образы дисков для Башкирии-2М,Kорвета,Ориона-128,Партнёра,Специалиста-МХ. И везде, естесственно, CP/M.
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:
Shaos wrote:CP/M на моём эмуле толком не работает
У меня тоже очень давно, когда я только начинал делать эмуль, был глюк с CP/M. Причина была - неправильная установка флагов в командах INR DCR (устанавливаются все, кроме переноса). Из последних исправленных глюков - команда DAA и неизменяемые биты в регистре флагов - никак не влияли на работу CP/M. Неизменяемые биты странным образом влияли на программу ADSKOK на Специалисте (в стек там кладётся psw, а вынимается регистровая пара, и наоборот, причём флаги как-то используются). Команды сдвига, которые тоже используются в CP/M при всяких там рассчётах, я думаю, ты без ошибок реализовал, но всё равно проверь. Флаг паритета тоже частенько неправильно реализуют или не везде, где надо, устанавливают (INR DCR и все ALU). Остальное, вроде, очевидно.
Ok, спасибо, погляжу повнимательнее на свою реализацию
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Поглядел пристально на свою реализацию - ничего криминального не нашёл, но когда стал внимательно читать старую добрую американскую книгу про 8080/8085, обнаружил массу вещей о которых я раньше не знал - например странное поведение флага AC (полуперенос) в логических операциях (причём это поведение разное для 8080 и 8085 в случае операции И)...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Shaos wrote:Поглядел пристально на свою реализацию - ничего криминального не нашёл, но когда стал внимательно читать старую добрую американскую книгу про 8080/8085, обнаружил массу вещей о которых я раньше не знал - например странное поведение флага AC (полуперенос) в логических операциях (причём это поведение разное для 8080 и 8085 в случае операции И)...
Наблюдения и выводы в студию!
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

HardWareMan wrote:
Shaos wrote:Поглядел пристально на свою реализацию - ничего криминального не нашёл, но когда стал внимательно читать старую добрую американскую книгу про 8080/8085, обнаружил массу вещей о которых я раньше не знал - например странное поведение флага AC (полуперенос) в логических операциях (причём это поведение разное для 8080 и 8085 в случае операции И)...
Наблюдения и выводы в студию!
ANA/ANI : C=0, AC=1 (8085) or AC=A3|B3 (8080)
ORA/ORI : C=0 AC=0
XRA/XRI : C=0 AC=0
Я тут за главного - если что шлите мыло на me собака shaos точка net
b2m
Devil
Posts: 907
Joined: 26 May 2003 06:57

Post by b2m »

У меня во всех логических операциях и даже в CMP стоит AC=0, и ничего, по крайней мере CP/M вроде без глюков работает. Так что ищи в другом месте.

В Z80 действительно, почему-то, для AND должно быть AC=1 ...
User avatar
Shaos
Admin
Posts: 24011
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

b2m wrote:У меня во всех логических операциях и даже в CMP стоит AC=0, и ничего, по крайней мере CP/M вроде без глюков работает. Так что ищи в другом месте.
А у меня C и AC нигде не трогались в неарифметических и несдвиговых местах...
Кстати CMP должна функционировать как вычитание - у меня к примеру C и AC при сравнении соответственно меняют свои значения
b2m wrote:В Z80 действительно, почему-то, для AND должно быть AC=1 ...
И в 8085 тоже ;)
Но не в 8080 - в нём в AC кладётся ИЛИ третьих битов операндов ...
Я тут за главного - если что шлите мыло на me собака shaos точка net