; 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