1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| ;>>>>>>>>>>>>>>>>>>>>>>> P C I <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
mov word [es:0x6010], 0 ; par défaut
mov ax, 0xB101 ; est-ce utile : machines sans PCI ?
int 0x1A
jc .sansPci
cmp edx, 'PCI '
jnz .sansPci
; classe 1 = stockage de masse
; sous-classe 1 = controleur IDE
mov ax, 0xB103
mov ecx, 0x10180 ; test pour interface 0x80
xor si, si ; périphérique = 0
int 0x1A
jnc @F
mov ax, 0xB103
mov ecx, 0x1018A ; test pour interface 0x8A
xor si, si
int 0x1A
jnc @F
mov ax, 0xB103
mov ecx, 0x10185 ; test pour interface 0x85
xor si, si
int 0x1A
jc .sansPci
; initialisation
@@:
mov ax, 0xB10A
mov di, 0x20 ; base de la mémoire registre 0x20
int 0x1A
jc .sansPci
and cx, 0xFFF0 ; type à 0
mov [es:0x6010], cx ; adresse de base stockée
mov eax, 0
mov es, ax
mov byte [es:0x6040], 1 ; système 1 par défaut
mov ax,0xB101
int 0x1A
cmp ah, 0
jne @F
mov [es:0x6041], cl ; dernier bus PCI du système
mov [es:0x6042], bx
mov [es:0x6044], edi
bt ax, 0 ; b0 = système, b1 =système 2
jc @F
bt ax, 2
jnc @F
mov byte [es:0x6040], 2
@@:
.sansPci: |
Partager