home *** CD-ROM | disk | FTP | other *** search
- { 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;
- Var
- the_inTERRUPT: Procedure;
- begin
- getintvec (--Interrupt num--, @the_inTERRUPT);
- end.
- {
- 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.
- }