286 AMI and AWARD BIOS with autodetect

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

Конкурсы

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

286 AMI and AWARD BIOS with autodetect

Сообщение i8088 » 25.06.2020,17:19

Я модифицировал 286 BIOS на предмет добавления автодетекта. Приложена первая
модификация AMI D286, выпуск 04/09/90. Это BIOS для плат не требующих особой
инициализации чипсета, например VLSI 1xxx, G2, TACT8230x итп. Используемый
метод модификации очень простой, и в принципе патч можно встроить и в BIOS-ы,
где даже нет user type, лишь бы хватило места для патча.

Для автодетекта надо просто у желаемого HDD поставить зарезервированный тип,
я выбрал тип 30 (можно и любой другой, начиная с 16 и кончая 46). Если диск
поддерживает автодетект, то параметры C/H/S будут заменены на полученные из
диска, а если например стоит MFM диск (не поддерживающий автоопределение)
типа 30, то параметры останутся заданными в типе30 (последнее не проверялось).
Если диска вообще нет, то после штатного тайм-аута получим ошибку, и если
продолжим загрузку (по F1), то через int13h (ah=08h) будет сообщаться о
несуществующем диске, с параметрами из типа30 (это штатное поведение BIOS,
с патчем не связано).

Недостатком текущей версии является отсутствие вывода сообщений на экран,
относительно факта определения диска и его параметров, те автоопределение
"тихое". Для упрощения многие процедуры в коде автоопределения продублированы.
Но если использовать соответствующие штатные процедуры из BIOS, можно
сократить патч очень сильно (текущий размер патча ~500байтов).

