PDA

Просмотр полной версии : Partition Magic на Спектруме. Нужен ли ?



Northwood
27.05.2013, 14:34
Всем доброго дня.

По настоянию нашего товарища John North решил сесть за написание на Спектруме утилит для работы с HDD.

На данный момент на Спектруме с софтом для HDD дела обстоят очень плачевно:

WDC - копировщик, умеет работать только с одним первичным разделом. Такого понятия как "логические диски" на HDD в этой программе просто не существует.

Wild Player - проигрыватель, который умеет работать только с 1 первичным разделом и 1 логическим диском из расширенного раздела.

DNA-OS - умеет работать с 1 первичным разделом и до 4 логических дисков из расширенного раздела.

И ни одной программы, которая бы умела размечать винчестеры на разделы и форматировать диски.


Решился засесть за написание программы, некого подобия Partition Magic на ПЦ.


Что предполагается сделать:

Поддержка до двух винчестеров - Master и Slave с возможностью переключения, с каким винчестером работать.

Поддержка до 10 разделов:
или до 4 первичных разделов,
или до 3 первичных разделов и до 7 логических дисков расширенного раздела (больше не помещается на экране, и вряд ли будет нужно).

Поддержка файловых систем FAT-16 и FAT-32.

Возможность удалять и создавать первичные разделы, расширенный раздел и логические диски в нем.

Возможность быстрого форматирования (без обнуления всех секторов) дисков в файловую систему FAT-16 и FAT-32, с возможностью выбора желаемого размера кластеров (выбор из списка, ограниченным в соответствии с выбранной файловой системой и размером раздела).

При необходимости, можно сделать и полное форматирование, но при размерах дисков 10...80 Гигабайт, на форматирование может уйти время от нескольких дней до несколько недель, т.к. скорость чтения и записи на Спектруме без турбо-режима выходит что-то около 50 Кбайт/сек. Считайте сами. На моём Пентагоне-1024 турбированном на 7 МГц без wait-а скорость выходит ровно в 2 раза выше - около 100 Кбайт/сек.

Будет использоваться адресация LBA. Пока сомневаюсь, нужно ли поддерживать древние винчестеры, которые поддерживают только адресацию CHS.

Чего однозначно НЕ будет в программе:

По этой же причине - не высокой скорости чтения и записи, не будет возможности изменять размеры уже созданных разделов и размеры кластеров, не будет возможности двигать разделы по дисковому пространству HDD. Любая из этих процедур даже на ПЦ выполняется долго, а на Спектруме может выполняться неделями. При этом начатую процедуру прерывать ни в коем случае нельзя, т.к. можно потерять данные.

Что уже сделано:

Программа уже определяет HDD Master и Slave, позволяет выбирать между ними, выводит на экран существующую таблицу разделов с названиями томов, сегодня вечером доделаю вывод и размеров разделов. Позже сделаю и графическое представление разделов, как в Partition Magic на ПЦ.

Пока на данный момент программа распознаёт только файловую систему FAT-32. Позже научу её распознавать и FAT-16.

Пока ничего изменять на жёстком диске нельзя, программа не производит никаких записей на HDD.

Программа работает с жёсткими дисками через контроллер Nemo-IDE.

Теоретически её можно доработать и под SMUC, но за неимением такого контроллера у меня, не будет и возможности проверять её на работоспособность под SMUC. Хотя можно будет попробовать тестировать на Unreal Speccy.

Весь текст выводится на экран в формате 6x8, 42 символа в строке.
При необходимости, процедуру печати смогу легко модернизировать и до формата 4x8, 64 символа в строке.

Дмитрий
27.05.2013, 14:56
Northwood, имхо, такая программка имеет место быть.
Некоторые пожелания:
+ Сделать возможность использовать драйвера под разные контроллеры (NemoIDE, SMUC, Profi и пр...)
+ Реализовать операции копирования/удаления файлов в разделах FAT16/32 (До сих пор нет ни одной программы позволяющей выполнять данные операции).

Northwood
27.05.2013, 15:11
Некоторые пожелания:

+ Сделать возможность использовать драйвера под разные контроллеры (NemoIDE, SMUC, Profi и пр...)
Про SMUC у меня есть кое-какая информация, если не ошибаюсь, то для переделки под него вроде достаточно только изменить номера портов (с задействованием всех 16 адресных разрядов), и где-то промелькала инфа, что доступ к портам SMUC закрыт TR-DOS-ом, поэтому обращаться к ним можно вызовами по адресу #3D2F.

Про реализацию HDD на Профи у меня вообще информации ноль, если речь не идет о подключении к нему NemoIDE, как это сделал JohN North.

Ну и если делать поддержку разных видов контроллеров, то предполагаю сделать их поддержку железно встроенную в программу. А чтобы не приходилось при каждом запуске каждый раз выбирать из списка контроллер, сохранять этот выбор в файл конфигурации.



+ Реализовать операции копирования/удаления файлов в разделах FAT16/32 (До сих пор нет ни одной программы позволяющей выполнять данные операции).

Может это лучше сделать в каком-нибудь копировщике ? Я вообще предполагал в Partition Magic сделать возможность только управлять разделами и томами, и всё. А для полноценной работы с файлами делать отдельную программу.

ZXMAK
27.05.2013, 15:18
Про SMUC у меня есть кое-какая информация, если не ошибаюсь, то для переделки под него вроде достаточно только изменить номера портов (с задействованием всех 16 адресных разрядов), и где-то промелькала инфа, что доступ к портам SMUC закрыт TR-DOS-ом, поэтому обращаться к ним можно вызовами по адресу #3D2F.

