cseg segment assume cs:cseg org 100h first: jmp init hotkey equ 30h ;Scan code for "B" shftmsk equ 00001000b ;Shift mask old8 label word oldloc8 dd ? old9 label word oldloc9 dd ? count db 0 newint9 proc near push ax in al,60h cmp al,hotkey je keygood exit9: pop ax jmp oldloc9 keygood: mov ah,2 int 16h test al,shftmsk jz exit9 inc count jmp exit9 newint9 endp newint8 proc near cmp count,0 je exit8 push ax push bx push cx push dx xor cx,cx xor dx,dx mov ah,1 int 1ah inc count cmp count,60h jne all_done mov count,0 all_done:pop dx pop cx pop bx pop ax exit8: jmp oldloc8 newint8 endp init proc near mov ax,3508h int 21h mov old8,bx mov old8[2],es mov ax,3509h int 21h mov old9,bx mov old9[2],es mov ax,2508h lea dx,newint8 int 21h mov ax,2509h lea dx,newint9 int 21h mov ax,ds:[2ch] mov es,ax mov ah,49h int 21h lea dx,init int 27h init endp cseg ends end first