IBM AT 5170 Technical Reference page 36

Table of Contents

Advertisement

Linking Code Example
PUSH
ES
eLI
; Disable interrupts
Set forward pointer to value of interrupt vector in low memory
ASSUME
CS:CODESEG,DS:CODESEG
PUSH
ES
HOV
AX,350FH
DOS get interrupt vector
IHT
21H
HOV
51,OFFSET CS:FPTR
Get offset of your forward pointer
in an indexable register
KOV
CS: (SI(,BX
store the old interrupt vector
KOV
CS: (SI+2) ,ES
in your forward pointer for chaining
CKP
ES:BYTE PTR[BXJ.CFH
Test for IRET
JNZ
SETVECTR
KOV
CS:FLAGS,FIRST
set up first in chain flag
SETVECTR: POP
ES
PUSH
DS
; Make interrupt vector in low memory point to your handler
KOV
DX,OFFSET BNTRY
Make interrupt vector point to your handler
MOV
AX,SEG ENTRY
If OS not
=
es, get it
MOV
DS,AX
and put it in DS
KOV
AX,250FH
DOS set interrupt vector
INT
21H
POP
DS
Unmask (enable) interrupts for your level
IN
AL,IMR
Read interrupt mask register
JKP
$+2
10 delay
AND
AL,07FH
Unmask interrupt level 7
OUT
IMR,AL
write new interrupt mask
KOV
AL,SPC_EOI
Issue specific EO! for level
JKP
$+Z
to allow pending level 7 interrupts
OUT
OCR,AL
(if any) to be serviced
STI
Enable interrupts
POP
ES
1-20
System Board

Advertisement

Table of Contents
loading

Table of Contents