La détection de materiel

 
III- Page VESA
 
Cette procédure regarde d'abord s'il le mode VESA est disponible par l'intermédiaire d'une interruption. S'il l'est, la procédure affiche successivement la version, le constructeur de la carte et enfin, la liste des fonctions disponibles.
 
 
PageVesa:  
         call ModeTexte  
         push es  
         mov ax,ds  
         mov es,ax  
         mov di,offset VESA_Buffer  
         mov ax,04f00h  
         int 10h  
         pop es  
         cmp ax,0004fh  
         je PV_Dispo  
PV_PasDispo:  
         mov dx,offset VESA_PasDispo  
         call PutString  
         jmp EndPageVesa  
PV_Dispo:  
         mov dx,offset VESA_Dispo  
         call PutString  
PV_Version:  
         mov dx,offset VESA_Version  
         call PutString  
         mov bx,offset VESA_Buffer  
         add bx,5  
         mov dl,byte ptr[bx]  
         add dl,'0'  
         call Putch  
         mov dl,'.'  
         call Putch  
         dec bx  
         mov dl,byte ptr[bx]  
         add dl,'0'  
         call Putch  
PV_Construc:  
         mov dx,offset VESA_Construc  
         call PutString  
         push es  
         mov bx,offset VESA_Buffer  
         add bx,6  
         mov di,word ptr[bx]  
         add bx,2  
         mov ax,word ptr[bx]  
         mov es,ax  
PV_C_b1:  
         mov dl,es:[di]  
         cmp dl,0  
         je PV_C_b2  
         call Putch  
         inc di  
         jmp PV_C_b1  
PV_C_b2:  
         pop es  
PV_NbrMode:  
         mov dx,offset VESA_Fonction  
         call PutString  
         mov di,offset VESA_Buffer  
         add di,0eh  
         mov ax,ds:[di]  
         mov VESA_OVideoM,ax  
         add di,2  
         mov ax,ds:[di]  
         mov VESA_SVideoM,ax  
         mov cx,0  
PV_NM_b0:  
         push es  
         mov ax,VESA_SVideoM  
         mov es,ax  
         mov ax,VESA_OVideoM  
         add ax,cx  
         mov di,ax  
         mov ax,es:[di]  
         pop es  
        cmp ax,0ffffh  
         je EndPageVesa  
        pusha  
         call PutHexaWord  
         mov dl,','  
         call Putch  
         mov dl,' '  
         call Putch  
         shr cx,1  
         mov ax,cx  
         mov cx,10  
         div cl  
         cmp ah,9  
         jne VP_PCR  
         mov dx,offset VESA_CRplus  
         call PutString  
VP_PCR:   
         popa  
         inc cx  
         inc cx  
         jmp PV_NM_b0  
EndPageVesa:  
         call Page_HitAnyKey  
         ret