Новодел Радио-86РК

Советский компьютер Радио-86РК (1986) и его клоны

Moderator: Shaos

begoon
Senior
Posts: 146
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Post by begoon »

Я таки прогнал тест 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: Select all

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

Code: Select all

ALUOP <B,C,D,E,H,L,M,A>: EXPECTED CF762C86, FOUND: B3491C2A
Результаты отосланы автору Exerciser для коллекции.

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

UPDATE: Судя по всему процессор, который стоит у меня в РК, является клоном от AMD и называется 9080A. Товарищ Славинский сказал, что отличия в моих тестах выглядят немного странно, и могут быть следствием ошибок при портировании, хотя мой бинарь совпадает с оригинальным один в один. Есть мысль купить на ebay еще один i8080 (там они еще есть долларов по 20 на штуку) для тестирования.
begoon
Senior
Posts: 146
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Post by begoon »

Тайна загадочного поведения процессора AMD 9080 раскрыта ;-). Итак, Exerciser показал два несовпадения (см. в предыдущем коменте).

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

Code: Select all

#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: Select all

#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: Select all

*********************************
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 просто обнуляется. В этом все отличие.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

begoon wrote:Тайна загадочного поведения процессора AMD 9080 раскрыта ;-).
Итак, Exerciser показал два несовпадения (см. в предыдущем коменте).
...
Значит в этом AMD 9080 флаг AC в командах ANA/ANI просто обнуляется. В этом все отличие.
Если я тебя правильно понял, железные клоны i8080 могут отличаться как от оригинала,
так и между собой?

А что показывает по тестам наш КР580ВМ80А ?
iLavr
begoon
Senior
Posts: 146
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Post by begoon »

Lavr wrote:Если я тебя правильно понял, железные клоны i8080 могут отличаться как от оригинала, так и между собой?
Судя по моему недавному опыту с Am9080 - могут отличаться от "канонического" поведения i8080 (если таковое существует). А вот насчет "между собой" - не знаю.
Lavr wrote:А что показывает по тестам наш КР580ВМ80А ?
Со слов Славинского, процессоры, что видел он в процессе работы на Вектором/ПЛИС, интеловые и наш ВМ80A в показателях Exerciser'a идентичны. А вот Am9080 оказался особенный.

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

Все просто. Надо загрузить файл с адреса 0, запустить G100, подождать 3-4 часа и сфоткать экран. Если проскроллилось более одного экрана, то сказать G80, и, удерживания РУС-ЛАТ, аккуратно сфоткать все разультаты.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Есть ИК, но нет РК :)
А на "Орион" не переносимо?
begoon
Senior
Posts: 146
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Post by begoon »

VituZz wrote:А на "Орион" не переносимо?
Конечно переносимо, но я, увы, никогда не видел в жизни живого Ориона, только читал в Радио. ;-). Нужен опытный владелец, а я помогу собрать бинарь для Ориона, если мне объяснят что надо изменить.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

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
sergey2b
Fanat
Posts: 84
Joined: 10 Sep 2009 04:27
Location: 41.213.126.12

Post by sergey2b »

begoon посоветуйте пожалуйста дизасемблер для i8080
begoon
Senior
Posts: 146
Joined: 22 Aug 2012 17:06
Location: 188.220.42.216

Post by begoon »

sergey2b wrote:begoon посоветуйте пожалуйста дизасемблер для i8080
Если кондовый подойдет, то можно взять мой i8080.c. Если для серьезного анализа, то IDA. Еще я недавно закоммитил в radare2 патч для диассемблирования i8080.
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Post by Shaos »

Am9080 - это реверс-сынжениренный i8080 от AMD:

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

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

Post by Lavr »

begoon wrote:Я таки прогнал тест 8080 Exerciser на своем новоделе РК на SRAM.
А кто-нибуть знает аналогичную программу для тестирования CPU 6502 с оригинальной системой команд?

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

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


PS. Нашел я довольно несложный, но, на мой взгляд, логичный и не слишком длительный тест.
Выполняется быстро даже на довольно медленных эмуляторах: TTL6502TEST.
iLavr
Bronto
Writer
Posts: 17
Joined: 19 May 2014 03:47
Location: Челябинск

Re:

Post by Bronto »

begoon wrote:Я таки прогнал тест 8080 Exerciser как я уже писал, собран не на КР580ВМ80A, а на P8080A 1977 года,
Image.
отчётливо видно, что год здесь не 77-й, а позже.
77-й здесь год авторского права на маску процессора, а не на изготовление чипа (конкретного изделия).
Зачем такие глупости писать, вы же взрослый вроде
User avatar
Shaos
Admin
Posts: 23989
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Новодел Радио-86РК

Post by Shaos »

79-й?
Я тут за главного - если что шлите мыло на me собака shaos точка net
sergey2b
Fanat
Posts: 84
Joined: 10 Sep 2009 04:27
Location: 41.213.126.12

Re: помогите найти тему

Post by sergey2b »

мой первый рк86 в конце 86 года выглядел на 90% аналогично только текстолит был покрашен черной краской