nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 10:48



Reply to topic  [ 59 posts ]  Go to page Previous  1, 2, 3, 4
Новодел Радио-86РК 
Author Message
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
Я таки прогнал тест 8080 Exerciser на своем новоделе РК на SRAM. Тема была в том, что мой экземпляр, как я уже писал, собран не на КР580ВМ80A, а на P8080A 1977 года, поэтому было интересно проверить.

Image.

Увы, родные исходники Exerciser написаны под ассебмлер M80 для CP/M, и там используется какой-то изощренный синтаксис для макросов, когда любой параметр макроса может сам раскрываться в переменное количество подпараметров. Я так и не нашел ассемблера для Windows/Linux/Mac, чем это можно собрать. В итоге я форкнул проект в 8080ex1, чтобы он компилировался в AS. Изменения чисто косметические для совместимости с AS. В процессе сборки новых из исходников бинарь автоматически сравниваться с оригинальным бинарем на полное совпадение.

Далее, надо было запустить это на РК. Изначально Exerciser заточен под BDOS. Я снова форкнул 8080ex1 в rk86-ex1, где дописал необходимое. Мои изменения эмулируют два вызова BDOS, попутно переводя выводимые буквы в верхний регистр. Также производится логгирование экранного вывода в память с адреса 4000. Последнее нужно, так как вывод теста полностью не влезает на экран РК и скроллируется. После окончения теста сохраненный вывод можно распечатать повторно, используя РУС/ЛАТ для паузы. Также из команда EI заменена на NOP, чтобы не пищало всю дорогу (на результаты это не влияет), и начальное положение стека установлено на 5000 (а не через "LHLD 6, SPHL").

Тест на моем РК с частотой 2MHz занимает около 3 часов.

Для ленивых можно взять готовый бинарь rk86ex1.bin.

Запускать через "G100". Когда тест закончится и выйдет в Монитор, можно повторно распечатать результаты через "G80".

Вот скрины моего "прогона":

Image

Image

Несовпадений два:

Code:
ALUOP NN: EXPECTED: 9E922F9E, FOUND: 7799EA9D


Code:
ALUOP <B,C,D,E,H,L,M,A>: EXPECTED CF762C86, FOUND: B3491C2A


Результаты отосланы автору Exerciser для коллекции.

Ну и чтобы два раза не вставать, создатель этого новодела РК написал грамотную программку mac2rk для заливки бинарей в РК под видом магнитофона. Знаю, что такие программы уже есть, но эта чисто под Mac (хотя, может и под Linux соберется).

UPDATE: Судя по всему процессор, который стоит у меня в РК, является клоном от AMD и называется 9080A. Товарищ Славинский сказал, что отличия в моих тестах выглядят немного странно, и могут быть следствием ошибок при портировании, хотя мой бинарь совпадает с оригинальным один в один. Есть мысль купить на ebay еще один i8080 (там они еще есть долларов по 20 на штуку) для тестирования.


29 Oct 2012 04:03
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
Тайна загадочного поведения процессора AMD 9080 раскрыта ;-). Итак, Exerciser показал два несовпадения (см. в предыдущем коменте).

Вот реализация ANA из моего i8080-core, где флаг AC (H) вычисляется, как известно, через одно место.

Code:
#define ANA(val) \
{                                               \
    H_FLAG = ((A | val) & 0x08) != 0;           \
    A &= (val);                                 \
    S_FLAG = ((A & 0x80) != 0);                 \
    Z_FLAG = (A == 0);                          \
    P_FLAG = PARITY(A);                         \
    CLR(C_FLAG);                                \
}


Теперь меняем на более логичную реализацию, где AC просто обнуляется:

Code:
#define ANA(val) \
{                                               \
    A &= (val);                                 \
    S_FLAG = ((A & 0x80) != 0);                 \
    Z_FLAG = (A == 0);                          \
    CLR(H_FLAG);                                \
    P_FLAG = PARITY(A);                         \
    CLR(C_FLAG);                                \
}


