
Сообщение от
Mifody
А есть какой нибудь патч или может мод. прошива к КНГМД, чтоб как у людей было, А,В-флопы, а дальше винты?
Собсна озаботился тоже этим вопросом, так как в эмуляторе уважаемого b2m пока не работают никакие другие FDD BIOS кроме самого стандартного без надписей который. И из-за этого у меня turbo pascal 7 не грузил IDE, потому что думал что диск C: это диск E: и ругался что не может прочитать с него.
Короче суть такова:
В XT есть слово (16 bit) по адресу 0000:0410h, типа описатель установленных устройств. Эту инфу в память записывает BIOS при старте, он же потом отдает ее по int 11h. Здесь в битах 6-7 и задается кол-во доступных гибких магнитных драйвов:
Код:
-------------------------- Figures ---------------------------
****************************************************************
bit
FEDCBA98 76543210 Described
XX...... ........ Number of printers installed
..X..... ........ (reserved)
...X.... ........ set if game adapter installed
....XXX. ........ Number of RS-232 serial ports
.......X ........ (reserved)
........ XX...... +1 = number of floppy drives (see bit 0) 00 - 1 drive, 01 - 2 drives, etc.
........ ..XX.... Initial video mode
01 - 40 column color
10 - 80 column color
11 - monochrome
00 - none of the above
........ ....XX.. For PC w/64k motherboard
Amount of system board RAM
00 - 16k,01 - 32k, 10 - 48k, 11 - 64k
For PC/AT: not used
For PS/2:
Bit 3 not used
Bit 2 - pointing device installed
........ ......X. set if math co processor installed
........ .......X set if any floppy drives installed
if set, see bits 6 and 7
****************************************************************
FIGURE 1: equipment list word at 0000:0410h
В BIOS Поиска особо не заморачиваются с детектом что установлено а что нет, а прям копируют всегда такую табличку:
Код:
TEST_TABLIC LABEL WORD ;Таблица координации аппаратуры
DW 0,0,0,0 ;Адреса адаптеров RS232
DW 0378H,0,0,0 ;Адреса принтеров
DW 40ECH ;Установить '4 устройства'
DB 0 ;Флаг инициализации
DW 96 ;Размер памяти в Кбайтах
DW 40H ;Память канала ввода/вывода
DB 0
DB 0
DB 0
DW 1EH ;Указатель вершины буфера
DW 1EH ;Указатель начала буфера
Здесь DW 40ECh и есть то самое слово конфигурации, которое копируется в 0000:0410h. Поэтому достаточно в BIOS найти и подменить это слово на 406Ch (один FDD). Ну и поправить у биос контрольную сумму после этого. Я сделал это на BIOS 91 года, он в архиве.
Так же проблему можно конечно решить и программно, без изменения BIOS. Достаточно записать в память по адресу 0000:0410h то самое значение 406Ch. Только делать это нужно перед загрузкой DOS, например в BOOT секторе. Ничего сложного.