А работает оно так. В BIOS есть процедура подачи диску команды INITIALIZE_DEVICE_PARAMS,
(int13h ah=09h). Параметры берутся из предварительно сформированных HDPT таблиц (адрес
таблицы хранится для первого диска по адресу 0000h:0104h, для второго 0000h:0118h. Я вставляю
перед вызовом этой процедуры дополнительный код, который подменяет HDPT таблицу, если тип
диска совпадает с зарезервированным для автоопределения CMOS type.

Относительно HDPT tables.
Если используются fixed type HDD, то таблица просто берется из BIOS table, начинается таблица типов
по адресу 0F000h:0E401h. Если же используем user type (или автоопределенные патчем параметры), то
таблица HDPT располагается в ОЗУ, причем расположение таблиц зависит от опции BIOS "Scratch RAM
option".

If required, BIOS will use 256 bytes of RAM
(1) : Using BIOS stack area at 0030:0000
(2) : Reducing base memory size by 1KB

Если выбрать 2, то базовая память будет ограничена 639 KB, а таблицы расположены в участке между
639 и 640KB, по адресам
disk0 9fc0h:003dh
disk1 9fc0h:004dh
На каждую таблицу требуется 16 байтов.

Если же выбрать 1, то базовая память не будет ограничена, а таблицы
расположены по адресам
disk0 002dh:003dh
disk1 002dh:004dh
При этом пропадают часть места под векторы прерываний, это соответственно
для disk0 будут c3 c4 c5 c6, а для disk0 будут c7 c8 c9 ca
Это надо иметь ввиду, и не использовать эти вектора в своих программах.

Код патча игнорирует "Scratch RAM option", и HDPT располагаются в областях disk0 002dh:003dh
и disk1 002dh:004dh, те как с "Scratch RAM option"=1. Временный буфер в 512байтов, для чтения из
диска параметров по команде ATA_IDENTIFY, располагается под границей 512KB, те 286 плата должна
быть оснащена хотя-бы 512KB RAM.

Я проверил с разными HDD, затруднение было только с ST157A, который очень тугодумен
и не успевал определиться с первого раза, после перезагрузки автоопределялся. Такое собственно
бывает и на заводских BIOS, иногда в относительно новых BIOS встречается опция типа "HDD delay"

Приложен оригинальный и модифицированный BIOS
Вложения
orig286.zip
(41.19 КБ) 196 скачиваний
286_auto.zip
(46.92 КБ) 194 скачивания
Последний раз редактировалось i8088 30.08.2020,16:52, всего редактировалось 1 раз.

Аватара пользователя
nimdasys_inbox_ru
Advanced Member
Сообщения: 3660
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

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

286 AMI BIOS with autodetect

Сообщение nimdasys_inbox_ru » 25.06.2020,17:49

i8088 писал(а): 25.06.2020,17:19 "Scratch RAM option"

(1) : Using BIOS stack area at 0030:0000
(2) : Reducing base memory size by 1KB
У меня на мамке (DAT286 Rev D) на базе Headland HT-12 выставлен User Type = 47 и при значении "Scratch RAM option" равным 1 загрузка MS-DOS с диска не осуществляется, но при значении 2 всё работает! Поможет ли данный патч или это для данной платы так и задумано ?! :(
Последний раз редактировалось nimdasys_inbox_ru 25.06.2020,17:56, всего редактировалось 1 раз.

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

Конкурсы

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

286 AMI BIOS with autodetect

Сообщение i8088 » 25.06.2020,17:56

Патч добавляет автодетект, и более ничего не меняет.

Но вообще это странно, что у Вас за версия DOS? Возможно HDPT "наезжает"
на какие-то используемые векторы прерываний. У вас в config.sys и autoexec.bat
ничего необычного нет?

HT-12 я не помню, что за чипсет, размер памяти перемычками ставится
или определяет сам?

Модифицированный BIOS только для плат, не требующих особой инициализации
чипсета. Признаки таких плат - размер памяти перемычками ставится и нет опций
в BIOS типа shadow, EMS, wait state
Последний раз редактировалось i8088 25.06.2020,17:58, всего редактировалось 1 раз.

Аватара пользователя
nimdasys_inbox_ru
Advanced Member
Сообщения: 3660
Зарегистрирован: 05.06.2019,18:58
Откуда: Черкесск

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

286 AMI BIOS with autodetect

Сообщение nimdasys_inbox_ru » 25.06.2020,17:57

i8088 писал(а): 25.06.2020,17:56 Патч добавляет автодетект, и более ничего не меняет.

Но вообще это странно, что у Вас за версия DOS?

HT-12 я не помню, что за чипсет, размер памяти перемычками ставится
или определяет сам?

Модифицированный BIOS только для плат, не требующих особой инициализации
чипсета. Признаки таких плат - размер памяти перемычками ставится и нет опций
в BIOS типа shadow, EMS, wait state
MS-DOS 6.22

Сам определяет...

Вот тут про него написано...

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

Конкурсы

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

286 AMI BIOS with autodetect

Сообщение i8088 » 25.06.2020,18:00

nimdasys_inbox_ru писал(а): 25.06.2020,17:57 Сам определяет...
Тогда этот BIOS нельзя использовать с Вашей платой. После окончательной
отладки можно и другие BIOS модифицировать, я выбрал такой BIOS как подходящий
к большому количеству ранних плат, если кто захочет испытать.

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

Конкурсы

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

286 AMI BIOS with autodetect

Сообщение i8088 » 25.06.2020,18:03

nimdasys_inbox_ru писал(а): 25.06.2020,17:57 Вот тут про него написано...
Странно, я теперь вспомнил, у меня очень похожая плата, в кейсе стоит. Никиаких
проблем с "Scratch RAM option" не припоминаю, но у меня там MSDOS версии 5 стоит

Ekb
Advanced Member
Сообщения: 2603
Зарегистрирован: 15.06.2014,11:31

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

286 AMI BIOS with autodetect

Сообщение Ekb » 25.06.2020,19:27

nimdasys_inbox_ru писал(а): 25.06.2020,17:49 Headland HT-12 выставлен User Type = 47 и при значении "Scratch RAM option" равным 1 загрузка MS-DOS с диска не осуществляется, но при значении 2 всё работает!
Помню, на одной и той-же материнке 286 VLSI, вдруг перестал работать и пришлось переключать на "значение 2". В деталях вспомнить не смогу (в то время, точно знал что поменялось в железе), то-ли связанное с включением два CF-диска на кабеле, то-ли CF-Lite + Multi-IO с еще CF-диск, или Оверлей прослойка (для >500мб)...

Потом эта проблема исчезла, когда изменил структуру в железе (сейчас не вспомню).
Последний раз редактировалось Ekb 25.06.2020,22:37, всего редактировалось 1 раз.

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

286 AMI BIOS with autodetect

Сообщение Mx_Serg » 25.06.2020,21:18

Полезная вещь. Если получится настроить на 2x32 - попробую на своей VLSI с Winbond'ом.

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

Конкурсы

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

286 AMI BIOS with autodetect

Сообщение i8088 » 26.06.2020,07:45

Ekb писал(а): 25.06.2020,19:27 Помню, на одной и той-же материнке 286 VLSI, вдруг перестал работать и пришлось переключать на "значение 2".
Если такое случается, стоит сразу проверить, используются ли векторы прерываний
c3 c4 c5 c6 c7 c8 c9 ca. Если да, то проблема в этом.

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

286 AMI BIOS with autodetect

Сообщение Mx_Serg » 26.06.2020,16:43

Проверил на VLSI (джампер на 32к на ней есть). В основном, работает, но сигейт ST3491 виснет при автоопределении (так же виснет при принудительной настройке, поэтому, похоже, проблема в BIOS, а не в патче). И... CF-ки не работают. Выдают HDD drive failure.

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

Конкурсы

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

286 AMI BIOS with autodetect

Сообщение i8088 » 26.06.2020,22:04

Mx_Serg писал(а): 26.06.2020,16:43 Проверил на VLSI (джампер на 32к на ней есть). В основном, работает, но сигейт ST3491 виснет при автоопределении (так же виснет при принудительной настройке, поэтому, похоже, проблема в BIOS, а не в патче). И... CF-ки не работают. Выдают HDD drive failure.
Спасибо за проверку!

Очень странно, ST3491A я только сегодня утром проверял - перемычки у Вас правильно стоят?
CF тоже все работали, и как единственный master, и в паре с HDD. Сейчас еще раз
проверил flash CISKO 256MB как master с автоопределением - DRDOS с нее загрузился.
Правда я проверял на TACT8230x, но это не должно же от чипсета зависеть. Впрочем
VLSI 1xxx у меня тоже есть, можно будет проверить.

CF у Вас не работают вообще никак, с user type тоже? Может быть с мультикартой
проблема? Перемычка 1ws/0ws как стоит? Может быть мультикарта недостаточно
быстрой оказалась?

Ответить