TR-DOS 1969 г.

Работа с файлами - Файлы с последовательным и произвольным доступом. Команда PEEK. Команда POKE.


     12. Файлы с последовэательным и произвольным доступами.
                                                                       
     12.1. Общее описание.
                                                                       
     В последнем разделе обсуждались обычные массивы файлов данных.
TRDOS обеспечивает два дополнительных типа файлов данных -  последо-
вательного и произвольного доступа.
     Чтобы использовать эти два типа файлов данных, сначала вы долж-
ны открыть поток. В SPECTRUM содержится 16 потоков. SOS резервирует
потоки от 0 до 3 для своего собственного использования, а потоки от
4 до 15 доступны для TRDOS. Когда открыт поток для файла с  последо-
вательным  или произвольным доступами, используется 336 байт памяти
произвольного доступа.
     В файле данных могут храниться как числовые, так  и  строковые
переменные.  Компьютер  преобразует  числовые  переменные в строки.
Строка заканчивается системно возвратом каретки (ASC!! CODE 13).
     Данные файла с последовательным доступом записываются по поряд-
ку,  как на ленту. Чтобы считать цепочку по направлению к концу фай-
ла, необходимо начать с самого начала файла. Данные файла  с  произ-
вольным доступом хранятся в виде некоторого количества записей. Мож-
но считать или записать любую запись в этом файле, указав ее номер.
Следовательно  доступ  к последней записи можно осуществить так ъже
быстро как и к первой.
     Другие команды TRDOS по выбору дисковода, копированию,  измене-
нию названий и т. д. все одинаково пухрименяются к файлам последова-
тельного и произвольного доступов. Единственная разница- в типе  ин-
дикатора файла, который представляет собой "#" вместо "CODE" или "DA-
TA". Например:
                                                                       
     COPY "B:PHONE","A:PHONE"#
     NEW "NEWFILE","OLDFILE"#
     ERASE "NAMEDD"#
                                                                       
     Как ифайлы данных, файлы последовательного и произвольного
доступов редко управляются непосредственно с TRDOS. Поэтому предпо-
лагается, что нижеследующие примеры находятся в программе BASIC.
                                                                       
                                                                       
     12.2. Последовательные файлы.
                                                                       
     Последовательный файл может быть открыт для записи или считыва-
ния, но не для обеих этих операций в одно и то же время. Синтаксис
для открытия файла для WRITE (записи) следующий:
                                                                       
     OPEN STREAM NUVBER,"FILENAME",W
                                                                       
     Когда поток открыт для записи, ключевое слово программы BASIC
PRINT используется для записи данных в этот поток. Например:
                                                                       
     10LET DOS=15619
     20RANDOMIZE USR DOS:REM:OPEN #4,"TEST",W
     30PRINT#4;"THIS IS A TEST LINE"
     40RANDOMIZE USR DOS:REM:CLOSE#4
                                                                       
     Обратите внимание на "DOS" вместо печати в "15619" и закрытия
файла. Цепочка в строке 30 будет записана в файле "TEST" на диске.
     Если бы файл не был закрыт, данные были бы потеряны. Любой зак-
рытый файл может быть повторно открыт для  дальнейшей  операции  за-
пись  с  помощью считывания, изменения и повторной записи под новым
названием.
     Синтаксис для чтения открытого файла:
                                                                       
     OPEN STREAM NUMBER,"FILENAME",R
                                                                       
     При открытом потоке для READ используется ключевое  слово  SOS
INPUT для считывания данных из этого потока, например:
                                                                       
     10LET DOS=15619
     20RANDOMIZE USR DOS:REM:OPEN#7,"TEST",R
     30 INPUT #7;AS
     Этот файл данных "TEST" будет загружен в AS с диска.
                                                                     
                                                                       
     12.3. Файлы с произвольным доступом.
                                                                       
     Файл   с  произвольным  доступом-  это  файл  данных,  который
содержит некоторое количество записей, пронумерованных от 0 и выше.
Длина  записей (макс. 254 байта каждая) выбирается и распределяется
при первом  открытии  файла.  Запись  храниться  в  виде  отдельной
строки.  Любая  строка, длина которой меньше длины распределенной
записи, записывается, выравнивается слева и завершается  с  помощью
возврата  каретки  (ASC CODE 13). Оставшиеся байты записи теряются.
Любая строка, длина которой больше длины записи, будет  усечена  до
распределенной длины и записана без вэиозврата каретки.
     Когда  файл  произвольного  доступа впервые открывается, TRDOS
