Форматирование дискет на 160 Кб

Поиск, обмен ссылками, вопросы по устаревшему программному обеспечению.
vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 28.02.2023,20:08

SilverJohn писал(а): 22.02.2023,18:31 Итого на 5,25" HD FDD можно отформатировать DS/DD дискету в формат:
160 Кб - DOS 3.0; 3.1 (с ключом /8/1) -да; (DOS 2.1 и ниже - нет; DOS 3.2 и выше - нет).
360 Кб - DOS 3.0 и выше (с ключом /4) -да; (DOS 2.0; 2.1 - нет).
Дискеты 3,5" можно отформатировать на:
160 Кб - DOS 2.1 и ниже.
360 Кб - DOS 2.0; 2.1.
Справедливо для PC-DOS.
Похоже я нашел некое объяснение проблемы...
Имеем такой порядок появления железа и софта:
IBM PC - DOS 1.0 и около того:
PC XT - DOS 2.0 и т.п.;
PC AT - DOS 3.0 и выше; да тут старые тоже как-то запускаются, но не суть:
PS/2 - DOS 3.30 и т.д.

Мы проверяли по сути на PC AT, по крайней мере не ниже.
Книжек Пети Нортона, рекомендованных i8088, под рукой нет,
но порылся в других брошюрках и хелпах.
И в дополнение к INT13H функция 05H - форматирование дорожки, которая есть и на РС, и на АТ,
именно начиная с АТ в БИОС добавили еще две подфункции INT13H:
функция 17H - установить тип диска;
функция 18H - установить тип носителя для форматирования.

Обе должны вызываться до 05H и, повторюсь, не реализованы на РС и ХТ.
Функция 17H задает тип дискеты и дисковода:
00h - не используется;
01h - 320/360к дискета в 360к дисководе;
02h - 320/360к дискета в 1,2М дисководе;
03h - 1,2М дискета в 1,2М дисководе;
04h - 720к дискета в 720к дисководе.
Про варианты 720к в 1,44М и 1,44М в 1,44М в хелпы 1991 года видимо еще не успели дописать :biggrin:
Но, видимо, там 05h и 06h соответственно.
А про односторонние форматы упоминаний нет вообще...

Функция 18H задает характеристики дискеты -
число цилиндров и кол-во секторов на дорожке и,
соответствующе настраивает битрейт данных для этого носителя.

К чему это - версии DOS, вышедшие до появления АТ об этом понятия не имели,
следовательно функций 17H и 18H не вызывают.
В соответствющих ячейках и регистрах остаются значения "по умолчанию",
заданные современным BIOS...
Отсюда и имеем разный и не всегда логичный/предсказуемый результат
со старым софтом на новых машинках :frown:

vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 28.02.2023,20:37

SilverJohn писал(а): 23.02.2023,00:15 поэтому хочу попробовать решить вопрос через INT13H AH=5, но это вопрос не быстрый. Microsoft постеснялись выложить исходники FORMAT.COM v.1.25, а могли бы упростить задачу
Я Вам больше скажу - они и для v2.00 не выложили минимум один из файлов -
OEMFOR.ASM (ну или хотя бы OEMFOR.OBJ).
А без него собрать рабочий FORMAT.COM тоже не выйдет !!!
Т.к. там находятся процедуры INIT, DISKFORMAT, BADSECTOR и прочие,
которые собственно и производят настройки/форматирование через вызовы INT13 от BIOS...
:mad: :mad: :mad:

UPD.
Кстати, DISKCOPY.COM тоже не линкуется :biggrin: :biggrin: :biggrin:
Где находились те процедуры что он просит - хз, но имена у них другие
(т.е. отсутствие OEMFOR тут не при делах)...

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Форматирование дискет на 160 Кб

Сообщение i8088 » 01.03.2023,08:59

vintik_33 писал(а): 28.02.2023,19:21 Да и у меня под ХР с чтением/записью дискет DD проблем нет.
А из командной строки можно и форматировать 5,25" на 360к и 3,5" на 720к.
Ну да ладно, тема слегка о другом.
Странно. я это проверял (из cmd конечно), когда с драйвером FreeBSD возился.
Может быть от железа или BIOS зависит?
vintik_33 писал(а): 28.02.2023,19:21 Оригинально! IBM-щики таким хитрым образом функции BIOS пропатчили ?! :)

