Sebastian Fri Feb 10 2006 at 3:25 pm Ah, I found a solution...
org 0x100
mov ax, cs
mov ds, ax
mov ah, 0x35 ; get interrupt vector
mov al, 0x1C ; interrupt number
int 0x21
mov [jmp_to_old_handler + 1], bx
mov [jmp_to_old_handler + 3], es
mov ah, 0x25 ; set interrupt vector
mov al, 0x1C ; interrupt number
mov dx, new_handler
int 0x21
mov ax, 0x3100 ; terminate and stay resident
mov dx, 0x200
int 0x21
new_handler:
pushfd
pushad
mov ax, 0x1680
int 0x2f
mov ax, 0x1680
int 0x2f
mov ax, 0x1680
int 0x2f
mov ax, 0x1680
int 0x2f
;mov ax, 0x0e41
;int 0x10
popad
popfd
; fall through
jmp_to_old_handler:
jmp word 0:0 :D
|