Posted By: mk (mk) on 'CZprogram'
Title: Re: BOOT
Date: Wed Nov 12 20:17:35 1997
Tak na DEVICE=c:filename.exe som niekde nasiel zdrojacik:
;-----------------------------------------------------------------------;
; Request Header (Common portion) ;
;-----------------------------------------------------------------------;
RH equ DS:[BX] ;addressability to Request Header structure
RHC struc
db ? ; length of Request Header (including data)
db ? ; unit code (subunit)
HC_Cmd db ? ; command code
RHC_Sta dw ? ; status
dq ? ; reserved for DOS
RH0_NumUnits db ? ; number of units
; set to 1 if installation succeeds,
; set to 0 to cause installation failure
RH0_EndOfs dw ? ; offset of ending address
RH0_EndSeg dw ? ; segment of ending address
dw ? ; unused
dw ? ; unused
db ? ; unused
RHC ends ;end of common portion
Code segment para public
assume CS:Code,DS:Code
org 0
StartCode equ $
; DEVICE HEADER - must be at offset zero within device driver
dd -1 ; becomes pointer to next device header
dw 0A000h ; attribute (IBM format block device)
dw offset Strategy ; pointer to device "strategy" routine
dw offset Interrupt ; pointer to device "interrupt handler"
db "DEVXXXXX"
; End of DEVICE HEADER
int21_seg dw 0
int21_ofs dw 0
first_umb dw 0
RH_Ptr label dword
RH_PtrOfs dw ?
RH_PtrSeg dw ?
Strategy proc far
mov cs:RH_PtrOfs,bx
mov cs:RH_PtrSeg,es
ret
Strategy endp
;-----------------------------------------------------------------------;
; Device "interrupt" entry point ;
;-----------------------------------------------------------------------;
Interrupt proc far
push ax
push bx
push ds
lds bx,RH_Ptr
mov al,RH.RHC_Cmd
or al,al
jnz Int_Cmd_Exit
call Dev_Init
Int_Cmd_Exit:
mov ax,offset EndCode
mov RH.RH0_EndOfs,ax
mov RH.RH0_EndSeg,cs
mov ax,1
mov RH.RHC_Sta,ax
pop ds
pop bx
pop ax
ret
Interrupt endp
Dev_Init proc near
push ax
push bx
push cx
push dx
push si
push di
push ds
push es
mov ax,5200h
int 021h
mov bx,008Ch
mov ax,es:[bx]
mov cs:first_umb,ax
mov ax,3521h
int 021h
mov cs:int21_ofs,bx
mov cs:int21_seg,es
pop es
pop ds
pop di
pop si
pop dx
pop cx
pop bx
pop ax
ret
Dev_Init endp
EndCode equ $
Start:
mov ax,cs
mov ds,ax
mov ax,00900h
lea dx,Msg_1
int 021h
mov ax,04C00h
int 021h
Msg_1 db "Please install me as a device driver!", 13, 10, "$"
Code ends
end Start
;---