[comp.sys.ibm.pc] Masking ints while setting interrupt vectors

feldy@CS.UCLA.EDU (04/15/87)

I want to install an interrupt routine for the timer interrupt 0x08.
How do I mask the timer interrupt off while I use the DOS call to 
replace the interrupt vector?
I just need some sample assembler code for MS-DOS 2.1.


Bob Felderman
3732L Boelter Hall	         feldy@ats.ucla.edu
University of California    ...!{trwspp,sdcrdcf,ihnp4,ucbvax}!ucla-cs!feldy
Los Angeles, CA 90024
(213) 825-2841

ballou@BRAHMS.BERKELEY.EDU.UUCP (04/15/87)

In article <5523@shemp.UCLA.EDU> feldy@CS.UCLA.EDU (Bob Felderman) writes:
>I want to install an interrupt routine for the timer interrupt 0x08.
>How do I mask the timer interrupt off while I use the DOS call to 
>replace the interrupt vector?
>I just need some sample assembler code for MS-DOS 2.1.

	Couldn't you just precede the code by CLI and use STI after
changing the interrupt vector?

tom@vrdxhq.UUCP (04/16/87)

There are two ways to do it.

One way is simply to turn off interrupts and turn them on again ...

      PUSHF
      CLI
      << your code to install vector >>
      POPF


Or, you can mask off the timer interrupt at the 8259 interrupt
controller via ...

      ; get the current mask

      MOV  DL, 021H        ; 21h is mask port in AT
      IN   AH, DL

      ; save current mask

      PUSH AX
      
      ; mask off the timer

      OR   AH, Timer_interrupt   ; i don't know which line it is
 
      ; put new mask to 8259

      OUT  AH, DL

      << insert vector installation code here >>

      ; restore old mask

      POP  AX

      OUT  AH, DL

I'm sure I got some of the operand orders wrong, cause I don't
have any books in front of me, but you get the idea ...

Also, the literal Timer_interrupt should be replaced with 3 or
4 or 2 or whatever the timer interrupt into the 8259 is.