nedoPC.org

Community of electronics hobbyists established in 2002

...
Atom Feed | View unanswered posts | View active topics It is currently 21 Sep 2018 22:56



Reply to topic  [ 44 posts ]  Go to page 1, 2, 3  Next
search Z80 CPU DIAGNOSTIC code 
Author Message
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Приветствую all.
Занимаясь допиливанием полнофункциональной модели Z80 для proteus столкнулся с проблемой тестирования расширенных опкодов в z80. Никто не знает что нить подобное MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC (viewtopic.php?f=81&t=10110&start=255#p121096) но только для z80?


25 Aug 2016 14:00
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16951
Location: Colorado
Reply with quote
Недокументированных чтоли?

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

P.P.S. Z80 Exerciser тоже в природе существует, оказывается: http://mdfs.net/Software/Z80/Exerciser/

_________________
:eugeek: https://twitter.com/Shaos1973


25 Aug 2016 14:55
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
Никто не знает что нить подобное MICROCOSM ASSOCIATES 8080/8085 CPU DIAGNOSTIC

Ты ему не шибко верь :mrgreen: у меня он нараз проходил, а сколько потом ошибок нашли!

_________________
iLavr


25 Aug 2016 18:47
Profile
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Shaos wrote:
Недокументированных чтоли?

Самых, что ни на есть документированных, которые префиксные у z80(CB, ED, DD, FD).
Shaos wrote:
P.P.S. Z80 Exerciser тоже в природе существует, оказывается: http://mdfs.net/Software/Z80/Exerciser/


На первый взгляд очень похоже на то, что я и искал, спасибо!
Буду разбираться как это собрать, и организовать вывод куда нибудь.


26 Aug 2016 10:35
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
Буду разбираться как это собрать, и организовать вывод куда нибудь.

aav8 довольно удачно делал вывод на COM-порт и встроенный терминал Протезуса.
У него и настройки 8250 в тексте хорошо видны и работает этот вывод верно -
я сам проверял по разным источникам.

_________________
iLavr


26 Aug 2016 11:20
Profile
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
По ссылке выше есть такой файл 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


27 Aug 2016 15:45
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16951
Location: Colorado
Reply with quote
Наверное лучше взять версию адаптированную под CPM или Спектрум, а не оригинальную

_________________
:eugeek: https://twitter.com/Shaos1973


27 Aug 2016 18:20
Profile WWW
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Спектрумовскую версию я уже собрал, но она полная, а вот короткий тест есть только такой, и в нем то и есть этот макрос...


28 Aug 2016 00:12
Profile
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Разобрался я со всеми макросами и тестами, выловил у себя много разных ошибок, и вот что у меня получилось:
Attachment:
wx_vc.png
wx_vc.png [ 178.19 KiB | Viewed 3473 times ]

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?...


Attachments:
x80_dll.zip [325.42 KiB]
Downloaded 59 times
19 Sep 2016 11:39
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
А этот тест времЯнки учитывает или только точность выполнения команд Z80 CPU?

_________________
iLavr


19 Sep 2016 16:17
Profile
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Lavr wrote:
А этот тест времЯнки учитывает или только точность выполнения команд Z80 CPU?

Только точность выполнения.


19 Sep 2016 23:23
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
PVV wrote:
интересно, почему crc отличается от настоящего z80 и в dll и b2m?...

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

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

В каком случае я правильно понял? :wink:

_________________
iLavr


01 Oct 2016 11:04
Profile
Maniac

Joined: 12 Feb 2016 14:39
Posts: 295
Reply with quote
Lavr wrote:
Или crc в Протеусе совпадает с crc под emu80, но не совпадают с настоящим z80 ?

В каком случае я правильно понял? :wink:


Правильно это, только если emu80 и эмулятор b2m одно и тоже.

Сейчас crc в протеусе и в b2m совпадают по всем тестам... , но далеко не все тесты совпадают с настоящим z80


01 Oct 2016 13:27
Profile
Admin
User avatar

Joined: 09 Jan 2003 00:22
Posts: 16951
Location: Colorado
Reply with quote
Ну значит эмуляция неправильная...

_________________
:eugeek: https://twitter.com/Shaos1973


01 Oct 2016 13:37
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 09:08
Posts: 7777
Location: Россия
Reply with quote
То есть эмуляция в Протеусе и в emu80 ошибается одинаково?

_________________
iLavr


01 Oct 2016 13:54
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 44 posts ]  Go to page 1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.