15. ПРОГРАММИРОВАНИЕ
В МАШИННЫХ КОДАХ
Включение TR DOS команды в программы, напи-
санные в машинных кодах, относительно просто. Для
создаваемой с этой целью программы требуется 3 эле-
мента:
1. Машинные коды, эквивалентные БЕЙСИК ко-
манде TR DOS. «
2. Программа в машинных кодах, включающая ко-
ды, упомянутые в п. 1.
3. Программа в машинных кодах для установки си-
стемы в ее исходное состояние перед вызовом и испол-
нением команд.
Размещение полученной программы в памяти ком-
пьютера зависит от самой программы. Рассмотрим
пример, в котором команда SAVE будет располагаться
по адресу 49000, команда LOAD - по адресу 49500, а
с адреса 50000 - инструкции вызова этих команд, ко-
торые являются программой-инициатором.
Пример:
Адреса |
коды |
БЕЙСИК |
пояснения |
49000 |
234 |
REM |
коды символов - см. рук. к SPECTRUM |
49001 |
58 |
: |
|
49002 |
248 |
SAVE |
|
49003 |
34 |
к |
|
49004 |
60 |
Е |
имя файла "EXAMPLE" |
49005 |
120 |
X |
49006 |
97 |
А |
49007 |
109 |
М |
49008 |
112 |
Р |
49009 |
108 |
L |
49010 |
101 |
Е |
49011 |
34 |
•• |
|
49012 |
13 |
ENTER |
в конце всегда дол- жен стоять код клю- чевого слова ENTER |
Коды для LOAD начинаются с адреса 49500 и они
будут такие же, как показано выше, за исключением
того, что адрес 49502 будет содержать код 239 (LOAD)
вместо 248 (SAVE).
Эти две программы, содержащие LOAD и SAVE,
могут быть размещены в любом месте ОЗУ, но в про-
грамме инициаторе, которую мы размещаем с адреса
50000, потребуется изменение адресов, указанных в
ячейках 50007 - 50008 (адрес команды SAVE) и 50025
- 50026 (адрес команды LOAD), на новые значения
адресов этих команд.
Для измененного размещения указанных команд
сам инициатор требуется переассемблировать. Для об-
легчения этой процедуры ниже приведена программа
в мнемонических кодах Z80:
CHADD EQU 23645 размещение SOS
переменной CHADD
ORG ХХХХ хххх -адрес
программы инициатора
LD HL, начало записывания ис-
(CHADD) тинного CHADD
LD (TEMP), HL временное хранение ис-
тинного CHADD
LD HL, 49000 адрес программы SAVE
LD (CHADD), в CI 1ADD помещается
HL адрес SAVE
CALL 15363 вызов TR DOS - SAVE
через CHADD
JP BACK возврат программы в ис-
ходное положение
LD HL,
(CHADD)
LD (TEMP), HL та же процедура
проводится с LOAD, ио
с другим адресом
LD HL, 49500
LD (CHADD),
HL
CALL 15363
BACK LD HL, (TEMP) начало восстановления
CHADD
LEW (CHADD),. перезагрузка исходной
HL CHADD
RET возврат в ту точку, из
которой была вызвана
метка BACK
TEMP метка, выделяющая ме-
сто в памяти для
временного хранения
данных
Вся полная программа, вызывающая программы
SAVE и LOAD вместе с конечным оператором "возврат
в точку входа" занимает всего 47 байт.