[Back to ISR SWAG index]  [Back to Main SWAG index]  [Original]

{ What is an ISR?? Are there several things you have to know to create
 one in Pascal?? Thanks.

        ISR stands For interrupt service routine (I think; Hey, I
        just remember the abbriveation) :) But what it does is
        changes an interrupt vector to the address of a routine
        of yours then, your routine calls the actual interrupt code.

        In the next message, I'll post some heavily commented code
        that is a time TSR, But what is a TSR? Just a resident
        ISR. (By the way, The TSR screws up Blue Wave when resident)

        ---=== Extremely simplified version of how an ISR works ===---

        Assuming you know what an interrupt is (You called it a hardware
        command) ... When you call an interrupt (TP: Intr, Asm: int) the
        CPU stops what its doing and calls up a routine at a certain
        memory address (Which is called the interrupt's vector). You
        can get the address of the routine by using GETinTVEC. Now
        if you have this code
          Uses Dos;
             the_inTERRUPT: Procedure;
             getintvec (--Interrupt num--, @the_inTERRUPT);
        it will store the vector of the interrupt into @the_interrupt
        (if you dont know what a Pointer is, go back to the manual and
        read the section on them)
        So, Everytime you call the_inTERRUPT it will actually call what
        ever interrupt you made the_interrupt point to. on the same
        note SETinTVEC (--int num--, @your_Routine) will set it where
        when ever you call that interrupt it will execute your routine.

        What the ISR does is gets the vector of the interrupt you
        want to 'Latch' onto, puts it into a Procedure (As shown
        above) then, Uses SETinTVEC to set the ISR routine inside
        that interrupt. The ISR routine then calls the Procedure
        that points to the old interrupt.

[Back to ISR SWAG index]  [Back to Main SWAG index]  [Original]