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
|
Перевод строки и возврат каретки
|
ОР
|
Очистка экрана
|
|
|
|
|
|