Reviews / articles about OS/2 |
Operating systems: ArcaOS, eComStation, IBM OS/2 Warp |
|
|
DATE: 2001-09-10 18:24:22 AUTHOR: Дмитрий Поляков
С OS/2 я познакомился в 1998 году, чему поспособствовал сисоп BBS LimeLight station, который записал мне компакт диск с кучей осевого софта. Видимо, если бы ни это событие, OS/2 до сих пор являлась бы для меня просто ещё одной операционной системой как BeOS, Linux, QNX и т.п. В то время меня сильно привлекло качество программного обеспечения, сделанного для этой системы, такого как ZOC или к примеру, Lotus SmartSuite. Как оказалось, ситуация с драйверами была куда хуже чем с просто приложениями. В первую очередь, я начал устанавливать драйвер для своей звуковой карты (в то время это была Gravis Ultrasound PnP Pro), что не явилось для меня тривиальной задачей. Только после прочтения документации, я наконец-то выяснил, что оказывается необходимо запустить какую то программу под названием minstall. Догадаться до этого было сложно. Слово PnP в названии звуковой карты на её работу в OS/2 не повлияло никак, чего нельзя сказать о работе карты в MS Windows. В Windows карточка сразу же определялась при запуске системы. Всё это говорило мне, что в OS/2 с драйверами дела плохи. С тех пор накопилось достаточно много опыта, да и проблемы с драйверами сами по себе пропали, например взять тот же SDD. Если ранее приходилось искать драйвер на сайте производителя, версии которого под OS/2 могло не оказаться (как часто и происходило), то с появлением SDD нехватка драйверов для видеоадаптеров исчезла. Наверное, всем понятно, что с драйверами в Windows проблем вообще нет и, наверное теперь уже не будет. Нет сложностей, как в установке, так и в поиске. На фоне таких статей как "Стратегия развития OS/2" ко мне пришла мысль реализовать такую же систему определения устройств, как это сделано в Windows, но отсутствие знаний API OS/2, документации и времени всё погубило. Далее я расскажу мои мысли по поводу того, как можно реализовать Plug'n'Play в OS/2 и если кто то сможет это реализовать - пускай попробует. Я думаю, что многие люди будут благодарны этому человеку. Путь к Plug'n'PlayДрайверы, как правило, устанавливаются для устройств, которые подключены к шинам ISA и PCI. Для получения списка и ресурсов устройств на этих шинах существуют различные способы. При поиске устройств мы получаем его идентификатор. Существует постоянно обновляемая база данных соответствия идентификаторов устройств самим устройствам. С получением списка для шины PCI особенных проблем нет. В OS/2 для этого всё есть. В файле pddref.inf из DDK (раздел Generic IOCtl Commands \ Category 80h OEMHLP IOCtls) описаны функции для работы с PCI, в том числе и поиск устройств на шине. Также список можно получить с помощью прерывания BIOS 1Ah, которое в OS/2 непонятно как выполнить (разве что в VDM, но это не путь), и можно ещё таким образом:
PCItype:=0; outp($CF8,0); outp($CFA,0); if (inp($CF8)=0) and (inp($CFA)=0) then PCItype:=2 else begin tmp:=inpl($CF8); outpl($CF8,$80000000); if inpl($CF8)=$80000000 then PCItype:=1; outpl($CF8,tmp); end; case PCItype of 1:begin {PCI type 1} for i:=0 to 511 do begin outpl($CF8,$80000000+i*longint(2048)); tmp:=inpl($CFC); if ((tmp and $FFFF)<>$FFFF) and ((tmp shr 16)<>$FFFF) then {_PCI Device: Vendor: (l and $FFFF) Device: (l shr 16)_} end; end; 2:begin {PCI type 2} outp($CF8,$80); outp($CFA,0); {Bus select?} for i:=0 to 15 do begin tmp:=inpl(i*256 +$C000); if ((tmp and $FFFF)<>$FFFF) and ((tmp shr 16)<>$FFFF) then {_PCI Device: Vendor: (l and $FFFF) Device: (l shr 16)_} end; outp($CF8,0); end; end; С шиной ISA ситуация несколько сложнее. Каких либо специальных функций в OS/2 я к сожалению не нашел. По поводу ISA/PnP есть документация от Microsoft, найти котрую можно по адресу ftp://ftp.microsoft.com/developr/drg/Plug-and-Play/Pnpspecs. Второй способ - это использовать PnP BIOS. Но тут возникает небольшая проблема - код 16-и битный и находится ниже первого мегабайта. На вопрос, как его выполнить, мне ответить никто не смог. Так что остаётся надеяться на документацию от Microsoft. Вообще, о том, каким образом организуется Plug'n'Play можно прочитать по следующему адресу: http://members.hyperlink.net.au/~chart. Там же есть и исходники, правда под DOS. Как это реализовать в OS/2Можно написать объект для Presentation Manager, который при загрузки самого PM будет опрашивать драйвер (который, разумеется тоже нужно написать), на предмет списка устройств и сверять его с результатом предыдущей загрузки системы. Если он (список) не совпадает, то смотрим, какие новые устройства у нас появились. В соответствии с этим начинаем устанавливать те или иные драйверы. Можно не использовать никакой драйвер, а просто взять с этой странички уже готовые программы, несколько изменить, да и всё. Единственное что смущает - это то, что они будут работать в VDM. Где и как хранить драйверы - нужно ещё подумать. А можно пойти по примеру Windows и взять за основу идентификации устройства .inf-файл. P.S. Вообще, всё это уже должен был кто-то реализовать. Вот например в eComStation почему бы не сделать? Удобно ведь. Автор: Поляков Дмитрий
Комментарии:
|
|
|||||||||||||||||||||||||||||
(C) OS2.GURU 2001-2021