ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Правильно! Самого подобные мысли посещали.
Еще 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.
А так, могу пожелать только удачи. Если нужна будет какая консультация или еще что, пиши. Что будет по силам, помогу...
Последний раз редактировалось Максагор; 27.05.2013 в 17:49. Причина: очепятки
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Для Q-DOS по моей просьбе, ещё в 1998-м году, один мой товарищ написал fdisk. Почти полный аналог с дос6.22 по интерфейсу. Писал он его на Turbo-Pascal 6. Я надеялся потом его быстро доработать до возможности компиляции в TP3 на профи. Но не тут то было, везде юзается тип Longint, которого, как известно в TP3 нету. + ещё там кое что недописано в плане поиска свободного места на диске (fdisk в msdos не просто так откусывает очередной кусок от свободного места, производится ещё проверка поверхности). Недавно Sayman адаптировал другую утилиту для разбивки винта, первичный диск она создает, но и не более того. Забросил он. Форматтер FAT 12/16 я в январе/феврале почти дописал, но там не хватает опять же проверки на битые секторы (оставил на последний момент и пока забросил).
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
Интересуют все системы (в т.ч. и CP/M), которые так или иначе работают с винтом на Профике, и прежде всего не размер и количество разделов, а расположение и содержание конфигурационных записей - насколько они будут мешать созданию стандартной MBR с описателями FAT-разделов...
Как в этом плане дело обстоит с CP/M и iS-DOS/TASiS на АТМке я выше описал....
Максагор, NedoPC group
ПК ATM-turbo 2+ 1024Kb RAM, 1,7Gb HDD, CD-ROM, Turbo FM, GS-512
[ZX rulezzz 4reva!!!]
http://atmturbo.nedopc.com
http://vk.com/atmturbo
http://maksagor.livejournal.com
http://moskprf.ru
[СССР][Коммунизм][КПРФ] ну [ZX], естественно...
Вадим, тут в соседней ветке прикручивали поддержку винта Profi к эмулятору ZXMAK2 и имеются вопросы по поводу совместимости винтов созданных на Профи с другими контроллерами, можешь проверить, прокоментировать?
Я понял. Думаю, что лучше иметь ввиду, что на Профи система разбиения совместима с ПЦ. У меня в планах сделать адаптацию и МикроДОС и ещё нескольких систем совместимых с CP/M к винту. Используя модифицированный драйвер от QDOS. Смысл в том, что и разделы диска будут ПЦ совместимые и никаких аналогов assign будет делать не надо. А то, как было сделано в 1994/1995гг в CBIOS5 - надо забыть как страшный сон.
Я посмотрю, отвечу.
Скрытый текст
Profi 5.06 1024K 12Mhz (кварц на 24), палитра, COM-порт, часы, hdd, covox, программатор
ZX-Spectrum +3, ZX-Spectrum +2B, ZX-Spectrum +2, ZX Spectrum 48, ZX Spectrum 48+
ZX Evolution Rev B.
Color 48 + Beta Disk Interface +FDD+YM2149F
Орель-08БК
Pentagon-48 (недоссобранный кем-то)
Pentagon-128 (полуубитый)
Кворум-128 (в ремонте)
Магик-05 (в ремонте)
Robotron 1715
Корвет ПК8020 и ПК8010
Amstrad CPC 464
Amstrad CPC 6128[свернуть]
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)