Кстати, сегодня когда прикручивал ПЗУ к своему SD-контроллеру, заметил, что на схеме IDE от DrPass дешифратор адреса для ПЗУ закоден на адрес 0xC0000. В этом может крыться небольшая проблемка, а именно: Поиск начинает инициализацию дополнительных BIOS с младших адресов, таким образом сначала будет проинициализирован HDD BIOS, а только затем FDD. Я еще не смотрел в исходники XT-IDE, но мне кажется, что логично было-бы сохранить старый вектор int 13h, в котором уже есть функции работы с FDD, а после своей работы передавать управление туда. Ведь в XT работа с FDD находится в основном биос, и int 13h для дискет есть всегда. В то же время в FDD BIOS Поиска они несмотря ни на что берут, и прямо затирают int 13h своим обработчиком:
Таким образом даже если HDD BIOS перехватит int 13h, FDD BIOS после инита затрет его на свой.Код:; П/П ИНИЦИАЛИЗАЦИИ ДИСКОВОГО АДАПТЕРА MOV AX,0H MOV DS,AX MOV BX,410H MOV AX,DS:[BX] OR AX,01H ;Драйвер ГМД присутствует MOV DS:[BX],AX MOV BX,4CH ;Установить вектор INT13H LEA AX,DISKETTE_IO MOV DS:[BX],AX
Короче я еще глобально не думал на эту тему, но что-то мне подсказывает, что лучше все-таки будет переделать адрес на 0xE2000 или 0xE4000, что бы HDD BIOS инициализировался после FDD BIOS. По крайней мере в своем контроллере SD я так пожалуй и сделаю.




Ответить с цитированием