Любителям старины - FireWire! и USB диски под DOS.

для раздела Блоги
Любителям старины - FireWire! и USB диски под DOS.

Введение.
Началось все, когда мне подарили на день рождения 256 Мб USB флэш JumpDrive 2.0 PRO от Lexar Media. Собрал я для нее универсальные драйвера для 98SE от микрософта, есть такие совершенно бесплатно, то есть даром http://download.microsoft.com/download/Windows98DDK/Sample/2.0/W98/EN-US/Umss.exe, подправил .INF чтобы работало с любым USB Mass Storage – кому надо могут взять на http://sweetlow.at.tut.by/download/umss.zip.
Затем на глаза попалась ветка на hw.by “USB Flash drive - работа под DOS” http://www.hw.by/cgi-bin/thread.cgi?thread=6/509&page=1 /я в ней под _noname участвовал/. Оказалось, что свет не без добрых людей, есть драйвера для работы USB накопителей, в том чиле и USB2.0 даже из под голого ДОСа. Даже современные биосы поддерживают USB диски, но к сожалению на Abit NF7 почему-то такого нет :( В общем начав двигаться по ссылкам из http://www.mwpms.uklinux.net/usbfire.txt можно найти массу драйверов для доса, из которых самыми рабочими (по отзывам на форуме http://www.computing.net) для USB оказывается связка USBASPI.SYS + DI1000DD.SYS. Именно она у меня и заработала с флэшем.

IEEE1394 SBP2 (FireWire) девайсы.
Сравнительно недавно я прикупил себе комбобокс (USB2.0+FireWire) для 3.5 диска от Sarotech, мост USB/1394<->ATA там оказался Prolific 3507 –он поддерживает диски ATA с LBA 48 bit, владельцам такого моста рекомендую посетить http://member.newsguy.com/~SICCOS/index.html. Поставил в него Samsung SP1604N – все заработало. Затем проверил бокс под досом – он хорошо завелся под USB. Однако попробовал я его запустить через 1394 с драйверами от http://www.stefan2000.com/darkehorse/PC/DOS/Drivers/USB/iomega_usb_firewire_dos_driver_boot_disk.ZIP и http://www.datoptic.com/Drivers/dat.exe – ничего не получилось. Кстати и отзывы в сети были никакие – практически ни у кого запуститься через FW под дос не получалось, никакой документации даже уровня USBASPI.SYS не было. И я к этой идее охладел. Но вот на днях вспомнил я об этом (программировал кое-что другое близкое по тематике) и решил конкре’Т’но с драйвером SBP2ASPI.SYS разобраться, какого он не работает, хотя должен.

Результаты.
Хоть я КРАЙНЕ не люблю копаться в чужом коде, но все же пришлось взяться за дизассемблер. Результат однако оказался очень положительный – все завелось с полпинка.
Итак, обнаруженные ключи для запуска SBP2ASPI.SYS из CONFIG.SYS:

DEVICE=SBP2ASPI.SYS [/V] [/H:x] [/RES] [/RBC] [/B] [/M:xxxx] [/I:xx]
/V – подробный лог при запуске
/H:x – x это число от 0 до 9 - номер OHCI1394 контроллера к которому цепляется драйвер, по умолчанию – 0
/RES – принудительно остаться резидентом, даже если не обнаружены девайсы (гмм… непонятно, зачем это)
/RBC – очень нужный ключ. Дело в том что стандарт команд SCSI жестких дисков разделился на 2 подстандарта – полный(SBC) и сокращенный (RBC). По умолчанию старые программы для работы с SCSI дисками через ASPI ожидают встретить только SBC устройства и не работают с RBC. Вот этот ключ и помогает представить RBC устройство для таких программ как SBC. Кстати, мой бокс на пролифике – именно RBC девайс.
/B – не выяснил зачем этот ключ
/M:xxxx – xxxx – шестнадцатеричное двухбайтное число, не выяснил зачем этот ключ
/I:xx – xx – шестнадцатеричное однобайтное число, не выяснил зачем этот ключ

И САМОЕ важное – драйвер по умолчанию залочен понимать только ограниченный круг устройств, вот почему все, кто пытался его юзать жаловались на сообщение “ Target 1394 device not found”. Но блокировка снимается изменением всего двух байтов, причем драйвер САМ в этом случае разлочивается (в коде зашита такая проверка).

Взять поправленный драйвер SBP2ASPI.SYS + поправленный драйвер DI1000DD.SYS (он неправильно рапортовал объем диска – на 1 сектор меньше чем надо) + до кучи версию 2.15 USBASPI.SYS + до кучи писанный мной сканер ASPI устройств под DOS ASPIHSTS.EXE можно здесь:
http://sweetlow.at.tut.by/download/sbp2dos.zip

Кстати, SBP2ASPI.SYS и USBASPI.SYS писаны по технологии “драйвер+исполняемый файл”. Если их переименовать в *.EXE то можно просто запустить из доса. USBASPI.EXE просто сканирует девайсы как при запуске в режиме драйвера, а вот SBP2ASPI.EXE выводит список всех PCI девайсов + выдает подробную информацию по найденным OHCI1394 контроллерам. Про сами 1394 девайсы он почему то ничего не пишет.

И еще раз кстати – по коду такое ощущение, что писали эти драйвера в одной конторе. Любопытно было бы узнать, кто истинный автор драйверов.

И последнее – для примера выдержка из моего CONFIG.SYS:
device=C:\ANY\USB\usbaspi.sys /e /v /noprt /norst
device=C:\ANY\USB\sbp2aspi.sys /v /rbc
devicehigh=C:\ANY\USB\di1000dd.sys

Заключение.
Не надеюсь, что описанная программа будет полезна всем :) Это я опять просто равлекаюсь.
Telegram-канал @overclockers_news - это удобный способ следить за новыми материалами на сайте. С картинками, расширенными описаниями и без рекламы.
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают