1.12. НрОСРЕДШрНАЯ ^ЛПИСЬ/ЧТЕНИЕ СЕКТОРА
типами файлоиНданных, описанных в последних двухъ
разделах; TRrDOS предлагает также считывание/запись файла DIREST SEC-
TOR. Один сектор содержит на диске 256 байтов.
Команда РЕЁКдает-вам возможность считывать любую часть файла на
диске и переносить ддош&: &;ш№ять с произвольным доступом. Вы можете
считывать только один сектор !за раз, и данные могут быть переданы в любое
место в памяти с произвольным доступом. Синтаксис команд следующий:
PEEK "FILE NAME" BUFFER ADDRESS, SECTOR NUMBER
Например:
PEEK "RESORD" 30023,5....
В этом примере 5тЛ.&йШ>Р файла "RESORD" считъюается и его содер-
жание записывается в память с произвольным доступом по адресу
Команда РОКЕ^ает вам возможность записать сектор данных из памяти
с произвольным доступом в любое место в файле на диске. Синтаксис такой
же, как ш*тсис комЗДды РЕЕК:
POKE "FILE NAME'! BUFFER ADDRESS, SEKTOR NUMBER
Например:
ГОЙЕ "B:OLD" ЗШ24, 10
В этом примере'&Ктор данных, начиная с адреса 30024 памяти с произ-
вольным доеном (RAM), записывается в 10-й сектор файла "OLD" в дис-
ководе "В". Так как эта команда изменяет содержание файла на диске, ее
следует использовать осторожно.
1.13. ПРОГРАММИРОВАНИЕ МАШИННОГО КОДА
Включение стандартных программ TR-DOS в программы машинного ко-
да производится относительно: просто. Для программы требуется три элеме-
нта: J"'
1 — Машинный код, ^эквивалент BASIC TR-DOS.
- Стандартная1 программа машинного к°Да Для ввода пункта 1.
- Стандартная ц^градШ ft Машиадых кодах для восстановления си-
стемы до ее первоначального состояния, для вызова и выполнения
команды.
Примечание:
Коды, как.в приложении А
SPECTRUM
Непосредственные ячейки .(местоположение) памяти зависят от програм-
мы в целом. В данном примере ячейки стандартной программы будут в 49000
для SAVE, в 49500 для LOAD и в 50000. для1 команд их вызова. Таким
образом, элемент 1 будет на 490Ш .или:.йа: 49500.
Пример: |
|
Адрес |
Код |
49000 |
234 |
49001 |
58 |
49002 |
24 |
49003 |
34 |
49004 |
69 |
49005 |
120 |
49006 |
97 |
49007 |
109 |
49008 |
112 |
49009 |
108 |
49010 |
101 |
BASIC.
REM
49011
49012
ENTER Bcenii заканчивается
указанием ENilBR.
Код дли LOAD начинается с 49500 и представляет:;собой:то же, что и
выше приведенный, за исключением того, что адрес 49502: сЬ^рЖйт 239
(LOAD) вместо 248 (SAVE).
Эти две стандартные программы, LOAD и SAVE, могут быть располо-
жены ще угодно. Но инициатор, который мы помещаем на 50000^ требует
изменения в адресе 50007-50008 (запись адреса стандартной; программы) и
50025-50026 (адрес стандартной программы LOAD) с тем, чтобы указать на
новые адреса.
Чтобы произвести перераспределение, :^дует: ^ сам
инициатор. Это показано ниже в мнемонике Z80. ШжФ:#аны только 16
мнемосхем.
CHADD EQU 23645 Местоположение пе:рё'Й§НИ0И. SOS CHADD
ORG ХХХХХ ХХХХХ - адрес этого кода. :
LD HL, (CHADD) Начало записи истинного CHADD.'
LD (TEMP), LD Временное хран<р!ф.::^
LD HL, 49000 Адрес стандартней nporp^iiSAVE.
LD (CHADD), HL CHADD теперь указывает на|ёашу
стандартную программу. :|j
CALL 15363 Ввод!тОр:8.:ШЕ через dHADD^
JP BACK Переход на точк^&ярторой вызвана
эта стандартная программа."
LD HL, (CHADD) Стандартная программа1 для LOAD повторяет выше
названное, только б измененный, адресом.
LD (TEMP),HL
LD HL,49500
CALL:;j&363 BACK LD HL, (TEMP) НаЧало восстановления CHADD.
LD ^НЩ^ИЬ.Повторная загрузка первоначального CHADD.
RE"H ВозвраЖЛ^ШиППН:^
МЕТКА TEMP Метка;1распредей память для
временного хранения ;
.Вся стандартная программа, указывающая на программы SAVE и LOAD,
вместе с конечной процедурой "возврат, к точке захода", занимает только 47
байтов.