Здорово, что ты делаешь новые тесты. Надеюсь не потерять их из виду.
Вид для печати
Ну, возникшие у меня вопросы по поводу ВИ53 и режима "защёлки" (чтения на лету), я кажется снял с повестки дня.
По ходу тестирования, наткнулся на условие, которое даёт сбой в эмуляторе Emu80.
И собственно тест во вложении - это иллюстрация условия для сбоя.
Тест следующий:
Левые две колонки - это 255 значений счётчика ВИ53 считанные без использования команды "защёлки".
Следующие две колонки - 128 (верхних) значений счётчика ВИ53 считанные с использованием команды "защёлки", и нижние 127 значений считано снова без использования команды "защёлки".
Правые колонки - это собственно "XRA" - разница между предыдущими, для наглядности.
Пояснение моего мнения по поводу Emu80.
Команда "Защёлка" работает, если ей пользоваться, или не пользоваться.
А вот если как в утилите "Wave AY" - один раз дал команду и забыл про неё... тут возникает проблема, т.к. команда "защёлка" оставляет значение счётчика заблокированным, даже после того как оба байта считаны. Хотя блокировка должна сниматься после чтения всех байт заявленных в слове управления.
Во вложении rom теста и скриншот с реала 02-го.
В 90-ых, у меня был знакомый, которому я передавал свои программы для бета-тестирования.
Он каждый раз ухмылялся, и говорил, что тестировать штатные возможности нет смысла, типа я сам их уже проверил, пока кодил.
И начинал извращаться, задавая не штатные опции, нажимая не предусмотренные комбинации клавиш, и т.д. и т.п. ...
Вот решил я проверить, как работает команда "защёлка", если её не правильно применять...
Тест во вложении, вариация предыдущих:
Счётчик настроен на работу в режиме "слово" - 2-Байтный счётчик.
Левые две колонки - чтение регистров ВИ53 без использования "защёлки".
Следующие две колонки - чтение регистров ВИ53, с командой "защёлка" перед чтением каждого байта.
Правые колонки - "XRA" - разница между предыдущими, для наглядности.
Аааагаааа, ни кто не думал, что над ВИ53 издеваться будут :v2_tong2:
Во вложении rom теста, исходник и скриншот с реала 02-го.
Дополнительный тест показал, что если "защёлка" уже активирована, то последующая подача этой команды просто игнорируется (реальным ВИ53), а не приводит к очередной фиксации нового значения счётчика (как в эмуляторах).
http://bitsavers.trailing-edge.com/c...ual_197509.pdf
Страница 2-13 HALT SEQUENCES -- вербальное описание.
Таблица инструкций на странице 2-18 показывает что делают все инструкции на каждом такте каждого цикла, HLT тоже.
Рисунок 2-12 на странице 2-14 показывает блок-схему состояний при исполнении HLT. Рисунок 2-11 на той же странице -- временная диаграмма входа в режим HALT.
svofski, я правильно понимаю что HLT выполняет 2 машинных цикла, и зацикливается в Twh в ожидании прерывания?
parallelno, насколько я могу судить по всем доступным мне материалам, да.
svofski, тогда получается что в твоём эмуляторе ошибка. Если я не ошибаюсь то у тебя HLT зацикливается на первом машинном цикле.
Если я правильно понимаю логику кода, то у тебя HLT зацикливается после исполнения 4 тактов. А по идее должно выполниться 8 и далее зациклится выполняя по 4 такта. Или я ошибаюсь?