Про реализацию HDD на Профи у меня вообще информации ноль, если речь не идет о подключении к нему NemoIDE, как это сделал JohN North.

Ну и если делать поддержку разных видов контроллеров, то предполагаю сделать их поддержку железно встроенную в программу. А чтобы не приходилось при каждом запуске каждый раз выбирать из списка контроллер, сохранять этот выбор в файл конфигурации.



Может это лучше сделать в каком-нибудь копировщике ? Я вообще предполагал в Partition Magic сделать возможность только управлять разделами и томами, и всё. А для полноценной работы с файлами делать отдельную программу.

В zxmak2 можно включать полное логирование всех операций с ide, в исходниках можно посмотреть порты у профи, смука, атм. Вечером постараюсь выложить эту инфу.

А программа такаяреально нужна, т.к. с софтом для HDD на спектруме дела плачевные.
Но у меня предложение не лепить все в одну кучу, а сделать отдельные маленькие утилиты:
1) fdisk
2) format
3) hddinfo
4) chkdsk

Дмитрий
27.05.2013, 15:23
и где-то промелькала инфа, что доступ к портам SMUC закрыт TR-DOS-ом, поэтому обращаться к ним можно вызовами по адресу #3D2F.
В современных смуках есть перемычка закрыты/открыты, по дефолту они открыты. А в старых - да, закрыты, но их осталось не много, да и насколько я знаю - их часто переделывали для открытия портов для повышения скорости обмена информацией с винтом. В общем можно посмотреть драйвера в тех же WDC(исходники пролетали), Fatal.

Northwood
27.05.2013, 15:33
В современных смуках есть перемычка закрыты/открыты, по дефолту они открыты. А в старых - да, закрыты, но их осталось не много, да и насколько я знаю - их часто переделывали для открытия портов для повышения скорости обмена информацией с винтом. В общем можно посмотреть драйвера в тех же WDC(исходники пролетали), Fatal.

Значит буду поддерживать только открытые порты.

Кстати, слышал и про доработку NemoIDE, в котором для дешифрации портов вместо адресного бита A0 задействуется A8, даже WDC поддерживает этот вариант контроллера, наверно стоит и мне поддержать этот вариант.

Вариант хорош тем, что с ним реализуем более быстрый алгоритм чтения данных с HDD:

Вместо последовательности

INI
INC C
INI
DEC C
INI
INC C
INI
DEC C
....

можно сделать

INI
INI
INI
INI
INI
....

т.к. команда группового чтения из порта INI уменьшает на единицу содержимое регистра B, которое в свою очередь выкладывается на старшую половину шины адреса при обращении к портам. Таким образом последовательное обращение к двум портам данных происходит автоматически за счёт циклического изменения бита 0 регистра B, попадающего на разряд A8 шины адреса.

Интересно, много ли таких контроллеров NemoIDE с такой доработкой ?

Дмитрий
27.05.2013, 15:53
Кстати, слышал и про доработку NemoIDE
На счет этого ничего не скажу, я делал NemoIDE контроллеры без этой доработки. Я так понимаю драйвер не будет работать на недоработанном, потому лучше сделать эту поддержку опциональной.

---------- Post added at 14:53 ---------- Previous post was at 14:51 ----------

Собственно потому и хотелось бы подгружаемые драйвера, дабы потом без перекомпиляции самой проги сделать поддержку других контроллеров.

Northwood
27.05.2013, 15:58
Я так понимаю драйвер не будет работать на недоработанном, потому лучше сделать эту поддержку опциональной.

Да, именно это я и имел ввиду - поддержка будет опциональной.

Ну и ещё один важный момент забыл:

Есть ли смысл в поддержке древних винчестеров, которые поддерживают адресацию к дисковому пространству только через CHS ? Пока на данный момент программа обращается к блокам только по LBA адресации.

---------- Post added at 14:58 ---------- Previous post was at 14:56 ----------


Собственно потому и хотелось бы подгружаемые драйвера, дабы потом без перекомпиляции самой проги сделать поддержку других контроллеров.

А их вроде не так и много. NemoIDE, NemoIDE-A8, SMUC (из того что я знаю). Что там имеется своего в Profi и ATM, мне пока не известно, буду искать инфу.

Alex III
27.05.2013, 16:48
Partition Magic на Спектруме однозначно нужен!

Blade
27.05.2013, 16:51
На Пентеве Nemo-DIVIDE. Читать и писать можно через один порт #10.

Чтение:
LD BC,#10
INIR
INIR

Запись:
LD BC,#10
OTIR
OTIR

Northwood
27.05.2013, 16:54
На Пентеве Nemo-DIVIDE. Читать и писать можно через один порт #10.

Чтение:
LD BC,#10
INIR
INIR

Запись:
LD BC,#10
OTIR
OTIR

Других отличий от простого NemoIDE нету ?

Alex III
27.05.2013, 16:56
Но у меня предложение не лепить все в одну кучу, а сделать отдельные маленькие утилиты:
1) fdisk
2) format
3) hddinfo
4) chkdsk

Да, это имеет смысл.

ZXMAK
27.05.2013, 16:58
На Пентеве Nemo-DIVIDE. Читать и писать можно через один порт #10.

Чтение:
LD BC,#10
INIR
INIR

