Проблемы с чтением CF через int13h на некоторых старых BIOS

Описания, советы, ремонт, эксплуатация старых IBM PC-совместимых ПК
i8088
Advanced Member
Сообщения: 4384
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 30.05.2020,15:52

Mx_Serg, проверяйте m03!
method 1 - изменение обработчика команды чтения

PS. Я кажется понял, почему модификация IRQ14 не всегда работает...
Вложения
386m03.zip
(27.76 КБ) 127 скачиваний

Mx_Serg
Advanced Member
Сообщения: 1847
Зарегистрирован: 04.06.2018,22:47

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение Mx_Serg » 31.05.2020,19:54

i8088 писал(а): 30.05.2020,15:52 Я кажется понял, почему модификация IRQ14 не всегда работает...
Урряя! Заррработало! )) И флешки и диски работают нормально. Спасибо за модификацию - теперь лишний раз ценные винты дергать не буду. Этим бы всем БИОСам в таблицу дописать 256 и 500Mb - и будет комплект идеальных винтажных БИОСов.

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 01.06.2020,13:21

Mx_Serg писал(а): 31.05.2020,19:54 Урряя! Заррработало! )) И флешки и диски работают нормально. Спасибо за модификацию - теперь лишний раз ценные винты дергать не буду. Этим бы всем БИОСам в таблицу дописать 256 и 500Mb - и будет комплект идеальных винтажных БИОСов.
Отлично! Модификацию HDD table тоже можно сделать, я просто не хотел
раздваиваться. Нужно добавить конечно 1024/16/63, еще геометрии имеющихся
HDD и CF. Хорошо бы список геометрий составить, для новой hdd table.

Есть еще идеи, но они в стадии начального обдумывания.

Mx_Serg
Advanced Member
Сообщения: 1847
Зарегистрирован: 04.06.2018,22:47

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение Mx_Serg » 01.06.2020,13:46

i8088 писал(а): 01.06.2020,13:21 Хорошо бы список геометрий составить, для новой hdd table.
Это вопрос для коллективного разума. но 1024/16/63, я думаю, "must have".

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 12.06.2020,12:45

Mx_Serg, помню Вы интересовались модификацией HDD table. Прилагаю модифицированный
AMI BIOS (с текстовым SETUP который), с немного измененной HDD table. Я изменил типы 40-46
40 989 12 35 65535 989
41 903 4 46 65535 903
42 980 8 32 65535 980
43 487 16 63 65535 487
44 978 4 32 65535 978
45 899 15 62 65535 899
46 1024 16 63 65535 1024

Текстовые описания (в этом BIOS они отдельно храняться) я правда не поправил. С AWARD должно быть
легче, там текстовые описания отдельно не хранятся.

Для модификации использовал написанную мной программу hdb.exe, прилагаю версии для
32KB и 64KB BIOS (hdb32 и hdb64). Работать нужно с образом всего BIOS, а не половинок конечно.
Перед модификацией убедиться, что таблица отображается верно (иначе модификация приведет
к порче BIOS). Компилятор - microsoft C 6.00A

После модификации BIOS нужно поправить КС. В разных BIOS это по разному делается, поэтому
добавить пересчет КС в программу несколько затруднительно (если интересно, могу написать как
корректировать КС в разных старых BIOS ). В принципе, можно просто "забить" в коде эту проверку,
чтобы всегда возвращалось - ПЗУ OK. И потом можно будет свободно менять HDD table.

Синтатксис:
hddb file_name отобразить всю hdd table
hddb file_name x отобразить параметры hdd номер x
hddb file_name x cyl head sec wp lz модифицировать hdd номер x, после модификации
программа покажет результат
Вложения
12_21.zip
(16.66 КБ) 97 скачиваний
hdb.zip
(13.3 КБ) 94 скачивания
ami28602.zip
(24 КБ) 105 скачиваний

Mx_Serg
Advanced Member
Сообщения: 1847
Зарегистрирован: 04.06.2018,22:47

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение Mx_Serg » 12.06.2020,15:56

