Technical data

BIOS and System Programming
CP 486 00/14 VIPA GmbH 67
4.3.5 Interrupt-Management
Interrupt Initiation in the CP
The hardware interrupt IRQ12 (software interrupt 74) on the CP486 can be initiated by
- PLC access to element 1023 of respectively active bank
- BASP activation on back plane bus
The appertaining interrupt vector is filed to address 1D0 - 1D3 (hex). The initiated interrupt must be
reset by accessing the interrupt reset register (address: C000:9F8E) in the interrupt service routine.
Example: Pascal Program for Evaluation of Interrupt 12
PROGRAM INT_74_TEST;
USES CRT, DOS;
CONST EOI : BYTE = $20; { End of Interrupt acknowledgement }
PIC_1 : BYTE = $20; { Address of first Int-Controller }
PIC_2 : BYTE = $A0; { Address of second Int-Controller }
TYPE BITARRAY = ARRAY[0..7] OF BYTE;
VAR OLD_VEC : POINTER;
I : INTEGER;
STATUS,S5_STATUS,CP_STATUS : BYTE;
S5_STATUSBIT,CP_STATUSBIT : BITARRAY;
INT_AKTIVBIT : BOOLEAN;
{$F+}
PROCEDURE INT_74; INTERRUPT; { ***** INTERRUPT - Routine ************}
{$F-}
BEGIN
i:=i+1; { Increase interrupt counter }
INT_AKTIVBIT:=TRUE; { Set flag for the processing }
{ in the main program }
S5_STATUS:=PORT[$281]; { Buffer S5- and CP-register }
CP_STATUS:=PORT[$280];
PORT[PIC_1]:=EOI; { Interrupt acknowledgement to }
PORT[PIC_2]:=EOI; { both interrupt controllers }
END;
PROCEDURE HEX2BIN(STATUS:BYTE;VAR STATUSBIT:BITARRAY); { Conversion HEX --> BIN }
VAR I : INTEGER;
H1 : BYTE;
BEGIN
FOR I:=0 TO 7 DO
BEGIN
H1:=STATUS MOD 2;
IF H1<>0 THEN
STATUSBIT[I]:=1
ELSE
STATUSBIT[I]:=0;
STATUS:=STATUS DIV 2
END;
END;
PROCEDURE FEHLER;