CMPILXO
* /--- FILE TYPE = E
* /--- BLOCK CMPILXO 00 000 82/04/08 13.28
IDENT CMPILXO
CMPILXO TITLE CMPILXO - CMP OVERLAY LOADER AND EXECUTOR.
*COMMENT CMPILXO - CMP OVERLAY LOADER AND EXECUTOR.
*** CMPILXO - CMP OVERLAY LOADER AND EXECUTOR.
*
* OVERLAYED MODULES AND IDENTS ARE LOADED FROM EXTENDED
* MEMORY AND EXECUTED HERE.
CST
LIST X
*CALL ZPXIDEF
LIST *
CMPOV SPACE 4,10
** CMPOV - CENTRAL MICRO PLATO SUBOVERLAY.
*
* GENERATE A 3 WORD ENTRY FOR EACH OVERLAYED XDCL
* CYBIL PROCEDURE AND OVERLAYED COMPASS ENTRY POINT.
*
* INITIALLY, THE FORMAT IS -
*
* WORD 0 - 30/RJ =XLXO, 30/0.
* 1 - 30/EQ 0, 30/0.
* 2 - 0.
*
* AFTER THE OVERLAYS ARE PROCESSED IN IDENT -CONDI-
* THE FORMAT BECOMES -
*
* WORD 0 - UNCHANGED.
* 1 - 30/JUMP TO XDCL PROCDURE OR ENTRY POINT, 30/0.
* 2 - 24/EM FWA, 18/MODULE OR IDENT LENGTH, 18/CM FWA.
*
* WORD 2 IS KNOWN AS THE SUBOVERLAY INFORMATION WORD (SIW).
MACREF CMPOV$
CMPOV MACRO XREF
MACREF CMPOV
ENTRY XREF
XREF RJ =XLXO
EQ 0
CON 0
ENDM
CSUBOV DATA 0 CURRENT SIW LOCATION
* /--- BLOCK CMPILXO 00 000 82/04/08 13.22
LXO TITLE LXO - LOAD AND EXECUTE OVERLAY.
*** LXO - LOAD AND EXECUTE OVERLAY.
*
* THE LOCATION OF THE CURRENT SIW IS SAVED IN THE CYBIL
* STACK FRAME. THE NEW SUBOVERLAY IS READ FROM EXTENDED
* MEMORY. CONTROL IS TRANSFERRED TO THE SUBOVERLAY THROUGH
* WORD 1 OF ITS CMPOV ENTRY.
*
* WHEN CONTROL IS RETURNED FROM THE SUBOVERLAY, THE
* PREVIOUS SUBOVERLAY, IF ANY, IS RELOADED FROM
* EXTENDED MEMORY AND CONTROL IS RETURNED TO IT.
*
*
* ENTRY (LXO) = 12/04000B, 18/SIW LOCATION - 1, 30/0.
* (CSUBOV) = CURRENT SIW LOCATION.
* (B1) = 1.
* (B2) = CYBIL STACK FRAME POOINTER.
* (B3) = CYBIL STACK LIMIT.
* (B5) = CYBIL ARGUMENT EXTENSION LIST FWA.
* (X1) = 1ST OF LAST 5 CYBIL ARGUMENTS.
* (X2) = 2ND OF LAST 5 CYBIL ARGUMENTS.
* (X3) = 3RD OF LAST 5 CYBIL ARGUMENTS.
* (X4) = 4TH OF LAST 5 CYBIL ARGUMENTS.
* (X5) = 5TH OF LAST 5 CYBIL ARGUMENTS.
* (X7) = RETURN ADDRESS.
LXO PS
EQ LXO0
LIST G
LXO0 ENTR ENTRY
LIST *
* SAVE CYBIL REGISTERS.
*
* B - 2, 3.
* X - 1, 2.
BX6 X1
BX7 X2
SA6 LXOA
SA7 A6+B1
SX6 B2
SX7 B3
LX6 18
BX6 X6+X7
SA6 A7+B1
* PUT THE POINTER TO THE CURRENT OVERLAY*S SUBOV
* WORD IN THE STACK FRAME.
SA2 CSUBOV
BX6 X2
SA6 B2+B1
* LOAD THE OVERLAY.
SA1 LXO
LX1 30
SA1 X1+B1
BX0 X1-X6
ZR X0,LXO1 IF SUBOVERLAY ALREADY LOADED
SX7 A1
RJ =XLOADOV
* RESTORE CYBIL REGISTERS.
*
* B - 2, 3.
* X - 1, 2.
LXO1 SA1 LXOA+2
SB3 X1
AX1 18
SB2 X1
SA2 A1-B1
SA1 A2-B1
* TRANSFER CONTROL TO THE OVERLAY. THE OVERLAY WILL
* RETURN CONTROL TO *LXO2*.
SX7 LXO2 (X7) = RETURN ADDRESS
EQ LXO
* /--- BLOCK CMPILXO 00 000 81/12/23 08.56
* RETURN TO PREVIOUS OVERLAY.
LXO2 SA1 B2+B1 GET SUBOV LOCATION FROM STACK FRAME
SX7 X1 (X7) = LOCATION PREVIOUS SIW
ZR X7,LXO3 IF NO PREVIOUS OVERLAY, JUST RETURN
SA1 X7
SA2 CSUBOV (X2) = LOCATION OF CURRENT SIW
SA3 X2
BX0 X1-X3
ZR X0,LXO4 IF SUBOVERLAY ALREADY LOADED
* SAVE CYBIL REGISTERS B2 AND B3.
SX6 B2
LX6 18
SX1 B3
BX6 X6+X1
SA6 LXOA+2
* LOAD THE SUBOVERLAY.
RJ =XLOADOV
* RESTORE CYBIL REGISTERS B2 AND B3.
SA1 LXOA+2
SB3 X1
AX1 18
SB2 X1
EQ LXO4 RETURN TO PREVIOUS SUBOVERLAY
LXO3 SA7 CSUBOV
LXO4 DONE RETURN
LXOA BSS 1 60/(X1)
BSS 1 60/(X2)
BSS 1 24/0, 18/(B2), 18/(B3)
* CENTRAL MICRO PLATO SUBOVERLAY TABLE.
ENTRY CMPOVT
LIST G
* /--- BLOCK CMPILXO 00 000 82/08/23 16.14
CMPOVT BSS 0
CMPOV MPP$ALL
CMPOV MPP$ANC
CMPOV MPP$ANS
CMPOV MPP$ARR
CMPOV MPP$ATT
CMPOV MPP$BLK
CMPOV MPP$CHA
CMPOV MPP$CHG
CMPOV MPP$CHR
CMPOV MPP$CLR
CMPOV MPP$CLS
CMPOV MPP$CPU
CMPOV MPP$CPY
CMPOV MPP$CST
CMPOV MPP$CVE
CMPOV MPP$DAR
CMPOV MPP$DEF
CMPOV MPP$DIN
CMPOV MPP$DOT
CMPOV MPP$ENA
CMPOV MPP$ERR
CMPOV MPP$ERX
CMPOV MPP$EVL
CMPOV MPP$EXW
CMPOV MPP$FND
CMPOV MPP$GFL
CMPOV MPP$GLM
CMPOV MPP$GTL
CMPOV MPP$IFL
CMPOV MPP$IFM
CMPOV MPP$IHB
CMPOV MPP$JDG
CMPOV MPP$JKY
CMPOV MPP$JPN
CMPOV MPP$JPO
CMPOV MPP$KYW
CMPOV MPP$LBA
CMPOV MPP$LBL
CMPOV MPP$MKL
CMPOV MPP$MTU
CMPOV MPP$NAA
CMPOV MPP$NIA
CMPOV MPP$NOA
CMPOV MPP$NOM
CMPOV MPP$NOW
CMPOV MPP$OKA
CMPOV MPP$OKN
CMPOV MPP$OKW
CMPOV MPP$OPN
CMPOV MPP$ORA
CMPOV MPP$OTD
CMPOV MPP$PAI
CMPOV MPP$PAK
CMPOV MPP$PCK
CMPOV MPP$PIO
CMPOV MPP$PJB
CMPOV MPP$POL
CMPOV MPP$PRA
CMPOV MPP$PTD
CMPOV MPP$PTL
CMPOV MPP$RAN
CMPOV MPP$ROT
CMPOV MPP$SET
CMPOV MPP$SHA
CMPOV MPP$SHB
CMPOV MPP$SHT
CMPOV MPP$SHW
CMPOV MPP$SIZ
CMPOV MPP$SKE
CMPOV MPP$SKP
CMPOV MPP$SPC
CMPOV MPP$SRC
CMPOV MPP$SRF
CMPOV MPP$STP
CMPOV MPP$TXN
CMPOV MPP$TXT
CMPOV MPP$UJB
CMPOV MPP$UMJ
CMPOV MPP$UNE
CMPOV MPP$UNT
CMPOV MPP$UOL
CMPOV MPP$WRL
CMPOV MPP$WRT
CMPOV MPP$WTC
CMPOV MPP$XIO
CMPOV MPP$ZER
LIST *
END