📂 Документ: orion128-soft-cpm80-sp-club-files_clean.html


 

Организация файловой структуры CP/M , Орион-128, CP/M-80

И проблемы развития CP/M ОРИОНА, CP/M-80 Орион Софт OS-DOS V3.60

Продаю платы и наборы микросхем, куплю микросхемы

Все версии CP/M-80

Все версии ORDOS

 Авторский контроллер НГМД. Мы собираем именно такой и на нем работаем.  Читайте про пакет Атлас. Также дискеты можно отформатировать из под ORDOS пакетом программ Атлас.

Дискеты должны быть отформатированы в OS DOS (CP/M-80) программой FORMAT.COM и на дискету записана система OS DOS V3.60  программой SYS.COM или SG360.COM

Руководство системного программиста OS DOS ORION-SOFT

Организация файловой структуры CP/M и проблемы развития CP/M ОРИОНА

SP Computer Club - иформация о системном ПО от В. Чистякова

Чистяков Владимир, Sp-Computer Club, февраль 1994

В начале 1979 г. фирма DIGITAL RESEARCH выпустила новую версию CP/M версии 2.0, а через несколько месяцев появилась CP/M версии 2.2, которая получила настолько большую популярность, что просуществовала без изменений 15 лет и очевидно еще и через 5 лет в мире будут существовать компьютеры ее использующие. Появившиеся в 1981 г., CP/M версий 3.0 и 3.0+ не получили никакого распространения ввиду полного отсутствия прикладного ПО для них. На основе CP/M возникли частично совместимые системы МИКРОДОС и MSX-DOS. Первая поддерживает дату и время, а вторая имеет подкаталоги и формат MS-DOS (но требует Z80). Файловая система CP/M получила столь широкое распространение в силу ее "адаптивности" к любой аппаратуре.

Она может поддерживать как 8-ми дюймовые (77 дорожек и 26 секторов), 5-ти дюймовые односторонние (35 дорожек), так и жесткие диски (Винчестер) обьемом до 1 Гбайт (но обьем файла не может превышать 8 Мб). Наиболее важным достоинством стала возможность иметь любой размер сектора на диске (кратный 128 байт). Это колоссальное достижение (этого не имела ISIS, RT11, MSDOS, MSX) позволяет пользователю самому выбрать наиболее удобный для него формат физического носителя.

Если в MS-DOS размер физического сектора (на дискете, не винчестере) всегда равен 512 байт, то в CP/M выбор размера сектора - дело вкуса пользователя. Итак в CP/M используются следующие понятия - логический сектор имеет размер 128 байт физический сектор (т.е минимальный размер физической записи на диск) имеет произвольный размер и включает один или более логических секторов и блок. Под блоком понимается определенное количество логических секторов; его размер определяет минимальный размер записи на диск. CP/M допускает размер блока данных 1К, 2К,4К,8К и 16К. Обычно производительность системы увеличивается при увеличении размера блока данных, поскольку при этом требуется меньшее количество обращений к каталогу диска и логически связанные записи данных находятся в близком физическом соседстве. Однако при большом размере блока обьем дискеты тратится нерационально, т.к для записи (допустим) одной лишней 128 байтовой записи не вошедшей в предыдущий блок, CP/M открывает следующий блок, то есть для записи всего 128 байт Вы тратите, например 16К дискового пространства. Итак, все пространство дискеты делится на блоки, каждый блок имеет свой определенный номер от 0 (это обычно каталог) до 65535. Таким образом максимальный размер дискеты, ограниченный адресацией блока зависит от выбранного формата диска и при размере блока 1К составляет 64Мб, а при блоках в 16К байт - 1 Гб. Т.е с точки зрения адресации блоков, CP/M почти не имеет ограничений по емкости дискеты (пока в моду не войдут диски в 1 Гбайт). Формат диска описывается в БПД (блок параметров диска).

