SPECTRUM - MONITOR - это мониторная программа для ввода в машинных кодах и отладки с расширенными возможностями, включающая в себя дизассемблер.

Системные программы для «ZX-Spectrum»

SPECTRUM - MONITOR

SPECTRUM-MONITOR — это мониторная программа для ввода в машинных кодах и отладки с расширенными возможно­стями, включающая в себя дизассемблер и предназначенная для программирования компьютера ZX-SPECTRUM в машинных кодах, без необходимости использовать какие-либо команды Бейсика.

Монитор позволяет свободно обмениваться с Бейсиком и построен так, чтобы подпрограммы в машинных кодах могли за­пускаться как из Бейсика, так и из монитора и чтобы монитор был доступен в любой момент без изменения стека. Допустим любой ввод с клавиатуры и при этом невозможно повредить ком­пьютер. Программа кассета, прилагаемая к этой книге, содержит две версии монитора: одна для SPECTRUM 16K, другая — для SPECTRUM 48K, вы можете использовать любую.

Монитор занимает чуть больше 4К памяти у ее вершины и не может перемещаться. При загрузке в ваш SPECTRUM RAMTOP автоматически устанавливается под монитором и дол­жна быть только смещена книзу. Другими словами, если вы ис­пользуете правильную версию для размера памяти вашего ком­пьютера, вы сможете сместить RAMTOP еще ниже, чтобы образовалось пространство для ваших собственных программ в машинных кодах. Но монитор занимает 4К памяти непосред­ственно перед UDG — области ОЗУ. Если вы загружаете версию 16K в SPECTRUM 48K, можно использовать память под мони­тором, но если вы смещаете RAMTOP выше монитора, то вы подвергаетесь риску повреждения мониторных подпрограмм ко­мандами Бейсика.

 

Загрузка монитора

Подключите ваш компьютер к магнитофону и телевизору, введите LOAD "MONITOR 16", или LOAD "MONITOR 48", или LOAD " ". Включите воспроизведение магнитофона и нажмите клавишу "ENTER".

 

Доступ к монитору.

Если монитор успешно загружен, он автоматически разме­щается в правильном участке памяти, устанавливает RAMTOP под собой и высвечивает сообщение об этом на дисплее.

Для доступа к монитору адресуйтесь к нему в зависимости от его версии,   в

RANDOMIZE USR 30479 (для 16K) RANDOMIZE USR 63247 (для 48K). Таким образом вы можете в любой момент обратиться к мо­нитору из Бейсика,при этом в нижней части экрана, в допол­нение к прежде написанному, появится сообщение: PRESS BREAK FOR MONITOR.

После нажатия клавиши BREAK экран очищается и курсор помещается в нижней части экрана. Монитор использует свой собственный внутренний стек, делая его недоступным для ваших программ.

Это положение будет подробно рассмотрено ниже.

 

Приглашение и курсор

Приглашение (>) указывает, что монитор готов к приему ко­манды. Оно не появляется на экране в начале каждой строки, но появляется тогда, когда команда выполнена и монитор ожидает ввода новой команды. Мигающий курсор виден почти всегда и указывает место ввода новой команды или место последующего вывода.

 

Команды монитора

М — MEMORY выводит адрес ячейки памяти, ее содер­жимое и может изменить его.

Х — ESCAPE выводит из командного режима к началу монитора, действует на все командные режимы, кроме R и К.

А — AREA перемещает область ОЗУ в новое место.

F FILL заполняет обозначенную область ОЗУ обозна­ченным значением байта.

1 — INSERT вставляет до 255 байт в программу, напи­санную в машинных кодах.

D DELETE — стирает до 255 байт из программы, написанной в машинных кодах.

J JUMP переходит на указанный адрес и там начина­ет выполнение программы.

В — BREAKPOINT устанавливает адрес останова в программе, написанной в машинном коде, с возвращением уп­равления монитору.

К — CODES восстанавливает коды после прохождения останова.

R REGISTERS высвечивает содержимое регистров процессора.

С — CONTINUE продолжает выполнение программы после останова.

Y RETURN возвращение к Бейсику.

Р — PRINTER печать на принтере в НЕХ-виде.

$ — DOLLAR ввод текста.

Z Z80 —дизассемблирует любую область памяти в мне­монике Z80 на экране и принтере.

N — NUMBER превращение чисел HEX-DEC или DEC-HEX.                                   .        ,