И прогоняем тест:

Code:
*********************************
File "8080EX1.COM" loaded, size 4608
8080 instruction exerciser (KR580VM80A CPU)
dad <b,d,h,sp>................  OK
aluop nn......................  ERROR **** crc expected:9e922f9e found:7799ea9d
aluop <b,c,d,e,h,l,m,a>.......  ERROR **** crc expected:cf762c86 found:b3491c2a
<daa,cma,stc,cmc>.............  OK
<inr,dcr> a...................  OK
<inr,dcr> b...................  OK
<inx,dcx> b...................  OK
<inr,dcr> c...................  OK
<inr,dcr> d...................  OK
<inx,dcx> d...................  OK
<inr,dcr> e...................  OK
<inr,dcr> h...................  OK
<inx,dcx> h...................  OK
<inr,dcr> l...................  OK
<inr,dcr> m...................  OK
<inx,dcx> sp..................  OK
lhld nnnn.....................  OK
shld nnnn.....................  OK
lxi <b,d,h,sp>,nnnn...........  OK
ldax <b,d>....................  OK
mvi <b,c,d,e,h,l,m,a>,nn......  OK
mov <bcdehla>,<bcdehla>.......  OK
sta nnnn / lda nnnn...........  OK
<rlc,rrc,ral,rar>.............  OK
stax <b,d>....................  OK
Tests complete
Jump to 0000 from 0137


Точно такие же два отличия.

Значит в этом AMD 9080 флаг AC в командах ANA/ANI просто обнуляется. В этом все отличие.


30 Oct 2012 03:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
begoon wrote:
Тайна загадочного поведения процессора AMD 9080 раскрыта ;-).
Итак, Exerciser показал два несовпадения (см. в предыдущем коменте).
...
Значит в этом AMD 9080 флаг AC в командах ANA/ANI просто обнуляется. В этом все отличие.

Если я тебя правильно понял, железные клоны i8080 могут отличаться как от оригинала,
так и между собой?

А что показывает по тестам наш КР580ВМ80А ?

_________________
iLavr


30 Oct 2012 08:27
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
Lavr wrote:
Если я тебя правильно понял, железные клоны i8080 могут отличаться как от оригинала, так и между собой?


Судя по моему недавному опыту с Am9080 - могут отличаться от "канонического" поведения i8080 (если таковое существует). А вот насчет "между собой" - не знаю.

Lavr wrote:
А что показывает по тестам наш КР580ВМ80А ?


Со слов Славинского, процессоры, что видел он в процессе работы на Вектором/ПЛИС, интеловые и наш ВМ80A в показателях Exerciser'a идентичны. А вот Am9080 оказался особенный.

Было б интересно прогнать на КР580ИК80. Народ, у кого РК на ИК -- прогоните мой бинарь Excerciser'а - rk86ex1.bin!

Все просто. Надо загрузить файл с адреса 0, запустить G100, подождать 3-4 часа и сфоткать экран. Если проскроллилось более одного экрана, то сказать G80, и, удерживания РУС-ЛАТ, аккуратно сфоткать все разультаты.


30 Oct 2012 08:38
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Post 
Есть ИК, но нет РК :)
А на "Орион" не переносимо?


30 Oct 2012 09:53
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
VituZz wrote:
А на "Орион" не переносимо?


Конечно переносимо, но я, увы, никогда не видел в жизни живого Ориона, только читал в Радио. ;-). Нужен опытный владелец, а я помогу собрать бинарь для Ориона, если мне объяснят что надо изменить.


30 Oct 2012 09:56
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
begoon wrote:
VituZz wrote:
А на "Орион" не переносимо?


Конечно переносимо, но я, увы, никогда не видел в жизни живого Ориона, только читал в Радио. ;-).
Нужен опытный владелец, а я помогу собрать бинарь для Ориона, если мне объяснят что надо изменить.