Однако сама CP/M оперирует с данными по 128 байт - всякий файл рассматриваетсякак массив 128-ми байтовых записей. Для управления файлами организуется каталог.
Он располагается на определенной дорожке дискеты и местоположение этой дорожки задано в БПД числом, как отступ от дорожки с номером 0. Для каталога таким образом резервируется место между системными дорожками и файлами. В CP/M которая применяется на ОРИОНЕ, также как в CP/M КОРВЕТА (BIOS 1987), "Роботрона-1715" и "Хоббита" каталог размещается на 4 дорожке и имеет размер 4К. Размер блока данных равен 2К. Каждая запись в каталоге диска имеет размер 32 байта и описывает один файл (экстент). Каталог содержит имя файла и набор указателей на блоки данных из которых состоит файл. Указатели на блоки данных могут быть однобайтовыми (если количество блоков на диске менее 255), но обычно используются двух-байтовые указатели (CP/M сама определяет это по номеру посл.блока из БПД). Так как в каждой "каталожной записи", для записей о размещении блоков выделено 16 байт, то каждая запись в каталоге может описывать запись на диске имеющую размер или 16 блоков или 8 блоков (при двухбайтовых указателях). Если данный файл состоит из большего количества блоков, то в каталоге делается еще одна запись о этом файле (Обычно считается, что каждая запись в каталоге описывает один экстент файла, т.е говорят что файл состоит из N-числа экстентов). Однако количество экстентов для одного файла также не бесконечно. CP/M версии 2.0 допускает наличие только 32-х экстентов для одного файла, что означает, что при двух-байтовых указателях в каталоге (т.е в БПД задано, что дискета имеет более 255 блоков) максимальный размер файла составляет 32*8=256 блоков. При размере блока в 2К мы не можем иметь в CP/M версии 2.0 файлы размером более 512К. CP/M версии 3.0 использует зарезервированный байт (переполнения номера экстента) и поэтому допускает большее количество записей в каталоге. Если требуется иметь файлы большего размера, то целесообразно увеличить размер блока. CP/M версий 2.0 и 2.2 имеют 36 стандартных функций, а CP/M версии 3.0 - 40 функций. Отличительной особенностью CP/M КОРВЕТА и ОРИОНА от CP/M ИРИШИ, СМ1800, SCORPION-256, Хоббита и РОБОТРОНА является гибкость по отношению к дисковым форматам.

 Если в обычных CP/M блоки параметров дисков загружаются с дискеты вместе с системой и не меняются далее (т.е система проинсталирована жестко, напр: диск А - 80/2, B - 40/2) то в CP/M ОРИОНА блок параметров дискеты считывается с конкретного диска и переносится в ОЗУ (для использования CP/M). Т.е можно работать с дискетами разных форматов - достаточно лишь заменить диск и нажать "Контрол-Цэ". При этом CP/M сама настроится на формат диска. Это позволяет иметь одну и ту же версию CP/M для разных дисководов и плотностей записи. В ACP/M SP-Computer Club-а 1992 гибкость еще немного расширена - введена возможность задавать скорость позиционирования головки и физическое количество дорожек дисковода (это позволило эмулировать работу 40-дорожечного формата на НГМД с 80-дорожками, за счет выполнения 2-х шагов головки на одну дорожку). Тем не менее в связи с установкой на ОРИОН HIGH-DENSITY формата записи на дискету, появлением новых форматов записи на диск и доработкой КНГМД для работы с повышенной плотностью уже нецелесообразно поддерживать устаревшие форматы записи на диск. В частности - одинарную плотность записи (т.е FM-запись), односторонние и 40-дорожечные дисководы. Использование и поддержка таких форматов лишь не оправдано усложняет КНГМД и BIOS CP/M (и удорожает CP/M). На мой взгляд целесообразно иметь лишь 2 формата дискеты - обычный и HIGH-DENSITY. При этом, думается, не имеет смысла стандартизовать лишь один определенный формат HIGH-DENSITY. Дело в том, что плотность записи целесообразно иметь максимально высокой. Например, если Ваша аппаратура позволяет выжать 2000К на дискету, то нет смысла пользоваться менее плотным и кем-либо вводимым как стандарт форматом 1,2 Мб на диск. Даже если все Ваши диски будут в "нестандартном" формате, для обмена программами всегда можно воспользоваться обычным форматом (800К на диск: пять 1-килобайтовых секторов на дорожку). Какие же дисковые HIGH-DENSITY форматы возможны к применению на ОРИОНЕ? Возможность иметь более плотный формат зависит во-первых от возможностей НГМД. Обычные (не HD) фирменные дисководы имеют существенный запас по плотности записи.