Да, мысль интересная, еще раз спасибо!
Вам тоже спасибо! Книга в переводном варианте называется "Персональный компьютер фирмы IBM
и операционная система MS-DOS". Есть еще более новое ее издание (название сейчас не помню,
я не дома, не могу посмотреть) с добавленной информацией.
vintik_33 писал(а): 28.02.2023,20:08 Похоже я нашел некое объяснение проблемы...
Имеем такой порядок появления железа и софта:
IBM PC - DOS 1.0 и около того:
PC XT - DOS 2.0 и т.п.;
PC AT - DOS 3.0 и выше; да тут старые тоже как-то запускаются, но не суть:
PS/2 - DOS 3.30 и т.д.
Да, все правильно! Я добавлю - успешность форматирования на 8 секторов может зависеть
от информации в DPT, и особенно для HD дисководов в общем-то лотерея. Я успешно делал
160KB дискеты в DD дисководе, проверять на HD мне даже в голову не приходило. IMHO эти
HD 5"1/2 довольно неудачное творение - из старых, найденных мною дискет мало что прочиталось,
а вот DD - почти все. Количество же сторон дискеты с точки зрения форматирования в общем-то
непринципиально.

Кстати, в драйвере FreeBSD была куча ошибок в DPT, из-за чего DD дисководы не работали (FreeBSD
использует собственные таблицы, не связанные с BIOS). А вот тип дисковода берется из CMOS, но это
тоже можно отменить и поставить тип принудительно.

.

pahan
Advanced Member
Сообщения: 4455
Зарегистрирован: 13.03.2015,14:23
Откуда: Химки, М.О.

Вклад в сообщество

Форматирование дискет на 160 Кб

Сообщение pahan » 01.03.2023,18:48

Да и у меня под ХР с чтением/записью дискет DD проблем нет.
А из командной строки можно и форматировать 5,25" на 360к и 3,5" на 720к.
Ну да ладно, тема слегка о другом...
Думаю, коллега пытался использовать DD-привод под 2000й, а у нас HD :)
Оригинально! IBM-щики таким хитрым образом функции BIOS пропатчили ?!
Дык GAPы надо заранее просчитать, сформировать и в буфер положить, если отправляешь на контроллер команду Format Track. Там по сути в буфере лежит образ дорожки целиком и контроллер его просто как есть записывает по DMA.

vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 01.03.2023,18:50

i8088 писал(а): 01.03.2023,08:59 Странно. я это проверял (из cmd конечно), когда с драйвером FreeBSD возился.
Может быть от железа или BIOS зависит?
Может и зависит - утверждать не берусь, но на двух машинках на S462 и AM2
поведение XP у меня одинаково.

И, прошу прощения, я и сам уже путаться в показаниях начал :biggrin:
Т.е. чтение/запись DD без проблем, а format.com в ХР из под cmd
не переваривает заявленные в хелпе ключи, например /f:360 и /f:1.2 для 5,25.
Зато работает /t:40 /n:9 и /t:80 /n:15 соответственно.
А если просто format a: написать, то выберется тот объем, что уже был на дискете (360 или 1.2).

От кучи свежей инфы в голове стал забывать то, о чем неделю назад написал :frown:
vintik_33 писал(а): 21.02.2023,22:31 А в XP (с любым SP) совсем беда :mad:
Казалось бы стандартные /F:720 для 3,5 и /F:360 для 5,25 не понимает -
ругается "Недопустимый параметр: /F:360" и т.п.
Хотя если открыть format.com в текстовом редакторе,
то все эти ключи там есть, в том числе и /1 - а в хелпе он отсутствует.

Ну а если в проводнике правой кнопкой мыши по диску 3,5 клацнуть
и выбрать "Форматировать...", то из емкостей только 1,44 доступна.
А для 5,25 вообще и Емкость, и Файловая система, и Размер кластера -
все пустые, выбрать ничего не дает :thumbdown:
(Хотя без доп. ключей емкости format.com все же работает)
UPD.
pahan писал(а): 01.03.2023,18:48 Думаю, коллега пытался использовать DD-привод под 2000й, а у нас HD :)
Да нет же, я именно HD привод под ХР пользовал!
Видимо выразился неудачно - в этом посте выше растолковал еще раз...
pahan писал(а): 01.03.2023,18:48 Дык GAPы надо заранее просчитать, сформировать и в буфер положить, если отправляешь на контроллер команду Format Track. Там по сути в буфере лежит образ дорожки целиком и контроллер его просто как есть записывает по DMA.
Ну так подсчеты делать и контроллером рулить по идее БИОС должен, а не ДОС, имхо.

vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 01.03.2023,19:43

SilverJohn, если еще не надоело :)
► Показать
Открывается современным WinRAR-ом (3.40 не берет):
MS-DOS 2.11 FORMAT Object Modules.rar
(10.5 КБ) 50 скачиваний

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Форматирование дискет на 160 Кб

