Последний раз редактировалось ivagor; 05.12.2013 в 20:23. Причина: Более короткий и корректный ответ
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Нужен эталонный образец, с чем сравнивать.
Здесь можно скачать актуальные версии Virtual Vector (VV)
В emu команда RIM не влияет на аккумулятор (не реализована?). В VV детально не проверял, но по крайней мере состояние INTE в бите 3 отражается.
Возможно сделаю более детальный (но менее широкий) чем exercizer тестик. Основная задача - узнать значения недокументированных флагов (вернее значения соответствующих CRC) при выполнении арифметических и логических операций. Для этого можно перебрать все возможные значения операндов. Для 8битных и однооперандных 16битных (inx, dcx и т.д.) все нормально. Для 16+8 битных (ldsi и ldhi) уже похуже, но более-менее приемлемо. А вот для 16+16 битных (dad, dsub) время выполнения теста при полном переборе операндов очень большое.
Может быть у кого-нибудь есть конструктивные предложения, как ограничить набор перебираемых операндов, по крайней мере для dad и dsub?
Последний раз редактировалось ivagor; 18.12.2013 в 07:31.
Сделать "короткий"и "полный" режимы тестирования. По умолчанию-короткий с использованием только основных РОН и прямой адресацией: для 8-битных операций, или +- для 16-битных.
Вопрос. А зачем CRC считать? Ставим стек на конец проверяемой области, и после каждой операции для теста делаем push PSW. Потом-просто проверяем этот участок памяти против "контрольного" для соответствующего проца, выводя номер теста, ошибочные и ожидаемые значения флагов и/или регистра <A>. Вроде, так быстро будет, и можно готовый дамп прогона теста хоть на диск/ленточку скинуть если надо
Последний раз редактировалось PPC; 18.12.2013 в 14:31.
Думаю нет смысла тестировать команды с каждым регистром, достаточно А,В,М то же самое про рег. пары.
Здесь можно скачать актуальные версии Virtual Vector (VV)
Спасибо за отклики, но похоже мне стоило подробнее описать свое видение вопроса.
1. О всех комбинациях регистров речь не идет, это было бы полезно для авторов эмуляторов, но затраты времени на реале и без этого неприемлемые. Прикиньте, сколько займет перебор 2^(16+16) комбинаций операндов для dad и dsub.
2. Как без CRC я не понял. Нам ведь как раз нужно получить "контрольные" значения. Можно, конечно, получить результаты "в чистом виде", т.е. сами значения регистра флагов, но их очень-очень много - где хранить? Есть вариант сразу передавать (например через магнитофонный выход) в PC, но это не снимает вопрос с длительностью тестирования, кроме того я могу что-то недоучесть (т.к. отладить общение реала с PC я не могу), а потом, после многочасового тестирования вылезет плюха - и что делать? Еще хуже, если я ее "исправлю" и вылезет другая, думаю ситуация примерно понятна.
Возвращаясь к исходной постановке вопроса - может все же существуют методики сокращенного тестирования, без полного перебора комбинаций операндов (и, строго говоря, флагов влияющих на результат выполнения команды), может кто ткнет меня в них носом?
Последний раз редактировалось ivagor; 18.12.2013 в 15:12.
Чет я не пойму, а даташита на 8085 нету чтоле?
На всякий случай наверно стоит озвучить очевидную вещь - за счет чего предполагается ограничить число тестовых комбинаций операндов. Все же значения флагов - не случайные и даже не псевдослучайные величины. Есть формулы для вычисления этих флагов. Основные неоднозначности с dsub (про dad в 8085 в общем-то все написано) - при вычислении разных флагов как учитываются составляющие операндов/результата? Про флаг Z, например, явным образом написано, что в dsub учитываются и старший и младший байт результата.
---------- Post added at 17:40 ---------- Previous post was at 17:33 ----------
Даташита, в котором было бы написано например, как устанавливается флаг AC командой dsub мне не известно.
В принципе 8085 (AMDшный вариант) разобрали практически полностью (ссылки я выше приводил, оттуда есть еще ссылки), для полного счастья еще бы сделали его реализацию на Verilog или VHDL (или на чем там).
Предварительная версия теста недокументированных флагов 8085.
Можно увидеть отличия emu
и VV
Версия стэндэлонная для ПК6128, но сделана как бы под CP/M + "наноэмулятор двух функций CP/M", т.е. при необходимости очень легко переделать под CP/M. Пока тестируется часть команд с разрядностью операндов 8, 8+8 (надо бы еще добавить adi и т.п., а также с M) и 16. Очевидно, что такой подход к тестированию команд с разрядностью операндов 16+8 и тем более 16+16 по времени неприемлем.
Исходник в комплекте, может кто заметит ошибки или будут какие-то предложения по улучшению.
Последний раз редактировалось ivagor; 22.12.2013 в 09:58.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)