Запись:
LD BC,#10
OTIR
OTIR

А какой код в plm для обработки обращений к ide data портам у пентевы?

Максагор
27.05.2013, 17:48
По настоянию нашего товарища John North решил сесть за написание на Спектруме утилит для работы с HDD.

Правильно! Самого подобные мысли посещали.


На данный момент на Спектруме с софтом для HDD дела обстоят очень плачевно:

WDC - копировщик, умеет работать только с одним первичным разделом. Такого понятия как "логические диски" на HDD в этой программе просто не существует.

Wild Player - проигрыватель, который умеет работать только с 1 первичным разделом и 1 логическим диском из расширенного раздела.

DNA-OS - умеет работать с 1 первичным разделом и до 4 логических дисков из расширенного раздела.

Еще 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, не хочет.

Частичный выход я вижу, правда без учета пока Профика, в связи с отсутствием информации по устройству загрузочной записи на оном., но тем не менее:

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.



Возможность быстрого форматирования (без обнуления всех секторов) дисков в файловую систему FAT-16 и FAT-32, с возможностью выбора желаемого размера кластеров (выбор из списка, ограниченным в соответствии с выбранной файловой системой и размером раздела).

+100500


При необходимости, можно сделать и полное форматирование, но при размерах дисков 10...80 Гигабайт, на форматирование может уйти время от нескольких дней до несколько недель, т.к. скорость чтения и записи на Спектруме без турбо-режима выходит что-то около 50 Кбайт/сек. Считайте сами. На моём Пентагоне-1024 турбированном на 7 МГц без wait-а скорость выходит ровно в 2 раза выше - около 100 Кбайт/сек.

В TASiS стандартная TRDшка грузится с винта в RAM примерно за 3.5-4 секунды, итого мы имеем 160-180 Кб/сек, правда в турбе. При этом чтение идет по команде INIR.


Будет использоваться адресация LBA. Пока сомневаюсь, нужно ли поддерживать древние винчестеры, которые поддерживают только адресацию CHS.

Как я попытался аргументировать своим скромным ИМХО, таки такая необходимость есть.


Программа работает с жёсткими дисками через контроллер Nemo-IDE.

Тут уже написали, что лучше предусмотреть возможность подключения внешнего драйвера на свой вкус в виде маленького кодового файлика фиксированной длины (2-3 сектора), "ложимого" сразу после основного тела программы и имеющими три стандартные точки входа:

