TR-DOS для профессионалов и любителей 1993 г.

Диски и дисководы - структура дискеты TR-DOS. Структура системного сектора. Замечания о других версиях TR-DOS.


ДИСКИ И ДИСКОВОДЫ

Чаще всего с контроллером BETA используется 5.25 дисковод двойной плотности. Дисководы высокой плотности (1.2, 1.44MB) использовать не имеет смысла, т.к. данный режим не поддерживается. Если у Вас применяется 40-дорожечный дисковод, у Вас будут проблемы с перезаписью, при обмене программами, т.к. 80-дорожечные диски на таком дисководе не читаются, а 40-дорожечные на 80-дорожечном - читаются, но не пишутся. Напомню, что режим "40" на 80-дорожечном дисководе не обеспечивает стандартную 40-дорожечную запись (см. фирменную инструкцию)!

Дисковод с двойной плотностью называют 80-дорожечным, хотя практически он обеспечивает доступ к 84...86 дорожкам (в зависимости от конкретного дисковода и дискеты). В нумерации дорожек имеется некоторая путаница, так как иногда используются номера цилиндров (пар дорожек, 0.85) и номер стороны (0,1; 0-верхняя), а иногда - сквозная нумерация (0.171; четные номера - верхние). При использовании TR-DOS встречаются оба варианта. Доступ к дорожкам 80.85 возможен при вызове процедур из ПЗУ; стандартными командами DOS он не поддерживается.

TR-DOS дает 16 секторов на дорожке и 256 байтов в секторе. Уменьшенный (в MS-DOS, например, сектор=512) размер сектора имеет преимущество при хранении большого числа коротких файлов, т.к. более экономно расходуется дисковое пространство (если файл имеет, к примеру, длину всего 1 байт, на диске он все равно займет целый сектор). Кроме того, при использовании файлов произвольного доступа увеличивается скорость операций.

Сказанное дает возможность подсчитать количество секторов и вместимость форматированного диска (учитывая, что TR-DOS использует внешнюю [0] дорожку для хранения системной информации о диске):

40 дорожек односторонний = 38*16 = 624 сектора *256=156 KB 40 дорожек двухсторонний = 79*16 = 1264 сектора *256=316 KB 80 дорожек односторонний = 79*16 = 1264 сектора *256=316 KB 80 дорожек двухсторонний = 159*16 = 2544 сектора *256=636 KB 86 дорожек (максим. кол.) = 171*16 = 2736 сектора *256=684 KB

Это означает, что на 1 дорожке помещается 4 KB, или 4 сектора на 1 KB. Таким образом, разделив количество свободных секторов на 4, можно узнать, сколько килобайт свободного пространства осталось на диске (напомню, 1KB=1024 байт).

TR-DOS использует двойную плотность записи, поэтому получаем 80 дорожек и 16 секторов по 256 байт на дорожке.

СТРУКТУРА ДИСКЕТЫ TR-DOS

Вся служебная информация о дискете размещается на нулевой дорожке. Первые восемь секторов (№ 0...7) содержат каталог файлов, следующий сектор - № 8 - системный, в нем записаны ее параметры. С дорожки номер 1 начинается основное пространство дискеты, где собственно и хранятся файлы. Как видите, организация диска очень проста, по сравнению с MS-DOS, поэтому и возникают сложности с удалением файлов, требуется уплотнение дискового пространства командой MOVE.

Сектора нулевой дорожки с номерами от 9 по 15 обычно не используются и при помощи рассмотренных ниже процедур DOS в них можно разместить какую-либо собственную информацию. Существует, например, оригинальный "boot", занимающий в основной области диска всего один сектор, который при записи размещает свои коды в свободных секторах нулевой дорожки (автор Ю. Власов). Однако, пользуясь этими секторами, не записывайте на такой диск при помощи "Magic" - данная процедура испортит сектора с номерами 10, 11 о "Magic" см. далее).

Процедура удаления файла заключается в замене первого байта его имени кодом 01, после чего, файл считается удаленным и не отображается в каталоге. Вся информация на дискете сохраняется, пока не будет выполнена команда MOVE. Если удален файл в конце каталога, первый байт имени может получить нулевое значение (признак свободного пространства).

