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

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


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)

 

 





СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
О всём про всё - Тайна происхождения Homo Sapiens.
Железо - Доктор Profi 1024K
Informations - Откровения Хакера из Великобритании.
Вступление - с днем рожденья, ZXNET! и содержание номера.
TOP5 - популярные игры для ZX Spectrum.

В этот день...   21 ноября