1. Запись сектора (на входе координаты в CHS/LBA, плюс флаг выбора одного из двух этих режимов, на выходе возможный номер ршибки и сопутствующие данные (например, ошибка записи в битый сектор - номер трека/сектора)
2. Чтение сектора (вход и выход как и в п.1)
3. Инициализация винта, чтение служебной информации (например - конфигурация, номер, название производителя и проч.)

Информация по контроллеру ATM и пример драйвера здесь:
http://atmturbo.nedopc.com/inf/books/nedopc/atm_hard.zip


Теоретически её можно доработать и под SMUC, но за неимением такого контроллера у меня, не будет и возможности проверять её на работоспособность под SMUC. Хотя можно будет попробовать тестировать на Unreal Speccy.

Там можно и Профик, и АТМ тестировать.

А так, могу пожелать только удачи. Если нужна будет какая консультация или еще что, пиши. Что будет по силам, помогу...

Vadim
27.05.2013, 20:08
Для Q-DOS по моей просьбе, ещё в 1998-м году, один мой товарищ написал fdisk. Почти полный аналог с дос6.22 по интерфейсу. Писал он его на Turbo-Pascal 6. Я надеялся потом его быстро доработать до возможности компиляции в TP3 на профи. Но не тут то было, везде юзается тип Longint, которого, как известно в TP3 нету. + ещё там кое что недописано в плане поиска свободного места на диске (fdisk в msdos не просто так откусывает очередной кусок от свободного места, производится ещё проверка поверхности). Недавно Sayman адаптировал другую утилиту для разбивки винта, первичный диск она создает, но и не более того. Забросил он. Форматтер FAT 12/16 я в январе/феврале почти дописал, но там не хватает опять же проверки на битые секторы (оставил на последний момент и пока забросил).

Максагор
27.05.2013, 20:15
Для Q-DOS по моей просьбе, ещё в 1998-м году, один мой товарищ написал fdisk. Почти полный аналог с дос6.22 по интерфейсу. Писал он его на Turbo-Pascal 6. Я надеялся потом его быстро доработать до возможности компиляции в TP3 на профи. Но не тут то было, везде юзается тип Longint, которого, как известно в TP3 нету. + ещё там кое что недописано в плане поиска свободного места на диске (fdisk в msdos не просто так откусывает очередной кусок от свободного места, производится ещё проверка поверхности). Недавно Sayman адаптировал другую утилиту для разбивки винта, первичный диск она создает, но и не более того. Забросил он. Форматтер FAT 12/16 я в январе/феврале почти дописал, но там не хватает опять же проверки на битые секторы (оставил на последний момент и пока забросил).

Вадим, ты по Профику специализируешься вроде? Не подскажешь, случаем, что и как CP/M творит на винте в плане загрузочных секторов и прочей конфигурации?

Vadim
27.05.2013, 21:00
Не подскажешь, случаем, что и как CP/M творит на винте в плане загрузочных секторов и прочей конфигурации?
Если интересует МикроДОС+CBIOS5, то там несовместимые с ПЦ разделы, по 8метров. Как именно реализовано, сейчас сказать не могу, надо смотреть исходники. В моей системе разбиение изначально было совместимо с ПЦ.

Максагор
27.05.2013, 22:24
Если интересует МикроДОС+CBIOS5, то там несовместимые с ПЦ разделы, по 8метров. Как именно реализовано, сейчас сказать не могу, надо смотреть исходники. В моей системе разбиение изначально было совместимо с ПЦ.

Интересуют все системы (в т.ч. и CP/M), которые так или иначе работают с винтом на Профике, и прежде всего не размер и количество разделов, а расположение и содержание конфигурационных записей - насколько они будут мешать созданию стандартной MBR с описателями FAT-разделов...

Как в этом плане дело обстоит с CP/M и iS-DOS/TASiS на АТМке я выше описал....

Дмитрий
27.05.2013, 23:25
там несовместимые с ПЦ разделы
Вадим, тут в соседней ветке прикручивали поддержку винта Profi к эмулятору ZXMAK2 (http://zx-pk.ru/showthread.php?p=604256#post604256) и имеются вопросы по поводу совместимости винтов созданных на Профи с другими контроллерами, можешь проверить, прокоментировать?

Vadim
28.05.2013, 07:14
Как в этом плане дело обстоит с CP/M и iS-DOS/TASiS на АТМке я выше описал....
Я понял. Думаю, что лучше иметь ввиду, что на Профи система разбиения совместима с ПЦ. У меня в планах сделать адаптацию и МикроДОС и ещё нескольких систем совместимых с CP/M к винту. Используя модифицированный драйвер от QDOS. Смысл в том, что и разделы диска будут ПЦ совместимые и никаких аналогов assign будет делать не надо. А то, как было сделано в 1994/1995гг в CBIOS5 - надо забыть как страшный сон.


и имеются вопросы по поводу совместимости винтов созданных на Профи с другими контроллерами, можешь проверить, прокоментировать?
Я посмотрю, отвечу.

alone
28.05.2013, 09:47
Наконец кто-то сделает эту полезнейшую утилиту!!

Не забудьте добавить возможность подстановки своего драйвера HDD/SD Card. А то на ZX Evo в основном пользуются карточками (ну или просто поддержать стандарт Z-controller / ZX Evo).

alvis
28.05.2013, 15:33
Northwood, имхо, такая программка имеет место быть.
Некоторые пожелания:
+ Сделать возможность использовать драйвера под разные контроллеры (NemoIDE, SMUC, Profi и пр...)
+ Реализовать операции копирования/удаления файлов в разделах FAT16/32 (До сих пор нет ни одной программы позволяющей выполнять данные операции).

Еще из хотелок, возможность "расширяемости" функционала программы:
1. Работа с диском через драйвер (для разных контроллеров)
2. Работа с экраном через драйвер (для возможности работы с расширенным экраном)
3. Работа с рзными форматами (FAT, FAT32, CP/M и др.)

Собственно был бы очень признателен, если бы программа умела работать с контроллером Profi-IDE и умела размечать диск под СР/М.
Думаю владельцы других клонов с IDE контроллерами и своими системами были бы тоже очень благодарны такой программе.

ZXFanat
28.05.2013, 15:58
Если уж спрашивают "хотелки",то предлагаю еще один вариант, но совместить его с утилитой, о которой идет речь в в теме. Это часть кода в ПЗУ ZS Scorpion. Многие скажут, что это уже древнее, как мамонт. Ну и что. Ведь есть же! Там уже создаются разделы для ZX, нет только поддержи FAT12, (*16, *32). Это, кстати только пожелание. Уже сколько лет об этом пишут. Попробовать взять за исходное и добавить свое. Я как-то был в самой фирме Зонова бывшей). Мне там записывали диск того, что у них осталось от старых времен. (Образ я размещал). Так в разговоре, мне пояснили, что Зонов планировал сделать поддержку FAT, но видимо руки не дошли до этого. Да и в IS-DOS есть утилиты, которые обращаются к HDD. Правда там все это сложно и непонятно. Но факт налицо. Разбиение диска для ZX есть. Попробовать. Сам слабовато в этом понимаю, потому и предлагаю, как идею.

alvis
28.05.2013, 16:02
Интересуют все системы (в т.ч. и CP/M), которые так или иначе работают с винтом на Профике, и прежде всего не размер и количество разделов, а расположение и содержание конфигурационных записей - насколько они будут мешать созданию стандартной MBR с описателями FAT-разделов...

Я могу ошибаться (не помню уже), но при разбивке винта под ср/м на Профи, там создается раздел в стандарте ср/м. По крайней мере тот же акронис на PC его видит именно как раздел ср/м.

---------- Post added at 15:02 ---------- Previous post was at 14:59 ----------


Если интересует МикроДОС+CBIOS5, то там несовместимые с ПЦ разделы, по 8метров. Как именно реализовано, сейчас сказать не могу, надо смотреть исходники. В моей системе разбиение изначально было совместимо с ПЦ.

Раздел вроде один, но весь его размер разбивает на диски по 8Мб, т.к. сама операционка диски бОльшего размера вроде не поддерживает. Как то так.

hi_soft
29.05.2013, 01:26
навсегда?
Брутто ты меня удивил.
ПатиФиккция на Спекку... Ха. как ты в 48к засунешь ея. при том что 16ПЗУ.
В скоп256 ещо ладно, как теневую.. иэк сказать с обратной стороны.

Vadim
29.05.2013, 07:03
Я могу ошибаться (не помню уже), но при разбивке винта под ср/м на Профи, там создается раздел в стандарте ср/м. По крайней мере тот же акронис на PC его видит именно как раздел ср/м.
Если ты имеешь ввиду МикроДОС+CBIOS5 (от Дмитрия Писменного), то там не поддерживается MBR, PC увидит винт как пустой. Это у меня в планах сделать старые системы так, что бы разбиение было совместимо с ПЦ, с кодом раздела CP/M.

Максагор
29.05.2013, 10:24
Если ты имеешь ввиду МикроДОС+CBIOS5 (от Дмитрия Писменного), то там не поддерживается MBR, PC увидит винт как пустой. Это у меня в планах сделать старые системы так, что бы разбиение было совместимо с ПЦ, с кодом раздела CP/M.

А сам нулевой сектор нулевого трека используется для конфигов системы? Как? Полностью, или есть, как в случае с CP/M на АТМ, прозрачно в него и конфиг MBR записать? Вот что важно. Если да, то можно старые системы и не переделывать. Если нет, то работа ждёть.... :v2_dizzy_coder:

palsw
29.05.2013, 10:34
Northwood, Молодец! Не каждый решиться на такой подвиг :)