Например TEAC (обычный, на 720) позволяет записывать не 5, а 7 однокилобайтовых секторов на дорожку (разумеется на хороших дискетах 96tpi). Это позволяет иметь 80*2*1*7=1120К на дискету. На отечественных НГМД можно выжать лишь 6 секторов (целесообразно увеличить подмагничивание головки для использования HD-дискет, это увеличивает надежность). HD-дисководы (желтой сборки) без всяких проблем позволяют иметь 1,44 Мб для 5,25" и 1,6 Мб для 3,5" дисководов. Оригинальные японские и американские HD-дисководы известнейших фирм позволяют иметь до 2000К на диск (опробовано 1,8Мб). Во-вторых для получения HD-формата требуется немного дорабатывать контроллер - переделки в основном заключаются в введении в контроллер НГМД возможности програмно переключать такт ВГ93 (Если не требуется совместимость с обычным форматом, можно ограничиться лишь заменой кварца в КНГМД). Такт ВГ93 также можно выбирать по разному. Для возможности чтения дискет от IBM PC целесообразно выбрать такт на 60% больше, чем при обычной плотности записи. Это позволит читать принятые на IBM PC форматы - 1,2 Мб на дисководах 5,25" и 1,44 Мб на дисководах 1,44 Мб. При этом, в связи с тем, что на ОРИОНЕ применяются более крупные сектора (1К вместо 512Б) на дискету будет помещаться (при той же плотности данных) - 1,44 Мб на дискету 5,25" (9 секторов по 1 Кило на трэк) или 1,6 Мб на дискету 3,5" (10 секторов). Так как при такой плотности данные выдаются значительно быстрее, чем при обычной плотности, то естественно требуется вдвое увеличить быстродействие компьютера.

При частоте 2,5 МГЦ при работе КНГМД в формате 800К не оставалось никакого запаса по скорости - т.е 800К - это предел обычного ОРИОНА (попробуйте понизить такт до 2,25 и у Вас уже не будет записи на диск - не будет успевать процессор). Таким образом на обычном ОРИОНЕ формат более 800К возможен только лишь при применении ПДП -дополнительной БИС 1810ВТ37 (и 3 ИМС обрамления). Установка ПДП целесообразна также потому, что указанная БИС (в отличие от 580ВВ57) может качать данные "из памяти в память", т.е реализует аппаратный блиттер (т.е БИС быстрой пересылки данных) - 8 тактов на байт (т.е заменяет команду LDIR Z80). Применение блиттера целесообразно для работы с графикой. Применение ВТ37 позволяет даже с тактом процессора в 2,5 МГЦ иметь формат 2000К на диск (и более). При использовании HD-дисководов следует учитывать отличия дисководов 5,25" и 3,5". Дисководы 5,25" вращаются быстрее обычных - 360 об/мин (вместо 300) - т.е выдают данные на 20% быстрее, чем обычные 5-ти дюймовки. Этим и обьясняется невозможность подключить к обычному нашему ТОРМОЗУ ОРИОНУ (на 580) 5-ти дюймовые HD-дисководы: как указано выше - при формате 800К нет никакого запаса по скорости. Тут можно посоветовать лишь перейти на одинарную плотность, что конечно смешно - покупать за 55$ HD-дисковод, чтобы иметь 300К на диск, или увеличить такт процессора до 3 МГц (разумеется предварительно заменив ВМ80 на Z80). Разумеется в КНГМД надо повысить такт на 20% (например: вместо кварца 8 МГЦ поставить 9,6 МГЦ).

