IDENT MDD,MDD
PERIPH
BASE MIXED
SST DLYA,RDS,SSCP
TITLE MDD - TWO PORT MUX MAINTENANCE DISPLAY.
*COMMENT MDD - LEVEL=11.
COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
MDD SPACE 4,10
*** MDD - MAINTENANCE CHANNEL DISPLAY PREPROCESSOR.
*
* B. R. HANSON. 81/02/29.
* R. A. ANDERSON. 85/09/18.
* K. A. PRIEVE. 87/06/10.
SPACE 4,10
*** THIS IS THE NOS OPERATING SYSTEM DEPENDENT RESIDENT
* OVERLAY. THIS PROGRAM DETERMINES WHETHER THERE IS ALREADY A
* COPY OF *SCI* RUNNING IN A PP. IF SO, IT TURNS ON *MDD* MODE
* FOR THAT COPY (UNLESS NOS/VE IS RUNNING IN WHICH CASE *MDD*
* MUST BE INITIATED FROM NOS/VE). IF *SCI* IS NOT CURRENTLY
* EXECUTING, PP RESIDENT IS SAVED AND *SCI* IS LOADED FROM THE
* CIP LIBRARY. THIS PROGRAM ALSO HANDLES THE UNIQUE *MDD*
* STARTUP AND TERMINATION REQUIREMENTS FOR NOS.
*
* THIS VERSION OF *MDD* REQUIRES CIP TO BE AT LEVEL 9 OR
* GREATER.
SPACE 4,10
*** ERROR LOG MESSAGES.
*
* * MDD - ALREADY LOADED.*
* *MDD* IS ALREADY RUNNING IN A PP. ONLY ONE COPY
* CAN RUN AT A TIME.
* MDD PP WILL DROP OUT.
* ALERT STATUS IS SET.
*
* * MDD - BYE COMMAND EXECUTED.*
* THE USER OF MDD HAS ENTERED THE BY COMMAND DIRECTING
* MDD TO DROP OUT.
*
* * MDD - CONSOLE MUST BE UNLOCKED.*
* AN ATTEMPT WAS MADE TO BRING MDD UP WITH THE CONSOLE
* IN A LOCKED STATE.
* MDD PP WILL DROP OUT.
* ALERT STATUS IS SET.
*
* * MDD - IMPROPER ACCESS ATTEMPT.*
* MDD WAS NOT INITIATED FROM EITHER A SYSTEM CONTROL POINT
* OR WITH ENGINEERING ACCESS.
* MDD WILL DROP OUT.
*
* * MDD - MR ERROR.*
* A MAINTENANCE REGISTER ERROR WAS DETECTED DURING MDD
* INITIALIZATION.
* MDD WILL DROP OUT.
*
* * MDD - MUST BE INITIATED FROM NOS/VE.*
* WHEN NOS/VE IS EXECUTING, *MDD* MUST BE INITIATED FROM
* THE NOS/VE SIDE.
* MDD PP WILL DROP OUT.
* ALERT STATUS IS SET.
*
* * MDD - NOT ALLOWED ON THIS MAINFRAME.*
* THE MAINFRAME DOES NOT HAVE NECESSARY HARDWARE TO
* SUPPORT MDD.
* MDD WILL DROP OUT.
* ALERT STATUS IS SET.
*
* * MDD - NOT FOUND IN CIP DIRECTORY.*
* MDD HAS SEARCHED THE CENTRAL MEMORY CTI DIRECTORY
* AND NOT FOUND THE RESIDENT VERSION OF MDD.
* MDD WILL DROP OUT.
* ALERT STATUS IS SET.
*
* * MDD - VALIDATED.*
* MDD HAS SUCCESSFULLY VALIDATED ITSELF AND HAS BEGUN
* OPERATION.
SPACE 4,10
* COMMON DECKS.
*CALL COMPMAC
*CALL COMPIOU
*CALL COMSCPS
*CALL COMSDST
*CALL COMSEVT
*CALL COMSIOU
*CALL COMSPIM
SPACE 4,10
**** DIRECT LOCATION ASSIGNMENTS.
*
* THE DIRECT CELLS *SM* THROUGH *CD+2* AND *SF* (27-36, 70)
* CONTAIN HANDOFF DATA FOR *SCI*. THEY MUST NOT BE MOVED.
* SEE NOS/VE DEVELOPMENT FOR ANY ADJUSTMENTS THAT MUST BE
* MADE TO ENSURE COMPATIBILITY WITH *SCI*.
SM EQU 27 *SCI* PP NUMBER AND *X.MDD* FLAG
MD EQU 30 - 32 *SCI* ADDRESS A AND R-REGISTER
UF EQU 33 UTILITY MODE FLAG
CD EQU 34 - 36 CIP DIRECTORY POINTER
CN EQU 40 - 44 SCRATCH BUFFER
RN EQU 45 REGISTER NUMBER (COMPMRA)
PP EQU 46 PP NUMBER
PT EQU 47 PORT NUMBER
W0 EQU 60 WORKING STORAGE
W1 EQU 61 WORKING STORAGE
W2 EQU 62 WORKING STORAGE
W3 EQU 63 WORKING STORAGE
W4 EQU 64 WORKING STORAGE
W5 EQU 65 WORKING STORAGE
W6 EQU 66 WORKING STORAGE
W7 EQU 67 WORKING STORAGE
SF EQU 70 *SCI* INITIATED BY *SDA* FLAG
SPACE 4,10
** ASSEMBLY CONSTANTS.
*
RR EQU 400000 CONSTANT VALUE FOR R REGISTER
TITLE RESIDENT NOS DEPENDENT OVERLAY.
ORG PPFW
MDD SPACE 4,10
** MDD - MONITOR DISPLAY DRIVER PREPROCESSOR.
*
* ENTRY (IR+4) = DESIRED PORT.
MDD BSS 0 ENTRY
RJM PRS PRESET
RJM GSA
ZJP MDD2 IF NO *SCI* PARAMETER TABLE
RJM GSI GET *SCI* PARAMETER TABLE INTERLOCK
RJM GSA CHECK IF *MDD* ACTIVE
CRD CN
LDD CN+4
SHN 21-13
PJN MDD1 IF *MDD* NOT ALREADY ACTIVE
RJM CPN CHECK PORT NUMBER
LJM MDD6 CLEAR MEMORY AND DROP PP
MDD1 LDD CN+1 CHECK IF *SCI* ACTIVE
LPN 77
ZJN MDD3 IF *SCI* NOT ACTIVE
RJM GEA CHECK IF NOS/VE ACTIVE
ADN D8TY
CRD W0
LDD W0+3
LPN 77
SBN 2
ZJN MDD5 IF NOS/VE ACTIVE
RJM AMB ACTIVATE *MDD* BITS
RJM SMF SET C170 *MDD* FLAG
RJM GSA GET *SCI* PARAMETER TABLE ADDRESS
CWD CN WRITE FIRST WORD AND CLEAR INTERLOCK
UJN MDD6 CLEAR MEMORY AND DROP PP
MDD2 RJM GEA CHECK IF ANOTHER *MDD* ACTIVE
ADN D7RS
CRD W0
LDD W0+1
LPN 77
NJN MDD4 IF *MDD* ALREADY ACTIVE
MDD3 LDC ELM3+ERLN * MDD - VALIDATED.*
RJM DFM
LJM LSC LOAD *SCI* (DOES NOT RETURN)
MDD4 LDC ELM11+ERLN * MDD - ALREADY ACTIVE.*
UJN ERR ISSUE MESSAGE AND DROP PP
MDD5 RJM CSI CLEAR *SCI* PARAMETER TABLE INTERLOCK
LDC ELM10+ERLN * MDD - MUST BE INITIATED FROM NOS/VE.*
* UJN ERR ISSUE MESSAGE AND DROP PP
* PROCESS FATAL *MDD* ERROR.
ERR STM SASA INFORM ALERT ROUTINE
RJM DFM ISSUE MESSAGE
RJM SAS SET ALERT STATUS
MDD6 MONITOR DPPM DROP PP
LDC CPMA CLEAR LONG INSTRUCTIONS
RJM CPM
LJM PPR EXIT TO PP RESIDENT
MRER SPACE 4,10
* PROCESS FATAL MAINTENANCE REGISTER ERROR.
MRER LDC ELM1+ERLN * MDD - MR ERROR.*
UJN ERR PROCESS FATAL ERROR
TITLE MDD - SUBROUTINES.
AMB SPACE 4,10
** AMB - ACTIVATE *MDD* BITS.
*
* ENTRY (PT) = PORT NUMBER.
* (CN - CN+4) = *SCI* PARAMETER TABLE WORD ONE.
*
* EXIT *MDD* ACTIVE BITS SET AND INTERLOCK CLEARED
* IN *CN - CN+4*.
AMB SUBR ENTRY/EXIT
LDD PT SET PORT NUMBER
SHN 6
ADC 1S11+1000 SET *MDD* ACTIVE AND REAL STATE BITS
STD CN+4
LDD CN+1 SET SECONDARY BYTE CHANGED FLAG
LPC 5377 AND CLEAR INTERLOCK BIT
LMC 2000
STD CN+1
UJN AMBX RETURN
CPM SPACE 4,10
** CPM - CLEAR PP MEMORY.
*
* ENTRY (A) = FIRST WORD TO CLEAR.
*
* EXIT PP MEMORY CLEARED.
*
* USES T0.
CPM SUBR ENTRY/EXIT
STD T0 FIRST ADDRESS TO CLEAR
LDN 0
CPM1 STI T0
AOD T0
SHN -14
ZJN CPM1 IF MORE MEMORY TO CLEAR
UJN CPMX RETURN
SPACE 4,10
* BEFORE DROPPING THE PP, MEMORY MUST BE CLEARED OF LONG
* INSTRUCTIONS. NO LONG INSTRUCTIONS CAN BE ADDED BEFORE
* THIS ADDRESS.
CPMA EQU * CLEAR PP MEMORY ADDRESS
CPN SPACE 4,15
** CPN - CHECK PORT NUMBER.
*
* ENTRY (CN - CN+4) = *SCI* PARAMETER TABLE WORD ONE.
* *SCI* PARAMETER TABLE INTERLOCKED.
*
* EXIT REQUESTED PORT SET IN *SCI* PARAMETER TABLE.
* *SCI* PARAMETER TABLE INTERLOCK CLEARED.
*
* USES T1.
*
* CALLS GSA.
CPN SUBR ENTRY/EXIT
* CHANGE PORT NUMBER IF DIFFERENT PORT REQUESTED.
LDD CN+4 GET CURRENT PORT
SHN -6
LPN 7
LMD PT
NJN CPN1 IF NOT CURRENTLY USING REQUESTED PORT
LDD CN+1 CLEAR INTERLOCK
LPC 7377
UJN CPN2 WRITE FIRST WORD
CPN1 LDD PT SET NEW PORT NUMBER
SHN 6
STD T1
LDD CN+4
LPC 7077 CLEAR OLD PORT
LMD T1 ADD NEW PORT
STD CN+4
LDD CN+1 SET SECONDARY BYTE CHANGED FLAG
LPC 5377 AND CLEAR INTERLOCK BIT
LMC 2000
CPN2 STD CN+1
RJM GSA GET *SCI* PARAMETER TABLE ADDRESS
CWD CN WRITE FIRST WORD AND CLEAR INTERLOCK
UJN CPNX RETURN
CSI SPACE 4,10
** CSI - CLEAR *SCI* PARAMETER TABLE INTERLOCK.
*
* EXIT INTERLOCK CLEARED.
*
* USES W0 - W0+3.
*
* CALLS GSA.
CSI SUBR ENTRY/EXIT
LDC 0#FFFF
STDL W0
STDL W0+2
STDL W0+3
LDC 0#EFFF MASK FOR CLEAR INTERLOCK
STDL W0+1
RJM GSA GET *SCI* PARAMETER TABLE ADDRESS
RDCL W0 CLEAR INTERLOCK
UJN CSIX RETURN
GEA SPACE 4,10
** GEA - GET *EICB* ADDRESS.
*
* EXIT (A) = *EICB* FWA.
GEA SUBR ENTRY/EXIT
LDC **
GEAA EQU *-2 (*EICB* FWA)
UJN GEAX RETURN
GPS SPACE 4,10
** GPS - GET *PPR* SAVE AREA ADDRESS.
*
* EXIT (A) = *PPR* SAVE AREA FWA.
GPS SUBR ENTRY/EXIT
LDC **
GPSA EQU *-2 (*PPR* SAVE AREA ADDRESS)
UJN GPSX RETURN
GSA SPACE 4,10
** GSA - GET *SCI* PARAMETER TABLE ADDRESS.
*
* EXIT (A) = *SCI* PARAMETER TABLE ADDRESS.
* = 0 IF TABLE NOT DEFINED.
GSA SUBR ENTRY/EXIT
LDC **
GSAA EQU *-2 (*SCI* PARAMETER TABLE ADDRESS)
UJN GSAX RETURN
GSI SPACE 4,10
** GSI - GET *SCI* PARAMETER TABLE INTERLOCK.
*
* EXIT INTERLOCK SET.
*
* USES W0 - W0+3.
*
* CALLS GSA.
GSI SUBR ENTRY/EXIT
GSI1 LDN ZERL
CRDL W0
LDC 10000 INTERLOCK BIT
STDL W0+1
RJM GSA GET *SCI* PARAMETER TABLE ADDRESS
RDSL W0 SET INTERLOCK
LDDL W0+1
LPC 10000
NJN GSI1 IF INTERLOCK WAS ALREADY SET
UJN GSIX RETURN
LSC SPACE 4,10
** LSC - LOAD *SCI*.
*
* ENTRY (CN - CN+4) = *SCI* PARAMETER TABLE WORD ONE.
* *SCI* PARAMETER TABLE INTERLOCKED.
*
* EXIT NO EXIT. LOADS *SCI* ON TOP OF *MDD* BOOT.
*
* CALLS AMB, GSA, SPD, SPP, SSH.
LSC BSS 0 ENTRY
* PREPARE FOR *SCI* LOAD.
RJM SPD SET PP/PORT NUMBERS IN *D7RS*
RJM GSA
ZJN LSC1 IF NO *SCI* PARAMETER TABLE
RJM AMB ACTIVATE *MDD* BITS AND CLEAR INTERLOCK
LDD PP SET PP NUMBER
RAD CN+1
RJM GSA WRITE WORD ONE AND CLEAR INTERLOCK
CWD CN
LSC1 RJM SPP SAVE *PPR*
RJM SSH SET *SCI* HANDOFF DATA
* CHANGE *MDD* TO *SCI* IN INPUT REGISTER.
LDD IA GET CURRENT INPUT REGISTER
CRD CM
LDC 2RSC
STD CM
LDD CM+1
LPN 77
LMC 1RI*100
STD CM+1
LDD IA
CWD CM
* PLUG LONG INSTRUCTION IN BOOT CODE. *COMPDLI* DOES
* NOT HANDLE LONG INSTRUCTIONS WITHIN *LOC* DIRECTIVES
* WELL, SO THIS ONE IS PLUGGED EXPLICITLY.
LDM LSCA+BTSA-1
LMC 1S15 CONVERT TO 16 BIT INSTRUCTION
STML LSCA+BTSA-1
* MOVE CODE SO *SCI* DOES NOT OVERWRITE IT.
LDN 1 READ DIRECTORY ENTRY
STD CM
LRD MD+1
LDD MD
ADC RR
CRML LSCA+T3,CM
LDN LSCAL/4 MOVE BOOT
STD CM
LDD MA
CWML LSCA,CM
LDD MA
CRML 0,CM
* BOOT CODE FOR LOADING *SCI*.
LSCA BSS 0
LOC 0
CON BTS-1
BSS 2
T3 CON 0,0,0,0
BTS LDD T3
STD BTSA
LDD MD
ADC RR+1
LRD MD+1
CRM **,T3+1
BTSA EQU *-1
* CRML **,T3+1 (CONVERTED TO LONG EXPLICITLY)
LJM 100 START EXECUTING *SCI*
LSCAL EQU *+3
ERRPL LSCAL-30 BOOT OVERWRITES HANDOFF DATA
LOC *O
SAS SPACE 4,10
** SAS - SET ALERT STATUS.
*
* ENTRY (SASA) = MESSAGE ADDRESS.
*
* EXIT ALERT STATUS SET IF PROPER MESSAGE SENT.
*
* USES CM - CM+4.
*
* MACROS MONITOR.
SAS SUBR ENTRY/EXIT
LDC **
SASA EQU *-1 (ADDRESS OF MESSAGE)
ADC -ALERT
MJN SASX IF NO ALERT NEEDED
LDN ZERL ISSUE ERROR LOG ALERT EVENT
CRD CM
ERRNZ EEVS CODE ASSUMES *EEVS* IS ZERO
LDN ELAE
STD CM+4
MONITOR EATM
UJN SASX RETURN
SMF SPACE 4,10
** SMF - SET C170 *MDD* FLAG.
*
* USES W0 - W0+4.
*
* CALLS GEA.
SMF SUBR ENTRY/EXIT
RJM GEA
ADN D7RS
CRD W0
LDD W0+1
LPC 6777
LMC 1000
STD W0+1
RJM GEA REWRITE *D7RS*
ADN D7RS
CWD W0
UJN SMFX RETURN
SPD SPACE 4,15
** SPD - SET PP/PORT NUMBERS IN *D7RS*.
*
* ENTRY (PP) = PP NUMBER.
* (PT) = PORT NUMBER.
*
* EXIT TO *MDD4* IF *MDD* ALREADY ACTIVE.
* IN THIS CASE, THE *SCI* PARAMETER TABLE INTERLOCK IS
* CLEARED.
*
* USES CM - CM+4.
*
* CALLS CSI, GEA, GSA.
*
* MACROS MONITOR.
SPD SUBR ENTRY/EXIT
RJM GEA GET *EICB* ADDRESS
ADN D7RS
STD CM+4
SHN -14
STD CM+3
LDN 2 SET NUMBER OF REQUESTS
STD CM+1
LDN 10 SET C170 *MDD* FLAG
LMD PT GET PORT NUMBER
SHN 6
LMD PP GET PP NUMBER
STM SPDB+4
LDD MA WRITE REQUESTS TO MESSAGE BUFFER
CWM SPDA,CM+1
MONITOR UTEM
LDD CM+1
ZJN SPDX IF OPERATION COMPLETE
RJM GSA
ZJN SPD1 IF NO *SCI* PARAMETER TABLE
RJM CSI CLEAR *SCI* PARAMETER TABLE INTERLOCK
SPD1 LJM MDD4 ISSUE ALREADY ACTIVE MESSAGE
SPDA VFD 1/1,5/0,6/12D,6/36D,42/0
SPDB VFD 1/0,5/0,6/12D,6/36D,42/0
SPP SPACE 4,10
** SPP - SAVE PP RESIDENT.
*
* EXIT *PPR* WRITTEN TO SAVE AREA.
*
* USES T0, W6, W7.
*
* CALLS GPS.
*
* MACROS SETMS.
SPP SUBR ENTRY/EXIT
SETMS NODRIVER CLEAR DRIVER PRESENT FLAG
LDC ** SET WORD COUNT TO SAVE
SPPA EQU *-1
SBN 1
STD W7
* MOVE UNBOOT TO DRIVER AREA.
LDC .SPPCL/5 GET UNBOOT LENGTH
STD W6
RJM GPS GET *PPR* SAVE AREA ADDRESS
CWM SPPC,W6
RJM GPS GET *PPR* SAVE AREA ADDRESS
CRM MSFW,W6
* WRITE *PPR*.
LDC MSFW-1 SET EXECUTION ADDRESS ON RETURN
STD T0
RJM GPS GET *PPR* SAVE AREA ADDRESS
CWD T0 WRITE FIRST WORD OF *PPR*
ADN 1
CWM 5,W7 WRITE REMAINDER OF *PPR*
UJN SPPX RETURN
SPACE 4,10
* BOOTSTRAP USED TO RELOAD PP RESIDENT (UNBOOT).
SPPC BSS 0
LOC MSFW
* CLEAR PP NUMBER AND C170 *MDD* FLAG FROM *D7RS*.
LDK EIBP
CRD CM
LDD CM+3
SHN 14
LMD CM+4
ADN D7RS
CRD CN
LDD CN+1 CLEAR PP NUMBER, C170 *MDD* FLAG
LPC 6000
STD CN+1
LDD CM+3 REWRITE *D7RS*
SHN 14
LMD CM+4
ADN D7RS
CWD CN
* CLEAR PP MEMORY.
LDC PPFW
STD CM
LDN 0
BTS1 STI CM
AOD CM
SHN -14
ZJN BTS1 IF MORE TO CLEAR
MONITOR DPPM DROP PP
LJM PPR EXIT TO PP RESIDENT
LOC *O
.SPPCL EQU *-SPPC+4
ERRNG PPFW-MSFW-.SPPCL BOOTSTRAP IS TOO LONG
SSH SPACE 4,10
** SSH - SET *SCI* HANDOFF DATA.
*
* EXIT (27) = PP NUMBER PLUS 2000.
* (33) = 0, NOT UTILITY MODE.
* (70) = 1, *SCI* NOT INITIATED BY *SDA*.
SSH SUBR ENTRY/EXIT
LDN 0 SET UTILITY MODE
STD UF
LDN 1 SET NOT *SDA* INITIATED FLAG
STD SF
LDD PP SET PP NUMBER
LMC 2000 ADD *MDD* INITIATED FLAG
STD SM
UJN SSHX RETURN
SPACE 4,10
* ERROR LOG MESSAGES.
ELM1 DATA C* MDD - MR ERROR.*
ELM3 DATA C* MDD - VALIDATED.*
ELM4 DATA C* MDD - BYE COMMAND EXECUTED.*
ALERT EQU * ONLY ALERT MESSAGES BELOW THIS ADDRESS
ELM6 DATA C* MDD - CONSOLE MUST BE UNLOCKED.*
ELM7 DATA C* MDD - NOT ALLOWED ON THIS MAINFRAME.*
ELM8 DATA C* MDD - IMPROPER ACCESS ATTEMPT.*
ELM9 DATA C* MDD - SCI NOT FOUND IN CIP DIRECTORY.*
ELM10 DATA C* MDD - MUST BE INITIATED FROM NOS/VE.*
ELM11 DATA C* MDD - ALREADY ACTIVE.*
TITLE MDD PRESET.
PRS SPACE 4,20
** PRS - PRESET *MDD* BOOT.
*
* EXIT (MD - MD+2) = R-REGISTER FORMAT OF FIRST WORD OF
* *SCI* IN CENTRAL MEMORY.
* (PP) = PP NUMBER.
* (PT) = PORT NUMBER.
* (SPPA) = *PPR* LENGTH IN CM WORDS.
* (GEAA - GEAA+1) = *EICB* FWA.
* (GPSA - GPSA+1) = *PPR* SAVE AREA ADDRESS.
* (GSAA - GSAA+1) = *SCI* PARAMETER TABLE ADDRESS.
*
* USES PT, CM - CM=4, W0 - W4.
*
* CALLS CKV, DLI, FCM, GEA, GPN.
*
* MACROS MONITOR.
PRS SUBR ENTRY/EXIT
LDK NCPL MOVE TO SYSTEM CONTROL POINT
CRD CM
AOD CM+1
MONITOR CCAM MOVE TO SYSTEM CONTROL POINT
RJM GPN GET PP NUMBER
RJM CKV CHECK VALIDATIONS
LDC PLIB
RJM DLI DEFINE LONG INSTRUCTIONS
LDK EIBP SAVE *EICB* FWA
CRD W0
LDD W0+3
RAM GEAA
LDD W0+4
STM GEAA+1
LDC =C*SCI*
RJM FCM FIND ADDRESS OF *SCI*
LDD IR+4 CHECK PORT PARAMETER
SBN 1
ZJN PRS1 IF PORT ZERO REQUESTED
LDN 1 OTHERWISE PORT ONE
PRS1 STD PT SAVE PORT NUMBER
RJM GEA GET *EICB* ADDRESS
ADN D7RS READ *PPR* SAVE AREA ADDRESS
CRD W0
ADN D7RS+2-D7RS *SCI* PARAMETER TABLE ADDRESS
CRD CM
LDD W0+2 SAVE *PPR* WORD COUNT
STM SPPA
LDD W0+3 SAVE *PPR* BUFFER ADDRESS
RAM GPSA
LDD W0+4
STM GPSA+1
LDD CM+3 SAVE *SCI* PARAMETER TABLE ADDRESS
RAM GSAA
LDD CM+4
STM GSAA+1
LJM PRSX RETURN
CKV SPACE 4,10
** CKV - CHECK FOR PROPER VALIDATIONS.
*
* EXIT TO *ERR* IF *MDD* USE NOT ALLOWED.
*
* USES CM - CM+4.
*
* CALLS CUA.
CKV SUBR ENTRY/EXIT
LDK MABL CHECK MAINFRAME TYPE
CRD CM
LDD CM+1
SHN 21-13
MJN CKV3 IF NOT CYBER 180
LDN SSTL CHECK CONSOLE STATUS
CRD CM
LDD CM
SHN 21-11
PJN CKV4 IF CONSOLE IS NOT UNLOCKED
RJM CUA CHECK USER ACCESS
NJN CKV1 IF SYSTEM ACCESS NOT ALLOWED
LDD CM
PJN CKVX IF MAINTENANCE ACCESS ALLOWED
CKV1 LDC ELM8+ERLN * MDD - IMPROPER ACCESS ATTEMPT.*
CKV2 LJM ERR ISSUE MESSAGE AND DROP *MDD*
CKV3 LDC ELM7+ERLN * MDD - NOT ALLOWED ON THIS MAINFRAME.*
UJN CKV2 ISSUE MESSAGE AND DROP *MDD*
CKV4 LDC ELM6+ERLN * MDD - CONSOLE MUST BE UNLOCKED.*
UJN CKV2 ISSUE MESSAGE AND DROP *MDD*
FCM SPACE 4,15
** FCM - FIND CIP MODULE.
*
* ENTRY (A) = ADDRESS OF THREE CHARACTER DISPLAY CODE NAME.
*
* EXIT (A) = OFFSET FROM R-REGISTER OF MODULE HEADER.
* (R) = ADDRESS/100B OF MODULE HEADER.
* (CD - CD+2) = A AND R-REGISTER FORMAT OF CIP
* DIRECTORY.
* TO *ERR* IF *SCI* NOT FOUND.
*
* USES T1, CM - CM+3, W0 - W3.
*
* CALLS GEA.
FCM4 LDDL CM RETURN WITH ADDRESS
ADN 1 SKIP CIP IDENTIFIER WORD
SRD MD+1 SAVE R REGISTER
STDL MD SAVE A REGISTER
FCM SUBR ENTRY/EXIT
STD T1 SAVE ADDRESS OF MODULE TO FIND
RJM GEA GET *EICB* ADDRESS
ADN DSCM+2
CRDL CM READ CIP POINTER
LRD CM+1 SAVE CIP DIRECTORY POINTER
SRD CD+1
LDDL CM
STDL CD
FCM1 STDL CM
LRD CM+1
LMC RR ACTIVATE R REGISTER
CRDL W0
LDD W0
ADD W1
ZJN FCM3 IF END OF DIRECTORY
LDD W0
LMI T1
NJN FCM2 IF NO MATCH
LDD W1
LMM 1,T1
ZJN FCM4 IF MATCH
FCM2 LDDL W3 OFFSET TO NEXT MODULE HEADER
RADL CM
SHN -6
RAD CM+2
SHN -14
RAD CM+1
LDD CM
LPN 77
UJN FCM1 FETCH NEXT ENTRY
FCM3 LDC ELM9+ERLN * MDD - SCI NOT FOUND IN CIP DIRECTORY.*
LJM ERR RETURN PP
GPN SPACE 4,10
** GPN - GET LOGICAL PP NUMBER.
*
* EXIT (PP) = LOGICAL PP NUMBER.
*
* USES T1 - T5.
GPN SUBR ENTRY/EXIT
LDK PPCP
CRD T1
LDD IA
SBD T1+4
SHN -3
STD PP
SBN 12
MJN GPNX IF NOT UPPER BARREL
LDN 6
RAD PP
UJN GPNX RETURN
SPACE 4,10
* COMMON DECKS.
*CALL COMPCUA
*CALL COMPDLI
*CALL COMPMRA
PLIB SPACE 4,10
PLIB LIST16 LIST OF 16 BIT INSTRUCTIONS
SPACE 4
END