| OS/2.GURU LibraryReviews / articles about OS/2 eComStation ArcaOS | 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 почему бы не сделать? Удобно ведь. Автор: Поляков Дмитрий 
 
 Komentarze: 
 
 | 
     | |||||||||||||||||||||||||||||||
 
 
| 
 ArcaOS 5.1.1 - DOS works againDOS virtual machine works again (it was working on Core 2 Duo, and didn't for i5). Install ArcaOS in UEFI mode to use DOS VM. | 
 "SVISTA a-la Vista"We have released SVISTA/2 virtual machine in 2004, Eugene Gorbunoff have combined "Serenity Virtual Station" to spanish "Vista". 
2004, 2005, there were several announcements on all major
computer web-sites.
 | // надо на  ENG!!   
 
Buy OS/2 application:
PM Backup Suite
(incremental data backup)
 | 
 
| Every conference is important. |   
 Warpstock Europe 2011 | 
 
