|
nedoPC.orgElectronics hobbyists community established in 2002 |
|
search Z80 CPU DIAGNOSTIC code
Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
emu80 или b2m? у них вообще 8080 который по флагам по другому работает нежели z80...
|
01 Oct 2016 13:40 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну раз есть тест, рассчитанный под Спецтрум, интересно бы какой-либо из известных эмуляторов прогнать этим тестом... Может быть, тоже полно ошибок crc?
_________________ iLavr
|
01 Oct 2016 14:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22730 Location: Silicon Valley
|
ну я и на живых спецтрумах могу прогнать
|
01 Oct 2016 17:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну на живых ведь не должно быть ошибок crc... Идея-то какая: берем заведомо популярный и известный эмулятор, прогоняем на нем тест, и если у него ошибок нет, а у нас есть - то смотрим в отладчике, как реализованы в нем коды, которые у нас приводят к ошибке crc... Вот такая мысль... Чтобы не гадать... А еще лучше если этот эмулятор с исходным кодом - чтобы в коде посмотреть, а не лезь в отладчик.
_________________ iLavr
|
02 Oct 2016 02:37 |
|
|
jdigreze
God
Joined: 02 Jan 2006 02:28 Posts: 1390 Location: Abakan
|
Запустил в Xpeccy, и судя по всему зависон. Попробую на днях ещё позапускать. На текущий момент вот такая картинка:
|
02 Oct 2016 06:48 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Если я правильно понимаю - у тебя уже ошибки crc есть!...
_________________ iLavr
|
02 Oct 2016 07:09 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Этот тест по полному набору(zexall - это видно по ожидаемой crc), а я тестировал на документированных мнемониках(zexdoc), и тем не менее, по полному набору ошибка crc возникает на тех же мнемониках... Я как то не обратил внимание на комментарий к архиву Spectrum.zip: ... Some of the tests fail incorrectly due to the code being moved. I have the changed needed, but haven't added them to the source yet. , а сейчас задумался над ним. Собрал zexdoc для zx, и запустил в b2m, так вот, теперь crc другие, но на тех же мнемониках! Очень похоже, что в результате модификации кода этого теста под конкретную платформу (в одном zx , в другом моя тестовая схема, а в оригинале третья схема? какая?) алгоритм подсчета crc считает не только то, что относится к тестируемой мнемонике, но и захватывает часть кода теста, вот и получается различие с оригинальным тестом. Получается, действительно надо этот тест запустить на реальном спектруме, посмотреть и записать! полученные crc , а, затем, вбить эти новые crc в код для спектрума. во вложении исходник, sna и tap файлы.
|
02 Oct 2016 14:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
То есть, получается, что правильные crc для какой-либо платформы надо посмотреть на ней самой "железной"? А потом эти правильные crc сравнивать с теми crc, что получатся на эмуляции этой же платформы? Немного странно тогда выглядит такой тест...
_________________ iLavr
|
03 Oct 2016 01:47 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Похоже, что crc считается по 16 байтам, среди которых есть указатель стека, а если стек перемещается при смене платформы, то и подсчет crc изменится. Не понятно только одно, а почему тогда ошибка crc есть на некоторых, а не на всех тестах?!
Для проверки оригинального кода нужно его собрать и запустить на платформе у которой распределение адресного пространства совпадает с требованиями теста, а именно, вначале располагается ОЗУ, а в конце ПЗУ. По моим прикидкам это можно сделать на ОРИОНЕ с Z80. В том же b2m запустить ОРИОН, а на нем этот тест, если все crc будут ОК, тогда можно будет считать, что z80 эмулируется правильно. Только я с ОРИОНом никогда не имел дела, как там бинарник запускать то?
|
03 Oct 2016 08:57 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Вобще говоря, очень странно, что тест зависит от платформы... Я не вникал, как работают эти тесты для i8080 и z80, но серьёзно вникал, как работает тест для 6502, когда сам его эмулировал, и мне помогали люди, которые тот тест хорошо в узких местах знали. Ну никакой зависимости от платформы не было - хоть эмулятор тестируй, хоть реальный 6502 !
_________________ iLavr
|
03 Oct 2016 09:38 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Запустить тест на ОРИОНе у меня не получилось, но я модифицировал СПЕЦИАЛИСТа под CPU z80 в b2m и в нем оригинальный тест запустился(с изменениями - забил NOPами печать куда либо) и ... ни каких ошибок crc! (я проверил не абсолютно все тесты, но первую треть...) Начал копать дальше, почему же часть тестов проходит верно, а часть нет... и нашел - в параметрах для тестирования в тестах с неверно рассчитанным crc присутствует переменная msbt, например: ; aluop a,<b,c,d,e,h,l,(hl),a> (753,664 cycles) alu8r: db 0d7h ; flag mask tstr 080h,0,0,0,0c53eh,0573ah,04c4dh,msbt,0e309h,0a666h,0d0h,03bh,0adbbhв оригинальном тесте это 102h( адрес в памяти ОЗУ), а в модифицированных вариантах значения совсем другие, тк это область ПЗУ. Попробую тестовую схему переделать под другое распределение ОЗУ и ПЗУ...
|
03 Oct 2016 14:04 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
Переделал я тестовую схему под 'требования' теста, и ... все получилось вполне ожидаемо, там, где crc не совпадало, теперь - ОК! (тест зациклен и начал второй круг на картинке...) не успел проверить только 5 пунктов с большим числом итераций, но, с высокой вероятностью думаю, что и там все будет ОК. Во вложении новый проект и тест. PS: В х80.dll поддерживаются все три cpu - i8080, i8085(нет его дополнительных к i8080 двух инструкций и расширенных прерываний) и z80(кроме IM2) на уровне инструкций, осталось проверить работу с портами, которые этот тест не проверяет. PPS: перезалил исправленную dll.
Last edited by PVV on 06 Oct 2016 12:43, edited 1 time in total.
|
04 Oct 2016 12:35 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Там есть отличие от i8080, причем в одном варианте до того туповатое, что я так и не вник, зачем у z80 так сделано - я имею в виду, что z80 подает в младшую и старшую части адресной шины при обращении к порту.
_________________ iLavr
|
04 Oct 2016 12:53 |
|
|
PVV
Doomed
Joined: 12 Feb 2016 13:39 Posts: 463
|
| | | | Lavr wrote: Там есть отличие от i8080, причем в одном варианте до того туповатое, что я так и не вник, зачем у z80 так сделано - я имею в виду, что z80 подает в младшую и старшую части адресной шины при обращении к порту. | | | | |
Этот момент я обработал, для i8080 Addr={А15..8=А7..0} и для z80 Addr={А15..8=regB, A7..0}.
|
04 Oct 2016 14:34 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
У z80 out же не один - у него помнится какой-то out - аналог 8080 - что-то неприятное делает с регистром А вроде. Я уж подзабыл, а в коды лезть неохота сейчвс...
_________________ iLavr
|
04 Oct 2016 15:14 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 guests |
|
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
|
|