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одолжение следует...



Другие статьи номера:

От редакции - сегодня публикуются самые свежие новости, полученные из неофициальных источников.

Железо - о доpаботке PC-шной RS-232 мыши для использования ее совместно с Kempston Mouse Interface.

Что-где-почем - Пpедставляю новые пpогpаммы, появившиеся у меня за пpошедшую неделю.

Ликбез - полное описание + полный дизассемблер ПЗУ (часть 4).

Смайлик - ИЗ ЗАПИСОК ДЖЕHТЛЬМЕHА.

Бук - Светлые пpоблемы темной головы.

Реклама - продам и куплю спектрум и дискеты.


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

Похожие статьи:
Обмен опытом - Компьютер и здоровье.
BBS новости - Презентация новых BBS : Paradise Station & Techno Station.
Посмеёмся - Писец NS.

В этот день...   18 июля