📂 Документ: orion128-soft-cpm80-love-na-ty-02_clean.html


 

Статья 3, "С CP/M-80 на ты", все про OS DOS к Ориону-128

Как изучить CP/M-80, основы операционной системы СПМ-80.

Дата обновления информации 22.06.2023

По Журналу Радиолюбитель № 3 1994 г

Сейчас на 14/07/2022 сделано и запущено 3 вида контроллера дисководов:

В. СУГОНЯКО, 142440, Московская обл., п. Обухово, а/я 13. "ОРИОНСОФТ".

ОРИОН-128. С СР/М НА "ТЫ"

(Окончание. Начало в № 2 1994r.)

CMP/80 авторская CPM/80 версия 3.60

Работа с дисководом 3,5 дюйма

СТРУКТУРА ФАЙЛОВ СР/М

В СР/М под диском подразумевается логическое устройство, представляющее собой некоторую внешнюю запоминающую среду с прямым доступом, допускающую как чтение, так и запись.

Мы уже отмечали, что для "Ориона" установился "стандарт" на дисковод и дискеты - 80 дорожек (с каждой стороны дискеты) и двойная плотность записи. Напомним, что это относится к дисководам и дискетам формата 5.25 дюйма. Следует добавить, что авторский контроллер и OS-DOS поддерживают работу дисковода 3.5 дюйма (в режиме 720 Кбайт), к которому приложимо все сказанное относительно дисковода 5.25 дюйма.

Все дорожки дискеты размечены (это выполняет программа форматирования) на секторы по 1 Кбайту. Каждая дорожка (за дорожку будем считать обе стороны дискеты) содержит 10 секторов (т.е. 5 + 5 секторов с каждой стороны дискеты). Отсчет на дорожке начинается с первого сектора. Несложно вычислить, что полная емкость дискеты составит 800 Кбайт.

Однако не все пространство диска отведено пользователю. Логически диск разбивается на три составные области:

- системная область. В ней размещаются ВООТ-сектор, ССР, BDOS и BIOS как единый блок, предназначенный для загрузки в память компьютера. Она занимает нулевую и первую дорожки, т.е. 20 Кбайт;

- область каталога для размещения описателей файлов. Занимает первые четыре сектора на второй дорожке;

- область файлов. Все оставшееся пространство диска.

Пространство диска, отведенное под каталог и файлы, организовано блоками постоянной длины размером в два сектора, т.е. 2 Кбайта. Это минимальная логически учитываемая BDOS, единица измерения диска. Проще сказать, при записи файла даже размером в один байт на диске для него будет отведен блок, т.е. 2 Кбайта.

BDOS осуществляет обмен с диском (только посредством BIOS) по записям. Длина записи составляет 128 байт. В один сектор вмещается 8 записей. Только BIOS "знает" как расположены записи в секторе. Из-за такой двойной бухгалтерии "запись-сектор", конечно, снижается скорость обмена информацией с диском, но зато более рационально упаковывается информация, а следовательно, увеличивается полезная емкость дискеты.

В области каталога размещаются описатели файлов. Размер описателя (блок управления файлом - FCB) - 32 байта. Он содержит имя файла, расширение и номера блоков, в которых операционная система разместила файл и другую служебную информацию. Пример размещения Описателей файлов каталога приведен в табл.2. Таблица условно разбита на две записи.

Один описатель рассчитан на 16 Кбайт записываемой информации. Следовательно, если файл больше 16 Кбайт, используется несколько описателей. Часть файла в 16 Кбайт называется экстентом. Поэтому если файл большой, он состоит из нескольких экстентов, пронумерованных в порядке их создания. Несложно посчитать, что отведенное под каталог пространство допускает размещение 128 описателей. Однако это не гарантирует запись такого же количества файлов на дискету, если их размер превышает 16 Кбайт. В то же время из-за блочного (по 2 Кбайта) принципа учета емкости диска сохранение малых файлов приводит к его нерациональному использованию. Тем не менее, со всем этим приходится мириться ради возможности создания файлов с любым количеством записей - от нуля до полного использования диска (независимо от емкости диска, даже если это "Винчестер" на несколько десятков Мбайт).

