'/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/*/ ' CHANGES any INTERRUPT VECTOR ' m-aydin@usa.net '\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\ '$INCLUDE: 'qb.bi' 'DIM SHARED InRegx AS RegTypex, OutRegx AS RegTypex CLS INPUT " Which interrupt will be discharged"; intnum InRegx.ax = &H3500 + intnum CALL INTERRUPTX(&H21, InRegx, OutRegx) 'detect initial PRINT "Int#"; intnum; "'s current vector: "; 'addresses of int oldseg = OutRegx.ES: oldoffset = OutRegx.bx PRINT HEX$(oldseg); ":"; HEX$(oldoffset) 'hold them '0:0476h is a blind 'adress. We need it. DEF SEG = 0: POKE &H476, &HCF: DEF SEG '(CF = IRET) InRegx.ax = &H2500 + intnum: InRegx.dx = &H476 'ok. ready to change. InRegx.ds = 0: CALL INTERRUPTX(&H21, InRegx, OutRegx) 'turn it on PRINT "Ok. Int"; intnum; " was destroyed till reset" 'inform user PRINT "The vector will be restored If you press '1'" 'restore vector? a$ = INPUT$(1): IF a$ <> "1" THEN END 'exit here? InRegx.ax = &H2500 + intnum: InRegx.dx = oldoffset 'Restoration InRegx.ds = oldseg CALL INTERRUPTX(&H21, InRegx, OutRegx) PRINT "Int#"; intnum; " was restored..!"