Introduction to Virtual Device Drivers


Real-Mode Initialization Example



Download 274.5 Kb.
Page49/80
Date19.01.2022
Size274.5 Kb.
#58083
1   ...   45   46   47   48   49   50   51   52   ...   80
VXDS

Real-Mode Initialization Example


The following example shows a typical real-mode initialization procedure:

;*********************************************************************

; Real-mode initialization code

;*********************************************************************


VxD_REAL_INIT_SEG
BeginProc ebios_init

mov ah, 0C0h

int 15h

test es:[bx.SD_feature1], EBIOS_allocated

jz short no_ebios_fnd

mov ah, 0C1h ; get segment adr of EBIOS

int 15h

jc short no_ebios_fnd

mov ax, es ; get EBIOS segment address

shr ax, 8 ; convert to a page number

movzx edx, ax ; return EBIOS page as reference

; data


mov bx, OFFSET exc_ebios_page ; pointer to exclusion table

mov [bx], ax ; 1 entry, to exclude EBIOS page

; from memory manager use

xor si, si ; no instance data to declare

mov ax, Device_Load_Ok ; go ahead and load the device

jmp short init_exit ; return to loader


no_ebios_fnd:

mov ah, 9

mov dx, OFFSET no_ebios_msg ; print message through MS-DOS

int 21h


xor bx, bx ; no exclusion table

xor si, si ; no instance data table

xor edx, edx ; no reference data

mov ax, Abort_Device_Load + No_Fail_Message

; don't load protected-mode

; portion and don't display a

; failure message

init_exit:

ret
exc_ebios_page dw 0, 0
no_ebios_msg db 'PS/2 type EBIOS not detected', 13, 10, '$'
EndProc ENDP
VxD_REAL_INIT_ENDS


Download 274.5 Kb.

Share with your friends:
1   ...   45   46   47   48   49   50   51   52   ...   80




The database is protected by copyright ©ininet.org 2024
send message

    Main page