Все команды выполняются после однократного нажатия на клавишу. Все команды проверяются на правильность, и в любой момент только разрешенные команды принимаются монитором, нажатие любой другой клавиши отвергается и клавиатура оп­рашивается снова.

Все численные вводы и выводы делаются в НЕХ-виде для облегчения ввода кодов Z80. Подпрограмма превращения чисел упрощает доступ к НЕХ-адресам.

Внимание! Все обращения к адресам и их содержимому в этой инструкции будут в НЕХ-виде и приводятся в виде дву- или че­тырехзначных чисел, без суффикса "Н".

Далее, каждая команда будет разобрана подробно, с приме­рами для разъяснения ее действия.

М — после ввода команды нужно ввести адрес необходимой ячейки памяти (ОЗУ или ПЗУ). После ввода четвертой цифры адреса "НА" справа от него появится значение ячейки:

>М6000 00

после этого можно изменить содержимое ячейки, например, на FF

>М6000 00 FF

как только введена вторая НЕХ-цифра, содержимое ячейки изменилось. Теперь нажмите "ENTER":

М6000 00 FF

6001 00

Монитор выводит адрес следующей ячейки и ее содержимое, выйти из режима "М" можно только нажав клавишу "X".

Х — команда позволяет выйти из командного режима и воз­вращает вас к подпрограмме монитора, опрашивающей клавиа­туру. Этой командой вы можете прервать выполнение любой ко­манды, кроме "R" и "К".

I команда позволяет вставить до 255 байт в любое место вашей программы, сдвигая конечную часть программы на соот­ветствующее число байт. Формат команды:

I АААА ВВВВ NN. где I — команда INSERT, АААА — на­чальный адрес вставки, ВВВВ — исходный адрес конца смеща­емого блока, NN — количество вставляемых байт.

Пример:

6000 01

6001   02

6002   03

6003 04 / место, в которое надо вставить 5 байт

6004   05

6005   06

6006   07

6007   08

6008   09

6009   0А 600А   0В 600В   0С

конец  программы

Вводим команду:

>I    6004    600В   05

D — команда имеет действие, противоположное INSERT. Формат:

D АААА ВВВВ NN параметры команды аналогичны команде INSERT.

А — команда перемещает указанную область ОЗУ и имеет форму:

А АААА ВВВВ СССС

АААА — начальный, ВВВВ — конечный исходные адреса сме­щаемой области, СССС — новый начальный адрес. Эта команда смещает заданную область памяти в любом направлении, даже если новая область накладывается на исходную. Исходная область памяти сохраняется, если она не переписана в результате перемещения.

F — эта команда позволяет заполнить произвольную область памяти произвольным значением. Формат команды:

F АААА ВВВВ XX

АААА, ВВВВ — начальный и конечный адреса указанной об­ласти, XX — вводимое значение.

Y — над клавишей "Y" напечатана команда "RETURN", и после нажатия этой клавиши и клавиши "ENTER", когда на ниж­ней строке экрана появится приглашение и курсор, происходит возвращение в Бейсик. Теперь вы можете использовать любую клавишу BASIC. Поскольку этот монитор не имеет собственных команд "SAVE" и "LOAD", вы можете воспользоваться командой "Y" для использования "SAVE" и "LOAD" из Бейсика. Если, вернувшись в Бейсик, вы снова захотите обратиться к монитору, используются следующие адреса с функцией URS, в зависимости от версии монитора:

версия 16К:

RANDOMIZE USR 30479

версия 48К:

RANDOMIZE USR 63247

В — позволяет вам временно прервать выполнение прог­раммы в машинных кодах в любой точке и вернуть управление монитору, так что вы можете проверить содержимое регистров процессора, ОЗУ и сделать исправление при необходимости. Формат команды:

В АААА

АААА — адрес останова (АААА должен быть первым байтом многобайтной команды). Коды трех адресов АААА, АААА+1, АААА+2 автоматически сохраняются в байтах данных внутри монитора, а эти ячейки загружаются командами:

CD 0F F1 (для версии 48К)

CD 0F 77 (для версии 16К) что является обращением к монитору.

J — команда позволяет запустить любую вашу программу.

J АААА

АААА — начальный адрес вашей программы. Команда на­чинает свое действие с очистки экрана.

