ZEUS
Система ZEUS обеспечивает оптимальный способ написания машинного кода Z80.
Общий формат исходного текста
Текст должен состоять из одного или нескольких операторов, разделяемых
двоеточиями. Каждый оператор состоит из:
1) необязательной метки;
2) команды;
3) необязательного комментария.
Необязательная метка
-метка может содержать буквы верхнего и нижнего регистра и цифры;
-метка должна начинаться с буквы;
-длина метки может составлять 14 знаков;
-метка не должна быть идентичной резервируемому слову;
-метка должна быть отделена от команды пробелом.
Команда
-Команда может быть любой из стандартных команд ЦП ZI LOG Z80 или может быть
директивой ассемблерэ'(смотрите ниже).
Необязательнай комментарий
Комментарий может быть добавлен в конце любой команды. Он должен быть отделен
от команды точкой с запятой .
Константы
Константы могут быть представлены либо в десятичном, либо в шестнадцатиричном
виде следующим образом:
десятичный 1 99 234 4096
шестнадцатиричный #А #FE #6843 #5000
литералы могут быть представлены следующим образом: "а "7 "? "$
Операторы
В ZEUS допускается использование логических операторов:
+ сложение
вычитание
& логическое "и" (AND)
1 логическое "или"("OR")
Никакой приоритет операторов не соблюдается; выражения вычисляются строго
слева направо.
Выражения
Где бы ни требовалось использование в команде константы, на ее месте может
быть употреблено выражение . Выражения строятся из меток и/или констант, разде-
ляемых операторами ,
Д и р е к т и вы ассемблера.
ORG NNNN укороченное имя директивы ORIGIN (качало). Данная директива инст-
руктирует ассемблер ZEUS ассемблировать блок машинного кода, соглас-
но утверждению ORG, начиная с адреса NNNN (при условии, что текущее
значение в директиве DISP равно 0).
DISP NNN укороченное имя директивы DISPLACEMENT (смещение). Директива DISP
инструктирует изменить адрес, с которого генерируется последующий
код, ассемблируется для выполнения с адреса, специфированного пос-
редством текущего параметра директивы ORG.
ENT устанавливает точку входа. Команда 'X' выполняет ассемблированный
код, начиная с последней директивы ENT (вход) в исходном файле.
EQU укороченное имя директивы EQUATE (приравнять) или EQUALS (равно).
Метка может иметь значения, назначенные ей посредством утверждения
вида: метка EQU значение
DEFB NN.NN эта директива вставляет байты NN по текущему адресу ассемблирова-
ния
DEFW NNNN..... Эта директива вставляет слова (адреса) NNN по текущему адресу
ассемблирования
DEFM/строка/ текст.заключенный ограничителями ',/.", будет вставлен по теку-
щему адресу ассемблирования
Наряду со всеми командами языка ассемблера директивы могут иметь в качестве
префикса метку, например:
DATA I DEFW/4000,3456.6879
OFFSETS DEFB 3,2.14.20.9,2
USRADDR ENT
Команды ZEUS
A X ассемблирует мсходный файл и выводит на дисплей сообщение об ошибках.
D X Y удаляет все строки, расположенные между строками X и Y включительно.
F "цепочка знаков" XYZ эта команда выполняет поиск исходного файла для всех
случаев присутствия заданной цепочки. Поиск начинается со строки с
номером X н завершается на строке с номером Y. Любые строки. содер-
жащие эту цепочку знаков, выводятся на дисплей и после вывода Z
строк инициируется пауза.
По умолчанию: X 3 наименьший номер строки
Y = наибольший номер строки
Z = 14
"цепочка знаков" = ""
I X Y после ввода этой команды ассемблер ZEUS будет автоматически генери-
ровать номера строк, начиная с номера X. По умолчанию: X = 10.
Y » 10. Выход - удаление номера текущей строки.
L X Y Н выводит листинг исходного файла,начиная со строки с номером X до
строки с номером Y. Параметр Н предоставляет число строк, подлежащих
выдаче для листинга до наступления паузы. По умолчанию: X = начало.
Y = конец, Н = 14.
М выполняет вход в программу монитора.
N X создает новый незаполненный файл, начиная с адреса X.
По умолчанию: X = 32 768 (#8000).
0 X эта команда приводит к тому, что "старый" исходный файл,расположен-
ный с адреса X. становится текущим исходным файлом.
По умолчанию: X = 32 768 (#8000)
Р X работа устройства печати. Параметр Х=1 включает устройство печати.
Вся выводимая на дисплей информация выводится также на устройство
печати ZX PRINTER. По умолчанию Х=0.
Q укороченное имя команды QUIT (выход). Выполняется выход в систему
BASIC. Для того, чтобы вернуться в ассемблер ZEUS, введите
PRINT USR 57344
R X Y Z перенумеровывается исходный файл. Параметрами являются:
Х«первый номер строки
У=промежуток между последовательными новыми номерами строк;
Z=HOMep строки, с которой начинается перенумерование.
По умолчанию: X ■ 10, Y = 10, Z » наименьший текущий номер строки.
S х распечатывает таблицу символов. Параметр X предоставляет число сим-
волов/меток и связанные с ними шестнадцатиричные значения, выдавае-
мые в листинге до наступления паузы. По умолчанию: х = 15.
Т выводит на дисплей начальный адрес н длину, выражения в байтах теку-
щего файла с текстом. Файл может быть сохранен при возврате в систе-
му BASIC (с помощью команды Q) и при использовании команды:
SAVE "имя файла" CODE начало, длина
Для того, чтобы перезагрузить старый исходный файл по тому же самому
адресу, с которого он был сохранен используйте команду:
LOAD "имя файла" CODE,
по другому адресу, используйте команду:
LOAD "имя файла", начальный адрес.
После загрузки старого исходного файла выполните повторный вход в
ассемблер ZEUS (команда PRINT USR 57344) и введите команду 0.
X выполняет машинный код, полученный при последнем ассемблировании.
Команды монитора
А X эта команда выводит на дисплей как десятичного так и шестнадцатирич-
ного представления величины X, которая может быть представлена в
любом виде,например: А 59 напечатает НЕХ=#ЗВ DES1MAL=59 (шестнад-
цатиричное представление - ЗВ, десятичное представление - 59).
Y Z эта команда копирует блок памяти. В команде пользуются 3 параметра:
X - начальный адрес блока, который будет копироваться
Y - начальный адрес блока,в который будет выполнено копирование
Z - число копируемых байтов.
эта команда выполняет машинный код.начиная с адреса X.
эта команда распечатывает значение X в порте ввода-вывода
Y эта команда позволяет изменить цвета границы, бумаги и печатной
краски. Параметр X представляет байт, используемый для заполнения
таблицы атрибутов: он состоит из четырех полей.
Биты 0-2 управляют цветом краски;
биты 3-5 управляют цветом бумаги;
бит 6 устанавливается для "яркого" цвета;
бит 7 устанавливается для "сверкающего" цвета.
Параметр Y представляет требуемый цвет границы.например:
К 5 1 - белая краска на голубом фоне с голубой границей.
К 38 7- черная краска на белом фоне с белой границей.
выполняется вход в реж.модификации. начиная с адр. X. Эта команда
модификации представляет крайне гибкое и мощное средство работы с
памятью, например: М 6000 напечатает
6000 XX (отмечена, позиция маркера)
параметр XX представляет настоящее содержимое ячейки с адресом
6000. Вы можете теперь продолжить работу четырьмя способами:
1. Изменить содержимое по этому адресу. Напечатайте новое значение над
старым и нажмите клавишу ENTER. Команда модификации напечатает сле-
дующий адрес-6001 вместе с настоящим содержимым.
2. Изменить содержимое по этому адресу и последующим одновременно.
Напечатайте новое значение для настоящего адреса и вслед за ним
значения, подлежащие записи. При нажатии клавиши ENTER команда мо-
дификации напечатает адрес и значение байта, расположенного вслед
за последним модифицированным байтом.
3. Изменить адрес модификации. Напечатайте '/' и вслед за этим новый
адрес. При нажатии клавиши ENTER действие команды модификации пе-
реместится к новому адресу.
4. Выйти из режима модификации. Напечатайте полностью команду останова
и нажмите клавишу ENTER.
Y выполняет вывод значения параметра Y в порт X ввода-вывода,
устанавливает точки останова меток табуляции TAB. Любой отличный от
пробела знак в тон же строке, что и знак 'S'. устанавливает точку
остановки метки TAB (при условии, что строка введена). Клавиша CAPS
SHIFTED '2' перемещает маркер между точками остановки, например:
S I I
Y устанавливает точки остановки метки TAB в колонках, занимаемых зна-
ком ' I '.
Y табулирует память, начиная с адреса X. Восемь байтов памяти выво-
дится на дисплей за один раз в шестнадцатиричном виде, каждая стро-
ка имеет в качестве префикса адрес первого байта в этой строке. Та-
буляция прекращается после того, как Y строк были выведены на дисп-
лей. Для продолжения нажмите клавишу ENTER, нажатие любой другой
клавиши возвратит вас в обычный режим ( режим команды).
Отметим, что модифицировать память можно следующим способом: выпол-
нить табуляцию требуемой области описанным выше способом и после
возвращения в режим команд ввести режим модификации (команда 'М').
Используя клавиши управления маркером, переместить маркер наверх в
листинг, полученный после выполнения табуляции. После изменения
всех требуемых значении в данной строке нажать клавишу ENTER для
модификации действительных ячеек памяти. Выход из режима модифика-
ции выполняется также, цак и перед этим с помощью печати полной
команды.останова и нажатнц клавиши "ENTER",
возвращает управление ассемблеру,
летим, что все, вводимые в программу монитор константы должны быть
гавлены в шестнадцатиричном виде (за исключением констант вводимых в ко-
манде 'А'.
Дизассемблер ZEUS
После загрузки программы в память следует ввести: PRINT (JSR 29369(версия 16к)
или PRINT USR 62137(версия 48к).
Список команд:
символ команда параметры действие
A -ASSING регистр=значение Изменение содержимого регистров
В -BREAK адрес Устанавливает точку останова
С -COPY начальный адрес 1. конечный адрес 1. начальный адрес 2.
Перенос группы байтов из 1 ячей-
ки памяти в другую
D -DASASSEMBLE адрес Обратное ассемблирование
Е -EDIT адрес Редактирование. На экране 20 ад-
ресов и их содержимое.
F -FIND начальный адрес.Конечный адрес.Искомая цепочка символов
Поиск цепочки символов в интервале
G -GOTO адрес переход по адресу
J -JUMP RELATIVE адрес с. Адрес в. Вычисление относительного смещения
К -CONVERT число Преобразование 16-ричного в 10-рич-
ное и наоборот
М -MESSAGE "сообщение" адрес Для вставки цепочки символов по
адресу
Р -PRINT адрес Печать содержимого 64 адресов па-
мяти в символьном виде
R -REGISTERS без параметров Вывод содержимого регистров
S -SUBSTITUTE "имя" начальный адрес, конечный адрес, байт 1. байт 2.
Байт 1 заменяется на байт 2 в за-
данном интервале
Т -TABULATE адрес печать содержимого 64 адресов па-
мяти в HEX виде
V -VERIFY начальный адрес 1. конечный адрес I, начальный адрес 2.
Сравнение 2-х областей памяти
X -EXIT без параметров Возврат в бейсик
Z -ZERO начальный адрес, конечный адрес
Обнуление
Редактор экрана
'CAPS SHIFTED'/l очищает строку, содержащую маркер ("редактирование)
'CAPS SHIFTETV2 перемещает маркер в следующую точку ("блокировка прописных
букв")
'CAPS SHIFTED'/З удаляет знак, расположенный под маркером. ("Прямое изобра-
жение" )
CAPS SHIFTEDV4 вставляет пробел в позицию маркера. ("Обрати, изображение")
'CAPS SHIFTED'/5.6.7.8 перемещение маркера.
'CAPSHIFTED'/9 очищает экран и возвращает маркер "домой".
Коды сообщений об ошибках
0 Недопустимый знак или неразрешенное утверждение.
1 Слишком длинная метка.
2 Ожидаемый символ ')'.
3 Ошибка усечения или выход за пределы диапазона.
4 Ожидаемая ','.
5 Ошибка в контексте.
6 Повторно определенная метка.
7 Ожидаемый символ '('.
8 Недопустимое мнемоническое обозначение.
9 Неопределенная метка.
Резервируемые слова
Следующий список представляет собой список резервируемых слов. т.е. тех слов,
которые не должны использоваться в качестве меток, хотя любая метка может их
содержать.
А |
ADC |
ADD |
AF ' |
AF |
AND |
В |
ВС |
BIT |
С |
CALL |
CCF |
CP |
CPO |
CPDR |
CPI |
CP I R |
CPL |
I |
DAA |
DE |
DEC |
DEFB |
DEFM |
DEFS |
DEFW |
DL |
DISP |
D J NZ |
E |
El |
ENT |
EQU |
ЕХ |
EXX |
H |
HALT |
HL |
I |
IM |
IN |
1 NC |
1 ND |
1 NDR |
INI |
INI R |
IX |
IY |
JP |
JR |
L |
LD |
LDD |
LDDR |
^D I |
LDIR |
M |
NC |
NEG |
NOP |
NV |
NZ |
OR |
ORG |
OTDR |
OTIR |
OUT |
OUTD |
OUT I |
P |
PE |
PO |
POP |
PUSH |
RES |
RET |
RET I |
RETN |
RL |
RLA |
RLC |
RLCA |
RLD |
RR |
RRA |
RRC |
RRCA |
RRD |
RST |
SBC |
SCF |
SET |
SLA |
SP |
SRA |
SRL |
SUB |
v |
XOR |
|
П |
л а н |
п а м |
яти |
|
с и с T |
e м ы |
Z E U |
S |
|
Системой ZEUS используются следующие области памяти
A. Машинный код ZEUS
и машинная память 57 344-65279 (#Е000- #FF00)
B. Исходный файл первоначально начинается с адреса 32 768(#8000), но
может быть изменен командой 'N'.
C. Ассемблированный код определяется пользователем через
(объектный код) директивы ORG и DISP.
D. Таблица символов это таблица, которая содержит алфавитно-цифровые
символы и метки, определенные в исходном файле,
вместе со связанными с ними значениями. Таблица
начинается с адреса 57 343 и увеличивается в раз-
мере вниз со скоростью 16 байтов на одну исполь-
зуемую метку.
Стандартные программы
Имя прог-мы |
Адрес |
Функция |
1 |
1 NPUTCHAR |
#F652 |
Ожидает нажатия клавиши; результат помещается в резерви- | руемое слово A j |
PR INTCHAR |
#F503 |
Печатает знак, находящийся в А. Может также являться уп- | равляющим знаком (см. ниже). Если флаг устройства печати | не равен нулю, то выполняется также вывод на устройство | печати. |
PR INTDECIMAL |
#F5A3 |
Записывает резервируемое слово NL в десятичном виде и за ним пробел. |
PRINTNEXBYTE |
#F2DF |
Записывает А в шестнадцатиричном виде и вслед за ним про- бел. |
PRINTSTPING |
#E4e3 |
Записывает цепочку знаков, следующую завызовом подпрог- раммы; цепочка должна завершаться нулевым байтом. |
INPUTLiNE |
#F6E2 |
Выполняет вход в редактор экрана; помещаетстроку, имею- щую маркер, в буфер. |
BUFFER |
#FE00 |
Буфер из 32 знаков, оканчивающихся нулевым байтом. |
PRINTERFLAG |
#F4CB |
Не ноль, для того, чтобы допустить работу устройства пе- чати. |
PR INTDECNZ |
#E59e |
Печатает десятичное число в NL без ведущих нулей. |
Список управляющих знаков редактора:
*04 удааляет знак, находящийся под маркером.
*05 вставляет пробел в позицию маркера.
#06 перемещает маркер в следующую позицию табуляции.
#07 очищает строку, содержащую маркер.
#08 перемешает маркер влево.
#09 перемешает маркер вправо.
#0А перемещает маркер вниз.
#0В перемещает маркер вверх.
#0С перемещает маркер влево и знак пробела под маркер.
#0D перемещает маркер в начало следующей строки."Прокручивает" строки,
если маркер на строке, расположенной снизу экрана.
#0F очищает экран и возвращает маркер на свое место.