По теме - есть еще Fatal - работает с HDD ,z- контроллер.

Smuc могу отправить - имея на руках девайс будет проще .Он у меня все равно лежит без дела,могу и профПЗУ в комплект отправить.

Vadim
29.05.2013, 10:46
Как посмотрю исходники драйверов винта для CBIOS5 так отвечу. Но в любом случае, я хочу портировать несколько разных BDOS от разных CP/M систем на профик, с поддержкой винта (не кривой), с нормальными разделами. Платформу для основы BIOS я разрабатываю так, что бы её можно было использовать на любых расширенных спектрум (и не спектрум) подобных компах с 64К ОЗУ, окнами по 16К и отключенным ПЗУ.

Максагор
29.05.2013, 12:16
Как посмотрю исходники драйверов винта для CBIOS5 так отвечу.

ОК


Но в любом случае, я хочу портировать несколько разных BDOS от разных CP/M систем на профик, с поддержкой винта (не кривой), с нормальными разделами. Платформу для основы BIOS я разрабатываю так, что бы её можно было использовать на любых расширенных спектрум (и не спектрум) подобных компах с 64К ОЗУ, окнами по 16К и отключенным ПЗУ.

Вот это дело!

ZXFanat
29.05.2013, 18:06
Кто способен "вытащить" часть кода в ПЗУ ZS Scorpion? С этого стоит начинать!

hi_soft
03.06.2013, 09:02
наверно никто nnnm.
БРУТ слишком БРУТАЛЬНО.
вот еси б гибернация на спекке была, то можно было б посмотреть.
или ПСклава+СпекКлава+рус+инд+а нг=клавиатура.
вообщем это ДНО. вот что хотелось мне сказать.

Error404
03.06.2013, 13:06
Наконец кто-то сделает эту полезнейшую утилиту!!

Не забудьте добавить возможность подстановки своего драйвера HDD/SD Card. А то на ZX Evo в основном пользуются карточками (ну или просто поддержать стандарт Z-controller / ZX Evo).

А по-хорошему, еще и подстановку своего драйвера консоли (клавиатура/экран) и работу основного кода (с данными/стеками/etc) в ОЗУ не выше 0С000h (выше можно класть спековские драйверы SD/hdd/консоли, но не код "логики"!). Подход с разделением логики и аппаратнозависимых кусков даст возможность легко перенести это ПО в, к примеру, CP/M.

Максагор
15.08.2013, 14:57
Как там оно движется?

VELESOFT
15.08.2013, 23:20
This can help. I have source code of old FDISK utility for DivIDE interface from ZX Spectrum. This FDISK work perfect, but can only create,erase,read,modify and write MBR sector. Make partitions etc... But physical formatting of partitions are not implemented.

This utility can be tested on all emulators with DIVIDE emulation or on UNREAL SPECCY emulator with DIVIDE IDE ports support.

http://velesoft.speccy.cz/zx/divide/software/zx-ide-utils.zip

ZX FDISK screenshot:
http://velesoft.speccy.cz/zx/divide/software/zx-fdisk.png

ZX IDE INFO screenshot:
http://velesoft.speccy.cz/zx/divide/software/zx-ide-info.png

shurik-ua
25.08.2013, 22:08
Partition Magic на Спектруме. Нужен ли ?

Не нужен.
Прога из разряда - запустил один раз и забыл.
Лучше пользоваться писюковской прогой.

Лучше время, выделенное на написание такой проги, потратить на написание вменяемого fat-драйвера, и перестать уже пользоваться костылями тапа фаталла и прочими.

Дмитрий
31.08.2013, 00:15
Что-то вестей нет никаких... Ну в качестве подстегивания или затравливания немножко "фейка" :)

ZXFanat
01.09.2013, 09:22
Что за программка? Что умеет делать с жестким диском?

vlad
01.09.2013, 10:12
в качестве подстегивания или затравливания немножко "фейка"
Было бы не плохо добавить цвет, улучшилась бы читаемость инфы.

Дмитрий
01.09.2013, 16:05
vlad, думал об этом, возможно сделаю.

Что за программка?
собственно все написано на первом скриншоте...


