РАБОТА С МАШИННЫМИ КОДАМИ_
CALL, DOKE, MON
Теперь расскажем о средствах, которые предоставляет MegaBasic для отладки программ в машинных кодах и стыковки их с бейсик-программами.
Для запуска программы в машинных кодах MegaBasic имеет оператор
CALl_z
- где 2 — стартовый адрес программы. Он вполне заменяет гобой сочетания операторов Spectrum-Бейсика RANDOMIZE USR z, PRINT USR z и пр., а в силу своей краткости босе удобен в среде MegaBasic, где ввод операторов осуществляется побуквенно.
Весьма практичен при отладке программ в машинных кодах оператор
DOKE_z,r
Он представляет собой не что иное, как двухбайтовый РОКЕ. Параметры: z — адрес, г — двухбайтовое число, заносимое в ячейки с адресами z и z+t.
Однако наиболее мощным средством отладки программ в машинных кодах является встроенный в MegaBasic монитор-отладчик78, представляющий собой вполне самостоятельную
РАБОТА С МАШИННЫМИ КОДАМИ
системную программу. Предусмотрены два способа вызова монитора: или из редактора MegaBasic командой
MON
- или в ходе выполнения программы сочетанием клавиш Space/F. При этом распахнется окно номер 3 (или окно с номером w, если ранее был выполнен оператор FX_3,w, переопределивший окно для монитора), представив фронтальную панель монитора (рис. 20).
Будьте готовы к тому, что монитор работает в шестнадцатеричной системе счисления.
Слева и вверху панели монитора представлены названия регистров процессора и их текущие значения. В правой части панели отражается фрагмент памяти: адрес ячейки, ее содержимое и соответствующий символ. Адрес ячейки памяти, на которую в данный момент настроен монитор {текущей ячейки), выделен инверсным цветом. В нижней строке монитора расположена строка, отмеченная символом >. Она предназначена для ввода и редактирования команд монитора.
Содержимое текущей ячейки изменяется набором в командной строке нового значения и нажатием клавиши Enter. После этого текущей автоматически становится следующая ячейка. Переход к следующему адресу без изменения содержимого ячейки осуществляется простым нажатием Enter, а откат на одну ячейку назад — нажатием клавиш SS/J. Установить текущей произвольную ячейку памяти можно с помощью команды
М <адрес>
Монитор позволяет также изменять содержимое регистров. Делается это командой
R <двухбайтовое число>
Регистр, в который заносится значение, отмечен звездочкой (*). Перемещается звездочка, и, соответственно, меняется текущий регистр с помощью клавиши Р.

Регистры flF*FE fiiSiHS
FE7B В6 ?
Ш И I
|J 14Ш I И I
fe80 63 с
im II t

Состояние флагов
Адрес и содержимое текущей ячейки
Рис. 20. Фронтальная панель монитора.
Программа в машинном коде запускается командой
J <адрес>
Монитором предусмотрена возможность расстановки так называемых точек останова, что позволяет осуществлять отладку программ. Для указания места останова адрес, по которому нужно «тормознуть» выполнение программы, устанавливается текущим и нажимается клавиша S. Отменить точку останова можно клавишей U. После останова выполнение программы продолжается при нажатии клавиши К.
С помощью специальных команд монитора можно скопировать блок памяти по произвольному адресу (команда L) или занести во все ячейки выделенного блока памяти какое-либо значение (команда 1). Формат этих команд:
L <адрес начала блока> <адрес копирования) <длина блока>
2 <адрес начала блока> <длина блока> <6айт-заполнитель>
Выход из монитора происходит по нажатию Space.
Мы не стали здесь детально описывать приемы работы с монитором-отладчиком, поскольку эта книга посвящена Бейсику, а не программированию в машинных кодах*.