You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

44 lines
890 B

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]
call cs:[interupt]
setcom endp
save db 0
interupt label dword
vector db 8 dup(0) ;only 4 needed 4 more for safety
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