Руководство к ZX-Spectrum. Глава 5

В большинстве компьютеров имеются устройства внешней па-
мяти,  использующие для накопления информации магнитные дис-
ки.  Независимо от типа и емкости они используют один и  тот
же принцип долговременного хранения информации в виде намаг-
ниченных участков поверхности накопителя.  При движении  мимо
них  считывающего устройства в нем возбуждаются импульсы то-
ка.
Сначала (в 1982 году) Спектрумы имели один  единственный
тип внешней памяти — магнитифоны. С тех пор техника развива-
лась: в том же 82 году появились микродрайвы, а позже и нор-
мальные дисководы. Непрерывное развитие технологии привело к
широкому распространению жестких дисков (шутка) и трехдюймо-
вых мини-дискет (тоже шутка).
Однако программиста  должно  больше интересовать как ин-
формация расположена на диске и как ее записывать  и  считы-
вать.  В этой главе мы сосредоточимся на гибких дисках,  ибо
они занимают лидирующую позицию в списке  внешней  накопите-
лей.
5.1 Физическая структура диска
Емкость диска зависит от дисковода и особенностей опера-
ционной системы,  однако структура диска всегда одна и таже.
Данные  всегда  записываются на магнитный поверхности в виде
концентрических поверхности,  называемых  дорожками.  Каждая
дорожка, в свою очередь, состоит из нескольких секторов. Ко-
личество информации на одной стороне диска зависит от  числа
дорожек  и размера сектора.  Плотность (число дорожек) может
меняться от диска к диску. Старые модели дисководов имеют 40
дорожек, новые до 83.
Для дискет расположение каждой дорожки и число использу-
емых строн диска — конструктивные  особенности  дисковода  и
дискеты и не могут быть изменены. Но число и размер секторов
задаются программно при форматировании дискеты. Во всей кни-
ге мы будем рассматривать только стандартные форматы данных.
Специальные схемы форматирования с помощью  программирования
контроллера предназначены для защиты дискет от копирования.
Размер сектора в системе TR-DOS равен 256 байтам. На до-
рожке размещается 16 секторов,  что дает 4К на дорожку или 4
сектора на килобайт. Такое большое количество секторов мало-
го размера имеет несколько преимуществ.
Дискеты имеют две стороны и они обе могут быть использо-
ваны.  (на соответствующем дисководе). Жесткие диски состоят
из нескольких пластин и имеют более двух сторон,  но в связи
с тем, что «винчестеры» до недавнего времени можно было под-
соединить только к Профи, мы их пока рассматривать не будем.
5.2 Форматы дисков TR-DOS
TR-DOS используются очень мало форматов дисков. Возможно
написание сових драйверов дискет, которые будут использовать
другие форматы диска,  но на практике это почти не использу-
ется.
Возможны следующие форматы:
Название Стороны Секторов Дорожек Объем
S-16        1      16       40     160K
D-16        2      16       40     320K
QS-16       1      16       80     320K
QD-16       2      16       80     640K
Причины, по которой стандартный форматов  целых  четыре,
проста:  это  гарантирует,  что  программы будут читаться на
всех компьютерах.  Первые компьютеры имели дисководы для од-
носторонних дискет.  После появились дисководы для двух сто-
носторонних дисков. Теперь их заменили 80-ти дорожечные двух сто-
носторонние дисководы.
TR-DOS использует двойную плотность записи, что позволя-
ет использовать 16 секторов,  это почти соответствует 8 сек-
торам MS-DOS.
5.3 Логическая структура диска
Все диски TR-DOS имеют сходный логический формат. Сторо-
ны,  дорожки и сектора нумеруются одинаковым образом. Прежде
чем  перейти  к  обсуждению организации диска полезно разоб-
раться с нотацией,  принятой в TR-DOS для адресации информа-
ции на диске.
Пятидюймовые дискеты имеют 40 или 80 дорожек, нумеруемых
с 0 (самая внешняя дорожка) до 39 или 79 (самая  внутренняя,
ближайшая к центру дорожка).
На двухстороннем дисководе стороны нумеруются от 0 до 1.
Единственная сторона односторонней дискеты имеет номер 0. На
двухсторонней дискете дорожки нумеруются несколько странно:
0,2,4… 158             сторона 0
████████████▒▒█████████████
1,3,5… 159             сторона 1
Сектора нумеруются  с  0 до 15 в формате DOS или от 1 до
16 в формате контроллера.
Некоторые программы позволяют для простоты указывать  не
только  дорожки,  но и стороны.  Дорожки при этом нумеруются
как на односторонней дискете.  Именно  такой  формат  принят
контроллером дисковода.
5.4 Как TR-DOS использует диски
При форматировании  TR-DOS  делит  каждую  дорожку на 16
секторов по 256 байт.  Общая емкость диска QD-16  составляет
655360 байт.  Однако не весь объем используется для хранения
данных,  некоторую часть диска занимает системная информация
и таблицы, которая необходима для работы.
Процесс форматирования  делит  общее количество секторов
на 3 части,  вернее отделяет от одной большой части две
маленькие. Эти частички — каталог и область системной информации
Каталог содержится в 7 секторах,  системную информацию о
дискете в целом можно найти на восьмом секторе (все на муле-
вой дорожке).
Каталог файлов содержит информацию о файлах.  Там
находится информация о имени, длина и др. Область системной ин-
формации содержит информацию о дискете в целом:  имя  диска,
тип операционной системы, свободная память и так. далее.
Пространство данных используется для хранения собственно
данных и занимает большую часть диска.
Следует учесть, что в TR-DOS нигде не отмечаются плохие
сектора, также не допускается фрагментация файлов.
5.5 Подробности логической структуры
Рассмотрим более детально каталог и системную информацию
5.5.1 Каталог
Каталог используется  для  хранения информации о файлах,
включая имя, его размер, начальный свободный сектор.
Каталог представляется собой таблицу,в  котором  каждому
файлу  на диске соответствует одна запись.  Эта запись имеет
размер 16 байт,  следовательно на одном секторе размером 256
байт вмещается 16 записей каталога.  Всего под каталог выде-
лено 7 секторов нулевой дорожки дискеты.
Каждая запись о файле состоит из 7 полей.  Ниже  указаны
смещения полей в байтах от начала записи:
0..7   Имя файла в ASCII формате
8      Тип файла в ASCII формате
9..10  Параметр «старт»
11..12 Длина файла в байтах
13     Объем файла в секторах
14     Номер первого сектора файла
15     Номер первой дорожки
Поле 1. Имя файла
Первые восемь байт записи каталога содержит имя файла  в
формате ASCII.  Если имя файла короче 8 символов, то оно до-
дополняется во восьми символов пробелами.
Существует несколько особых  ситуаций,  которые  следует
отметить особо. Во-первых, если первых символ имеет значение
00,  то считается,  что это конец  директория.  Если  TR-DOS
встречает  такой символ,  то просмотр каталога прекращается.
Во-вторых,  если первый символ имеет значение  01,  то  этот
файл считается удаленным.  Вообще, я не рекомендую использо-
вать в имени файла символы более #7F и менее #20.
В-третьих, некоторые комбинации имен файлов  воспринима-
ются как управляющие.  Например, «B:WAND» и «A:WAND» воспри-
нимаются как команды для считывания файла  WAND  с  принуди-
тельного дисковода.
Поле 2. Тип файла.
Это поле гранит в себе символ  D,  C,  B,  #  в  формате
ASCII. Как правило применяются только эти символы, чего мы и
рекомендуем вам придерживаться.
Поле 3. Параметр «старт»
Это поле  имеет различное значение в зависимости от типа
файла.  При типе B здесь находится длина бейсик  файла  без
учета  размера переменных.  При типе C адрес с которого была
выгружена программа.
Стартовая строка бейсик-программы записывается после са-
мой программы, номер строки автостарта в области длиной око-
ло 80 байт, приписываемой к программе.
Поле 4. Длина
Длина файла в байтах.  Следует учесть, что величина ука-
занная в этой ячейке может быть ложной.
Поле 5. Размер файла в секторах
Размер файла в секторах. Эта величина всегда должна быть
истинной,  чтобы файл копировался успешно.  Занесение в эту
ячейку нуля является наиболее простой зашитой.
Поле 6 и 7. Начальное место файла на диске
Здесь находится адрес первого сектора и трека соответствует-
твенно.
5.5.2 Область системной информации
Восьмой сектор  нулевой дорожки гранит в себе информацию
о дискете в общем. Она содержит следующую информацию:
Смещения от начала сектора:
#E1  Первый свободный сектор на дискете
#E2    Первый свободный трек
#E3    Тип диска:
16 80 дорожек, 2 стороны
17 40 дорожек, 2 стороны
18 80 дорожек, 1 сторона
19 40 дорожек, 1 сторона
#Е4  Общее количество файлов записанных
на диск
#Е6,Е7 Число свободных секторов на дис-
ке
#Е7    Код  #10,определяющий принадлеж-
ность к TR-DOS #F4 Количество удаленных
файлов
#F5-#FC Имя диска в ASCII формате
5.5.3. Пространство данных
Все файлы данных хранятся в области, занимающей самую боль-
шую часть каждого диска.
Файлам дается  столько места сколько нужно.  Файл всегда
представляет собой один непрерывный блок из секторов. TR-DOS
не  учитывает  плохие  сектора  и после форматирования у вас
есть очень большой шанс,  что ваша программа читаться не бу-
дет, если на вашем диске были плохие сектора.
5.6 Выводы
TR-DOS одна из самый не развитых операционных систем для
Спектрума.  Нет доводов на ее использование, но ей все поль-
зуются и TR-DOS получила большое распространение на территории
рии СНГ.  Но зато есть iS-DOS,  где и набирался этот  текст.
ТR-DOS очень быстрая операционная система, но практически не
предоставляет пользователю никакого сервиса.
В большинстве компьютеров имеются устройства внешней па-
мяти,  использующие для накопления информации магнитные дис-
ки.  Независимо от типа и емкости они используют один и  тот
же принцип долговременного хранения информации в виде намаг-
ниченных участков поверхности накопителя.  При движении  мимо
них  считывающего устройства в нем возбуждаются импульсы то-
ка.
Сначала (в 1982 году) Спектрумы имели один  единственный
тип внешней памяти — магнитифоны. С тех пор техника развива-
лась: в том же 82 году появились микродрайвы, а позже и нор-
мальные дисководы. Непрерывное развитие технологии привело к
широкому распространению жестких дисков (шутка) и трехдюймо-
вых мини-дискет (тоже шутка).
Однако программиста  должно  больше интересовать как ин-
формация расположена на диске и как ее записывать  и  считы-
вать.  В этой главе мы сосредоточимся на гибких дисках,  ибо
они занимают лидирующую позицию в списке  внешней  накопите-
лей.
5.1 Физическая структура диска
Емкость диска зависит от дисковода и особенностей опера-
ционной системы,  однако структура диска всегда одна и таже.
Данные  всегда  записываются на магнитный поверхности в виде
концентрических поверхности,  называемых  дорожками.  Каждая
дорожка, в свою очередь, состоит из нескольких секторов. Ко-
личество информации на одной стороне диска зависит от  числа
дорожек  и размера сектора.  Плотность (число дорожек) может
меняться от диска к диску. Старые модели дисководов имеют 40
дорожек, новые до 83.
Для дискет расположение каждой дорожки и число использу-
емых строн диска — конструктивные  особенности  дисковода  и
дискеты и не могут быть изменены. Но число и размер секторов
задаются программно при форматировании дискеты. Во всей кни-
ге мы будем рассматривать только стандартные форматы данных.
Специальные схемы форматирования с помощью  программирования
контроллера предназначены для защиты дискет от копирования.
Размер сектора в системе TR-DOS равен 256 байтам. На до-
рожке размещается 16 секторов,  что дает 4К на дорожку или 4
сектора на килобайт. Такое большое количество секторов мало-
го размера имеет несколько преимуществ.
Дискеты имеют две стороны и они обе могут быть использованы-
использованы.  (на соответствующем дисководе). Жесткие диски состоят
из нескольких пластин и имеют более двух сторон,  но в связи
с тем, что «винчестеры» до недавнего времени можно было под-
соединить только к Профи, мы их пока рассматривать не будем.
5.2 Форматы дисков TR-DOS
TR-DOS используются очень мало форматов дисков. Возможно
написание сових драйверов дискет, которые будут использовать
другие форматы диска,  но на практике это почти не используется
используется.
Возможны следующие форматы:
Название Стороны Секторов Дорожек Объем
S-16        1      16       40     160K
D-16        2      16       40     320K
QS-16       1      16       80     320K
QD-16       2      16       80     640K
Причины, по которой стандартный форматов  целых  четыре,
проста:  это  гарантирует,  что  программы будут читаться на
всех компьютерах.  Первые компьютеры имели дисководы для од-
носторонних дискет.  После появились дисководы для двух сто-
носторонних дисков. Теперь их заменили 80-ти дорожечные двух
сторонние дисководы.
TR-DOS использует двойную плотность записи, что позволя-
ет использовать 16 секторов,  это почти соответствует 8 сек-
торам MS-DOS.
5.3 Логическая структура диска
Все диски TR-DOS имеют сходный логический формат. Сторо-
ны,  дорожки и сектора нумеруются одинаковым образом. Прежде
чем  перейти  к  обсуждению организации диска полезно разоб-
раться с нотацией,  принятой в TR-DOS для адресации информа-
ции на диске.
Пятидюймовые дискеты имеют 40 или 80 дорожек, нумеруемых
с 0 (самая внешняя дорожка) до 39 или 79 (самая  внутренняя,
ближайшая к центру дорожка).
На двухстороннем дисководе стороны нумеруются от 0 до 1.
Единственная сторона односторонней дискеты имеет номер 0. На
двухсторонней дискете дорожки нумеруются несколько странно:
0,2,4… 158             сторона 0
████████████▒▒█████████████
1,3,5… 159             сторона 1
Сектора нумеруются  с  0 до 15 в формате DOS или от 1 до
16 в формате контроллера.
Некоторые программы позволяют для простоты указывать  не
только  дорожки,  но и стороны.  Дорожки при этом нумеруются
как на односторонней дискете.  Именно  такой  формат  принят
контроллером дисковода.
5.4 Как TR-DOS использует диски
При форматировании  TR-DOS  делит  каждую  дорожку на 16
секторов по 256 байт.  Общая емкость диска QD-16  составляет
655360 байт.  Однако не весь объем используется для хранения
данных,  некоторую часть диска занимает системная информация
и таблицы, которая необходима для работы.
Процесс форматирования  делит  общее количество секторов
на 3 части,  вернее отделяет от одной большой части две  
маленькие. Эти частички — каталог и область системной информа-
ции.
Каталог содержится в 7 секторах,  системную информацию о
дискете в целом можно найти на восьмом секторе (все на муле-
вой дорожке).
Каталог файлов содержит информацию о файлах.  Там  находится
информация о имени, длина и др. Область системной ин-
формации содержит информацию о дискете в целом:  имя  диска,
тип операционной системы, свободная память и так. далее.
Пространство данных используется для хранения собственно
данных и занимает большую часть диска.
Следует учесть, что в TR-DOS нигде не отмечаются плохие
сектора, также не допускается фрагментация файлов.
5.5 Подробности логической структуры
Рассмотрим более детально каталог и системную информацию
5.5.1 Каталог
Каталог используется  для  хранения информации о файлах,
включая имя, его размер, начальный свободный сектор.
Каталог представляется собой таблицу,в  котором  каждому
файлу  на диске соответствует одна запись.  Эта запись имеет
размер 16 байт,  следовательно на одном секторе размером 256
байт вмещается 16 записей каталога.  Всего под каталог выде-
лено 7 секторов нулевой дорожки дискеты.
Каждая запись о файле состоит из 7 полей.  Ниже  указаны
смещения полей в байтах от начала записи:
0..7   Имя файла в ASCII формате
8      Тип файла в ASCII формате
9..10  Параметр «старт»
11..12 Длина файла в байтах
13     Объем файла в секторах
14     Номер первого сектора файла
15     Номер первой дорожки
Поле 1. Имя файла
Первые восемь байт записи каталога содержит имя файла  в
формате ASCII.  Если имя файла короче 8 символов, то оно до-
дополняется во восьми символов пробелами.
Существует несколько особых  ситуаций,  которые  следует
отметить особо. Во-первых, если первых символ имеет значение
00,  то считается,  что это конец  директория.  Если  TR-DOS
встречает  такой символ,  то просмотр каталога прекращается.
Во-вторых,  если первый символ имеет значение  01,  то  этот
файл считается удаленным.  Вообще, я не рекомендую использовать
в имени файла символы более #7F и менее #20.
В-третьих, некоторые комбинации имен файлов  воспринимаются
как управляющие.  Например, «B:WAND» и «A:WAND» воспринимаются
как команды для считывания файла  WAND  с  принудительного
дисковода.
Поле 2. Тип файла.
Это поле гранит в себе символ  D,  C,  B,  #  в  формате
ASCII. Как правило применяются только эти символы, чего мы и
рекомендуем вам придерживаться.
Поле 3. Параметр «старт»
Это поле  имеет различное значение в зависимости от типа
файла.  При типе B здесь находится длина бейсик  файла  без
учета  размера переменных.  При типе C адрес с которого была
выгружена программа.
Стартовая строка бейсик-программы записывается после са-
мой программы, номер строки автостарта в области длиной око-
ло 80 байт, приписываемой к программе.
Поле 4. Длина
Длина файла в байтах.  Следует учесть, что величина ука-
занная в этой ячейке может быть ложной.
Поле 5. Рамер файла в секторах
Размер файла в секторах. Эта величина всегда должна быть
истинной,  чтобы файл копировался успешно.  Занесение в эту
ячейку нуля является наиболее простой зашитой.
Поле 6 и 7. Начальное место файла на диске
Здесь находится адрес первого сектора и трека соответствует-
твенно.
5.5.2 Область системной информации
Восьмой сектор  нулевой дорожки гранит в себе информацию
о дискете в общем. Она содержит следующую информацию:
Смещения от начала сектора:
#E1  Первый свободный сектор на дискете
#E2    Первый свободный трек
#E3    Тип диска:
16 80 дорожек, 2 стороны
17 40 дорожек, 2 стороны
18 80 дорожек, 1 сторона
19 40 дорожек, 1 сторона
#Е4  Общее количество файлов записанных
на диск
#Е6,Е7 Число свободных секторов на дис-
ке
#Е7    Код  #10,определяющий принадлеж-
ность к TR-DOS #F4 Количество удаленных
файлов
#F5-#FC Имя диска в ASCII формате
5.5.3. Пространство данных
Все файлы данных хранятся в области, занимающей самую боль-
шую часть каждого диска.
Файлам дается  столько места сколько нужно.  Файл всегда
представляет собой один непрерывный блок из секторов. TR-DOS
не  учитывает  плохие  сектора  и после форматирования у вас
есть очень большой шанс,  что ваша программа читаться не бу-
дет, если на вашем диске были плохие сектора.
5.6 Выводы
TR-DOS одна из самый не развитых операционных систем для
Спектрума.  Нет доводов на ее использование, но ей все
пользуются и TR-DOS получила большое распространение на территории
СНГ.  Но зато есть iS-DOS,  где и набирался этот  текст.
ТR-DOS очень быстрая операционная система, но практически не
предоставляет пользователю никакого сервиса.