распределяет 16 секторов  (примерно  4К)  в  этот  файл.  Он  будет
автоматически расширятся, если длина файла превысит 4К.
     Для   открытия   файла   произвольного   доступа  используется
следующий синтаксис:
                                                                       
     OPEN STREAM_NUMBER","FILENAME"RND,RECORD_LENGHT
                                                                       
     Для записи в файл существует следующий синтаксис команды (пре-
фикс RANDOMIZE не требуется для распечатки и ввода: PRINT и INPUT):
                                                                       
     PRINT STREAM_NUMBER;RECORD_NUMBER,VARIABLE_NAME
                                                                       
     Например:
                                                                       
     100RANDOMIZE USR 15619:REM:OPEN#8,"ADDRESS"RND,100
     150PRINT#8;72,DS
                                                                       
     Поток 8 был открыт для файла "ADDRESS" в котором под каждую за-
пись назначено 100 байт. Содержание DS было помещено в запись номер
72 этого файла.
     В отличии от последовательного файла,в этом случае можно считы-
вать файл и делать в него запись,когда файл  открыт.Для  считывания
записи из файла используется следующий синтаксис команд:
     INPUT STREAM_NUMBER:(RECORD_NUMBER),VARIABLE_NAME
                                                                       
     Например:
     100 RANDOMIZE USR 15619:REM:OPEN@12,"TEST"RND,20
     110 PRINT #12,20,AS
                     .
                     .
                     .
     570 INPUT#12;(15),AS
                     .
                     .
                     .
     990 RANDOMIZE USR 15619:REM:CLOSE#12
     999 END
                                                                       
     В  строке  570  считывается  запись  с номером записи 15(помни-
те,что это 16-я запись) и загружается в переменную AS.
     Когда все операции с  файлом  закончены,поток  необходимо  зак-
рыть,как указано в строке 990.Если электоэнергия будут отключена до
закрытия потока,то содержание будет утрачено.Одна запись  может  со-
держать более одной переменной.Программа должна связывать вместе це-
почки этих переменных для произведения операции записи.Таким же  об-
разом,программа  должна разбить цепочку послле операции чтения,если
данные должны быть снова разделены на отдельные переменные.
                                                                       
     13. Непосредственная запись/чтение сектора.
                                                                       
     Наряду с тремя типами  файлами  данных,описанных  в  последних
двух разделах,TRDOS предлагает также считывание/запись файла DIRECT
SECTOR.Один сектор на диске содержит 256 байтов.
                                                                       
     13.1. Команда PEEK.
                                                                       
     Команда PEEK дает вам возможность считывать любую часть  файла
на  диске  и  переносить данные в память с произвольным доступом.Вы
можете считывать только один сектор за раз,и данные могут быть пере-
даны  в  любое  место в памяти с произвольным доступом.Синтаксис ко-
манд следующий:
                                                                       
     PEEK"FILENAME"BUFFER ADRESS,SECTOR NUMBER
                                                                       
     Например:
                                                                       
     PEEK "RECORD"30023,5
                                                                       
     В этом примере 5-сектор файла "RECORD" считывается,и его содер-
жание записывается в память с произвольным доступом из адреса 30023.
                                                                       
                                                                       
     13.2. Команда POKE.
                                                                       
     Команда POKE дает вам возможность записать сектор данных из па-
мяти с произвольным доступом в любое место в файле на  диске.Синтак-
сис-такой же ,как синтаксис команды PEEK:
                                                                       
     POKE"FILENAME"BUFFER ADDRESS,SECTOR NUMBER
                                                                       
     Например:
                                                                       
     POKE "B:OLD"30024,10
                                                                       
     В  этом  примере длина сектора данных,начиная с адреса RAM (па-
мять с произвольным доступом) 30024,записывается в  десятый  сектор
файла  "OLD" в дисководе B:.Т.к эта команда изменяет содержание фай-
ла на диске,ее следует использовать осторожно.



СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Стихи - "Выбор".
заключение - авторы и т.д.
Adventure Project - Проектирование и разработака Адвентюрных и RPG игр.

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