City
#08
31 марта 1999 |
|
Ликбез - полное описание + полный дизассемблер ПЗУ (часть 4).
--------------------------------------------------- ЛИКБЕЗ --------------------------------------------------- (c) П.Ю.Федин ╔═════════════════════════════════════════════════╗ ║ ║ ║ ПОЛHОЕ ОПИСАHИЕ + ПОЛHЫЙ ДИЗАССЕМБЛЕP ПЗУ ║ ║ ║ ║ TR-DOS 5.04T (5.03) ║ ║ ║ ║ ДЛЯ ПРОФЕССИОНАЛОВ, ║ ║ ║ ║ А ТАКЖЕ ДЛЯ ТЕХ, ║ ║ ║ ║ КТО ХОЧЕТ ИМИ СТАТЬ. ║ ║ ║ ╚═════════════════════════════════════════════════╝ пpодолжение Файлы данных Дисковая операционная система поддерживает работу с еще одним типом файлов - с файлами данных. Файлы данных могут быть последовательного и произвольного доступа. Эти файлы разбиты на блоки по 16 секторов с одинаковым именем. Для работы с этими файлами служат следующие команды: 1. Открытие файла последовательного доступа для записи. OPEN#<номер потока>,<имя файла>W[<комментарий>] Если открываемый файл уже существует, то данные будут дописываться в конец файла.После этого вы мо- жете заносить в ваш файл данные путем вывода их в поток. например: PRINT#4;"THIS IS A TEST LINE" Попытка использовать поток для ввода приведет к ошибке INVALID I/O DEVICE. 2. Открытие файла последовательного доступа для чтения. OPEN#<номер потока>,<имя файла>R[<комментарий>] Теперь вы можете вводить данные из файла через поток, например: INPUT#4;A$ Hо вывести что-либо в файл вы не сможете. 3. Открытие файла произвольного доступа. OPEN#<номер потока>,<имя файла>RND,<длина записи> [<комментарий>] Теперь вы можете обращаться к файлу как для ввода, так и для вывода. При обращении к файлу, первым де- лом выведите номер записи в виде строки, заканчивая его символом CHR$ 6. Далее вы можете вводить или выводить данные. После окончания ввода или вывода CHR$ 13 надо снова выводить номер записи. Hапример: PRINT#4;0,"OUTPUT DATA" INPUT#4;(0),A$ PRINT#4;1,"RECORD 1" 4. Закрытие файла. После работы с файлом его необходимо закрыть. Это делается командой: CLOSE#<номер потока>[<комментарий>] При pаботе с файлом данных создается дополнитель- ный канал. Его структуру вы видите в таблице: ╔═══════════╤═════╤═══════════════════════════════╗ ║Hомер байта│Длина│ Содержимое ║ ╠───────────┼─────┼───────────────────────────────╢ ║ 0 │ 2 │Адрес подпрограммы вывода в ║ ║ │ │файл (15630) ║ ║ 2 │ 2 │Адрес подпрограммы вывода из ║ ║ │ │файла (15622) ║ ║ 5 │ 4 │Не используются ║ ║ 9 │ 1 │Всегда равен 36 ║ ║ 10 │ 1 │Всегда равен 1 ║ ║ 11 │ 1 │Номер дисковода, которому при- ║ ║ │ │надлежит файл ║ ║ 12 │ 1 │Номер текущего блока файла в ║ ║ │ │каталоге ║ ║ 13 │ 2 │Длина пройденной части файла ║ ║ │ │последовательного доступа, а ║ ║ │ │также относительный адрес те- ║ ║ │ │кущего символа для подпрог- ║ ║ │ │раммы ввода из файла ║ ║ 15 │ 1 │Тип файла: ║ ║ │ │ 0 - последовательный для ║ ║ │ │ чтения ║ ║ │ │ 127 - произвольного доступа ║ ║ │ │ иначе - последовательный для ║ ║ │ │ записи ║ ║ 16 │ 8 │Имя текущего блока файла ║ ║ 24 │ 1 │Расширение текущего блока файла║ ║ 25 │ 1 │Номер текущего блока в файле ║ ║ 26 │ 1 │Всегда равен 32 ║ ║ 27 │ 2 │Длина записанной части текущего║ ║ │ │блока в байтах ║ ║ 29 │ 1 │Длина текущего блока в секторах║ ║ │ │(всегда pавна 16) ║ ║ 30 │ 1 │Номер первого сектора текущего ║ ║ │ │блока файла ║ ║ 31 │ 1 │Номер первой дорожки текущего ║ ║ │ │блока файла ║ ║ 32 │ 1 │Длина записи для файла произ- ║ ║ │ │вольного доступа ║ ║ 33 │ 1 │Относительный адрес для символа║ ║ │ │для подпрограммы вывода при ра-║ ║ │ │боте с файлом произвольного до-║ ║ │ │ступа ║ ║ 34 │ 1 │Если 0, то подпрограмма вывода ║ ║ │ │будет принимать номер записи, ║ ║ │ │иначе данные. Только для файла ║ ║ │ │произвольного доступа. ║ ║ 35 │ 1 │Если не pавен 0, то при заг- ║ ║ │ │рузке следующего сектора файла ║ ║ │ │текущий будет переписан ║ ║ 36 │ 256 │Текущий сектор файла ║ ╚═══════════╧═════╧═══════════════════════════════╝ Внимание! Во всех подпрограммах для работы с фай- лами данных имеются ошибки. Работа с секторами файлов В TR-DOS есть также возможность работать напрямую с секторами файлов. Для этого существуют две коман- ды. 1. Чтение сектора файла. PEEK<имя файла>,<адрес в памяти>,<номер сектора файла>[<комментарий>] 2. Запись сектора файла. POKE<имя файла>,<адрес в памяти>,<номер сектора файла>[<комментарий>] Также существуют команды PEEK<ENTER> и POKE<ENTER>, которые действуют также, как и LOAD<ENTER>. пpодолжение следует...
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября