■ Монитор 16/48
Монитор-программа предназначена для программирования в
машинных кодах. Она включает в себя средства ввода и отладки
программ в машинных кодах и дизассемблер.
Монитор занимает чуть больше 4к памяти у ее вершины и не
может перемещаться.
Загрузка монитора стандартная: LOAD ""
Для доступа к монитору адресуйтесь к нему в зависимости от его
версии:
RANDOMIZE USR 30479 (для 16к)
RANDOMIZE USR 63247 (для 48к)
Таким образом, вы можете в любой момент обратиться к мони-
тору из бейсика. При этом в нижней части экрана, в дополнение к
прежде записанному появится сообщение:
PRESS BREAK FOR MONITOR
После нажатия клавиши "BREAK" экан очищается и курсор
помещается в нижнюю часть экрана. Монитор использует свой соб-
ственный стек, делая его недоступным для ваших программ.
Приглашение (>) указывает, что монитор готов к приему коман-
ды.
*
Команды монитора
M-MEMORY - вывод и изменение содержимого памяти
X-ESCAPE - выход из командного режима к началу монитора
A-ARE А - перемещает область озу в новое место
F-FILL - заполняет область озу обозначенным значением
байта
I-INSERT - вставляет до 255 байт в программу
D-DELETE - стирает до 255 байт из программы
B-BRE AKPOINT - устанавливает адрес останова в программе
K-CODES - восстанавливает коды после прохождения
останова
R-REGISTERS - высвечивает содержимое регистров процессора
C-CONTINUE - продолжает выполнение программы после
останова
Y-RETURN - возвращение к бейсику
P-PRINTER - печать на принтере в НЕХ-виде
$-DOLLAR - ввод текста
Z-Z80 - дизассемблирует любую часть памяти
N-NUMBER - превращение чисел HEX-DEX и DEX-HEX
Внимание/: Все обращения к адресам и их содержимому в этой
инструкции будут в НЕХ-виде и приводятся в виде дву- или четырех-
значных чисел, без суффикса"Н".
Далее каждая команда будет разобрана подробно, с примерами,
для разъяснения ее действия.
М - после ввода команды вводится адрес ячейки памяти после
ввода четвертой цифры адреса справа от него появится
значение ячейки:
>М600000_
можно изменить содержимое ячейки, например на FF:
>M600000FF_
как только введена вторая Н ЕХ-цифра, содержимое
ячейки изменилось.
M600000FF
600100_
монитор выводит адрес следующей ячейки и ее содержимое.
Выход из режима "М" клавиша "X".
X - команда позволяет выйти из командного режима и
возвращает вас к подпрограмме монитора. Этой командой
прерывается любая команда кроме "R" и "К".
I - команда позволяет вставить до 255 байтов в любое место
вашей программы, сдвигая конечную часть программы
на соответсвующее число байтов.
Формат команды:
IAAAABBBBNN
где:
I-команда INSERT;
АААА - начальный адрес вставки;
ВВВВ - исходный адрес конца смещаемого блока;
NN - количество вставляемых байтов.
П р и м ер:
600203
6003 04 / место в которое надо
6004 05 вставить 5 байт/
600506
600708
600809
600В ОС -конец программы
вводим команду: 16004 6008 05
D - команда имеет действие противоположное "Г.
Формат: D АААА ВВВВ NN
параметры команды аналогичны команде "INSERT"
А - команда перемещает указанную область озу и имеет
формат:
А АААА ВВВВ СССС
где:
АААА - начальный исходный адрес смещаемой области
ВВВВ - конечный исходный адрес смещаемой области
СССС - новый начальный адрес.
Эта команда смещает заданную область памяти в любом
направлении, даже если новая область накладывается на
исходную. Исходная область памяти сохраняется, если она
не переписана в результате перемещения.
F - эта команда позволяет заполнить произвольную область
памяти произвольным значением. Формат команды:
FAAAABBBBXX
где:
АААА - начальный адрес указанной области;
ВВВВ - конечный адрес указанной области;
XX - вводимое значение
Y - над клавишей "Y" напечатана команда "RETURN", и
после нажатия этой клавиши и клавиши "ENTER", когда
на нижней строке экрана появится приглашение и курсор,
происходит возвращение в бейсик. Поскольку этот монитор
не имеет собственных команд "SAVE" и "LOAD", вы
можете воспользоваться командой" Y" для использования
"SAVE" и "LOAD" из бейсика. Если вернувшись в бейсик,
вы снова захотите обратиться к монитору, используются
следующие адреса с функцией USR, в зависимости от
версии монитора:
версия 16к: RANDOMIZE USR 30479
версия 48к: RANDOMIZE USR 63247
В - позволяет временно прервать выполнение программы в
машинных кодах в любой точке и вернуть управление
монитору. Формат:
ВАААА
где:
АААА - адрес останова (АААА должен быть первым
байтом команды многобайтной команды).
Коды трех адресов аааа, аааа+1, аааа+2
автоматически сохраняются в байтах данных
внутри монитора, а эти ячейки загружаются
командами:
CDOFF1 (для версии 48к)
CD OF 77 (для версии 16к)
что является обращением к монитору.
J - команда позволяет запустить любую вашу программу,
формат:
JAAAA,
где:
АААА - начальный адрес вашей программы. Команда
начинает свое действие с очистки экана.
К - команда"К" восстанавливает только последний
BREAKPOINT.
R - выводит значения всех регистров Z80 на экран.
С - позволяет продолжить работу после BREAKPOINT и
выполняется нажатием "С" и "ENTER". Вы можете выйти
в монитор, напечатав "Х"и "ENTER". Запущенная команда
будет продолжаться как будто BREAKPOINT не было.
Экран очищается, программный стек восстанавливается,
регистры процессора из своих блоков данных до введения
адреса возврата в программный счетчик и исполнение
возобновляется.
Р - команда вывода содержимого памяти на SINCLIAR
PRINTER. Формат команды:
Р ААААВВВВ,
где:
АААА - начальный адрес для вывода;
ВВВВ - конечный адрес для вывода.
$ - действует таким же образом, как и" М", и позволяет
вводить текст прямо с клавиатуры. Формат команды:
$АААА,
где:
АААА - начальный адрес текстового блока.С помощью
"CAPS SHIFT" и "SIMBOLSHIFT" можно
вводить любые символы, исключая "$". Графи-
ка UDG и команды, вводимые в режиме
"EXETEND MODE" не могут вводиться непо-
средственно. Инвертированные символы обра-
зуют доступ к областям памяти, содержащим
атрибуты.
Z - эта команда дизассемблирует любую часть ОЗУ или ПЗУ,
с выводом только на экран, или на экран и принтер. Распе-
чатка включает НЕХ-адрес первого байта команды,
НЕХ-значения байтов, относящихся к этой команде и
мнемонику Z80 относящуюся для этой команды. Формат
команды:
ZAAAABBBB,
где:
АААА, ВВВВ - начальный и конечный адреса памяти,
которую вы хотите дизассемблировать.
N - эта команда превращает HEX-DEX или DEX-HEX. После
ввода команды на экране появится.МиМВЕЯ N/ D? Необ-
ходимо ответить, какое число превращаем. НЕХ-числа
должны быть четырехзначными.
РЕГИСТРЫ Z80.
ре- |
16к |
48к |
|
ре- |
16к |
48к регистр 16к 48к |
гистр |
|
|
|
гистр |
|
|
R |
7F3D |
FF3D |
|
Н' |
7F46 |
FF46 IX/мл./ 7F4F FF4F |
I |
7F3E |
FF3E |
|
F |
7F47 |
FF47 IX/ст./ 7F50 FF50 |
F' |
7F3F |
FF3F |
|
А |
7F48 |
FF48 IY/мл./ 7F51 FF51 |
А' |
7F40 |
FF40 |
|
С |
7F49 |
FF49 IY/ст./ 7F52 FF52 |
С' |
7F41 |
FF41 |
|
В |
7F4A |
FF4A SP/мл./ 7F53 FF53 |
В' |
7F42 |
FF42 |
|
Е |
7F4B |
FF4B SP/ст./ 7F54 FF54 |
Е' |
7F43 |
EF43 |
|
D |
7F4C |
FF4C PC/мл./ 7F55 FF55 |
D' |
7F44 |
FF44 |
|
L |
7F4D |
FF4D РС/ст./ 7F56 FF56 |
L' |
7F45 |
FF45 |
|
Н |
7F4E |
FF4E |