Работа с ZX-Spectrum 1993 г.

Интерфейс диска «BETA». Глава 14-15. - непосредственное чтение и запись секторов. Программирование в машинных кодах.


ГЛАВА 14

НЕПОСРЕДСТВЕННОЕ ЧТЕНИЕ И ЗАПИСЬ СЕКТОРОВ

В дополнение к трем типам файлов данных TR DOS поддерживает не-
посредственное чтение и запись секторов файла.

КОМАНДА ЧТЕНИЯ - РЕЕК

Команда РЕЕК позволяет читать любую часть файла с диска в ОЗУ. За
одну операцию можно прочесть только один сектор и поместить его в любое
место ОЗУ. Синтаксис команды следующий.

РЕЕК "имя файла" адрес буфера, номер сектора т.е.:
PEEK "RECORD" 30023,5

В этом примере сектор 5 файла RECORD считывается в ОЗУ с адреса

30023.

КОМАНДА ЗАПИСИ - РОКЕ

Эта команда позволяет записать сектор данных из ОЗУ в любое место
файла на диске. Синтаксис аналогичен команде РЕЕК:

РОКЕ "имя файла" адрес буфера, номер сектора, т.е.:
POKE "B:OLD" 30024,10
В этом примере данные размером в один сектор, начиная с адреса ОЗУ

30024, записываются в сектор 10 файла OLD в дисководе В. Так как эта ко-
манда изменяет содержимое файла на диске, пользоваться ею следует осто-
рожно.

ГЛАВА 15

ПРОГРАММИРОВАНИЕ В МАШИННЫХ КОДАХ

Включение процедур TR DOS в программу в машинных кодах имеет
строгую и однозначную последовательность.

Программа должна содержать три элемента:

• 1. Эквивалент команды BASIC'a TR DOS в машинных кодах.

• 2. Процедуру в машинных кодах, выполняющую пункт 1.

• 3. Процедуру в машинных кодах, восстанавливающую
первоначальное состояние системы перед выполнением команды.

Используемые адреса зависят от программы в целом. В данном приме-
ре адреса процедур для записи (SAVE) и чтения (LOAD) будут соответствен-
но 49000 и 49599, а для команд, и их вызывающих - 50000. Таким образом
пункт 1 будет в адресах 49000 или 49500, а пункты 2 и 3 - в 50000.

Пример:

АДРЕС

код

BASIC

ПРИМЕЧАНИЕ

49000

234

REM

см. коды в руководстве

49001

58

по SPECTRUM, приложение

49002

248

SAVE

4900г3

34

"

49004

69

Б

49005

120

X

49006

97

А

имя Файла - "EXAMPLE"

49007

109

М

49008

112

Р

49009

108

L

49010

101

Е

49011.

34

»

49012

13

ENTER

заканчиваем всегда (ВК)

Команды для чтения, начинающиеся с адреса 49500, в точности такие
же, за исключением адреса 49502, который содержит 239 (LOAD) вместо 23Г
(SAVE). Эти две процедуры могут находиться в любом месте памяти, но г
инициирующей программе, расположенной с адреса 50000, величины в ад
ресах 50007-50008 (адрес процедуры записи) и 50025-50026 (адрес процеду
ры чтения) должны соответствовать их положениям. Для того, чтобь
переместить инициирующую программу, ее необходимо перетранслировать
По этой причине приводится только мнемоника команд Z80.

CHADD EQO 23645 АДРЕС СИСТЕМНОЙ ПЕРЕМЕННОЙ CHADD

ORG ХХХХХ ХХХХХ - АДРЕС ЭТОЙ ПРОГРАММЫ

LD HL, (CHADD) ВРЕМЕННО СОХРАНИМ CHADD

LD (TEMP), HL

LD HL, 49000 АДРЕС ПРОЦЕДУРЫ ЗАПИСИ

LD (CHADD), HL (CHADD) УКАЗЫВАЕТ НА НАШУ ПРОЦЕДУРУ

CALL 15363 ВЫЗЫВАЕМ TR DOS ЧЕРЕЗ CHADD

JP BACK ВОЗВРАЩАЕМСЯ ТУДА, ОТКУДА ВЫЗВАЛИ

LD HL, (CHADD) ПРОЦЕДУРА ПОВТОРЯЕТ ПРЕДЫДУЩУЮ, ЗА

LD (TEMP), HL ИСКЛЮЧЕНИЕМ АДРЕСА ПРОЦЕДУРЫ ЧТЕНИЯ

LD HL, 49500

LD (CHADD), HL CHADD УКАЗЫВАЕТ НА НАШУ ПРОЦЕДУРУ

CALL 15363 ВЫЗЫВАЕМ TR DOS ЧЕРЕЗ CHADD

BACK LD HL, (TEMP) ВОССТАНОВИМ ПЕРЕМЕННУЮ CHADD

LD (CHADD), HL

RET ВОЗВРАТ В MAIN-PROGRAM

TEMP БУФЕР ДЛЯ ВРЕМЕННОГО ХРАНЕНИЯ

Вся эта программа, включающая процедуры записи, чтения и возврата в
основную программу, занимает всего 47 байтов.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
INTRO - Об оболочке газеты - ее особенности.
Смайлик - Сколько анекдотов о ментах вы знаете?
Ответ на письмо №4.
Реклама - реклама и объявления.
B.B.S. Новости - О работе B.B.S.'ок.

В этот день...   25 апреля