La détection de materiel

 
VI- Page Disquette
 
Le BIOS possède vraiment une mine d'information sur le lecteur de disquette connecté. En fait ces informations sont stockées dans ce qu'on appelle la DDPT (Table des Paramètres du Lecteur de Disquette). La technique employée ici est de fournir les informations par l'intermédiaire d'un buffer pour autant de lecteurs que l'indique le BIOS.
 
 
PageDisquette: 
         call ModeTexte 
         int 11h 
         bt ax,0 
         jnc PD_PasDispo 

PD_Dispo: 
         shr ax,6 
         and ax,3 
         inc ax 
         mov bx,1 
PD_D_b1: 
         push ax 
         push bx 

         mov dx,offset FDisk_Dispo 
         call PutString 
         mov dl,bl 
         add dl,'0' 
         call Putch 
         mov dl,10 
         call Putch 

         mov dx,offset FDisk_Dispo1 
         call PutString 

         push ax 
         mov ah,08h 
         mov dl,bl 
         dec dl 
         int 13h 
         pop ax 
  
         mov dx,offset FDisk_Dispo2 
         mov cx,bx 
         shl cx,3 
         shl bx,2 
         add bx,cx 
         add dx,bx 
         call PutString 

         cmp bx,0 
         pop bx 
         push bx 
         jne PD_ToutesInfo 
PD_retTI: 

         pop bx 
         pop ax 
         cmp ax,bx 
         jbe EndPageDisquette 
         inc bx 
         call Page_HitAnyKey 
         call ModeTexte 
         jmp PD_D_b1 

PD_ToutesInfo: 
         mov cx,bx 
         dec cx 
         push es 
         mov ax,0 
         mov es,ax 
         mov ax,10 
         mul cl 
         add ax,78h 
         mov di,ax 
         mov dx,es:[di] 
         add di,2 
         mov bx,es:[di] 
         mov es,bx 
         mov di,dx 

         xor ah,ah 
         mov al,es:[di] 
         mov bx,ax 
         mov dx,offset FDisk_DDPT1 
         call Putstring 
         and ax,00F0h 
         shr ax,4 
         mov cx,16 
         sub cx,ax 
         mov ax,cx 
         call PutWord 
         mov dx,offset FDisk_DDPT2 
         call Putstring 
         mov ax,bx 
         and ax,000Fh 
         shl ax,4 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT3 
         call PutString 
         shl ax,1 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov bx,18 
         div bl 
         xor ah,ah 
         mov dx,offset FDisk_DDPT4 
         call PutString 
         call PutWord 

         inc di 
         mov al,es:[di] 
         mov cl,al 
         mov ax,128 
         shl ax,cl 
         mov dx,offset FDisk_DDPT5 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT6 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT7 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT8 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT9 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT10 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT11 
         call PutString 
         call PutWord 

         inc di 
         xor ah,ah 
         mov al,es:[di] 
         mov dx,offset FDisk_DDPT12 
         call PutString 
         call PutWord 
         mov dl,'/' 
         call Putch 
         mov dl,'8' 
         call Putch 
         mov dl,' ' 
         call Putch 
         mov dl,'s' 
         call Putch 

         pop es 
         jmp PD_retTI 

PD_PasDispo: 
         mov dx,offset FDisk_PasDispo 
         call Putstring 
EndPageDisquette: 
         call Page_HitAnyKey 
         ret