City #08
31 марта 1999

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

<b>Ликбез</b> - полное описание + полный дизассемблер ПЗУ (часть 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 NEWS - Графика работы станций.
Scene - The Scene Behind A Curtain.
Реклама - Реклама и объявления ...
Реклама - Реклама и объявления.

В этот день...   1 января

SibNews #08, Woot! #01, Spectrum Magazine #01, ACNews #25, Psychoz #14, ACNews #14, Last 128 #08, Last 128 #06, Last 128 #05, Last 128 #04, Last 128 #03, Last 128 #02, Last 128 #09, Last 128 #3.5, Last 128 #8.025, Sinclair Club #05, Last 128 #M!R 01, Fantadrom #01, Buzz #20, Last 128 #01, DonNews #13, Nicron #120, Promised Land #01, Inferno #01, Marazm #25, Ultimathum #01, Marazm #21, Hooy Mag #02, KrNews #11, Marazm #22, Marazm #23, ZX Football 2000 #01, Codemania #01, Always #03, Bugs #02, IzhNews #08, Virtual Worlds #01, Listok #04, Scenergy #02, Flash Info #18, Marazm #16, Marazm #17, Zed #01, Balagan #02, ZX Format #08, ZX Power #03, Shock #01, Impulse #02, Deja Vu #03, ZX Club #08, ZX Club #06, Numberology #01, Marazm #13, Marazm #12, Marazm #14, Gorodok #02, Zodiac #01, Marazm #15, Deja Vu #07, Marazm #11, Deja Vu #07, Playboy #03, Crazy News #2, Crazy News #4, ZX Light #01, Crazy News #5, Playboy #02, ZX News #03, ZX Review #1-2, Read Me #02, Crazy News #3, Nicron #13, Read Me #01, Public Spirit #01, Faultless #06, Faultless #05, ZX Software #01, Stump #04, Speccy #07, Возраждение #0, Speccy #03, On-Line #17, Scene+ #01, Welcome Press #01, ZX Konig #04, Adventurer #01, Faultless #05, Faultless #04, Di Halt #01, Faultless #01, Playboy #01, Crazy News #1, Faultless #03, Pioneer #03, Sinclair Town #02, ZX Magazine #01, Eldorado #01, ZX Magazine #02, Spectron #01, ZX News #01, ZX Konig #02, 200 #W, Welcome Press #00, Dune #07, Subliminal Extacy #01, Subliminal Extacy #02, ZX Konig #01, Subliminal Extacy #00, Muchomor #01, Spectrofon #01, ZX Revija #02, Outlet #01, Outlet #1-3