Дисковая операционная система для ПК "ZX Spectrum" 1990 г.

Глава 13 - файлы последовательного и произвольного доступа.


13. ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО
И ПРОИЗВОЛЬНОГО ДОСТУПА

13.1. Общее описание.

В разделе 12 описаны обычные файлы массивов
данных. TRDOS позволяет работать еще с двумя ти-
пами файлов данных: файлами последовательного и
произвольного доступа. Чтобы начать работат! с эти-
ми типами файлов, вы должны вначале открыть по-
ток. SPECTRUM имеет 16 потоков. SOS использует
для своих нужд потоки от 0 до 3. Потоки от 4 до 15
доступны для TRDOS. При открытии потока для фай-
лов последовательного и произвольного доступа ис-
пользуется 330 байт памяти из ОЗУ SPECTRUM.

В файле данных могут быть запомнены числовые
и строковые переменные. Числовые переменные при
этом преобразуются компьютером в строковые. Стро-
ка заканчивается (это делает сама система) символом
"ВОЗВРАТ КАРЕТКИ" (код ASCI 1-13).

Последовательный файл запоминаем данные ана-
логично магнитной ленте. Для прочтения какого-либо
символа из файла нужно начать чтение с самого пер-
вого символа.

Файл произвольного доступа запоминает данные в
гиде некоторого числа записей. Любая запись в нем
может быть прочитана или записана при указании ее
номера. Следовательно доступ к последней записи
также быстр, как и доступ к первой.

Такие команды TRDOS. как выбор диска, копиро-
вание, изменение имени и г.п., применимы также и к

файлам последовательного и произвольного доступа.
Единственным отличием является указатель типа
файла, соторый представляет собой символ"*" (вместо
CODE или DATA):

COPY "В ANTIRIAD", "A:ANTIRIAD"#

NEW "NEWFILE", "OLDFILE"#

ERASE "AQUAPLANE"*

Подробно файлам массивов данных, файл последо-
вательного и произвольного доступа редко управляют-
ся непосрелгтвенно из TR DOS. Приведенные ниже
примеры используются в БЕЙСИК программах.

13.2. Файлы последовательного доступа

Файл последовательного доступа может быть от-
крыт для чтения или для записи, но не для чтения и
записи одновременно.

Синтаксис открытия файла для записи:

OPEN STREAM NUMBER, "FILE NAME", W

OPEN номер потока, "имя файла", W

Когда поток открыт для записи, то запись в нет
осуществляется при помощи ключевого слова PRINT:

10 LET DOS - 15619

20 RANDOMIZE USR DOS: REM: OPEN #4,
"TEST", W

30 PRINT *4, "THIS IS A TEST LINE"

40 RANDOMIZE USR DOS: REM: CLOSE #4

Обратит е чнимание на использование переменной
DOS вместо 15619 и на оператор закрытия файла.

Строковая переменная в строке 30 будет записана
на диск в виде файла "TEST". Если файл не будет за-
крыт, то записанные в него данные могут быть поте-
ряны. Любые закрытые файлы могут быть повторно
открыты для последующих операций записи, чтения,
изменения и перезаписи под другим именем.

Синтаксис открытия файла для чтения:

OPEN STREAM NUMBER. "FILE NAME", R

Для считывания данных из потока, открытого для
чтения, используется ключевое слово INPUT:

10 LET DOS = 15619

20 RANDOMIZE USR DOS: REM. OPEN #7.

"TEST". R

30 INPUT #7: A$

Файл данных "TEST" будет загружен с диска в пе-
ременную А$

13.3. Файлы произвольного доступа

Файл произвольного доступа представляет собой
файл данных, который содержит некоторое количест-
во пронумерованных записей, начиная с номера О.
Длина записей (максимум 256 байт каждая) назнача-
ется при первоначальном открытии файла.

Записи хранятся как простые строковые перемен-
ные. Каждая строковая переменная, меньшая, чем на-
значенная длина, запоминается с выравниванием
слева и оканчивается символом "ВОЗВРАТ КАРЕТ-
КИ". Оставшиеся байты записи не определены.

Любая строковая переменная, длина которой пре-
вышает длину записи, будет усечена до оговоренной
длины и запомнена без конечного символа "ВОЗВРАТ
КАРЕТКИ".

Когда файл произвольного доступа открывается
первый раз, TR DOS выделяет файлу 16 секторов
(примерно 4К). Если длина записей превышает 4К,
длина файла автоматически увеличивается.

Синтаксис открытия файла произвольного досту-
па:

OPEN STREAM NUMBER. "FILENAME" RND,
RECORD LENGTH

OPEN номер потока, "имя файла"
RND, длина записи

Синтаксис команды для включения записи в файл
(префикс RANDOMIZE для PRINT и INPUT не тре-
буется):

PRINT STREAM NUMBER; RECORD
NUMBER. VARIABLE NAME

PRINT номер потока; номер записи,
имя переменной

Пример:

10 RANDOMIZE USR 15619: REM: OPEN #8,
"ADRESS" RND. 100

15 PRINT #8; 72,D$

Для файла "ADRESS" открывается поток 8, в ко-
тором каждой записи отводится по 100 байт. Содержи-
мое переменной D$ заносится в 72-ю запись этого
файла.

Если файл произвольного доступа открыт, вы мо-
жете читать из него и записывать в него.

Синтаксис команды чтения из этого файла имеет
вид:

INPUT STREAM NUMBER; (RECORD
NUMBER), VARIABLE NUMBER

Пример:

10 RANDOMIZE USR 15619: REM: OPEN #12.
"TEST1" RND, 20

11 PRINT #12; 20. A$

570 INPUT #12; (15), A$

990 RANDOMIZE USR 15619: REM: CLOSE #12
999 END

В строке 570 читается запись с номером 15 (напо-
минаем, что это 16 по счету запись) и помещается в
переменную А$.

Когда все операции с файлом закончены, поток
должен быть закрыт, как это показано в строке 990.
Содержимое файля может оыть потеряно, если вы-
ключить питание раньше, чем закрыть поток.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Доработки Sorpa - Индикатор для сигнализации драйвера дисковода. Тумблер для переключения дисководов.
BBS - список станций BBS ZXNet.
Вступление - От авторов.
История - "Спектрум: новейшая история". Рассказывает Олег Малахов - Stever.
Presentation - история создания новой текстовой игры 'Кощеева Цепь'.

В этот день...   21 ноября