MDD 
          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 