Сообщение i8088 » 02.03.2023,11:16

vintik_33 писал(а): 01.03.2023,18:50 Дык GAPы надо заранее просчитать, сформировать и в буфер положить, если отправляешь на контроллер команду Format Track. Там по сути в буфере лежит образ дорожки целиком и контроллер его просто как есть записывает по DMA.

Ну так подсчеты делать и контроллером рулить по идее БИОС должен, а не ДОС, имхо.
Не в буфер, а в DPT. Мы же через int13h работаем.

vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 02.03.2023,11:41

i8088, пардон, но этого я не говорил.
По поводу буфера это к pahan :)

А если уж про GAPы речь завели, то вопрос такой:
меняется ли размер GAP2 и GAP3 (секторные) при изменении
количества секторов на дорожке, например с 9 на 8 ?

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Форматирование дискет на 160 Кб

Сообщение i8088 » 02.03.2023,16:32

vintik_33 писал(а): 02.03.2023,11:41 i8088, пардон, но этого я не говорил.
По поводу буфера это к pahan
Извиняюсь, неудачно процитировал!
vintik_33 писал(а): 02.03.2023,11:41 А если уж про GAPы речь завели, то вопрос такой:
меняется ли размер GAP2 и GAP3 (секторные) при изменении
количества секторов на дорожке, например с 9 на 8 ?
В DPT задаются GAP для RW и форматирования. BIOS-ом они конечно настраиваются
на привод, а меняет ли их DOS в зависимости от типа дискеты?

Во FreeBSD я оставил одинаковый зазор для 8 и 9 секторных форматов
(см ссылку выше). В оригинале вообще было в комментарии
/* XXX: 0x2a ? */

В общем, это надо еще дополнительно разбираться.

SilverJohn
Junior Member
Сообщения: 132
Зарегистрирован: 13.09.2013,06:43
Откуда: SPb

Форматирование дискет на 160 Кб

Сообщение SilverJohn » 02.03.2023,17:55

i8088 писал(а): 01.03.2023,08:59 проверять на HD мне даже в голову не приходило
"За неимением гербовой" DD FDD, пишем на HD FDD в разных версиях DOS. И, как выясняется, вопрос решаемый, но где-то в "плоскости ASM".

Похоже, что проблемы HD FDD с дискетами DS/DD связаны с завышенным битрейтом (+соответственно, токи записи[?]).
vintik_33 писал(а): 28.02.2023,20:08 начиная с АТ в БИОС добавили еще две подфункции INT13H:
функция 17H - установить тип диска;
функция 18H - установить тип носителя для форматирования.
По некоторым данным :) , именно функция 17H меняет битрейт, в нашем случае, с 500К на 300К. В DOS 2.0 этой функции нет, но Sformat (50 Кб) справился с задачей форматирования дискет DS/DD. Остался не решённым вопрос форматирования в DOS 0.9-1.1, но там нет не только 17H, но и большинства расширенных функций DOS, которые появились во второй версии ОС. Использовать FORMAT.COM v.3.0 с небольшими "доработками" вряд ли получится. Возможно была создана какая-то утилита уже после выхода PC AT, позволяющая писать на HD дисководы DS/DD дискеты в DOS 1...3. Ну, или изобретать велосипед с нуля.
vintik_33 писал(а): 01.03.2023,19:43 если еще не надоело
Пока нет. Начал заглядывать на форумы по ASM.

vintik_33
Advanced Member
Сообщения: 517
Зарегистрирован: 16.11.2019,13:12
Откуда: Чувашия

Форматирование дискет на 160 Кб

Сообщение vintik_33 » 02.03.2023,21:13

SilverJohn писал(а): 02.03.2023,17:55 именно функция 17H меняет битрейт, в нашем случае, с 500К на 300К
Да, так, причем и соответствующее железо надо.
В первом FDC на NEC uPD765A это не поддерживается.
На Intel 8272A вроде как возможно через внешнюю обвязку (где-то вычитал, насколько верно - хз).
А вот в 82072 уже есть регистр для задания битрейта.
SilverJohn писал(а): 02.03.2023,17:55 но Sformat (50 Кб) справился с задачей форматирования дискет DS/DD
Ну он и писАлся видимо позже, чем DOS 2.0.
Т.е. определение типа машины и необходимость подфункций 17h + 18h учли...
SilverJohn писал(а): 02.03.2023,17:55 Начал заглядывать на форумы по ASM.
Имхо, написать пяток команд для вызова INT13 17h + 18h
можно для начала и в debug-e !!!
А потом просто запустить формат из DOS 2.0 :)

Ответить