Что умеет делать с жестким диском?
пока умеет отображать инфу из MBR, EBR возможно сегодня прикручу. И отображение дампа секторов. Работает только с LBA, нужно ли поддержку CHS делать?
Редактировать пока не умеет - еще с некоторыми нюансами не разобрался в EBR, может кто хорошую доку подскажет, а то многие статьи местами противоречат друг другу.
В планах сделать разбиение на разделы с поддержкой Extended и форматирование в FAT12/16/32.

Vadim
01.09.2013, 16:14
а то многие статьи местами противоречат друг другу.
Разные системы в разное время делали разбивку по-разному. Я лично проверял на старом винте и XP, определяем винт как CHS в BIOS делаем разбивку, форматируем диски, потом перегружаем систему, во время перезагрузки переопределяем винт как LBA - уже XP неправильно находит диск. Стоит все сведения проверять на практике. Разбивать в ms-dos 6.22, XP и других системах. Как разные *nix разбивают (100% совместимо ли с мелкомягкими) неизвестно. Я так понимаю, что 100% ой совместимости нет. Ранее, когда был переходный этап CHS/LBA разбивка делалась по цилиндрам (т.е. приоритет CHS) когда диски стали гораздо больше 2-4Гига, то с этим стали проблемы. Но и в XP и в никсах старые винты (чисто CHS) работают. Смотря какая цель, если хочется, что бы не на ZX винт корректно опознавался (виделись разделы), то нужно следовать спецификациям, если нет - нет. В некоторых компах и большие диски (вроде до 128Г) прекрасно видятся в CHS, но в MBR ограничение 10 бит на цилиндр. Вроде это как-то обходили.

Дмитрий
01.09.2013, 17:53
определяем винт как CHS в BIOS делаем разбивку, форматируем диски, потом перегружаем систему, во время перезагрузки переопределяем винт как LBA - уже XP неправильно находит диск.
Об этом во всех статьях кстати чуть ли не красным шрифтом выделено, что разбивка CHS и LBA не совместимы. Я так понимаю для того и выделили FAT12/16 CHS и LBA

---------- Post added at 16:53 ---------- Previous post was at 16:51 ----------


Как разные *nix разбивают (100% совместимо ли с мелкомягкими) неизвестно.
я не ставлю задачу их поддерживать - не видел ни одной проги спековской, которая бы работала с никсовскими разделами...

Vadim
01.09.2013, 18:12
Об этом во всех статьях кстати чуть ли не красным шрифтом выделено, что разбивка CHS и LBA не совместимы
Здрассьте! Берем винт менее 2Г, разбиваем в msdos 6.22. И в том в другом режиме всё будет работать. При том разбивка CHS должна равняться LBA.

Дмитрий
01.09.2013, 18:18
то нужно следовать спецификациям
ссылку в студию, а то толком ничего не находится...

Vadim
01.09.2013, 18:21
Я так понимаю для того и выделили FAT12/16 CHS
При чём тут тип ФС? ФАТ12 была в старых системах, дос и винда её используют автоматом, если размер диска менее 16М. Раздел диска в MBR с этим никак не связан. При размере кластера в 32К FAT12 может адресовать диск размером примерно 125М. Другое дело, что ФАТ12 в этом случае менее эффективна в сравнении с 16.

---------- Post added at 20:18 ---------- Previous post was at 20:18 ----------


а то толком ничего не находится...
Сам бы хотел. Искал и находил лишь обрывки то там, то тут...

---------- Post added at 20:21 ---------- Previous post was at 20:18 ----------

Часть инфы можно найти в руководствах программиста под старые ДОС. Но проще мне кажется будет делать эксперименты, с разными размерами дисков и разными ОСями. Смотреть, как они создают разделы. Партишн Мейджик, кстати, не очень дружит с виндами и досами разными. Запросто может объявить диск созданный 2008 сервером некорректным. При чем весьма свежей версии (старые то да, или диск весь не видели или ещё что - глюки были обычным делом).

ZXFanat
01.09.2013, 18:24
....., нужно ли поддержку CHS делать? ..... В планах сделать разбиение на разделы с поддержкой Extended и форматирование в FAT12/16/32.
Да наверно достаточно понимание программой FAT12/16/32. Extended вроде бы не применяется, хотя хрен его маму знает, может быть и надо. Вообще то нужны только LBA и CHS. Пусть меня народ поправит, если не прав! Кстати, неплохо было бы применить IS-DOS с поддержкой LBA. Хотя бы для начала. А там, как практика покажет. Что из этого получится. А вообще, некоторые мнения неверны. Для ZX нужна программа для разбиения жесткого диска под нужды Spectrum-а, а не под нужды той же XP. Вот единственно, что пожелал бы, чтобы было разбиения жесткого для MS-DOS. Будет разбиение этой программой для MS-DOS, появится и программная поддержка этих разделов.

