Организация файловой структуры CP/M и проблемы развития CP/M ОРИОНА ------------------------------------------------------------------- В начале 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 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, Чистякову Владимиру Ивановичу