Описание программ - ассемблер ZEUS.

Справочник по системным программам

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 очищает экран и возвращает маркер на свое место.