Я загружаю данные в монитор реала используя временный выход в загрузчик, без промежуточной подготовки WAV-файлов (или прямой загрузки) в MON-формате из эмулятора.
Новая версия эмулятора VV на сайте.
Добавлено через 13 минут
Вечером прогоню на реале - отпишусь.
Последний раз редактировалось Tim0xA; 30.03.2009 в 12:22. Причина: Добавлено сообщение
Я же говорю, если оставить ANA как в версии 5.71 и просто проинвертировать флаг АС, то тест непроходит, значит это неправильно, значит ты гдето разницу просто незаметил. Сделал я по своему, я неутверждаю что это истина, но покрайней мере тест проходит, мне интересно как у b2m этот флаг расчитывается?
Добавлено через 4 минуты
DAA я тоже исправил, описание ее работы (флага АС) есть в базовой книжке от вектора по ассемблеру. могу сказать точно, что 8080 незапоминает вычитание или сложение было до команды DAA в отличии от Z80.
Последний раз редактировалось Ramiros; 30.03.2009 в 23:41. Причина: Добавлено сообщение
Здесь можно скачать актуальные версии Virtual Vector (VV)
Я немножко опоздал, мне штрафную пожалуйста.
Сейчас попробовал для затравки инвертировать бит АС в команде "-1" в ALU. Тест №11 пролетел, но обломалось дальше. Кто мне поможет интерпретировать результат теста:
Вроде b2m уже все разобрал, инструкция была RLC, аккумулятор был 56H, получилось 46H в флагах вместо ожидаемых 59H.Код:Instruction sequence was 070000H Register f contains 46H But should contain 59H Register value before instruction sequence was 56H Test Number 0015H
Я сижу с даташитом от 8080, карандашом и бумажкой и никак не могу понять, как в регистре F может оказаться число 59H. Бит 3 должен быть всегда "0", бит 1 всегда "1". С такими битами девятка в младшем нибле не получается.
Больше игр нет
svofski, Это похоже глюк теста, просто если команда заработает правильно, то тест пройдет дальше
Здесь можно скачать актуальные версии Virtual Vector (VV)
Ничего инвертировать не надо. В командах ANA/ANI у меня он устанавливается в ИЛИ третьих битов операндов. Можно даже научно обосновать, почему так происходит.
Очевидно, флаг AC делался с учётом того, что он формируется в операции сложения. Тогда:
a3=0, b3=0 -> AC=0
a3=1, b3=1 -> AC=1
a3=0, b3=1, r3=1 -> AC=0
a3=0, b3=1, r3=0 -> AC=1
a3=1, b3=0, r3=1 -> AC=0
a3=1, b3=0, r3=0 -> AC=1
где a и b - операнды, r - результат
Однако для логического И результат однозначно определяется соответствующими битами и пару строк можно выкинуть, останется:
a3=0, b3=0 -> AC=0
a3=1, b3=1 -> AC=1
a3=0, b3=1, r3=0 -> AC=1
a3=1, b3=0, r3=0 -> AC=1
что и соответствует логическому ИЛИ
Если бы в ORA/ORI флаги переноса не обнулялись, то значение AC было бы равно логическому И третьих разрядов. Парадокс
Добавлено через 14 минут
Подозреваю, что в процессоре сделано типа так:
AC = (a3 & b3) | ( (a3 ^ b3) & ~r3 )
Последний раз редактировалось b2m; 31.03.2009 в 00:33. Причина: Добавлено сообщение
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Реальные результаты теста TestDAAfull и тест команды ANA с результатами (real,vv571,vv572).
Последний раз редактировалось Tim0xA; 31.03.2009 в 08:04.
Как я и предполагал, у меня были ошибки эмуляции DAA. Теперь, надеюсь, нету. По крайней мере тест ivagor-а совпадает с реальными данными, спасибо ему.
Отдельное спасибо Tim0xA-е, за реальные данные.
b2m, поздравляю! Тест "8080 instruction exerciser" в последней версии эмулятора дал результаты, идентичные реальным. На сегодняшний день я не знаю таких тестов, которые могли бы выявить расхождения между реалом и твоей симуляцией ВМ80А. Вектор можно убирать в шкаф. Все результаты в виде скриншотов выложены. Ramiros и svofski, не сдаваться!
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)