При использовании дисководов 3,5" подобных проблем с быстродействием ОРИОНА не возникает - 3-х дюймовки вращаются с той-же скоростью, что и обычные 5,25" (300 об/мин) и годится обычный КНГМД (разумеется формат остается также обычным - всего 800К, хотя надежность увеличивается многократно). Достоинством 3,5-дюймовых НГМД является их дешевизна (на 20% дешевле, чем 5,25, а скоро и дискеты для них станут дешевле - ведь на Западе уже заканчивается производство дискет на 5,25" - они становятся рэтро, а значит не дешевеют), существенно большая надежность - лучшая механика, диски не пылятся - их можно кидать, не требуются конверты для хранения. Немаловажно, что 3-х дюймовки работают бесшумно, в отличие от "грохочущих" 5-ти дюймовок. В то же время пока, приобретать 3-х дюймовый НГМД целесообразно лишь, как второй - у 99,99% "орионщиков" стоят дисководы 5,25" и обмен программами возможен только на дисках 5,25". Итак, по-моему, для ОРИОНА сейчас возможны следующие дисковые форматы:

1. Стандарт 800К. 5 секторов по 1К на дорожку. Аппаратура - КНГМД КОРВЕТ и скорость процессора 2,5 МГЦ (или выше). Дисковод - обычный или HIGH-DENSITY.

2. Не стандарт 800К. Обычно дисковод допускает более 80 дорожек, целесообразно их использовать. При 82 дорожках имеем 820К. Такт процессора - 2,5 или более.

3. 6 секторов. При 82 дорожках и 6 секторов по 1К можно иметь - 82*2*6=984К на обычном (но хорошем) или HD-дисководе. Такт процессора для обычного НГМД - 3.0, а для HD-5,25" не менее 3,5 МГЦ.

4. 7 секторов. При 82 дорожках и 7 секторах имеем - 1148К. В таком формате из обычных НГМД надежно работает только TEAC (полезно перестроить также подмагничивание головки под HD-дискеты). Такой формат требует не менее 3,5 МГЦ для скорости вращения диска 300 об/мин и не менее 4,0 МГЦ для 360 (т.е 5,25"-HD).

5. 9/10 секторов. Имеем 1,44 Мб на 5,25" и 1,6 Мб на 3,5". При этом требуется такт процессора не менее 5 МГЦ (реальный такт, т.е без WAIT) или применение БИС ПДП (при любом такте процессора). Так, как дисководы 3,5" вращаются медленнее, то при одном и том же такте ВГ93, на дискету удается записать 10-й сектор, что выгодно отличает 3-х дюймовый HD-дисковод от 5-ти дюймового. При грамотном выборе такта ВГ93 появляется возможность читать дискеты от IBM PC.

6. Высокоплотный формат HD. При наличии ПДП и качественного дисковода (разумеется китайские подделки не годятся) возможно иметь 2000К и более на диск. Количество секторов может быть 11-15, столько сколько позволяет дисковод, дискеты и конкретная ВГ93 (2 МГЦ такта у нее нормируется, т.е обычный HD не противоречит ее паспортным данным, но какой запас кроме этого можно из нее выжать покажут лишь эксперименты). По результатам первых опытов, ВГ93 позволяла иметь 1800К на диск без подбора микросхем.

Для увеличения емкости дискового пространства для HD-форматов полезно располагать каталог на 2-й а, не 4-й логической дорожке (CP/M оперирует с логическими, а не с физическими дорожками, так, что обычная дискета имеет 160 дорожек). Емкость каталога для HD-форматов полезно увеличить, чтобы иметь не 128, а 256 файлов на диск (каталог будет занимать 8К). Форматы повышенной плотности совершенно оправданы для любительских целей, не стоит придерживаться "догм". Форматы для промышленных стандартов выбирались с точки зрения максимальной надежности и к тому-же уже устарели (вернее диски и НГМД научились делать качественнее). Для любительских целей, не важна совместимость и допустимо за счет небольшого снижения надежности добиться существенной экономии затрат на дискеты. Сегодня наиболее перспективными представляются следующие форматы: нестандартный на 800К (82 дорожки) - это для владельцев самых дерьмовых дисководов и самых дерьмовых дискет, 6 секторов - при наличии простого "турбирования" (т.е 5 МГЦ с WAIT-ом), т.е при "реальном такте" в 3,5 МГЦ большего не получить и при этом можно использовать обычные НГМД (фирменные, 5350, Роботрон 5600) или устаревшие 800-килобайтовые 3-х дюймовки (бывает и такое рэтро и их можно купить по 20$).

Также при наличии такта 5 МГЦ и усовершенствованного КНГМД перспективен формат 1,44/1,6 Мб. Все форматы требуют разных частот, подаваемых на ВГ93 и при попытке реализовать аппаратно-програмное переключение КНГМД в нужный формат - схема КНГМД неоправдано усложняется. Поэтому, целесообразным каждому пользователю выбрать индивидуальный HD-формат (только один) и в соответствии с ним доработать свой КНГМД. Для управления HD/2D целесообразно задействовать тот же самый бит в регистре управления КНГМД, который ранее переключал в одинарную плотность (1D/2D). При этом холодный загрузчик дисковода можно будет не изменять (речь идет о правильном загрузчике, т.е таком, который умеет грузить все форматы CP/M - и одинарную плотность и CP/M работающую в любой из банок ОЗУ - это например загрузчик SP-Computer Club-a, в то время, как некоторые загрузчики, полученные из него - упрощены - проверьте Ваш загрузчик, умеет ли он грузить одинарную плотность и CP/M в основную банку ОЗУ). Правильный загрузчик пытается сначала считать первый сектор дискеты (BOOT-сектор) в двойной плотности, а если это не получается, то переключает КНГМД на одинарную плотность и повторяет попытку.

В принципе можно было бы расширить регистр управления КНГМД и ввести туда дополнительные биты для выбора нужной плотности записи. Это несложно, тем более есть 3 свободных бита. Однако такая универсальность КНГМД привела бы к тому, что по каждому горячему старту и при замене дискет происходили бы "долгие чтения" BOOT-сектора (ведь КНГМД пытался бы читать во всех форматах, например: в 4-х, каждый раз делая 10 попыток чтения, а затем переходя к следующему формату) - это непривычно (когда по CONTROL/C обращение к НГМД 5 секунд) и быстро надоедает. Такой вариант более профессионален, но вариант с всего 2-мя форматами на КНГМД более перспективен, ввиду того, что у пользователей КНГМД уже имеются и нет смысла вводить сложные переделки на готовых платах (надо было сразу делать КНГМД с учетом HIGH-DENSITY). При покупке НГМД следует учесть, что на рынках в основном продаются дисководы из азиатских стран, часто подделки под фирменные НГМД. Обычно подделку легко отличить по скрипу и грохоту моторов и отсутствию гравировки фирмы на корпусе (5,25" имеют отлитое имя фирмы в аллюминиевой раме, а 3,25" - штамповка на крышке). Наклейкам верить нельзя - это подделка. Целесообразнее купить 3-х дюймовник. Но если дисковод покупается как первый, то с целью обмена дискет надо брать 5,25". Дисководы 5,25"-HD в основном бывают на 1,2 Мб - это означает, что скорость вращения колеса - повышенная. Но бывают дисководы 5,25" на 1,44 Мб - это дисководы фирмы TEAC. Эти дисководы могут работать и как 1,2 (360 об) и как 1,44 Мб (300 об/мин). Для выбора скорости вращения диска используются перемычки-конфигураторы. С учетом таких 5,25"-дисководов бывают и HD-дискеты 5,25" на 1,44 (это обычно дорогие дискеты с тефлоновым покрытием). 5,25"-TEAC-HD 1,44 стоит обычно 65$, в то время как китайский 5,25" HD-1,2 МБ стоит 50-55$. Разумеется при возможности выбора стоит покупать TEAC.

Приведенные соображения еще раз подтверждают аксиому - все программы CP/M, в том числе и дисковые утилиты для работы на физическом уровне (с CP/M-дисками) должны использовать только подпрограммы BDOS/BIOS CP/M. В противном случае (как например BP.COM,  M. Bridge - она работает только при 800К) ваша программа будет привязана к конкретной схеме КНГМД, к одному формату записи или (что еще безграмотнее) к конкретной версии BIOS CP/M. После распространения HD-формата на ОРИОНЕ, в ближайшее время появится возможность поставить Винчестер - поэтому все системные программы должны быть корректными ... и не "лезть" на диск на физическом уровне, непосредственно обращаясь к КНГМД (вдруг у кого-то КНГМД не на ВГ93, а на 8272). Кроме того, ввиду того, что возможно появление новых систем на базе ОРИОНА, т.е кардинальное изменение аппаратуры и идеологии системного ПО все системные программы должны быть чисто CP/M-программами (не лезть в экран напрямую, только через консольный вывод), иначе на ОРИОН-ПРО в его WINDOWS, или на новых версиях CP/M для Z80CARD-II ОРИОНА ваши программы зависнут. При попытке включить например экран N2 и поработать с цветом Ваша программа погубит систему, т.е зависнет и к тем же последствиям приведет попытка "напрямую" поработать с клавиатурой на ОРИОН-ПРО (в режиме ПРО клавиатура адресуется как порт).

Для системных программ вполне достаточно псевдографики. Если Вам все-же хочется иметь доп.функции (например оконные), то напишите свой драйвер (с полным комплектом документации), чтобы при изменении системы, потребовалось лишь немного изменить драйвер, без изменения основной программы. При этом Ваша программа будет состоять из 2-х файлов (программы и драйвера), зато это будет легко адаптировать на любой CP/M-компьютер (АТМ-ТУРБО, СИНКЛЕР-ПРОФИ, СКОРПИОН, ХОББИТ и ОРИОН-ПРО). Со временем на Орионе появится версия CP/M имеющая красивый, графический и цветной стандартный драйвер консоли со стандартизованными управляющими кодами - но пока этого нет и приходится использовать терминал VT52 и КОИ-8 с псевдографикой по ГОСТУ. Проблема включения в CP/M на ОРИОНЕ цветного, оконного стандартного драйвера созрела и программисты уже работает над его созданием...

Чистяков Владимир, Sp-Computer Club, февраль 1994

Контактный адрес: 192238 С-Петербург А/Я 175, Чистякову Владимиру Ивановичу
 

 

    

 

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

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