|
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одолжение следует...
Другие статьи номера:
Похожие статьи:
В этот день... 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