;*************************************************************** ; One-second beeper. TSR COM-file "program" that intercepts the ; timer tick interrupt to output a beep once every second. ; Illustrates how to write an ISR for a PC. ;*************************************************************** code segment assume cs:code org 100h main: jmp ldnvec oldvec dd ? ;Will hold old INT 8 vector count dw 18 ;18 timer ticks = 1 second ;This is our new INT 8 ISR ;If 18 timer ticks have gone by, output "beep character" newisr: push ax ;Save altered register dec cs:count jnz exit mov cs:count,18 mov ax,0e07h ;INT 10h, service 0Eh outputs... int 10h ;character 07 -- a beep exit: pop ax ;Restore altered register jmp cs:oldvec ;Go to old INT 8 ISR ldnvec: ;*** This code executes only once--installs the new vector *** ;Get and save old int 8 vector (Use INT 21h, service 35h) ;Set up new int 8 vector (Use INT 21h, service 25h) ; (offset: newisr, base: CS or DS) ;Terminate leaving everything up to ldnvec resident ; (Use INT 21h, service 31h) code ends end main