Монитор 16/48
Монитор-программа предназначена для программирования в машинных кодах. Она
включает в себя средства ввода и отладки программ в машинных кодах и дизассем-
блер.
Монитор занимает чуть больше 4к памяти у ее вершины и не может перемещаться.
Загрузка монитора стандартная : LOAD ~ "
Для доступа к монитору адресуйтесь к нему в зависимости от его версии:
RANDOMIZE USR 30479 ( для 16к )
RANDOMIZE USR 63247 ( для 48к )
Таким образом, вы можете в любой момент обратиться к монитору из бейсика. При
этом в нижней части экрана,» в дополнение к прежде написанному появится сообще-
ние:
PRESS BREAK FOR MONITOR
После- нажатия клавиши "BREAK" экран очищается и курсор помещается в нижнюю
часть экрана. Монитор использует свой собственный стек, делая его недоступным
для ваших программ.
Приглашение ( > ) указывает, что монитор готов к приему команды.
Команды монитора
М- MEMORY - вывод и изменение содержимого ячеек памяти
Х- ESCAPE - выход из командного режима к началу монитора
A- AREA - перемещает область озу в новое место.
F- FILL - заполняет обозначенную область озу обозначенным значением байта.
I- INSERT - вставляет до 255 байт в программу
D- DELETE - стирает до 255 байт из программы
B-BREAKP0INT-устанавливает адрес останова в программе.
К- CODES - восстанавливает коды после прохождения останова.
R- REGISTERS-высвечивает содержимое регистров процессора.
С- CONTINUE- продолжает выполнение программы после останова
Y- RETURN - возвращение к бейсику.
Р- PRINTER - печать на принтере в НЕХ-виде.
S- DOLLAR - ввод текста.
Z- Z80 - дизассемблирует любую область памяти ч
N- NUMBER - превращение чисел HEX-DEC и DEC-HEX.
Внимание !: Все обращения к адресам и их содержимому в этой инструкции
будут в НЕХ-виде и приводятся в виде дву- или четырехзнач-
ных чисел, без суффикса "Н".
Далее каждая команда будет разобрана подробно, с примерами, для разъяснения
ее действия.
М - после ввода команды вводится адрес ячейки памяти после ввода четвертой
цифры адреса справа от него появится значение ячейки:
>М6000 00_
- можно изменить содержимое ячейкй,например на FF:
>М6000 00 FF__
как только введена вторая НЕХ-цифра, содержимое ячейки изменилось.
М6000 00 FF
6001 00_
монитор выводит адрес следующей ячейки и ее со держимое. Выход из
режима "М" клавиша "X".
команда позволяет выйти из командного режима и возвращает вас к подпрог
рамме монитора. Этой командой прерывается любая команда кроме "R" и "К"
команда позволяет вставить до 255 байтов в любое место вашей программы,
сдвигая конечную часть программы на соответствующее число байтов.
Формат команды:
1 АААА ВВВВ NN
где I - команда INSERT;
АААА - начальный адрес вставки;
ВВВВ - исходный адрес конца смещаемого блока;
NN - количество вставляемых байтов.
Пример:
6002 03
6003 04 / место в которое надо
6004 05 вставить 5 байт /
6005 06
6007 08
6008 09 ^
бООв ОС - конец программы
вводим команду : >1 6004 6008 05
команда имеет действие противоположное "I".
Формат: D АААА ВВВВ NN
параметры команды аналЬгичны команде INSERT.
команда перемещает указанную область озу и имеет формат:
А АААА ВВВВ СССС
где: АААА - начальный исходный адрес смещаемой области
ВВВВ - конечный исходный адрес смещаемой области
СССС - новый начальный адрес.
Эта команда смещает заданную область памяти в любом направлении, даже
если новая область накладывается на исходную. Исходная область памяти
сохраняется, если она не переписана в результате перемещения,
эта команда позволяет заполнить произвольную область памяти произволь-
ным значением. Формат команды:
F АААА ВВВВ XX
где: АААА - начальный адрес указанной области;
ВВВВ - конечный адрес указанной области;
XX - вводимое значение,
над ^клавишей "YH напечатана команда "RETURN", и после нажатия этой кла
виши и клавиши "ENTER", когда на нижней строке экрана появится приглаше
ние и курсор, происходит возвращение в бейсик. Поскольку этот монитор
не имеет собственнных команд "SAVE" и "LOAD", вы можете воспользовать
ся командой "Y" для использования "SAVE" и "LOAD" из бейсика. Если,
вернувшись в бейсик. вы снова захотите обратиться к монитору, использу-
ются следущие адреса с функцией USR. в зависимости от версии монитора:
версия 16к : RANDOMIZE USR 30479
версия 48к : RANDOMIZE USR 63247
позволяет временно прервать выполнение программы машинных кодах в любой
точке и вернуть управление монитору, формат:
В АААА
где: АААА - адрес останова ( АААА должен быть первым байтом команды мно
гобайтной команды). Коды трех адресов аааа, аааа+1, аааа+2
автоматически сохраняются в байтах данных внутри монитора,
а эти ячейки загружаются командами:
CD OF FI (для версии 48к)
CD OF 77 (для версии 16к),
что является обращением к монитору,
команда позволяет запустить любую вашу программу, формат :
J АААА.
где: АААА - начальный адрес вашей программы. Команда начинает свое дейс
твие с очистки экрана.
К - команда "К" восстанавливает только последний BREAKPOINT.
R - выводит значения всех регистров Z80 на экран.
С - позволяет продолжить работу после BREAKPOINT и выполняется нажатием "С"
и "ENTER". Вы можете выйти в монитор, напечатав "X" и "ENTER". Запущен-
ная команда будет продолжаться как будто BREAKPOINT не было. Экран очи-
щается, программный стек восстанавливается, регистры процессора из сво-
их блокой данных до введения адреса возврата в программный счетчик и
исполнение возобновляется.
Р - команда вывода содержимого памяти на SINCLIAR PRINTER. Формат команды:
Р АААА ВВВВ,
где: АААА - начальный, адрес для вывода;
ВВВВ - конечный адрес для вывода.
t - действует таким же образом, как и "М", и позволяет вводить текст прямо
с клавиатуры. Формат команды:
* АААА,
где : АААА - начальный адрес текстового блока. С помощью " CAPS SHIFT "
н " SIMBOL SHIFT " можно вводить любые символы, исключая "%". Графика.
UDG и команды, вводимые в режиме "EXETEND MODE" не могут вводиться не-
посредственно. Инвертированные символы образуют доступ к областям памя-
ти, содержащим атрибуты.
Z - эта команда дизассемблирует любую часть ОЗУ или ПЗУ, с выводом только
на экран, или на экран и принтер. Распечатка включает НЕХ-адрес первого
байта команды, НЕХ-значения байтов, относящихся к этой команде и мнемо-
нику Z80 относящуюся для этой команды. Формат команды:
Z АААА ВВВВ,
где: АААА, ВВВВ - начальный и конечный адреса части памяти, которую вы
хотите днзассемблировать.
N - эта команда превращает HEX-DEC или DEC-HEX. После ввода команды на эк-
ране появится: NUMBER N/D ? Необходимо ответить, какое число превраща-
ем. Нех-чнсла должны быть четырехзначными.
Регистры Z80
Регистры Z80
регистр| |
1 16к | |
| 48к |
|
регистр! |
1 1бк ! |
| 48к |
|
регистр| |
[ 16к | |
| 48к |
==========3S=3===S=33 |
|
зезе = = = в = = взе=: = ггввзезе = агяЕв |
|
ssssssszzsssss: |
|
R |
7F3D |
FF3D |
|
Н' |
7F46 |
FF46 |
|
IХ/мл./ |
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 |
С' |
7F4I |
FF41 |
|
В |
7F4A |
FF4A |
|
SP/мл./ |
7F53 |
FF53 |
В' |
7F42 |
FF42 |
|
Е |
7F4B |
FF4B |
|
SP/ct./ |
7F54 |
FF54 |
Е' |
7F43 |
FF43 |
|
D |
7F4C |
FF4C |
|
PC/мл./ |
7F55 |
FF55 |
D' |
7F44 |
FF44 |
|
L |
7F4D |
FF4D |
|
РС/ст./ |
7F56 |
FF56 |
L ' |
7F45 |
FF45 |
|
Н |
7F4E |
f F4E |
|
|
|
|
I