Правильно! Самого подобные мысли посещали.
Еще CP/M нескольких модификаций (прожде всего в "Профи" и АТМ), варианты iS-DOS и TASiS. Каждая из этих систем использует свои несовместимые с FAT разделы (набор разделов), как правило небольших (8-16Мб каждый, хотя для TASiS нащупан путь увеличить размер разделов на порядки, но файловая система у него все равно останется "своя", с FAT несовместимая). Как правило, многие из этих систем используют те или иные сектора в начале винта (чаще всего дорожка 0) под свои конфигурационные записи. Насчет "Профи" не помню, пусть по нему соовтетствующие товарищи подключаются к дискуссии, а загрузчик классического iS-DOS (прошитый в ПЗУ) сканирует нулевой сектор каждого цилиндра от 0 до 255 в поисках загрузочной записи системы - где раньше найдет, оттуда загрузочную запись и читает. Загрузчик с винта, прошитый в ПЗУ ATM-turbo 2+ (через который грузится пока местный вариант iS-DOS/TASiS), читает загрузочную запись строго со второго сектора нулевого трека., а вот ATMовский вариант CP/M создает и читает оную строго с нулевого сектора, нулевого трека. Вроде бы этот нулевой сектор используется также и Профиком, SMUCом (точнее, поддержка им виртуальный дисков TRD). Это накладывает определенные ограничения на вольницу создания FAT-разделов (хотя бы потому, что стандартный MBR создается опять-таки строго в нулевом секторе), если, автор, конечно, не хочет наплевать на все наследие софта по работе с контроллерами винта разных производителей (я бы, например, не хотел, создавая разделы FAT, разрушить структуру разделов TASiS и CP/M), хотя, судя из упоминания в переписке готовности поддержать SMUC, не хочет.На данный момент на Спектруме с софтом для HDD дела обстоят очень плачевно:
WDC - копировщик, умеет работать только с одним первичным разделом. Такого понятия как "логические диски" на HDD в этой программе просто не существует.
Wild Player - проигрыватель, который умеет работать только с 1 первичным разделом и 1 логическим диском из расширенного раздела.
DNA-OS - умеет работать с 1 первичным разделом и до 4 логических дисков из расширенного раздела.
Частичный выход я вижу, правда без учета пока Профика, в связи с отсутствием информации по устройству загрузочной записи на оном., но тем не менее:
1. Делать поддержку как CHS, так и LBA, потому что сосуществующие на винте прочие системы могут быть в каком угодно варианте, и не факт, что можно перенести один вариант в другой. Например iS-DOS/TASiS на ATM умеет и CHS, и LBA, но евойная же CP/M умеет только CHS, поэтому и TASiS у меня тоже вынуждена сидеть на CHS ровно до того момента, когда я смогу найти столько времени, чтобы наконец-то покопаться в ПЗУ CP/M для переделки, загрузчик iS-DOS на прочих клонах умеет только CHS и т.д..
2. Предусмотреть возможность создавать не только FAT16/32-разделы, но и "пустые" разделы - т.е. выделять пустое пространство (инициализируя его в MBR именно как раздел), в котором можно размещать как раз "классические" разделы iS-DOS/TASiS, CP/M, SMUC и проч. В этом случае пользователь при желании может такой "пустой" раздел создать первым, в начале винта, и тогда многие "старые" ОСи, которые работают при загрузке с начальными треками, не будут портить FAT (тот же TASiS с его загрузчиков во втором секторе, а классический iS-DOS на других клонах, может создавать загрузчик, не в нулевом, а с кажем, в первом цилиндре).
3. Запись MBR в нулевом секторе создавать особым образом. Тут опять же, не могу сказать на Профик и Смук, но CP/M в ATM из 512 байт нулевого сектора использует (утилитой FDISK и другими инструментами) только первые 128 байт, тогда как "классический" MBR требует для себя из этих 512 байт только ПОСЛЕДНИЕ 64 байта. Т.е. информация CP/M и MBR не пересекаются, и это хорошо. Более того, при записи загрузочной информации в нулевой сектор, CP/M все байты, что выше 128 нужных байт, НЕ ЗАТИРАЕТ! Т.е. происзодит так: читается загрузочный сектор целиком, в первые 128 байт записывается инфа, и сектор записывается обратно. Создание MBR в твоем Partition MAGIC должно проходить также, без затирания прочей информации окромя последних 64 байт.
Таким образом, если Профинский CP/M и Смук не поставят перед разработчиком какие-то дополнительные условия, возможно будет сделать утилиту, максимально "толерантную" к прочему наследию спектрума по работе с HDD.
Кроме внутрисистемных под CP/M и iS-DOS, но они не универсальный, это да...И ни одной программы, которая бы умела размечать винчестеры на разделы и форматировать диски.
Фундамент под виртуальный памятник тебе я уже заложил!Решился засесть за написание программы, некого подобия Partition Magic на ПЦ.
Как я написал выше, надо предусмотреть возможность создавать "пустые" разделы и без инициализации в них FAT.Что предполагается сделать:
...
Возможность удалять и создавать первичные разделы, расширенный раздел и логические диски в нем.
+100500Возможность быстрого форматирования (без обнуления всех секторов) дисков в файловую систему FAT-16 и FAT-32, с возможностью выбора желаемого размера кластеров (выбор из списка, ограниченным в соответствии с выбранной файловой системой и размером раздела).
В TASiS стандартная TRDшка грузится с винта в RAM примерно за 3.5-4 секунды, итого мы имеем 160-180 Кб/сек, правда в турбе. При этом чтение идет по команде INIR.При необходимости, можно сделать и полное форматирование, но при размерах дисков 10...80 Гигабайт, на форматирование может уйти время от нескольких дней до несколько недель, т.к. скорость чтения и записи на Спектруме без турбо-режима выходит что-то около 50 Кбайт/сек. Считайте сами. На моём Пентагоне-1024 турбированном на 7 МГц без wait-а скорость выходит ровно в 2 раза выше - около 100 Кбайт/сек.
Как я попытался аргументировать своим скромным ИМХО, таки такая необходимость есть.Будет использоваться адресация LBA. Пока сомневаюсь, нужно ли поддерживать древние винчестеры, которые поддерживают только адресацию CHS.
Тут уже написали, что лучше предусмотреть возможность подключения внешнего драйвера на свой вкус в виде маленького кодового файлика фиксированной длины (2-3 сектора), "ложимого" сразу после основного тела программы и имеющими три стандартные точки входа:Программа работает с жёсткими дисками через контроллер Nemo-IDE.
1. Запись сектора (на входе координаты в CHS/LBA, плюс флаг выбора одного из двух этих режимов, на выходе возможный номер ршибки и сопутствующие данные (например, ошибка записи в битый сектор - номер трека/сектора)
2. Чтение сектора (вход и выход как и в п.1)
3. Инициализация винта, чтение служебной информации (например - конфигурация, номер, название производителя и проч.)
Информация по контроллеру ATM и пример драйвера здесь:
http://atmturbo.nedopc.com/inf/books...c/atm_hard.zip
Там можно и Профик, и АТМ тестировать.Теоретически её можно доработать и под SMUC, но за неимением такого контроллера у меня, не будет и возможности проверять её на работоспособность под SMUC. Хотя можно будет попробовать тестировать на Unreal Speccy.
А так, могу пожелать только удачи. Если нужна будет какая консультация или еще что, пиши. Что будет по силам, помогу...








