search Z80 CPU DIAGNOSTIC code

Микропроцессоры и микроконтроллеры от фирмы Zilog, а также компьютеры на них построенные

Moderator: Shaos

PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

search Z80 CPU DIAGNOSTIC code

Post by PVV »

Приветствую all.
Занимаясь допиливанием полнофункциональной модели Z80 для proteus столкнулся с проблемой тестирования расширенных опкодов в z80. Никто не знает что нить подобное MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC (viewtopic.php?f=81&t=10110&start=255#p121096) но только для z80?
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: search Z80 CPU DIAGNOSTIC code

Post by Shaos »

Недокументированных чтоли?

P.S. Для 8080 ещё есть 8080/8085 CPU Exerciser

P.P.S. Z80 Exerciser тоже в природе существует, оказывается: http://mdfs.net/Software/Z80/Exerciser/
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: search Z80 CPU DIAGNOSTIC code

Post by Lavr »

PVV wrote:Никто не знает что нить подобное MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC
Ты ему не шибко верь :mrgreen: у меня он нараз проходил, а сколько потом ошибок нашли!
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

Shaos wrote:Недокументированных чтоли?
Самых, что ни на есть документированных, которые префиксные у z80(CB, ED, DD, FD).
Shaos wrote: P.P.S. Z80 Exerciser тоже в природе существует, оказывается: http://mdfs.net/Software/Z80/Exerciser/
На первый взгляд очень похоже на то, что я и искал, спасибо!
Буду разбираться как это собрать, и организовать вывод куда нибудь.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: search Z80 CPU DIAGNOSTIC code

Post by Lavr »

PVV wrote:Буду разбираться как это собрать, и организовать вывод куда нибудь.
aav8 довольно удачно делал вывод на COM-порт и встроенный терминал Протезуса.
У него и настройки 8250 в тексте хорошо видны и работает этот вывод верно -
я сам проверял по разным источникам.
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

По ссылке выше есть такой файл YAZE.zip, а там prelim.z80, в котором встречается такой макрос:

v: set 0
rept 20
ld a,(regs2+v/2)
v: set v+2
cp v
jp nz,0
endm

и я не могу понять как этот макрос раскручивается, и ассемблер на этот макрос ругается...
как это должно быть, так? :
ld a,(regs2+0/2)
cp 2 ; 1
jp nz,0

ld a,(regs2+2/2)
cp 4 ; 2
jp nz,0
...
ld a,(regs2+38/2)
cp 38 ; 20
jp nz,0
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: search Z80 CPU DIAGNOSTIC code

Post by Shaos »

Наверное лучше взять версию адаптированную под CPM или Спектрум, а не оригинальную
Я тут за главного - если что шлите мыло на me собака shaos точка net
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

Спектрумовскую версию я уже собрал, но она полная, а вот короткий тест есть только такой, и в нем то и есть этот макрос...
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

Разобрался я со всеми макросами и тестами, выловил у себя много разных ошибок, и вот что у меня получилось:
wx_vc.png
Z80doc instruction exerciser

<adc,sbc> hl,<bc,de,hl,sp>....OK
add hl,<bc,de,hl,sp>..........Ok
add ix,<bc,de,ix,sp>..........OK
add iy,<bc,de,iy,sp>..........Ok
aluop a,nn....................Ok
aluop a,<b,c,d,e,h,l,(hl),a>.. ~ b2m
aluop a,<ixh,ixl,iyh,iyl>.....Ok
aluop a,(<ix,iy>+1)........... CRC:c87524ce expected:e849676e b2m
bit n,(<ix,iy>+1)............. CRC:b1dc75f8 expected:a8ee0867 b2m
bit n,<b,c,d,e,h,l,(hl),a>.... CRC:5b934102 expected:7b55e6c8 b2m
cpd<r>........................ CRC:d506037a expected:a87e6cfa b2m
cpi<r>........................ CRC:9222ce2d expected:06deb356 b2m
<daa,cpl,scf,ccf>.............OK
<inc,dec> a...................OK
<inc,dec> b...................OK
<inc,dec> bc..................OK
<inc,dec> c...................OK
<inc,dec> d...................OK
<inc,dec> de..................OK
<inc,dec> e...................OK
<inc,dec> h...................OK
<inc,dec> hl..................OK
<inc,dec> ix..................OK
<inc,dec> iy..................OK
<inc,dec> l...................OK
<inc,dec> (hl)................ CRC:43bedef4 expected:b83adcef b2m
<inc,dec> sp..................OK
<inc,dec> (<ix,iy>+1)......... CRC:5bf85613 expected:20581470 b2m
<inc,dec> ixh.................OK
<inc,dec> ixl.................OK
<inc,dec> iyh.................OK
<inc,dec> iyl.................OK
ld <bc,de>,(nnnn).............OK
ld hl,(nnnn)..................OK
ld sp,(nnnn)..................OK
ld <ix,iy>,(nnnn).............OK
ld (nnnn),<bc,de>.............OK
ld (nnnn),hl..................OK
ld (nnnn),sp..................OK
ld (nnnn),<ix,iy>.............OK
ld <bc,de,hl,sp>,nnnn.........OK
ld <ix,iy>,nnnn...............OK
ld a,<(bc),(de)>.............. CRC:769f0568 expected:b0818935 b2m
ld <b,c,d,e,h,l,(hl),a>,nn....OK
ld (<ix,iy>+1),nn............. CRC:a81fd04b expected:26db477e b2m
ld <b,c,d,e>,(<ix,iy>+1)...... CRC:af19ff16 expected:cc1106a8 b2m
ld <h,l>,(<ix,iy>+1).......... CRC:88ca61bf expected:fa2a4d03 b2m
ld a,(<ix,iy>+1).............. CRC:7efe0dc8 expected:a5e9ac64 b2m
ld <ixh,ixl,iyh,iyl>,nn.......OK
ld <bcdehla>,<bcdehla>........ CRC:e8dec456 expected:744b0118 b2m
ld <bcdexya>,<bcdexya>........ CRC:5ae0d779 expected:478ba36b b2m
ld a,(nnnn) / ld (nnnn),a.....OK
ldd<r> (1).................... CRC:c41f2655 expected:94f42769 b2m
ldd<r> (2).................... CRC:0a7b7fe8 expected:5a907ed4 b2m
ldi<r> (1).................... CRC:e71bfac4 expected:9abdf6b5 b2m
ldi<r> (2).................... CRC:96ff856a expected:eb59891b b2m
neg...........................OK
<rrd,rld>..................... CRC:038558ff expected:955ba326 b2m
<rlca,rrca,rla,rra>...........OK
shf/rot (<ix,iy>+1)........... CRC:3ef819f0 expected:713acd81 b2m
shf/rot <b,c,d,e,h,l,(hl),a>.. CRC:7fa8157d expected:eb604d58 b2m
<set,res> n,<bcdehl(hl)a>..... CRC:026bb032 expected:8b57f008 b2m
<set,res> n,(<ix,iy>+1)....... CRC:1ed58319 expected:cc63f98a b2m
ld (<ix,iy>+1),<b,c,d,e>...... CRC:1e5ccb3a expected:04626abf b2m
ld (<ix,iy>+1),<h,l>.......... CRC:18faa48d expected:6a1a8831 b2m
ld (<ix,iy>+1),a.............. CRC:18a40eb4 expected:ccbe5a96 b2m
ld (<bc,de>),a................ CRC:c41805c9 expected:7a4c114f b2m
Tests complete

я использовал для прогона своей x80.dll файл zexdoc, который тестирует только официально заявленные функции в z80. Часть тестов выполняется 100% правильно, а часть дает ошибку crc, но в эмуляторе b2m эти тесты дают то же значение crc ( b2m ok)! Как так получается я понять не могу, но это дает надежду, что с dll все в порядке. Время выполнения отдельных тестов в протеусе весьма велико (2.5 часа симуляции работы схемы - 20 часов реальной работы...),
поэтому тест aluop a,<b,c,d,e,h,l,(hl),a> (753,664 cycles) я не прогонял полностью, а только часть итераций, сравнивая промежуточные операции с b2m.
За основу тестовой схемы взят проект из
viewtopic.php?f=81&t=10110&start=255#p121096 отличие только в размере ПЗУ и ОЗУ.
Для запуска этого теста в эмуляторе b2m я сделал свой конфиг(zx97.cfg) на базе конфига Galaxy, с распределением адресного пространства как в тестовой схеме.

Во вложении x80.dll, тестовая схема и этот тест.

PS все же интересно, почему crc отличается от настоящего z80 и в dll и b2m?...
You do not have the required permissions to view the files attached to this post.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: search Z80 CPU DIAGNOSTIC code

Post by Lavr »

А этот тест времЯнки учитывает или только точность выполнения команд Z80 CPU?
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

Lavr wrote:А этот тест времЯнки учитывает или только точность выполнения команд Z80 CPU?
Только точность выполнения.
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: search Z80 CPU DIAGNOSTIC code

Post by Lavr »

PVV wrote:интересно, почему crc отличается от настоящего z80 и в dll и b2m?...
То есть, ни при эмуляции в Протеусе ни под emu80 crc не совпадают с настоящим z80 там где есть расхождения?

Или crc в Протеусе совпадает с crc под emu80, но не совпадают с настоящим z80 ?

В каком случае я правильно понял? :wink:
iLavr
PVV
Doomed
Posts: 463
Joined: 12 Feb 2016 13:39

Re: search Z80 CPU DIAGNOSTIC code

Post by PVV »

Lavr wrote: Или crc в Протеусе совпадает с crc под emu80, но не совпадают с настоящим z80 ?

В каком случае я правильно понял? :wink:
Правильно это, только если emu80 и эмулятор b2m одно и тоже.

Сейчас crc в протеусе и в b2m совпадают по всем тестам... , но далеко не все тесты совпадают с настоящим z80
User avatar
Shaos
Admin
Posts: 24078
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: search Z80 CPU DIAGNOSTIC code

Post by Shaos »

Ну значит эмуляция неправильная...
Я тут за главного - если что шлите мыло на me собака shaos точка net
User avatar
Lavr
Supreme God
Posts: 16689
Joined: 21 Oct 2009 08:08
Location: Россия

Re: search Z80 CPU DIAGNOSTIC code

Post by Lavr »

То есть эмуляция в Протеусе и в emu80 ошибается одинаково?
iLavr