Цитата:
Сообщение от
HardWareMan
Не больше чем нормально подготовленый оригинал. У меня Специалист с поддержкой SD карты, время на запуск - чисто копирование на карту. И, кстати, почему "экзорцист" когда "эксесайзер" (Exerciser)?
Потому что позволяет "изгонять мелких бесов" - баги. Главное что все и так прекрасно понимают о какой программе идет речь. :)
Эмулятор реально экономит время, все тесты на эмуляторе у меня выполняются секунд 10, а на DE0 где 25МГц эффективная частота ядра i8080 классический (ускоренный - он у меня глючит, где-то накосячил при переносе) около 20 минут.
В-общем, разбил я тест ALU на 8 подтестов add, adc, sub, sbi, ana, ora, xra, cmp и оказалось что только ana выполняется неверно. Как и предполагалось - неверно выставлялся второстепенный флажок AC. В документации часто пишут, что при выполнении ana флаг AC принимает неопределенное значение. А по факту - это перенос от суммы третьих разрядов аккумулятора и второго операнда и еще одной единички, или, другими словами просто or третьих разрядов операндов.
Было:
psw_ac <= c[3] & ~id_xra & ~id_ora & ~id_rxc;
А должно быть:
psw_ac <= (c[3] & ~id_xra & ~id_ora & ~id_rxc) | (id_ana & (x[3] | r[3]));
Цитата:
Сообщение от
HardWareMan
цикле М1 следующей команды, причем на ША выставляется значение WZ.
....
Это учтено/получилось в схеме?
Конечно. Более того, там на ША много чего еше левого выставляется - все 16-тиразрядные инкременты/декременты эпизодически на ША выскакивают, в том числе при INX/DCX. Схема так устроена - входной аргумент для +/-1 у нее с буфера адреса берется.
PS. Пока писал пост - все тесты завершились успешно. Разберусь где я ошибся в ускоренном варианте экзорциста и буду тестировать HOLD, HLT, READY и прерывания.