16. ПРОГРАММИРОВАНИЕ В МАШИННЫХ КОДАХ
Включение стандартных программ TRDOS в программы машинного кода производится
относительно просто. Для программы требуется три элемента:
1. Машинный код, эквивалент BASIC TRDOS.
2. Стандартная программа машинного кода для ввода пункта 1.
3. Стандартная программа в машинных кодах для восстановления системы до ее
первоначального состояния, до вызова и выполнения команды.
Непосредственные ячейки (местоположение) памяти зависят от программы в целом. В
данном примере ячейки стандартной программы будут в 49000 для SAVE, в 49500 для LOAD
и в 50000 для команд их вызова. Таким образом, элемент 1 будет на 49000 или на 49500, а
элементы 2 и 3 на 50000.
Пример:
Пример:
Код для LOAD начинается в 49500 и представляет собой то же, что и вышеприведенный,
за исключением того, что адрес 49502 содержит 239 (LOAD) вместо 248 (SAVE).
Эти две стандартные программы, LOAD и SAVE , могут быть расположены где угодно, но
инициатор, который мы помещаем на50000, требует изменения в адрес 50007-50008 (запись
адреса стандартной программы) и 50025-50026 (адрес стандартной программы LOAD) с тем,
чтобы указать на новые адреса.
Чтобы произвести перераспределение, следует переассемблировать сам инициатор.
Это показано ниже в мнемонике Z80. Ниже даны только мнемоники Z80.
CHADD EGU 23645 Местоположение переменной
SOS CHADD
ORG ХХХХХ ХХХХХ-адрес этого кода
LD HL, (CHADD) Начало записи истинного
CHADD
LD (TEMP),HL Временное хранение истин-
ного CHADD
LD HL.49000 Адрес стандартной программы
SAVE
LD (CHADD).HL CHADD теперь указывает
на нашу стандартную
программу
CALL 15363 Ввод TRDOS SAVE через
CHADD.
JP BACK Переход на ту точку, с которой
вызвана вся эта стандартная
программа
LD HL, (CHADD)
LD (TEMP).HL Программа для LOAD повто-
ряет вышеназванное, только
с измененным адресом
LD HL.49500
CALL 15363
BACK LD HL, (TEMP) Начало восстановления
CHADD
LD (CHADD),HL Повторная загрузка
первоначального CHADD
RET Возврат
TEMP Метка, распределяющая
память для временного
хранения.
Вся стандартная программа, указывающая на программы SAVE и LOAD, вместе с
конечной процедурой "Возврат к точке захода", занимает только 47 байтов.