Rubts0FF, завалялись сорцы от последней версии, но дизассемблер там без изменений практически был начиная с версии монитора 1.0.
Привожу необходимые файлы в аттаче.
Дизассемблер мы с Аркадием выдрали из компактного монитора Z80-List. На те времена меня не хватило на то, чтобы разобраться, как он работает. Лишь дал ему пару предохранительных веток, чтобы не портил память от длинных последовательностей DD/FD.
Как можно видеть из сорца, там метки все трехбуквенные и бессмысленные - это была на то время наша традиция такая расставления меток вручную. Ибо код переписывался сначала ручкой на бумагу с адресами (с помощью дизассемблера Infrared), а потом - заводился вручную в ZEUS. С некоторого времени впоследствии я перешел на CP/M, и сырцы мониторные остались в формате ассемблера M80 от Microsoft.
Сорц от дизассемблера (лакомую добычу!) я подарил Андрею Гетало, так что его Monitor Focal под Орель БК-08 также использует этот дизассемблер.
Теперь немного о том, как ориентироваться в сорце. Там есть точка входа DIRU - туда попадает управление, когда пользователь введет директиву U. По метке IKP крутится цикл - дизассемблируется и выводится на экран 14 команд. Подпрограмма DISA - дизассемблирование одной строки в буфер. В этом же сорце находится реализация другой директивы - 'E' - пошаговое выполнение (в версии 2.0 ее еще не было). Однако я так и не довел до совершенства пошаговое выполнение. Уже не помню точно, были ли там явные глюки, но мне оно не нравилось, и я им не пользовался практически никогда. Добавил в монитор просто "для полноты комплекта" и чтобы не отставать от Гетало.




Ответить с цитированием