Изучаем CP/M-80, основы операционной системы СПМ-80 для Орион-128

Присчитывании одной записи каталога в ней располагается четыре описателя. По месту положения описателя в записи он имеет номер от 0 до 3 и называется индексом описателя, который и возвращается при выполнении ряда функций BDOS.

При выполнении функции "открыть файл" операционная система переносит информацию из описателя (по данному файлу) в буфер, расположенный в памяти компьютера, при этом он дополнительно увеличивается еще на несколько ячеек. Этот буфер называется буфером управления файлом или буфером FCB. Он размещается по общепринятому адресу 005C-007FH. Если для доступа (чтение/запись) открывается несколько файлов, необходимо организовать несколько буферов FCB в других областях памяти компьютера.

Буфер FCB состоит из 33 байт (32 байта описателя и один "свой") в случае организации последовательного доступа и из 36 (32+4) байт при прямом доступе. Структура буфера FCB приведена в табл.3.

Изучаем CP/M-80, основы операционной системы СПМ-80 для Орион-128

Где:

DR - номер диска. Может иметь значение от 0 до 2,

при этом:

0 соответствует активизированному диску;

1 - диску "А";

2 - диску "В".

В описателе этот байт выполняет другие функции. Если байт имеет значение 0Е5Н - описатель (и файл) уничтожен, если 0-F - это номер USER, к которому относится файл;

F1 ...F8 - имя файла, состоящее из 1 ...8 больших латинских букв/цифр с нулевыми старшими битами. Имена короче 8 символов дополняются справа пробелами;

Т1, Т2, ТЗ - тип файла, состоящий из 1 ...3 больших латинских букв/цифр с нулевыми старшими битами. Если символов меньше - заполняется нулями. Старший бит (D7) поля Т1 используется как индикатор доступа к файлу. Если он равен 1 - файл R/O (только чтение), если 0 - R/W (чтение/запись). Старший бит поля Т2 (D7-1) указывает на принадлежность файла к группе - системный. Такой файл не просматривается директивой DIR;

ЕХ - текущий номер экстента. Пользователем обычно устанавливается в ноль;

SI, S2 - зарезервировано для внутреннего использования;

RC - число записей в текущем экстенте, принимает значение ог О до 128;

D0...DN - номера блоков в экстенте, заполняются СР/М;

CR - текущий номер записи в экстенте. В операциях последовательного чтения/записи обычно устанавливается в ноль;

RO, R1 - номер записи при прямом доступе. Содержит 16-битное значение (R0 - младший байт, R1 - старший);

R2 - байт переполнения.

Для осуществления доступа к файлу пользователь заполняет в буфере FCB байты с 0 по 12, т.е. указывает номер диска (0 - если обращается к уже активизированном)', 1-2 - к дискам "А", "В" соответственно), имя и тип файла и номер открываемого или создаваемого экстента (обычно 0, т.е. начать с начала). Затем необходимо выполнить функцию "открыть файл" или "создать файл", и операционная система заполнит остальные поля буфера FCB.

При выполнении последующих операций ввода/вывода BDOS корректирует содержимое буфера FCB, осуществляя открытие/закрытие текущих экстентов файла.

По окончании работы с файлом текущую информацию из буфера FCB необходмо записать в каталог, выполнив функцию "закрытие файла".

Литература:

1. В. Сугоняко, В.Сафронов. "Орион 128: контроллер дисковода". Радиолюбитель N 5/93 г.

(Окончание. Начало в № 2 1994r.)

 

Все программы CP/M80 для Ориона-128

Как подключить z80 в Орион-128

Новая плата Орион-128.2 ревизия 512.3, сборка

Программирование на процессоре z80, документация

Тесты процессоров Z80

 

 

Полезные и интересные статьи

На предыдущую страницу  На главную страницу  На следующую страницу