К — эта команда восстанавливает правильное значение в трех байтах, переписанных командой BREAKPOINT. Только один BREAKPOINT можно вводить одновременно. Поскольку имеется место только для одного адреса и трех байтов данных, восстанавливающая команда "К" должна быть выполнена до сле-дующего BREAKPOINT. Рекомендуется вводить восстанавлива­ющую команду непосредственно после BREAKPOINT.

Но если вы ввели командой "В" неправильный BREAK­POINT, немедленно наберите "К" для восстановления адресов, затем введите BREAKPOINT. Команда "К" может восстановить только последний BREAKPOINT.

R — выводит содержимое всех регистров Z80 на экран.

С — позволяет продолжить работу после BREAKPOINT и выполняется нажатием "С" и "ENTER". Вы можете войти в мо­нитор, набрав "X" и "ENTER". Запущенная команда будет про­должаться, как будто BREAKPOINT не было. Экран очищается, восстанавливаются программный стек и регистры процессора из своих блоков данных до введения адреса возврата в программный счетчик и исполнение возобновляется.

Р — команда вывода содержимого памяти на SINCLIAR PRINTER. Формат команды:

Р АААА ВВВВ

АААА, ВВВВ — начальный и конечный адреса для вывода.

$ — действует таким же образом, как и "М", и позволяет вводить текст прямо с клавиатуры. Формат команды:

$ АААА

АААА — начальный адрес текстового блока. До момента введения последней цифры адреса команда "X" может вернуть вас в монитор. Но после ввода адреса эта команда будет отличать­ся. Поскольку вам может понадобиться ввести "X" как символ, она не может использоваться для команды прерывания.

Поэтому, только в этом случае, функция прерывания выпол­няется вводом "STOP" ("SIMBOL SHIFT" и "А"). Слово "STOP" будет напоминать, на какую клавишу нажать. С помощью "CAPS SHIFT" и "SIMBOL SHIFT" можно вводить любые символы, ис­ключая $. Графика, UDG и команды, вводимые в режиме "EXTEND MODE", не могут вводиться непосредственно. Инвер­тированные символы образуют доступ к областям памяти, со­держащим атрибуты. Другими словами, любой символ, написан­ный на самой клавише и доступным одному нажатию клавиши

или одному уровню сдвига, может быть введен. Любой символ, вводимый в режимах клавиатуры "G" или "Е", может быть введен с использованием команды "М", вводящей НЕХ-код символа.

Z — эта команда дизассемблирует любую часть ОЗУ или ПЗУ, с выводом только на экран, или на экран и принтер. Рас­печатка включает НЕХ-адрес первого байта команды, НЕХ-зна-чения байтов, относящихся к этой команде, и мнемонику Z80 для этой команды. Формат команды:

Z AAAA ВВВВ

АААА, ВВВВ — начальный и конечный адреса части памяти, которую вы хотите дизассемблировать.

N — эта команда превращает HEX-DEC или DEC-HEX. После ввода команды на экране появится:

NUMBER H/D ?

Необходимо ответить, какое число превращаем. НЕХ-числа должны быть четырехзначными.

 

Приложение

 

Регистры Z80

16К

 

48К

 

REG

 

7F3D

 

FF3D

 

R

 

7F3E

 

FF3E

 

I

 

7F3F

 

FF3F

 

F'

 

7F40

 

FF40

 

А'

 

7F41

 

FF41

 

С'

 

7F42

 

FF42

 

В'

 

7F43

 

FF43

 

Е'

 

7F44

 

FF44

 

D-

 

7F45

 

FF45

 

L'

 

7F46

 

FF46

 

Н'

 

7F47

 

FF47

 

F

 

7F48

 

FF48

 

А

 

7F49

 

FF49

 

С

 

7F4A

 

FF4A

 

В

 

7F4B

 

FF4B

 

Е

 

7F4C

 

FF4C

 

D

 

7F4D

 

FF4D

 

L

 

7F4E

 

FF4E

 

Н

 

7F4F

 

FF4F

 

IX(LOW)

 

7F50

 

FF50

 

IX(HIGH)

 

7F51

 

FF51

 

IY(LOW)

 

7F52

 

FF52

 

IY(HIGH)

 

7F53

 

FF53

 

SP(LOW)

 

7F54

 

FF54

 

SP(HIGH)

 

7F55

 

FF55

 

PC(LOW)

 

7F56

 

FF56

 

PC(HIGH)

 

 


Share your thoughts about this chapter

No comments yet.