Handbuch-Plus
mov dx,BasisAddresse
mov al,ZuSchreibenderWert
out dx,al
oder:
mov dx,BasisAddresse
in al,dx
zugegriffen werden.
Die Basisadresse einer PCI Karte wird zunächst vom BIOS vergeben, und kann sich bei jedem Start des Rechners verändern. Das
BIOS stellt über den speziellen Interrupt 15h einige Zusatzfunktionen für PCI Karten bereit, auf die im Beispiel unten zurückgegrif-
fen wird.
Da jede PCI Karte mittels einer eindeutigen Herstellernummer (VendorID) und einer Kartennummer (DeviceID) identifiziert wird,
müssen Sie die entsprechenden Werte für die eingesetzte Karte anpassen. Unten aufgeführt ist ebenfalls eine Auflistung der
aktuellen Karten, und den dazugehörigen DeviceID's.
Die unten beschriebene Funktion PCIinit dient als Beispiel, wie die I/O Adresse einer bestimmten PCI Karte ermittelt werden kann.
Auszug aus dem DOS Treiber für die PCI Karten:
int PCIinit(void) /*Get initial data of PCI*/
{
int temp;
int address;
asm {
mov ah,0xb1;
mov al,2
mov dx,0x
mov cx,0x6666
mov si,0
int 0x1a
cmp ah,0
jnz error1
mov bno,bh
mov dno,bl
mov ah,0xb1;
mov al,0x09;
mov di,0x1c;
mov bh,bno
mov bl,dno
int 0x1a
cmp ah,0
jnz error1
mov address,cx
sub address,1
}
return address;
error1:
return -1;
}
Die folgenden Device ID's sind für Decision Karten (Vendor ID 6666) definiert:
0x1024 - 16 Photo / 16 Relais Board
0x1022 - 4 Photo / 4 Relais Board
0x1021 - 8 Photo / 8 Relais Board
0x0101 - 8255 Board
0x1011 - Icc Basis Card
0x0003 - Icc Basis Card
PCI-Karten + DOS
Um die PCI Karten unter DOS benutzen zu können, muß zunächst die Basisadresse im Port I/O
Bereich des Rechners ermittelt werden. Sobald die Basisaddresse bekannt ist, kann auf die Karte mit
einfachen Port I/O Befehlen, wie z.b. in Assembler
<-- Karte suchen
<-- Device ID
<-- 1ste Karte
<-- gerätehandle für die Karte
<-- I/O Addresse der Karte abfragen
<-- Addresse nun in der variable ‚address'
-
Deutsche Zusatzinformationen zum englischen Handbuch)
<-- Vendor ID
4