У меня никак не дойдут руки на живом "Специалисте" попробовать... :(
Вроде как используется лишь одна стандартная функция - вывод на печать (консоль)?
И 3 часа времени примерно надо выждать на 2МГц, так?



PS. Судя по исходникам, для "Ориона" и "Специалиста" в тесте сильно ничего
менять не надо.
Нужно только, чтобы в обоих компах был Монитор с функциями:
+monitor_hexb equ 0f815h
+monitor_putc equ 0f809h
+monitor_puts equ 0f818h
+monitor equ 0f86ch --------> это вроде как 0F81BH - ввод символа без остановки
программы.
Его можно найти и пропатчить в бинарнике, мне думается...


PPS. Нееее... бес попутал: +monitor equ 0f86ch --------> это: управление МОНИТОРУ
передается по адресу 0F86CH, что позволяет обойти процедуру очистки экрана.
:roll:

_________________
iLavr


30 Oct 2012 18:41
Profile
Fanat

Joined: 10 Sep 2009 04:27
Posts: 78
Location: 41.213.126.12
Reply with quote
Post 
begoon посоветуйте пожалуйста дизасемблер для i8080


05 Nov 2012 10:18
Profile
Senior

Joined: 22 Aug 2012 17:06
Posts: 144
Location: 188.220.42.216
Reply with quote
Post 
sergey2b wrote:
begoon посоветуйте пожалуйста дизасемблер для i8080

Если кондовый подойдет, то можно взять мой i8080.c. Если для серьезного анализа, то IDA. Еще я недавно закоммитил в radare2 патч для диассемблирования i8080.


05 Nov 2012 10:44
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
Post 
Am9080 - это реверс-сынжениренный i8080 от AMD:

http://en.wikipedia.org/wiki/AMD_Am9080

Я недавно прикупил парочку :)

_________________
:dj: https://mastodon.social/@Shaos


05 Nov 2012 12:35
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
begoon wrote:
Я таки прогнал тест 8080 Exerciser на своем новоделе РК на SRAM.

А кто-нибуть знает аналогичную программу для тестирования CPU 6502 с оригинальной системой команд?

Я сам погуглил, но сабж мне конкретно не попался, есть попытки тестов для 65С02, но,
к сожалению, не на Ассемблере.

Самый популярный тест для 6502 - вот этот:
Klaus Dormann's Functional Test for the NMOS 6502
но он использует какой-то странноватый компилятор...


PS. Нашел я довольно несложный, но, на мой взгляд, логичный и не слишком длительный тест.
Выполняется быстро даже на довольно медленных эмуляторах: TTL6502TEST.

_________________
iLavr


24 Dec 2014 11:49
Profile
Writer

Joined: 19 May 2014 03:47
Posts: 17
Location: Челябинск
Reply with quote
Post Re:
begoon wrote:
Я таки прогнал тест 8080 Exerciser как я уже писал, собран не на КР580ВМ80A, а на P8080A 1977 года,
Image.


отчётливо видно, что год здесь не 77-й, а позже.
77-й здесь год авторского права на маску процессора, а не на изготовление чипа (конкретного изделия).
Зачем такие глупости писать, вы же взрослый вроде


15 Apr 2015 04:01
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22411
Location: Silicon Valley
Reply with quote
79-й?

_________________
:dj: https://mastodon.social/@Shaos


15 Apr 2015 05:37
Profile WWW
Fanat

Joined: 10 Sep 2009 04:27
Posts: 78
Location: 41.213.126.12
Reply with quote
мой первый рк86 в конце 86 года выглядел на 90% аналогично только текстолит был покрашен черной краской



25 Mar 2024 15:14
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 59 posts ]  Go to page Previous  1, 2, 3, 4

Who is online

Users browsing this forum: No registered users and 15 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

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