А почему результаты-то разные?
Вид для печати
Нужен эталонный образец, с чем сравнивать.
В emu команда RIM не влияет на аккумулятор (не реализована?). В VV детально не проверял, но по крайней мере состояние INTE в бите 3 отражается.
Возможно сделаю более детальный (но менее широкий) чем exercizer тестик. Основная задача - узнать значения недокументированных флагов (вернее значения соответствующих CRC) при выполнении арифметических и логических операций. Для этого можно перебрать все возможные значения операндов. Для 8битных и однооперандных 16битных (inx, dcx и т.д.) все нормально. Для 16+8 битных (ldsi и ldhi) уже похуже, но более-менее приемлемо. А вот для 16+16 битных (dad, dsub) время выполнения теста при полном переборе операндов очень большое.
Может быть у кого-нибудь есть конструктивные предложения, как ограничить набор перебираемых операндов, по крайней мере для dad и dsub?
Думаю нет смысла тестировать команды с каждым регистром, достаточно А,В,М то же самое про рег. пары.
Сделать "короткий"и "полный" режимы тестирования. По умолчанию-короткий с использованием только основных РОН и прямой адресацией: для 8-битных операций, или +- для 16-битных.
Вопрос. А зачем CRC считать? Ставим стек на конец проверяемой области, и после каждой операции для теста делаем push PSW. Потом-просто проверяем этот участок памяти против "контрольного" для соответствующего проца, выводя номер теста, ошибочные и ожидаемые значения флагов и/или регистра <A>. Вроде, так быстро будет, и можно готовый дамп прогона теста хоть на диск/ленточку скинуть если надо
Спасибо за отклики, но похоже мне стоило подробнее описать свое видение вопроса.
1. О всех комбинациях регистров речь не идет, это было бы полезно для авторов эмуляторов, но затраты времени на реале и без этого неприемлемые. Прикиньте, сколько займет перебор 2^(16+16) комбинаций операндов для dad и dsub.
2. Как без CRC я не понял. Нам ведь как раз нужно получить "контрольные" значения. Можно, конечно, получить результаты "в чистом виде", т.е. сами значения регистра флагов, но их очень-очень много - где хранить? Есть вариант сразу передавать (например через магнитофонный выход) в PC, но это не снимает вопрос с длительностью тестирования, кроме того я могу что-то недоучесть (т.к. отладить общение реала с PC я не могу), а потом, после многочасового тестирования вылезет плюха - и что делать? Еще хуже, если я ее "исправлю" и вылезет другая, думаю ситуация примерно понятна.
Возвращаясь к исходной постановке вопроса - может все же существуют методики сокращенного тестирования, без полного перебора комбинаций операндов (и, строго говоря, флагов влияющих на результат выполнения команды), может кто ткнет меня в них носом?
Чет я не пойму, а даташита на 8085 нету чтоле?
На всякий случай наверно стоит озвучить очевидную вещь - за счет чего предполагается ограничить число тестовых комбинаций операндов. Все же значения флагов - не случайные и даже не псевдослучайные величины. Есть формулы для вычисления этих флагов. Основные неоднозначности с dsub (про dad в 8085 в общем-то все написано) - при вычислении разных флагов как учитываются составляющие операндов/результата? Про флаг Z, например, явным образом написано, что в dsub учитываются и старший и младший байт результата.
---------- Post added at 17:40 ---------- Previous post was at 17:33 ----------
Даташита, в котором было бы написано например, как устанавливается флаг AC командой dsub мне не известно.
В принципе 8085 (AMDшный вариант) разобрали практически полностью (ссылки я выше приводил, оттуда есть еще ссылки), для полного счастья еще бы сделали его реализацию на Verilog или VHDL (или на чем там).