Дмитрий
01.09.2013, 18:39
Vadim, а к чему тогда выделили "FAT-16 с использованием LBA (VFAT)", "FAT-32 с использованием LBA"? см. Wiki (http://ru.wikipedia.org/wiki/%D0%93%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B7% D0%B0%D0%B3%D1%80%D1%83%D0%B7%D0%BE%D1%87%D0%BD%D0 %B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C).
Или другой источник:

05h Расширенный раздел
06h 16-битная FAT свыше 32 Мбайт
0Eh LBA VFAT (то же что и 06h, с использованием расширенного управления INT13)
0Fh LBA VFAT (то же что и 05h, с использованием расширенного управления INT13). см. тут (http://akina.hop.ru/mbr.php3)

---------- Post added at 17:30 ---------- Previous post was at 17:29 ----------


Extended вроде бы не применяется
это как это не применяется??? На спеке, может быть, а на писюке сплошь и рядом!

---------- Post added at 17:32 ---------- Previous post was at 17:30 ----------


Вообще то нужны только LBA и CHS.
А что еще есть? Large я в глаза не видел :)

---------- Post added at 17:34 ---------- Previous post was at 17:32 ----------


Кстати, неплохо было бы применить IS-DOS с поддержкой LBA.
как применить и для чего? в смысле для ис-доса прогу написать? это уже кто-нить другой портирует пусть, я ее делаю с полным отсутствием ГУИ только из тех соображений, чтоб потом по-шурику на любую систему портировать, хоть то CP/M, хоть то DSS на Sprinter-е...

---------- Post added at 17:38 ---------- Previous post was at 17:34 ----------


Партишн Мейджик
Это зло... сколько дисков после него пропадало

а не под нужды той же XP

чтобы было разбиения жесткого для MS-DOS
Не понял. какая разница для ХР, если диск размечен по стандарту и раздел отформачен в FAT32? такой раздел будет виден и XP и DOS.

---------- Post added at 17:39 ---------- Previous post was at 17:38 ----------

Спековскому софту нужен FAT16/32, либо FAT12 для CP/M от Vadim-а (или он 16 тоже понимает?).

Vadim
01.09.2013, 19:45
а к чему тогда выделили "FAT-16 с использованием LBA (VFAT)"
Не знаю, надо проверять, я этих кодов разделов на реальных дисках не встречал. Т.е. выделять то выделяли, но применялось ли? Читать о этом я тоже читал.

Дмитрий
02.09.2013, 12:16
Вопрос по CHS актуален. Есть в ходу еще винты, которые не понимают LBA?

Vadim
03.09.2013, 06:09
Есть в ходу еще винты, которые не понимают LBA?
Мелкие есть. У меня есть один такой, в нём LBA нету вообще. Но можно конечно в расчёт их не брать. Хозяин барин. Я в своём драйвере сделал так, что режимы мало отличаются друг от друга и поддерживаются и LBA и CHS винты без больших накладных расходов.

Дмитрий
04.09.2013, 08:55
+ Добавил цвет, как просил vlad.
+ Добавил чтение всей цепочки EBR и определение расширенных разделов.
+ Чтение метки тома.
+ Определение неиспользуемого пространства, пока только в конце диска, думаю как правильней рассчитать неиспользуемое пространство между двумя расширенными партициями, если оно там таки есть.
+ прикрутил просмотр дампа секторов.

Дмитрий
04.09.2013, 09:13
Хотел разобраться с LBA48, но с наскока не получилось, может кто помочь в этом деле? а то дока по ATA/ATAPI очень сухая и размазанная по 400 страницам. Так что в данный момент нормально работает прога только с дисками до 128Гб (за максимум гнаться не выйдет, ворочание 32битных и более цифр на асме утомляет, но хотя бы ширпотребные ныне 160-320 чтоб более менее поддержать).
Так же интересует вопрос следующего характера: чем руководствуются ОС при разбивке жестких дисков делая отступ первой партиции от МБР и логического диска от начала расширенной партиции? Я встретил пока 3 разных варианта - #11, #3f и #800 секторов... В первых двух вариантах - это смахивает на количество секторов в треке, мол с начала трека, но второй - хз, там на диске тоже 63 сектора на трек, но почему отступ в #800? Сколько нужно пропускать и почему?

---------- Post added at 08:13 ---------- Previous post was at 08:06 ----------

Соответственно еще один вопрос, если от начала расширенной партиции до начала логического тома будет #800 секторов, то это якобы неиспользуемое пространство, но разместить там очередной логический том не представляется возможным... надо такое фильтровать в логике определения неиспользуемого пространства. может быть определить минимум, допустим в 8Мб, дабы не было ложного срабатывания в таком случае?

BYTEMAN
04.09.2013, 10:15
Дмитрий, почитай это (http://sash-a.nm.ru/HDD.doc), быть может оттуда какую инфу выцепишь...

Дмитрий
04.09.2013, 10:17
почитай это
Увы:

Ошибка 404. Документ не найден.

Error 404. Document not found.
Запрашиваемый документ отсутствует на сервере.

Hacker VBI
04.09.2013, 10:34
Дмитрий, http://sash-a.nm.ru/
там есть весёлый док с кортинками Таймсом

Дмитрий
04.09.2013, 10:56
странный хостинг... сначала посылает с 404, а потом все же открывается файл %)

BYTEMAN, скачал, спасибо. Покурил - это все знакомо.

shurik-ua
04.09.2013, 20:03
Хотел разобраться с LBA48, но с наскока не получилось, может кто помочь в этом деле?

там используются старшие разряды (биты 8-15) регистров сектора и цилиндров -
Sector Number (7-0) - LBA 7:0
Sector Number (15-8) - LBA 31:24
Cylinder Low (7-0) - LBA 15:8
Cylinder Low (15-8) - LBA 39:32
Cylinder High (7-0) - LBA 23:16
Cylinder High (15-8) - LBA 47:40

P.S. имхо от CHS пора уже отказаться.

Protom
04.09.2013, 23:15
http://www.t13.org/Documents/UploadedDocuments/technical/e00101r1.pdf

Дмитрий
05.09.2013, 09:30
там используются старшие разряды (биты 8-15) регистров сектора и цилиндров -
Разобрался, там новые команды юзаются... с постфиксом EXT

---------- Post added at 07:17 ---------- Previous post was at 07:13 ----------


P.S. имхо от CHS пора уже отказаться.
Моя лень того же мнения :)

