home *** CD-ROM | disk | FTP | other *** search
- ;
- progseg segment para public 'CODE'
- public setcom
- assume cs:progseg, ds:progseg, es:progseg
- org 100h
- doscall equ 21h
- oldint equ 16h
- ;
- startup proc far
- jmp setup
- ;
- setcom proc far
- ; jmp cs:[interupt]
- pushf
- call cs:[interupt]
- RET 2
- setcom endp
- ;
- save db 0
- interupt label dword
- vector db 8 dup(0) ;only 4 needed 4 more for safety
- ;
- setup:
- mov ah,35h ;get interupt vector address function
- mov al,oldint ;keyboard interupt vector
- int doscall ;go get it
- ;
- mov word ptr vector,bx ;save offset
- mov bx,es ;get segment address
- mov word ptr vector+2,bx ;save segment
- ;
- mov dx,offset setcom ;get new vector address
- mov ax,cs
- mov ds,ax ;set segment
- mov ah,25h ;set interupt vector address function
- mov al,oldint ;set to our new interupt vector
- int doscall ;set the interupt
- ;
- mov dx,offset setup ;terminate and stay resident
- int 27h
- startup endp
- progseg ends
- ;
- end startup