Для файлов типа "DATA", поле длины (Length) также представляет собой длину массива (переменной), а поле адреса (Start)-начальный адрес этого массива в момент записи, с учетом 257-байтного сдвига на величину буфера обмена (см. далее). Для дисковых файлов (#), поле длины содержит длину заполненной части блока, от 0 до 4096 (напомню, что эти файлы записываются блоками по 4096 байт, т.е. 16 секторов, под одинаковым именем). Старший байт поля адреса для дискового файла равен 32, а младший - номеру блока в файле (0, 1, 2,.), что в каталоге отображается как 8192, 8193, 8194.

На дискете заголовки файлов записаны в первых 8 секторах (с номерами от 0 до 7) нулевой дорожки. Кроме того, следует заметить, что порядковый номер заголовка файла в каталоге имеет следующее свойство: старшая половита байта соответствует номеру сектора, в котором записан заголовок, а младшая - номеру заголовка в секторе. Это бывает полезно при работе с диском.

Как видим, номер строки автостарта BASIC- программы не входит в данные заголовка. Он записывается вместе с программой, 5 байт после конца программы или области переменных, если они есть - в поле ELINE: после разделителя полей #80 следует байт #AA и 2 байта номера строки (младший, старший). В отличие от кассеты, автостарт с нулевой строки не выполняется.

Поле "число секторов" используется при копировании файла, а поле "длина файла" - при его загрузке. Обнулив число секторов, можно сделать файл некопируемым (хотя эта защита так же легко и снимается).

Каталог дискеты вмещает максимум 128 файлов, считая и стертые; а так как подкаталоги в TR-DOS не создаются, то при большом числе коротких файлов каталог переполняется, и часть пространства на дискете остается неиспользованной.

СТРУКТУРА СИСТЕМНОГО СЕКТОРА

Системную информацию о дискете содержит 8-й сектор нулевой дорожки, точнее, конец этого сектора, начиная с 225-го байта:

ИМЯ

АДРЕС

НАЗНАЧЕНИЕ

BUFF_ADR

0

#00

#5025

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

DCU_SEC

223

224

#DF

Слово. Содержит число секторов на диске, расформатированном при помощи DCU (вначале равно значению в #E5). На диске расформатированом TR-DOS равно 0.

FR_S_NEXT

225

#E1

#5E06

Байт. Номер следующего свободного сектора. Инициализируется нулем.

FR_T_NEXT

226

#E2

#5E07

Байт. Номер следующей свободной дорожки. Инициализируется единицей.

TYPE DISC

227

#E3

#5E08

Байт. Тип дискеты: #16 - 80 track, 2 side #17 - 40 track, 2 side #18 - 80 track, 1 side #19 - 40 track, 1 side

N_FILES

228

#E4

#5E09

Байт. Количество файлов на диске, включая удаленные. Инициализируется нулем.

N_FRE_SEC

229

230

#E5

#5E0A

Слово. Количество свободных секторов.

Инициализируется в зависимости от типа диска:

#09F0 - 80 track, 2 side

#04F0 - 40 track, 2 side

#04F0 - 80 track, 1 side

#0270 - 40 track, 1 side

При форматировании программой DCU на максимальное число дорожек: #0A70 - 84 track, 2 side #0AB0 - 86 track, 2 side

MAIN_BYTE

231

#E7

#5E0C

Байт. Количество секторов на дорожке. Должно быть #10, иначе диск признается неформатированным.

ZERO

232

#E8

Два байта нулей.

BLANK9

234

#EA

9 байтов пробелов (код #20).

ZERO

243

#F3

1 нулевой байт.

N_DEL_FIL

244

#F4

#5E19

Байт. Количество удаленных файлов. Инициализируется нулем.

DISC TITL

245

#F5

#5E1A

Поле из 8 байт. Имя диска после форматирования.

ZERO

253

#FD

3 байта нулей. Конец главного сектора.

* ПРИМЕЧАНИЕ: адрес дан от начала сектора в десятичном и HEX виде, а также во временном буфере DOS, начиная с 23845 (#5D25), куда считывается системный сектор, что

необходимо при анализе ПЗУ. Для шестнадцатеричного представления вместо стандартной записи, скажем, 5D25h, используется более привычная для пользователей SPECTRUMa - #5D25.

ЗАМЕЧАНИЯ О ДРУГИХ ВЕРСИЯХ TR-DOS

Версия 5.03 TR-DOS является более быстрой. Особенно это заметно при выполнении команд LIST, MOVE, COPY B. Однако для повышения быстродействия пришлось отказаться от тестирования дисководов, в связи, с чем некоторые старые типы дисководов с низкой скоростью перемещения головки с этой версией работать не будут. На уровне команд отличий между версиями нет, однако структура ПЗУ версий 5.01 и 5.03 сильно отличается; 5.04 по адресам более похожа на 5.03. Далее, в основном речь идет о версии 5.01, которая используется автором; некоторые сведения о 5.03 приводятся из литературы (например, сборник "ZX-Ревю" № 1 за 93 г). Хотелось бы подчеркнуть, что автор не является экспертом по всем версиям TR-DOS. В основном приведенная информация достоверна и для других версий, хотя не исключены и какие-то отличия.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Из неопубликованого - Размышления.
Письмо №279 - Ишимбай
About Miko Best - О разновидности Спектрума - MikoBest.
Пиво - Классические неполадки при употреблении пива.
От редактора - Вот и дождались третьего номера компьютерной газеты ZX-Тiме.

В этот день...   21 ноября