---------- Post added at 08:25 ---------- Previous post was at 07:17 ----------

Подскажите, народ, а Unreal поддерживает работу LBA48??? при выполнении команды ATA #24 (Read sector (s) EXT) пишет "unknown ata cmd 24"...

---------- Post added at 08:30 ---------- Previous post was at 08:25 ----------

По ходу нет :(

Дмитрий
06.09.2013, 10:59
Сделал выбор драйвера при загрузке, добавил драйвер SMUC к имеющемуся NemoIDE. Так же сделал экспериментальную версию драйвера NemoIDE LBA48, но проверить его пока нет возможности - ни один эмулятор не умеет с LBA48 работать, хоть US и ругается при загрузке, что привод не работает в режиме LBA48, но на самом деле - это всего лишь пыль в глаза!
Пытаюсь найти информацию по Profi IDE, но что-то пока только скудные отрывки из переписки Kирилла Фролова и исходники дров из cdwalker-а, в которых написано, что они скорее всего не работают... Кто располагает информацией по портам ПрофиИДЕ, поделитесь, плиз!

Дмитрий
06.09.2013, 14:11
Спасибо всем, кто откликнулся - результат на лице :)

Дмитрий
11.09.2013, 13:04
+ Добавил драйвер винта АТМ2;
+ Написал консольные драйвера для Профи (512*240) и АТМ2 (Текст 80*25), чтоб глазки не повылазили;
+ В определения типов разделов добавил код #53 - MFS (MOA File System) для скорпионщиков :);
+ Реализовал 2 команды: установка загрузочного флага на один из первичных разделов, смена типа раздела. (Пока все операции работают в read only режиме, т.е. они-то работают с данными в ОЗУ, но на винт отработанные данные пока не пишутся).

Драйвер NemoIDE LBA48 работает на реальном железе, однако пока он является экспериментальным, т.к. ни один эмулятор не позволяет работать с таким драйвером, что ставит палки в колеса при отладке программы. Чуть позже переделаю и другие драйвера на режим LBA48.

psb
11.09.2013, 13:10
предлагаю во фразе "you use it at your own risk" убрать you - слух режет...

Дмитрий
11.09.2013, 13:32
psb, я английский язык не изучал, поэтому активно пользую гугло-переводчик. Как будет релизная версия - попрошу кого-нить из англо-знающих людей, чтоб подкорректировали текст. Ессно принимаю и сейчас предложения по исправлению ломаного буржуйского.

solegstar
11.09.2013, 13:34
+ Написал консольные драйвера для Профи (512*240)..., чтоб глазки не повылазили;

Добавлю, что проверено и на реале, всё выглядит очень красиво! Дима, продолжай! Наконец-то железо Профи начали поддерживать! :v2_dizzy_roll:

PS: Хочу отдельно поблагодарить Savelij`я за поддержку Profi в Fatall`e (Профи-HDD, и спасибо за драйверок для fdisk`a), ТР-ДОСе 5.04Т (RAM-DISK) и Сервисе 2.1 (запуск системы СПМ с винчестера из сервиса)! Стало очень удобно пользоваться профиком без лишних проводов и дискет.

ZXFanat
11.09.2013, 13:39
Доколь терпеть будем то?
Когда ж появится сама утилитка, для того, чтjбы с ней "пробежаться" по "железу"?

Дмитрий
11.09.2013, 13:50
Доколь терпеть будем то?
Решается это очень просто - я беру бесплатный отпуск, т.к. прога пишется в свободное время, а работа отнимает львиную долю времени; вы выплачиваете мне зарплату за тот период, который потребуется для написания программы, и получаете готовый продукт в более короткие сроки. Но прошу заметить, что зарплата должна быть не ниже той, что у меня на основном рабочем месте ;)

ZXFanat
11.09.2013, 14:00
Клево! А мне нравится, как рассуждает этот парень. Отпуск то не больше 28 суток?

palsw
11.09.2013, 14:21
Дмитрий, продукт уже в альфа версии и можно стать альфа тестером на реале?
есть феникс (немо ,смук)

Дмитрий
11.09.2013, 14:49
palsw, пока маловато функционала даже для альфы :) Скинь мыло и icq/skype в личку, если нужно будет что протестить - обращусь обязательно.

alone
16.09.2013, 16:33
Дмитрий, всё равно огромное спасибо за работу! Я раньше просил такую программу у Zet9 и Savelij'я, но им было некогда.

Дмитрий
11.10.2013, 00:49
Очередная затравочка (http://youtu.be/bR-7Ef_hqA4), как оказалось без пинков дело двигается очень слабо, но тем не менее на месте не стоит!
Из планируемого функционала осталось сделать:
- собственно сохранение таблицы разделов на диск (пока все в рид-онли);
- умную удалялку разделов, которая пересвязывает цепочки EBR при удалении разделов в середине.
- форматирование FAT12/16/32, MOA FS:IS-DOS/TR-DOS;
- создание логических партиций;
- че-нить еще придумается...