Спасибо, попробую! Оставлять совсем без КС, наверное, не очень хорошо... Может модифицировать проверку хотя-бы до простого XORа - она всяко меньше места занять должна.

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 13.06.2020,08:04

Mx_Serg писал(а): 12.06.2020,15:56 Спасибо, попробую! Оставлять совсем без КС, наверное, не очень хорошо... Может модифицировать проверку хотя-бы до простого XORа - она всяко меньше места занять должна
Да не, одно и то же место будет занимать, просто вместо
lodsb(w)
add
будет
lodsb(w)
xor
Я все же думаю, заменять программу подсчета не стоит, оставим штатную.

Для удобства можно написать корректор chksum для AWARD, AMI, PHOENIX.
1. PHOENIX Здесь просто сумма байтов образа BIOS должна быть равна нулю.
Точное местоположение байта chksum неизвестно, но я использую самый последний
байт (0xFFFF), он штатно в PHOENIX всегда 0.

2. AWARD - здесь то же, но chksum явно в последнем байте, те это был бы самый простой вариант, если
бы не дополнительные "подлые "chksum, о которых я писал в теме. Они скорее всего предназначены для
защиты от модификации BIOS, и проще заменить hlt на nop. Вот это тяжеловато поручить автоматике, но
в BIOS который Вы присылали, это я уже сделал.

3. AMI до Hi-Flex, будем называть его Classic. Здесь две chksum, одна сумма 16-разрядных слов
в диапазоне 0x8000 - 0xFFFF. Должна быть равна нулю, ее и нужно корректировать после модификации
hdd table. Точное положение слова chksum (по четному адресу) неизвестно, я просто выбираю свободное
место. Автоматике это тяжело поручить, но можно вводить в cmd line программы адрес слова chksum.
Вторая chksum - это XOR 16-разрядных слов в диапазоне 0x0000 - 0x6FFF, должна быть равна нулю.
Точное положение слова этой chksum тоже неизвестно.

AMI Hi-Flex. просто сумма 16-разрядных слов образа должна быть равна нулю, но каждая
половина равна нулю и по отдельности (надо проверить, считаются ли половины вместе или
отдельно). Остальное аналогично
Последний раз редактировалось i8088 13.06.2020,08:36, всего редактировалось 3 раза.

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 13.06.2020,08:20

может быть, кому нибудь пригодится программа amihd, я ее написал на основе
ideconf от Frank P. MacLachlan

Работает с AMI BIOS classic и Hi-Flex, где есть user type.

Ее можно запустить с дискеты, дать команду amihd 0 (для primary master) или 1 (для
primary slave), и она определит диск и напишет в CMOS сама все нужное. Ну или если
основной HDD уже определен и DOS загружается с него, то можно определить
primary slave, запустив программу с основного диска.
Вложения
amihd03.zip
(11.67 КБ) 98 скачиваний

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 13.06.2020,14:26

Забыл упомянуть - 15 тип HDD редактировать не надо, он используется как признак
расширенного типа HDD

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 14.06.2020,07:28

Обнаружил ошибку в hdb - нередактируемые поля заполнялись мусором из памяти (для IDE дисков не
должно быть очень критично). Прилагаю исправление. Дополнительно добавил показ байта флагов
(фактически используется лишь бит3, указание что головок больше 8, нужно для МФМ).

При редактировании байт флагов переключается на 0x08, если количество головок больше 8.
Дополнительно сдвинул адрес HDD table на один байт, теперь структуры hdd table в точности
соответствуют формату HDPT
Вложения
hdb10.zip
(13.51 КБ) 109 скачиваний

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

Конкурсы

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

Проблемы с чтением CF через int13h на некоторых старых BIOS

Сообщение i8088 » 26.07.2020,08:57

У меня такой, пока что теоретический вопрос - будет ли интересно чисто программное
решение для DOS (когда сложно прошить и модифицировать BIOS), для исправления
CF бага? Но ценой потери 1KB стандартной памяти и модификации загрузочного сектора.

Ответить