ПОРТЫ и все с ними связанное

Предыдущая тема Следующая тема Перейти вниз

ПОРТЫ и все с ними связанное

Сообщение  VerhoLom в Пн Мар 07, 2011 4:46 pm

Тема такая. Решил попробовать шину PCI на вкус. Ниже - код, в принципе работающий, но возвращающий одно и то же значение для всех устройств(-Cool. Но такого быть не может. Кто нибудь сталкивался с этой темой?

Проблема наверное, в том, что не выходит вывести в порт 4 байта за раз. По частям, видимо нельзя.
giveio.sys юзать пока не хочу!

Код:

Type PCI_COORD Field=1
   As UByte   __unk:2
   As UByte register:6   '0-63
   As UByte func:3      '0-7
   As UByte dev:5         '0-31
   As UByte bus         '0-255
   As UByte __unk2:7
   As UByte ok:1
End Type

Type Bytes Field=1
   As UByte b1,b2,b3,b4
End Type

Function Read_PCI(ByVal bBus As UByte, ByVal bDev As UByte,ByVal bFunc As UByte,ByVal bRegister As UByte)As UInteger
   Dim pci As PCI_COORD Ptr=New PCI_COORD
   pci->bus=bBus
   pci->dev=bDev
   pci->func=bFunc
   pci->register=bRegister
   
   'ВОТ она, проблема!!!
   Dim As Bytes Ptr dat=Cast(Bytes Ptr,pci)
   'Dim As UInteger d=*Cast(UInteger Ptr,pci)
   'sub Out(byval port as UShort, byval data as UByte)
   'Out &hC8,d
   Out &hC8,dat->b1
   Out &hC8,dat->b2
   Out &hC8,dat->b3
   Out &hC8,dat->b4
   
   Dim dwRes As UInteger=Inp(&hCFC)
   If Bit(dwRes,31)=0 Then dwres=0
   Delete pci
   
   Return dwRes
End Function


For bus As UByte=0 To 255
   Print "BUS #";Hex(bus,8);!"\n================================"
   For dev As UByte=0 To 31
      Print "    DEV #";Hex(dev,8);!"\n    ================================"
      For func As UByte=0 To 7
         Print "          FUNC #";Hex(func,8);!"\n          ================================"
            Dim vID As UInteger=Read_PCI(bus,dev,func,2)
            Print "              Vendor ID=";Hex(vID,8);" (";Cast(Integer,vID);")"
      Next
   Next
Next

Sleep
End
avatar
VerhoLom

Сообщения : 67
Дата регистрации : 2010-07-06
Возраст : 35

Посмотреть профиль

Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения