ZEUS
Это описание представляет собой краткий конспект из описания ZEUS. ZEUS — полный ассемблер Z80 для работы под управлением ZX SPECTRUM, включает в себя очень удобный полноэкранный редактор текста.
Мнемоника команд соответствует мнемонике, описанной фирмой ZILOG, но для удобства добавлены еще две команды:
JP РЕ,... эквивалентно JP V,...
JP РО,... эквивалентно JP NV,...
Формат входной строки:
NNNNN [LABEL] OPERATION [OPERANDS] [;COMMENT]
Текст в квадратных скобках может отсутствовать. NNNNN
— номер строки в диапазоне от 1 до 65535. LABEL — метка, до 14 символов, начинается с буквы и не может быть идентична зарезервированному слову. К зарезервированным словам относятся мнемоника команд, мнемоника регистров и флажков в регистре состояния процессора. ZEUS различает прописные и строчные символы, и поэтому, например, метки HELLO и hello — разные.
OPERATION — мнемоника кода операции или директива ассемблера.
OPERANDS — операнд (ы). Для операндов приняты соглашения:
— число по умолчанию считается в десятичной системе — 99,125.
— число, перед которым стоит #, считается шестнадцатеричным — #77, #FE .
— литерал — "C,"D,"%
— число в скобках — это адрес, а без скобок — непосредственные данные.
Допустимы унарные и бинарные операции: + - !, они выполняются слева направо без приоритета. Символ $ (доллар) используется в качестве указателя текущего адреса ассемблирования.
Директивы ассемблера ORG NNNN — устанавливает адрес ассемблирования в
NNNN.
DISP NNNN — задает смещение от ORG до адреса размещения объектного файла, например:
ORG 30000 DISP 10000
приведет к тому, что объектный файл в результате ассемблирования будет размещен в ОЗУ с адреса 40000, но правильно исполняться будет только при загрузке его с адреса 30000. ENT — устанавливает точку входа для команды X. EQU — присвоение. Пример: START EQU#AOF6 присваивает метке START значение #AOF6.
DEFB N1,N2,N3,... — резервирует в памяти байты со значениями N1,N2,N3 и т.д.
DEFW N1, N2, N3,... — резервирует в памяти слова с значениями N1,N2,N3 и т.д.
DEFM /СТРОКА/ — резервирует память под строку, ограниченную символами /.
Редактор экрана.
• Команды редактора:
CS +1 — очистка строки на экране, но не в памяти.
CS +2 — табуляция.
CS +3 — сдвижка строки. Символ над курсором удаляется, правая часть строки сдвигается влево, в крайнюю правую позицию заносится пробел, курсор остается на месте.
CS +4 — раздвижка строки. Правая часть строки сдвигается вправо, крайний правый символ теряется, в позиции курсора вставляется пробел, курсор остается на месте.
CS +5 — управление курсором, аналогично BASIC.
CS +6 — управление курсором, аналогично BASIC.
CS +7 — управление курсором, аналогично BASIC.
CS + 8 — управление курсором, аналогично BASIC.
CS +9 — очистка экрана.
CS +0 — удаление символа слева от курсора, курсор влево, пробел в позиции курсора.
Внимание! Редактирование строки необходимо заканчивать нажатием ENTER.
Команды ассемблера
А Х ассемблирует исходный файл до тех пор, пока не встретится Х ошибок, затем приостанавливается, ENTER продолжает ассемблирование, любая другая клавиша — прекращает. Х=14 по умолчанию.
D X, Y — удаляет строки от Х до Y включительно.
F /СТРОКА/, X, Y, Z — поиск "строки" в интервале, от Х до Y, после вывода Z образца — приостановка Z=14 по умолчанию.
I X,Y — автонумерация с номера Х и с шагом Y. Очистка строки и нажатие ENTER прекращает это режим.
L X, Y, Z — выводит на экран исходный текст, начиная со строки Х до строки Y по Z строк. Z=14 по умолчанию. М — вход в монитор.
NX — создает новый .незаполненный исходный файл с адреса X.
Х=32768(#8000) по умолчанию. Следует применять с осторожностью, так как можно испортить BASIC систему, если указать слишком низкий адрес. Х=32768 по умолчанию.
О Х — старый исходный файл с адреса Х становится текущим.
X=32768 по умолчанию.
Р Х — Х"0 выключает принтер, Х=1 включает принтер. Х=0 по умолчанию.
Q — возвращает управление обратно в BASIC, для повторного входа
В ZEUS используйте PRINT USR 57344, и по команде О Х восстановите исходный файл.
R X, Y, Z перенумеровывает исходный файл, Х — первый номер новой строки, Y — шаг, Z — номер строки, с которой начать перенумерацию.
S Х — распечатывает таблицу меток, по Х меток, затем — пауза.
Т — распечатывает на экране стартовый адрес и" длину исходного текста программы в байтах.
Х — выполняет машинный код, полученный после ассемблирования.
Команды монитора.
А Х — выводит на экран DEC и HEX — значение величины X, представленной в любом виде.
С X,Y,Z — копирует блок памяти с адреса Х в адрес Y длиной Z.
Е Х — запускает машинные коды с адреса X.
1 Х — считывает порт с адресом Х и распечатывает его содержимое на экране.
К X,Y — изменяет INK, PAPER, BORDER
X биты 0-2 цвет INK 3-5 цвет PAPER
6 BRIGHT
7 FLASH
Y биты 0-2 цвет BORDER
MX — входит в режим модификации памяти с адреса X, далее можно ввести байт или несколько, разделенных пробелом, и в любом виде, затем нажать ENTER и память будет модифицирована. Для перехода к другому адресу введите / и ENTER. Для выхода обратно в монитор введите . и ENTER.
О _ Х, Y — выводит в порт с адресом Х байт со значением Y.
S — устанавливает позиции табуляции. Пример:
S I I I I <ENTER>
В позициях, где символы отличны от пробела, курсор будет останавливаться при нажатии табуляции (CS + 2).
Т X,Y —распечатывает память с адресах по Y строк, затем пауза.
Z — передает управление обратно в ассемблер.
Сообщения об ошибках
О — недопустимый знак или незавершенное предложение.
1 — слишком длинная метка.
2 — ожидается ')'.
3 — ошибка усечения или выход за диапазон.
4 — ожидается ','.
5 — ошибка в контексте.
6 — повторно определенная метка.
7 — ожидается '('.
8 — недопустимая мнемоника.
9 — неопределенная метка.
Распределение памяти
ZEUS и его рабочие переменные 57344 — 65279 (Е000 — F000). Исходный файл первоначально располагается с адреса 32768, но его местоположение может быть изменено командой N X, тогда он расположен по адресу X. Исходный файл растет вверх, и когда есть вероятность, что он может перекрыть таблицу меток, выдается сообщение OUT OF MEMORY.
Объектный код — его расположение определяется директивами ORG и DISP. Таблица меток начинается с адреса 57343 и растет вниз, когда есть вероятность, что она перекроет исходный текст, выдается сообщение OUT OF SYMBOL TABLE.
Адреса некоторых полезных подпрограмм самого ZEUS.
|
INPCHAR
|
F652
|
Ввод символа в А
|
|
OUTCHR PRNDEC1 PRNHEXB
|
F5031 E5A3 F2DF
|
Вывод символа из А Вывод HL в DEC виде и затем пробел
|
|
PRNHEXW
|
E571
|
Вывод А в HEX виде и затем пробел Вывод HL в HEX виде и затем пробел
|
|
PRNSTR INPLIN BUFFER
|
E403 F6E2
|
Вывод строки, следующей за вызовом и оканчивающейся 0 Ввод строки в буфер
|
|
PRNFLG PRNDEC2
|
FE00 F4CB E59E
|
Адрес буфера Флаг печати на принтер Вывод HL в DEC виде без ведущих иипсяй пулей
|
Управляющие символы при выводе на экран через ZEUS
|
04
|
|
|
|
|
|
05 06 07
|
Удаляет знак Вставляет
|
в позиции курсора (сдвижка) пробел в позиции курсора (раздвижка) Табуляция
|
|
|
|
08 |
|
Очистка строки Курсор влево
|
|
|
|
09
|
Курсор вправо
|
|||
|
ОА
|
Курсор вниз
|
|||
|
0В
|
Курсор вверх
|
|||
|
ОС
|
Курсор влево и пробел в новой позиции курсора
|
|||
|
OD
|
Перевод строки и возврат каретки
|
|||
|
ОР
|
Очистка экрана
|
|||