1MB 
          IDENT  1MB,/1MB/MEP 
          PERIPH
          BASE   MIXED
          SST    SSCP 
*COMMENT  1MB - HARDWARE ERROR PROCESSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  1MB - HARDWARE ERROR PROCESSOR.
          SPACE  4,10 
***       1MB - HARDWARE ERROR PROCESSOR. 
*         J. D. LANGE.  74/05/10. 
*         C. R. LUND.  80/01/07.
*         P. J. ENGLE.  84/09/10. 
*         M. S. PESCHMAN  85/07/24. 
          SPACE  4,30 
***              EITHER *1MB* OR *1SC* IS CALLED BY THE SYSTEM MONITOR
*         TO PERFORM FUNCTIONS WHICH CAN NOT BE PROCESSED BY THE
*         MONITOR.
*               FOR MAINFRAMES WITH MAINTENANCE REGISTERS, ERRORS  ARE
*         PROCESSED  BY  *1MB*  IN  ROUTINE  *MEP*.   CORRECTED MEMORY
*         ERRORS ARE HANDLED COMPLETELY BY *1MB* WHO BUILDS THE  TABLE
*         OF UNIQUE ID-S AS IS DONE FOR SECDED ERRORS.
*                *1SC* PERFORMS SCR PROCESSING ON FATAL SCR ERRORS
*         AND ON UNIQUE SECDED ERRORS ONLY.  *1SC* FIRST CHECKS FOR 
*         FATAL ERRORS, AND (IF NONE HAVE OCCURRED) THEN INCREMENTS 
*         THE APPROPRIATE COUNTER IN CM WORD *SCRL* FOR UNIQUE
*         SECDED ERRORS, CLEARS THE ERROR BIT IN THE SCR, AND DROPS 
*         THE PP.  IF MONITOR HAS DETERMINED THAT A SECDED ERROR
*         WAS NOT UNIQUE (I.E. - THE ERROR WAS CAUSED BY THE SAME 
*         MEMORY LOCATION PREVIOUSLY THAT HOUR), MONITOR WILL 
*         INCREMENT THE APPROPRIATE COUNTERS IF THOSE COUNTERS HAVE 
*         NOT EXCEEDED THEIR THRESHOLDS.  WHEN MONITOR HAS
*         FINISHED PROCESSING NON-UNIQUE ERRORS, IT WILL CLEAR
*         THE SECDED ERROR BIT AND CONTINUE IN ITS PROCESSING LOOP. 
*                IN A SYSTEM EXPERIENCING FREQUENT SINGLE BIT SECDED
*         ERRORS, THIS PROCESS OF CHECKING FOR ERROR UNIQUENESS IN
*         MONITOR WILL REDUCE THE NUMBER OF CALLS TO *1SC* TO A 
*         MAXIMUM OF *UIDL* PER HOUR (SEE *COMSSCR*). 
*                FOR CYBER 176 MACHINES, LCME SINGLE BIT SECDED 
*         ERRORS ARE PROCESSED IN A SIMILAR MANNER. 
*                FOR MAINFRAMES WITH AN ESM MAINTENANCE PORT
*         DEFINED, *2TH* WILL LOG THE CONTENTS OF THE ESM 
*         SECDED LOG TO THE BML AT THE END OF EVERY HOUR. 
*                SCR PROCESSING AND TERMINOLOGY IS ALSO USED TO 
*         REFER TO CYBER 170 - 865/875 MAINTENANCE REGISTERS. 
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 T8       EQU    16          TEMPORARY
 T9       EQU    17          TEMPORARY
 CN       EQU    20 - 24     CM BUFFER (5 LOCATIONS)
 WB       EQU    CN - CN+4   FOR *COMPIMB* COMPATIBILITY
 MF       EQU    25          MACHINE FLAG 
 NB       EQU    26          NUMBER OF PP BYTES IN *BML* MESSAGE
 PN       EQU    27          PP NUMBER * 100B 
 SC       EQU    30 - 34     S/C PARAMETER WORD *SCRL* (5 LOCATIONS)
 MI       EQU    60 - 64     MAINFRAME IDENTIFICATION 
 EM       EQU    65          LAST MASS STORAGE EST ORDINAL + 1
  
  
**        DIRECT CELLS FOR STATUS AND CONTROL REGISTER PROCESSING.
  
          QUAL   1SC
 CH       EQU    40 - 41     S/C REGISTER CHANNELS
 ER       EQU    42          NUMBER OF S/C REGISTER ERRORS
 NP       EQU    43          NUMBER OF PP-S IN SYSTEM 
 NW       EQU    44          NUMBER OF CM WORDS IN *BML* MESSAGE
          QUAL   *
  
  
**        DIRECT CELLS FOR MAINTENANCE REGISTER PROCESSING. 
  
          QUAL   1MB
 BP       EQU    40          NEXT WORD IN *BML* MESSAGE TO USE
 EC       EQU    41          ELEMENT ACCESS CODE
 MB       EQU    42 - 43     M/R BUFFER CONTROL WORD ADDRESS
 MS       EQU    44 - 45     M/R BUFFER ADDRESS 
 RN       EQU    46          REGISTER NUMBER
 DC       EQU    60 - 64     *DFT* CONTROL WORD 
          QUAL   *
****
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 QUAL$    EQU    0           DO NOT QUALIFY COMMON DECKS
  
 MF70     EQU    0           CYBER 70 
          ERRNZ  MF70        CODE DEPENDS ON ZERO VALUE 
 MF170    EQU    1           CYBER 170
 MF700    EQU    2           CYBER 170 - 700 SERIES 
 MF865    EQU    3           CYBER 170 - 865
 MF875    EQU    4           CYBER 170 - 875
 MF180    EQU    5           CYBER 180 CLASS MACHINE
 MF176A   EQU    6           CYBER 176 LEVEL A
 MF176B   EQU    7           CYBER 176 LEVEL B
 MFMAX    EQU    10B         MAXIMUM MAINFRAME TYPE + 1 
          TITLE  COMMON SUBROUTINES.
 COMMON   SPACE  4,10 
**        COMMON - COMMON CODE FOR *1MB* AND *1SC*. 
* 
*         THIS MACRO PROVIDES SIMILAR CODE FOR *1MB* AND *1SC*. 
  
  
 COMMON   MACRO 
 COMMON   RMT 
 CKC      SPACE  4,10 
**        CKC - CHECK FOR *1CK* COMPLETE. 
* 
*         ENTRY  (SC+2) = *1CK* IR ADDRESS. 
* 
*         EXIT   *1CK* COMPLETE.
* 
*         USES   CM - CM+4. 
  
  
 CKC      SUBR               ENTRY/EXIT 
 CKC1     LDD    SC+2        READ *1CK* IR
          CRD    CM 
          LDD    CM+1 
          SCN    77 
          SHN    6
          LMD    CM 
          LMC    3RK1C
          NJN    CKCX        IF *1CK* COMPLETE
          UJN    CKC1        LOOP 
 CKP      SPACE  4,15 
**        CKP - CHECKPOINT SYSTEM.
* 
*         ENTRY  (SC+2) = *1CK* IR ADDRESS. 
* 
*         EXIT   EXITS TO *1CK* ON INITIAL CALL.
*                CHECKPOINT IN PROGRESS BIT SET IN *EICB*.
* 
*         USES   CM - CM+4, SC+2. 
* 
*         CALLS  /1MB/DSP, *1CK*. 
* 
*         MACROS EXECUTE. 
  
  
 CKP      SUBR               ENTRY/EXIT 
          LDD    SC+2        CHECK FOR *1CK* ALREADY CALLED 
          NJN    CKPX        IF *1CK* ALREADY CALLED
 .A       IFC    EQ,/"QUAL"/1MB/
          RJM    /1MB/DSP    GET *EICB* POINTER 
          ZJN    CKP1        IF NO *EICB* 
          ADN    D7ST 
          CRD    CM          READ STATUS WORD 
          LDD    CM 
          SCN    4
          LMN    4           SET CHECKPOINT IN PROGRESS 
          STD    CM 
          RJM    /1MB/DSP 
          ADN    D7ST 
          CWD    CM 
 .A       ENDIF 
 CKP1     EXECUTE 1CK,= 
          LDD    IA          CALL *1CK* 
          CWM    CKPA,ON
          SCN    7
          STD    SC+2 
          LDM    CKPA+2 
          LMN    10 
 CKP2     ZJP    DPP3        IF TO RECALL *1MB* 
          LMN    11&10
          ZJN    CKP2        IF TO RECALL *1MB* 
          LMN    13&11
          ZJN    CKP2        IF TO RECALL *1MB* 
          LJM    DPP2        EXIT TO *1CK* AND ENABLE *1MB* CALL
  
 CKPA     VFD    18/0L1CK,6/0,12/1,24/0  SYSTEM CHECKPOINT CALL 
 CSH      SPACE  4,10 
**        CSH - CHECKPOINT SYSTEM, SET STEP, AND HANG.
* 
*         ENTRY  AT *CSH1* FOR CYBER 176 DOUBLE BIT *SECDED* ERROR. 
* 
*         CALLS  CKC, CKP, RSM. 
  
  
 CSH      SUBR               ENTRY (DOES NOT RETURN)
 .A       IFC    EQ,/"QUAL"/1MB/
          RJM    /1MB/DPR    DUMP PP REGISTERS
 .A       ENDIF 
          RJM    CKP         ATTEMPT SYSTEM CHECKPOINT
          LDD    CP 
          ADN    MS2W        DISPLAY * FATAL ERROR.* MESSAGE
          CWM    CSHM,TR
 CSHA     EQU    *-1         (MESSAGE ADDRESS)
          RJM    CKC         WAIT FOR *1CK* TO FINISH 
 .A       IFC    EQ,/"QUAL"/1MB/
          RJM    /1MB/DPR    DUMP PP REGISTERS
 .A       ENDIF 
 CSH1     RJM    RSM         STEP SYSTEM
 CSH2     LDD    CP          DISPLAY *FATAL ERROR* MESSAGE AGAIN
          ADN    MS2W 
          CWM    CSHM,TR
 CSHB     EQU    *-1         (MESSAGE ADDRESS)
          DELAY  5*8D        DELAY 5 SECONDS (FOR OTHER MESSAGES) 
          UJN    CSH2        DISPLAY MESSAGE AGAIN
 DPP      SPACE  4,20 
**        DPP - DROP PP.
* 
*         ENTRY  (SC - SC+4) = *SCRL* WORD WITH MONITOR LOCK-OUT BIT
*                              SET. 
* 
*         EXIT   (SC - SC+4) = *SCRL* WORD WITH MONITOR LOCK-OUT BIT
*                              CLEARED. 
*                            = WRITTEN TO CENTRAL MEMORY. 
*                PP DROPPED.
*                16-BIT INSTRUCTIONS CLEARED, IF PRESENT. 
*                EXIT TO *PPR*. 
* 
*         NOTE   THE *DPPM* FUNCTION IN THIS ROUTINE IS 
*                EXECUTED OUT OF NORMAL ORDER TO PREVENT
*                PP SATURATION WHEN *1MB* IS STEPPED
*                ON A *DPPM*. 
  
  
 .A       IFC    EQ,/"QUAL"/1MB/
 DPP5     LJM    LED         RELOAD DFT FOR SECOND TOP OF HOUR
 .A       ENDIF 
  
 DPP      MONITOR DPPM       DROP PP
 DPPA     EQU    DPP
*         UJN    DPP5        (SECOND PASS TOP OF HOUR)
 DPP1     LDN    0           CLEAR *1CK* IR ADDRESS 
          STD    SC+2 
 DPP2     LDD    SC          CLEAR MONITOR LOCK-OUT BIT 
          LPC    3777 
          STD    SC 
 DPP3     LDC    SCRL        UPDATE *SCRL*
          CWD    SC 
 .A       IFC    EQ,/"QUAL"/1MB/
 DPPB     LDN    0
*         LDN    1           (16-BIT INSTRUCTIONS PRESENT)
          ZJN    DPP4        IF NO 16-BIT INSTRUCTIONS
          RJM    CPM         CLEAR PP MEMORY
          LDC    400000B+LINS  ADDRESS OF INSTRUCTION TABLE 
          RJM    DLI         CLEAR 16-BIT INSTRUCTIONS
 .A       ENDIF 
 DPP4     LJM    PPR         EXIT TO PP RESIDENT
 IBM      SPACE  4,10 
**        *BML* MESSAGE BUFFER. 
  
  
 IBMF     VFD    12/0,12/0,6/0,6/0,24/0  MESSAGE ID/SYMPTOM CODE
 IBMG     VFD    12/0,9/0,1/0,2/0,36/0  MESSAGE CONTINUATION BIT
 IBMH     VFD    60/0        BML MESSAGE BUFFER (4 CM WORDS)
          VFD    60/0 
          VFD    60/0 
          VFD    60/0 
 IBMHL    EQU    *           END OF BML BUFFER
 RSM      SPACE  4,10 
**        RSM - REQUEST STEP MODE.
* 
*         ENTRY  (SC - SC+4) = (SCRL).
* 
*         EXIT   STEP MODE SET. 
* 
*         USES   CM - CM+4, SC - SC+4.
* 
*         MACROS MONITOR. 
  
  
 RSM      SUBR               ENTRY/EXIT 
          LDD    SC 
          SHN    21-11
          MJN    RSMX        IF STEP ALREADY REQUESTED
          LDD    TH          SET REQUEST BIT AND WRITE SCRL 
          RAD    SC 
          LDC    SCRL 
          CWD    SC 
          LDD    SC 
          SHN    21-10
          MJN    RSMX        IF STEP SET
          LDN    0           CLEAR EJT ORDINAL
          STD    CM+2 
          LDN    DPPM        STEP ON DROP PP
          STD    CM+3 
          LMD    TH 
          STD    CM+4 
          LDN    ESPS        SET EMERGENCY STEP SUBFUNCTION 
          STD    CM+1 
          MONITOR DSRM       SET STEP MODE
          LDC    SCRL        READ *SCRL*
          CRD    SC 
          UJN    RSMX        RETURN 
  
 COMMON   RMT 
 COMMON   ENDM
          SPACE  4,10 
*         MACROS. 
 TBLM     SPACE  4,10 
**        TBLM - CREATE TABLE ENTRY MACRO.
* 
*NAM      TBLM
* 
*         ENTRY  NAM = TABLE NAME.
* 
*         EXIT   NAM_E MACRO DEFINED. 
  
  
          PURGMAC  TBLM 
  
          MACRO  TBLM,NAM 
          PURGMAC  NAM_E
 NAM_E    MACRO  ADDR 
          LOCAL  A
          MACREF NAM_E
          NOREF  A
 A        EQU    ADDR 
 T_NAM    RMT 
          CON    A
          RMT 
 TBLM     ENDM
 EMBE     SPACE  4,10 
**        EMBE - ERROR MESSAGE TABLE ENTRY. 
* 
*         THIS MACRO GENERATES AN ENTRY IN REMOTE LIST *TEMB* 
*         THAT CONTAINS THE ADDRESS OF AN INSTRUCTION WHICH 
*         REQUIRES THE FWA OF THE ERROR MESSAGE TABLE.
* 
*         EMBE   ADDR 
* 
*         ENTRY  (ADDR) = ADDRESS OF INSTRUCTION. 
* 
*         EXIT   ADDRESS IS ADDED TO THE REMOTE BLOCK *TEMB*. 
  
  
 EMB      TBLM
          SPACE  4,10 
 RPTR     SPACE  4,15 
**        RPTR - CONVERT ADDRESS FROM R-REGISTER FORMAT.
* 
*         RPTR   DC,ADDR
* 
*         ENTRY  *DC* = DIRECT CELL LOCATION OF R-REGISTER FORMAT 
*                       ADDRESS (R-UPPER IN *DC*+1 IS ASSUMED = 0). 
*                *ADDR* = LOCATION TO STORE CONVERTED ADDRESS.
* 
*         EXIT   (ADDR - ADDR+1) = CONVERTED ADDRESS. 
*                (A) = CONVERTED ADDRESS, IF *ADDR* NOT SPECIFIED.
  
  
          PURGMAC  RPTR 
  
 RPTR     MACRO  D,A
          LDD    D+2         R-LOWER
          SHN    6
          LMD    D           OFFSET 
 .A       IFC    NE,$A$$
          STM    A+1
          SHN    -14
          RAM    A
 .A       ENDIF 
 RPTR     ENDM
**        COMMON DECKS. 
  
  
*CALL     COMPMAC 
 RICHI$   BSS    0
*CALL     COMPCHI 
*CALL     COMPIOU 
*CALL     COMPMRM 
*CALL     COMSCPS 
*CALL     COMSDFS 
          LIST   X
*CALL     COMSDFT 
          LIST   *
          QUAL   DSL
*CALL     COMSDSL 
          QUAL   *
*CALL     COMSDST 
*CALL     COMSEVT 
*CALL     COMSIOU 
*CALL     COMSMSC 
          QUAL   MSP
*CALL     COMSMSP 
          QUAL   *
*CALL     COMSMST 
*CALL     COMSPIM 
*CALL     COMSREM 
          QUAL   SSD
*CALL     COMSSSD 
          QUAL   *
          LIST   X
*CALL     COMSSCR 
          LIST   *
          QUAL   1DS
*CALL     COMS1DS 
          QUAL   *
          TITLE  MAINTENANCE REGISTER PROCESSING. 
***       MEP - MAINTENANCE CHANNEL ERROR PROCESSOR.
* 
*         *MEP* IS THE MAIN DRIVER THAT PROCESSES THE LOGGING OF ERRORS 
*         THAT WERE DETECTED BY *DFT*.  *1MB* IS CALLED BY *MTR* TO 
*         LOAD *DFT* IN THE NON-DEDICATED CASE.  *1MB* WILL REACT TO
*         THE OS ACTION CODES SUPPLIED BY *DFT* AND LOG THE MAINTENANCE 
*         REGISTERS TO THE *BML*. 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         * 1MB - CALL ERROR.* = *1MB* WAS CALLED WITH AN ILLEGAL 
*         FUNCTION BIT CODE.
          SPACE  4,20 
***       SYSTEM CONTROL POINT MESSAGES.
* 
* 
*         HH.MM.SS ERR=DEMMXXXXXXXX 
* 
*         HH.MM.SS = TIME THE ERROR WAS DETECTED, IF VERSION 4 OR ABOVE 
*                    *DFT* AND THE TIME WAS AVAILABLE FROM THE WALL 
*                    CLOCK CHIP.
*                  = TIME THE ERROR WAS LOGGED BY *1MB*, IF *DFT* 
*                    VERSION 3, OR THE TIME WAS NOT AVAILABLE TO *DFT*. 
* 
*         E = ELEMENT SPECIFIER.
*           = C, FOR PROCESSOR 0. 
*           = D, FOR PROCESSOR 1. 
*           = I, FOR IOU 0. 
*           = J, FOR IOU 1. 
*           = M, FOR MEMORY.
*           = A, FOR *DFT* INTERNAL ERROR.
* 
*         MM = MODEL NUMBER OF THE SPECIFIED ELEMENT. 
*              THIS FIELD IS NOT PRESENT IF THE ELEMENT SPECIFIER IS
*              *A*. 
* 
*         XXXXXXXX = MODEL DEPENDENT DATA FURTHER DESCRIBING THE ERROR. 
*                    THIS NORMALLY CONSISTS OF THE THREE CHARACTER
*                    *DFT* ANALYSIS CODE. 
* 
* 
*         IN THE FOLLOWING MESSAGES, THE HEXADECIMAL NUMBER IN THE
*         MESSAGE IS THE *DFT* ANALYSIS CODE WHICH CAUSED THE MESSAGE.
* 
*         *(204) FATAL CPU ERROR* 
*         *(215) FATAL MCH ERROR* 
* 
*         THE FOLLOWING MESSAGE IS POSTED WHEN A POWER OR ENVIRONMENT 
*         WARNING HAS CLEARED.
* 
*         *POWER/ENVIRONMENT NORMAL*
          SPACE  4,10 
          ORG    PPFW 
          QUAL   1MB
  
 MEP      BSS    0           ENTRY
          LJM    MEP1        PRESET 
  
*         GLOBAL STORAGE. 
  
 DFTV     CON    0           *DFT* VERSION (0 = VERSION 3)
 SSCW     CON    0,0         SUPPORTIVE STATUS CONTROL WORD ADDRESS 
          SPACE  4,10 
**        COMMON SUBROUTINES. 
  
  
          COMMON
  
          LIST   D
 COMMON   HERE
          LIST   *
          SPACE  4,10 
*         COMMON DECKS WITH NO 16-BIT INSTRUCTIONS. 
  
  
*CALL     COMPMRA 
*CALL     COMPACS 
*CALL     COMT8AD 
          SPACE  4,10 
*         SYSTEM CONTROL POINT MESSAGES.
  
  
 MSFS     DATA   28C HH.MM.SS.ERR=XXXXXXXXXXXX
 CSHM     EQU    MSFS        DEFAULT *CSHM* MESSAGE 
 MSCP     DATA   C*(204) FATAL CPU ERROR* 
 MSME     DATA   C*(215) FATAL MCH ERROR* 
 MSPN     DATA   C*POWER/ENVIRONMENT NORMAL*
 TOSC     SPACE  4,10 
**        TABLE OF OS ACTION CODES. 
  
 TOSC     INDEX 
          INDEX  EWAC,ENW    ENVIRONMENT WARNING
          INDEX  LPAC,LPW    LONG POWER WARNING 
          INDEX  SPAC,SPW    SHORT POWER WARNING
          INDEX  WCAC,WCL    WARNING CLEAR
          INDEX  FIAC,FIE    FATAL IOU ERROR
          INDEX  NVAC,NIE    NOS/VE IOU ERROR 
          INDEX  UMAC,MEP6   FATAL CM ERROR 
          INDEX  MBAC,MOB    MULTIPLE ODD BIT ERROR 
          INDEX  UPAC,MEP6   FATAL CPU ERROR
          INDEX  UIAC,FIE    UNCORRECTED IOU ERROR
          INDEX  MXAC 
 TDFA     SPACE  4,10 
**        TDFA - TABLE OF *DFT* ANALYSIS CODES. 
* 
*T        12/ *DFT* CODE, 12/ ACTION, 12/ ROUTINE 
* 
*         FOR *DFT* VERSION 4, OR ABOVE THE PROCESSING ROUTINE IS 
*         SELECTED BY FINDING A TABLE ENTRY WITH A *DFT* ANALYSIS CODE
*         AND OS ACTION CODE MATCHING THOSE PASSED BY *DFT*.  IF NO 
*         MATCH IS FOUND, ROUTINE *MSC* WILL BE SELECTED.  THE TABLE
*         MUST BE IN ASCENDING ORDER BY ANALYSIS CODE.
  
  
 TDFA     BSS    0
          CON    4,S7AC,FIE      C170 UNCORRECTED IOU ERROR (NIO PP)
          CON    4,S8AC,NIE      C180 UNCORRECTED IOU ERROR (NIO PP)
          CON    6,SSAC,FIE      FATAL IOU ERROR (NIO PP) 
          CON    0#8,SSAC,FIE    FATAL IOU ERROR (CIO PP) 
          CON    0#9,S7AC,FIE    C170 UNCORRECTED IOU ERROR (CIO PP)
          CON    0#9,S8AC,NIE    C180 UNCORRECTED IOU ERROR (CIO PP)
          CON    0#105,SSAC,MOB  MULTIPLE ODD BIT MEMORY ERROR
          CON    0#106,SSAC,MOB  PARTIAL WRITE PARITY ERROR 
          CON    0#21E,SSAC,MOB  PARTIAL WRITE PARITY ERROR (990) 
          CON    0#701,ISAC,ENW  ENVIRONMENT WARNING
          CON    0#702,ISAC,LPW  LONG POWER WARNING 
          CON    0#703,SSAC,SPW  SHORT POWER WARNING
          CON    0#704,RSAC,WCL  ENVIRONMENT WARNING CLEAR
          CON    0#705,RSAC,WCL  LONG POWER WARNING CLEAR 
          CON    0#706,USAC,WCL  SHORT POWER WARNING CLEAR
          CON    0#FFF           END OF TABLE 
 CNR      SPACE  4,15 
**        CNR - CHECK FOR NOS REQUEST.
* 
*         THIS ROUTINE IS CALLED IF *DFT* IS IN DEDICATED MODE AND
*         THERE IS A NOS REQUEST PRESENT.  IT RESERVES THE CIP
*         CHANNEL, SETS THE REQUEST STATUS = *ACTIVE*, WAITS FOR THE
*         REQUEST TO BE PROCESSED, AND RELEASES THE CIP CHANNEL.
* 
*         USES   CM - CM+4, T1 - T1+4.
* 
*         CALLS  CRQ, SDA.
* 
*         MACROS DCHAN, DELAY, RCHAN. 
  
  
 CNR      SUBR               ENTRY/EXIT 
          RJM    SDA         READ NOS REQUEST HEADER
          CRD    T1 
          LDD    T1+4        CHECK REQUEST STATUS 
          LMN    STRY 
          NJN    CNRX        IF NOT STATUS = *READY*
          LDN    DSAL        LOCATE CIP CHANNEL 
          CRD    CM 
          LDD    CM+4        RESERVE CIP CHANNEL
          LPN    77 
          STM    CNRA 
          RCHAN 
          RJM    CRQ         CHECK REQUEST FOR SPECIAL PROCESSING 
          LDN    STAC        SET STATUS = *ACTIVE*
          STD    T1+4 
          RJM    SDA         REWRITE NOS REQUEST HEADER 
          CWD    T1 
  
*         WAIT FOR REQUEST TO BE PROCESSED BY *DFT*.
  
 CNR1     DELAY 
          RJM    SDA         READ NOS REQUEST HEADER
          CRD    T1 
          LDD    T1+4 
          LMN    STAC 
          ZJN    CNR1        IF STATUS = *ACTIVE* STILL PRESENT 
          LDC    **          RELEASE CIP CHANNEL
 CNRA     EQU    *-1
          DCHAN 
          LJM    CNRX        RETURN 
 CRQ      SPACE  4,10 
**        CRQ - CHECK *DFT* REQUEST FOR SPECIAL PROCESSING. 
* 
*         EXIT   *UADM/FRAS* ISSUED IF NECESSARY. 
* 
*         CALLS  SDA. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 CRQ      SUBR               ENTRY/EXIT 
  
*         THE FOLLOWING CODE ASSUMES THERE IS ONLY ONE REQUEST BUFFER 
*         WHICH IMMEDIATELY FOLLOWS THE REQUEST HEADER. 
  
          RJM    SDA         READ REQUEST 
          ADN    1
          CRM    CRQA,ON
          LDM    CRQA        CHECK REQUEST
          LMN    RQSF 
          NJN    CRQX        IF NO *UADM* NEEDED
          LDC    FRAS        SET *UADM* SUBFUNCTION 
          STM    CRQA 
          LDD    MA          WRITE REQUEST TO MESSAGE BUFFER
          CWM    CRQA,ON
          LDN    ZERL        SET *UADM* PARAMETERS
          CRD    CM 
          LDN    1           SET REQUEST COUNT
          STD    CM+1 
*         STD    CM+2        (NO DROP FLAG IGNORED) 
          MONITOR  UADM      ALERT *CPUMTR* OF PENDING *FRC* UPDATE 
          UJN    CRQX        RETURN 
  
  
 CRQA     BSS    5
 MEP      SPACE  4,20 
*         MAIN PROGRAM. 
  
**        PROGRAMMING NOTE. 
* 
*         WHENEVER A CALL TO *DFM* IS MADE, IT MAY BE NECESSARY FOR 
*         *1DD* TO BE INVOKED TO FLUSH THE DAYFILE BUFFER.  *1DD* 
*         OVERLAYS A PART OF THE PP, WHICH IT RESTORES WHEN COMPLETE. 
*         HOWEVER, SINCE ONLY 12-BIT DATA CAN BE RESTORED BY THIS 
*         PROCESS, *1MB* MUST NEVER DEPEND ON 16-BIT DATA BEING 
*         PRESERVED ACROSS A *DFM* CALL IN THE PART OF THE PP USED BY 
*         *1DD*.  FIRST, ANY *1MB* CODE CONTAINING LONG INSTRUCTIONS
*         MUST NOT START BEFORE LOCATION *DDLW*, DEFINED IN *COMSMSC* 
*         AS THE LAST WORD USED BY *1DD*.  SECOND, SINCE ANY DIRECT 
*         CELLS CONTAINING 16-BIT DATA WILL NOT BE INTACT AFTER *1DD* 
*         IS COMPLETE, CARE SHOULD BE TAKEN EITHER TO STORE 16-BIT DATA 
*         IN THE PROTECTED AREA OF *1MB*, OR TO RE-READ THE DATA FROM 
*         CM AFTER THE *DFM* CALL.
  
  
 .MEP     MAX    *,DDLW 
          ORG    .MEP 
  
 MEP1     RJM    PRS         PRESET FOR *1MB* 
          LDK    EIBP        READ *EICB* POINTER
          CRD    CN 
          ADN    INWL-EIBP   CHECK *MCH* ERROR BIT
          CRD    CM 
          LDD    CN+3        SAVE *EICB* ADDRESS
          RAM    DSPA 
          LDD    CN+4 
          RAM    DSPA+1 
          LDD    CM+4 
          SHN    21-5 
          MJP    MRER        IF MCH ERROR IN PROGRESS 
          LDC    LINS        DEFINE LONG INSTRUCTIONS 
          RJM    DLI
          AOM    DPPB 
          RJM    SBA         SET BUFFER ADDRESSES 
          RJM    CTP         CHECK FOR TIME PROCESSING
          LDDL   DC+3 
          SHN    21-DCE7
          MJN    MEP2        IF ERRORS LOGGED IN M/R BUFFER 
          LJM    LED         LOAD AND EXECUTE *DFT* 
  
 MEP2     LCN    0           CLEAR C170 ERROR PRESENT FLAG
          STDL   CN 
          STDL   CN+1 
          STDL   CN+2 
          SCBN   DCE7 
          STDL   CN+3 
          RJM    DOB
          ADK    DFCW 
          RDCL   CN 
 MEP3     LDN    1           SET INTERVAL BETWEEN CONTROL WORDS 
          STD    T2 
          RJM    SCA         SET ADDRESS OF CONTROL WORDS 
          LDD    DC+2        SET NUMBER OF M/R BUFFER CONTROL WORDS 
          LPC    377
          RJM    FOM         FIND OLDEST M/R BUFFER CONTROL WORD
          STM    FSSB        SAVE M/R CONTROL WORD OFFSET 
          STM    LMRD        SET NON-REGISTER FLAG
          ZJN    MEP4        IF NO ENTRIES PRESENT
          RJM    FSS         FIND SUPPORTIVE STATUS DATA
          UJN    MEP5        DETERMINE OS ACTION
  
 MEP4     RJM    FNR         FIND NON-REGISTER DATA 
          NJN    MEP5        IF DATA PRESENT
          LDC    ** 
 MEPA     EQU    *-1         AUTORESTART PENDING FLAG 
          ZJP    DPP         IF AUTORESTART NOT PENDING 
          LDD    IA          LOAD *1DS* TO ISSUE *AUTO* 
          CWM    MEPD,ON
          LJM    DPP1        CALL *1DS* AND ENABLE *1MB* CALL 
  
 MEP5     LDD    CN+1        SET SYMPTOM CODE IN *BML*
          STM    IBMF+1 
          LDDL   CN+2        SET SEQUENCE NUMBER IN *BML* 
          SHN    -10
          STM    IBMG+4 
          RJM    DOA         DETERMINE OS ACTION
  
*         OS ACTION ROUTINES WILL RETURN HERE.
  
 MEP6     RJM    CTH         CHECK THRESHOLD EXCEEDED 
          RJM    LMR         LOG MAINTENANCE REGISTERS
  
*         CLEAR C170 VALID DATA FLAG, LOGGING ACTION FLAG, INTERLOCK
*         FLAG AND THRESHOLD EXCEEDED FLAG IN M/R BUFFER CONTROL WORD.
  
          LDD    MB          READ CONTROL WORD
          SHN    14 
          LMD    MB+1 
          CRDL   CN 
          LDDL   CN+2        CLEAR FLAGS
 MEPC     SCBN   (MRV7,MRIL,MRLG,MRTH)
*         SCBN   (MRV7,MRIL)  (180 LOGGING) 
          STDL   CN+2 
          LDD    MB          REWRITE M/R BUFFER CONTROL WORD
          SHN    14 
          LMD    MB+1 
          CWDL   CN 
          LJM    MEP3        PROCESS NEXT M/R ENTRY 
  
 MEPD     VFD    18/0L1DS,6/0,2/0,1/0,3/0,6//1DS/IASF,12/0,12/0 
          TITLE  OS ACTION CODE PROCESSING ROUTINES.
          SPACE 4,10
***       OS ACTION CODE PROCESSING ROUTINES. 
* 
*         ENTRY  (MB - MB+1) = ADDRESS OF M/R CONTROL WORD. 
*                (DC - DC+3) = *DFT* CONTROL WORD.
*                (CN - CN+3) = M/R BUFFER CONTROL WORD. 
* 
*         EXIT   TO *MEP6* TO LOG MAINTENANCE REGISTERS.
*                TO *CSH* TO CHECKPOINT AND HANG. 
 ENW      SPACE  4,10 
**        ENW - ENVIRONMENT WARNING.
* 
*         EXIT   TO *WWC* TO WAIT FOR WARNING CLEAR.
* 
*         USES   CM - CM+3. 
* 
*         CALLS  CCI, CCM, CKC, CKP, DOB, LMR, RSM. 
  
  
 ENW      BSS    0           ENTRY
          RJM    CCM         CREATE CONSOLE MESSAGE 
          LDD    SC+2 
          NJN    ENW1        IF *1CK* ALREADY CALLED
          RJM    LMR         LOG MAINTENANCE REGISTERS
 ENW1     LDN    ZERL        SET C170 ERROR FLAG
          CRDL   CM 
          AOD    CM+3 
          ERRNZ  DCE7        CODE DEPENDS ON VALUE
          RJM    DOB
          ADK    DFCW 
          RDSL   CM 
          RJM    CCI         CLEAR M/R CONTROL WORD INTERLOCK 
 ENWC     LDN    10          SET *1CK* TO RECALL *1MB*
*         LDN    13          (LONG POWER WARNING) 
          STM    CKPA+2 
          LDN    SPLG        SET *1MB* FUNCTION CODE
          STM    CKPA+3 
          RJM    CKP         LOAD AND EXECUTE *1CK* 
          RJM    CKC         WAIT FOR *1CK* TO COMPLETE 
          RJM    RSM         REQUEST STEP MODE
          LDD    CP          DISPLAY OPERATOR MESSAGE 
          ADN    MS2W 
          CWM    MSFS,TR
          LJM    WWC         WAIT FOR WARNING CLEAR 
 LPW      SPACE  4,10 
**        LPW - LONG POWER WARNING. 
  
  
 LPW      BSS    0           ENTRY
          LDN    13-10       CHANGE *1CK* CALL TO LONG POWER WARNING
          RAM    ENWC 
          LJM    ENW         PROCESS AS ENVIRONMENT WARNING 
 SPW      SPACE  4,10 
**        SPW - SHORT POWER WARNING.
* 
*         EXIT   TO *WWC* TO WAIT FOR WARNING CLEAR.
* 
*         CALLS  CCM, LMR, RSM. 
  
  
 SPW      BSS    0           ENTRY
          RJM    CCM         CREATE CONSOLE MESSAGE 
          RJM    LMR         LOG MAINTENANCE REGISTERS
          RJM    RSM         REQUEST STEP MODE
          LJM    WWC         WAIT FOR WARNING TO CLEAR
 WCL      SPACE  4,10 
**        WCL - WARNING CLEAR.
* 
*         EXIT   TO *MEP6* TO LOG MAINTENANCE REGISTERS.
*                (SCRL) UPDATED.
* 
*         USES   CM - CM+4, SC - SC+4.
* 
*         MACROS DELAY, MONITOR.
  
  
 WCL      LDD    CP          DISPLAY *POWER/ENVIRONMENT NORMAL* 
          ADN    MS2W 
          CWM    MSPN,TR
          LDN    SSTL        CHECK AUTORESTART
          CRD    CM 
          LDD    CM 
          SHN    21-13
          MJN    WCL2        IF AUTORESTART DISABLED
          LDD    SC 
          SHN    21-11
          MJN    WCL1        IF *1MB* REQUEST BIT SET 
          LDD    TH 
          RAD    SC 
          LDC    SCRL        STORE *SCRL* WITH REQUESTED FLAG SET 
          CWD    SC 
 WCL1     LDN    ZERL 
          CRD    CM 
          LDN    4           SET *DSRM* SUBFUNCTION TO CLEAR STEP 
          STD    CM+1 
          STM    MEPA        SET AUTORESTART PENDING
          MONITOR DSRM
 WCL2     LDC    SCRL        ENABLE *UNSTEP* COMMAND
          CRD    SC 
          LDD    SC 
          LPC    6777 
          STD    SC 
          LDC    SCRL 
          CWD    SC 
 WCL3     DELAY 
          LDC    SCRL        CHECK STEP MODE
          CRD    SC 
          LDD    SC 
          SHN    21-10
          MJN    WCL3        IF STEP STILL SET
          LJM    MEP6        LOG MAINTENANCE REGISTERS
 FIE      SPACE  4,10 
**        FIE - FATAL IOU ERROR.
* 
*         EXIT   TO *CSH* TO CHECK POINT DEVICES AND THEN HANG. 
* 
*         USES   CM - CM+3. 
* 
*         CALLS  CCI, CCM, CSH, DOB.
  
  
 FIE      BSS    0           ENTRY
          RJM    CCM         CREATE CONSOLE MESSAGE 
          LDN    11          CHECK POINT DEVICES AND RECALL *1MB* 
          STM    CKPA+2 
          LDN    SPLG        SET *1MB* FUNCTION CODE
          STM    CKPA+3 
          LDN    ZERL        SET C170 ERROR FLAG
          CRDL   CM 
          AOD    CM+3 
          ERRNZ  DCE7        CODE DEPENDS ON VALUE
          RJM    DOB
          ADK    DFCW 
          RDSL   CM 
          RJM    CCI         CLEAR M/R CONTROL WORD INTERLOCK 
          RJM    CSH         CHECKPOINT AND HANG
 NIE      SPACE  4,10 
**        NIE - NOS/VE IOU ERROR. 
* 
*         EXIT   TO *MEP6* TO LOG MAINTENANCE REGISTERS.
* 
*         CALLS  CCM. 
  
  
 NIE      BSS    0           ENTRY
          RJM    CCM         CREATE CONSOLE MESSAGE 
          LJM    MEP6        LOG MAINTENANCE REGISTERS
 MOB      SPACE  4,10 
**        MOB - MULTIPLE ODD BIT ERROR. 
* 
*         CALLS  CCI, CCM, RSM. 
  
 MOB      RJM    CCI         CLEAR M/R INTERLOCK
          RJM    CCM         CREATE CONSOLE MESSAGE 
          RJM    RSM         REQUEST STEP MODE
          UJN    *           HANG 
          TITLE  OS ACTION CODE SUBROUTINES.
 CCI      SPACE  4,10 
**        CCI - CLEAR M/R CONTROL WORD INTERLOCK. 
* 
*         ENTRY  (MB - MB+1) = ADDRESS OF OLDEST M/R CONTROL WORD.
* 
*         USES   CM - CM+3. 
  
  
 CCI      SUBR               ENTRY/EXIT 
          LCN    0           CLEAR M/R CONTROL WORD INTERLOCK 
          STDL   CM 
          STDL   CM+1 
          STDL   CM+3 
          SCBN   MRIL 
          STDL   CM+2 
          LDD    MB 
          SHN    14 
          LMD    MB+1 
          RDCL   CM 
          UJN    CCIX        RETURN 
 CCM      SPACE  4,15 
**        CCM - CREATE CONSOLE MESSAGE. 
* 
*         ENTRY  (SSCW - SSCW+1) = ADDRESS OF SUPPORTIVE STATUS DATA. 
*                (DFTV) = *DFT* VERSION.
*                (CN - CN+3) = M/R BUFFER CONTROL WORD. 
* 
*         EXIT   TIME AND FAULT SYMPTOM CODE BUILT INTO MESSAGE.
*                MESSAGE ISSUED TO SYSTEM CONTROL POINT.
* 
*         CALLS  ACS, CTC, CTD, RER, SCM. 
* 
*         USES   T1, T3, T5, CM - CM+3. 
  
  
 CCM      SUBR               ENTRY/EXIT 
          LDM    DFTV 
          ZJN    CCM1        IF NOT *DFT* VERSION 4 OR ABOVE
          LDN    2
          STD    T1 
          LDM    SSCW 
          SHN    14 
          LMM    SSCW+1 
          ADN    1
          CRDL   CM          READ DATE/TIME 
          ADN    1
          CRML   CCMB,T1     READ FAULT SYMPTOM CODE
          LDD    CM 
          SHN    21-10
          MJN    CCM1        IF NO VALID DATA 
          NJN    CCM2        IF NOT MODEL 20 IOU
 CCM1     LDK    TIML        GET TIME 
          CRM    MSFS,ON
          LDC    MSFS+5      SET ADDRESS FOR ASSEMBLY 
          STD    T1 
          LDN    0           SET END OF ASSEMBLY FOR *ACS*
          STM    MSFS+5 
          UJN    CCM3        CONVERT FAULT SYMPTOM CODE 
  
*         CONVERT TIME FROM SUPPORTIVE STATUS DATA. 
  
 CCM2     LDC    2L .        SET END OF STRING FOR *ACS*
          STD    T5 
          LDC    2L          SET END OF ASSEMBLY FOR *ACS*
          STM    MSFS 
          LDC    MSFS        SET ADDRESS FOR ASSEMBLY 
          STD    T1 
          LDDL   CM+2        CONVERT HOURS
          SHN    -10
          RJM    CTD
          RJM    ACS
          LDD    CM+2        CONVERT MINUTES
          LPC    377
          RJM    CTD
          RJM    ACS
          LDDL   CM+3        CONVERT SECONDS
          SHN    -10
          RJM    CTD
          RJM    ACS
 CCM3     LDC    CCMA        ADD *ERR=* TO MESSAGE
          RJM    ACS
          LDM    MSFS+4 
          SCN    77 
          ADN    1R 
          STM    MSFS+4 
          LDD    CN+1 
          LPC    3777 
          SBK    0#707
          PJN    CCM4        IF NOT WARNING 
          ADK    0#707-0#701
          PJN    CCM5        IF WARNING 
 CCM4     LDM    DFTV 
          NJN    CCM6        IF *DFT* VERSION 4 OR ABOVE
  
*         BUILD MESSAGE FOR ALL *DFT* VERSION 3 ERRORS, AND WARNING 
*         ERRORS FOR *DFT* VERSION 4 AND ABOVE. 
  
 CCM5     RJM    RER         READ *EID* REGISTER
          RJM    SCM         SET ANALYSIS CODE IN MESSAGE 
          LDN    0           ADD TERMINATOR 
          STM    MSFS+13
          UJN    CCM8        DISPLAY OPERATOR MESSAGE 
  
*         CONVERT FAULT SYMPTOM CODE DATA FOR *DFT* VERSION 4 AND 
*         ABOVE (EXCEPT FOR WARNING ERRORS).
  
 CCM6     LDN    0           SET END OF STRING FOR *ACS*
          STD    T5 
          LDC    CCMB+2      SET START OF FAULT SYMPTOM CODE
          STD    T3 
 CCM7     RJM    CTC         CONVERT TWO CHARACTERS 
          RJM    ACS
          AOD    T3 
          LMC    CCMB+10
          NJN    CCM7        IF MORE TO CONVERT 
 CCM8     LDD    CP          DISPLAY OPERATOR MESSAGE 
          ADN    MS2W 
          CWM    MSFS,TR     * HH.MM.SS ERR=XXXXXXXXXXXX* 
          LJM    CCMX        RETURN 
  
  
 CCMA     DATA   C*ERR=*
 CCMB     BSS    2*4         FAULT SYMPTOM CODE 
 CHC      SPACE  4,10 
**        CHC - CONVERT HEXADECIMAL CHARACTER TO DISPLAY CODE.
* 
*         ENTRY  (A) = VALUE TO CONVERT.
* 
*         EXIT   (A) = DISPLAY CODE.
  
  
 CHC1     ADN    10D+1R0     CONVERT TO DISPLAY CODE
  
 CHC      SUBR               ENTRY/EXIT 
          LPN    17          MASK ONE CHARACTER 
          SBN    10D
          MJN    CHC1        IF DECIMAL CHARACTER 
          ADN    1RA         SET HEX CHARACTER
          UJN    CHCX        RETURN 
 CTC      SPACE  4,10 
**        CTC - CONVERT TWO CHARACTERS. 
* 
*         ENTRY  (T3) = ADDRESS OF TWO 8-BIT ASCII CHARACTERS.
* 
*         EXIT   (A) = ADDRESS OF TWO DISPLAY CODE CHARACTERS.
*                (T4 - T5) = TWO CHARACTERS PLUS ZERO TERMINATOR. 
* 
*         USES   T4, T6.
  
  
 CTC      SUBR               ENTRY/EXIT 
          LDIL   T3          CONVERT FIRST CHARACTER
          SHN    -10
          SBN    40 
          STD    T6 
          LDM    T8AD,T6
          SHN    6
          STD    T4 
          LDI    T3          CONVERT SECOND CHARACTER 
          LPC    377
          SBN    40 
          STD    T6 
          LDM    T8AD,T6
          RAD    T4 
          LDN    T4          SET ADDRESS OF STRING
          UJN    CTCX        RETURN 
 CTD      SPACE  4,10 
**        CTD - CONVERT TWO DIGITS. 
* 
*         ENTRY  (A) = TWO 4-BIT DIGITS.
* 
*         EXIT   (A) = ADDRESS OF STRING TO ADD TO MESSAGE. 
*                (T4) = STRING TO ADD TO MESSAGE. 
*                       (CALLER MUST SUPPLY TERMINATOR IF NECESSARY). 
* 
*         USES   T3, T4.
  
  
 CTD      SUBR               ENTRY/EXIT 
          STD    T3 
          SHN    -4          CONVERT FIRST CHARACTER
          ADN    1R0
          SHN    6
          STD    T4 
          LDD    T3          CONVERT SECOND CHARACTER 
          LPN    17 
          ADN    1R0
          RAD    T4 
          LDN    T4          SET ADDRESS OF STRING
          UJN    CTDX        RETURN 
 RER      SPACE  4,15 
**        RER - READ *EID* REGISTER.
* 
*         ENTRY  (CN - CN+3) = M/R BUFFER CONTROL WORD. 
*                *DFT* INDICATES CPU 1 OR IOU 1 BY LOGGING ELEMENT CODE 
*                 10(16) OR 12(16) IN THE *EID* REGISTER (INSTEAD OF 0
*                 OR 2).
*                (MB - MB+1) = THE ADDRESS OF THE CURRENT NON REGISTER
*                STATUS BUFFER (*NRSB*) ENTRY.
* 
*         EXIT   ELEMENT CODE AND MODEL NUMBER SET IN MESSAGE.
* 
*         USES   T1, CM - CM+3. 
* 
*         CALLS  CTD, MRB.
  
  
 RER      SUBR               ENTRY/EXIT 
          LDM    IBMG        CHECK FOR *DFT* VERSION 5 OR ABOVE 
          SBN    5
          MJN    RER0        IF LESS THAN VERSION 5 
  
*         FOR *DFT* VERSION 5 OR ABOVE, GET THE ELEMENT ID (*EID*)
*         FROM THE *NRSB* ENTRY.
  
          LDD    MB          GET ADDRESS OF *NRSB* ENTRY
          SHN    14 
          ADD    MB+1 
          ADN    5           OFFSET TO *EID* REGISTER ENTRY 
          CRDL   CM          READ IN *EID* REGISTER 
          UJN    RER1.1      PROCESS THE *EID*
  
 RER0     LDN    0           INITIALIZE OFFSET
          STD    T1 
 RER1     AOD    T1 
          SBN    5
          ZJN    RER1        IF SECOND HEADER WORD
          SBN    10-5 
          ZJN    RER2        IF END OF BUFFER (USE ZERO DATA) 
          RJM    MRB         GET ADDRESS OF M/R BUFFERS 
          ADD    CN+3        ADD OFFSET 
          ADD    T1          SKIP TO NEXT WORD
          CRDL   CM          READ *EID* REGISTER
          LDDL   CM 
          ADDL   CM+1 
          ADDL   CM+2 
          ADDL   CM+3 
          ZJN    RER1        IF *EID* NOT FOUND YET 
 RER1.1   LDDL   CM+2        GET ELEMENT CODE 
          SHN    -10
          ADN    1
 RER2     STD    T1 
          SHN    -2          INCLUDE CPU 1/IOU 1 FLAG 
          RAD    T1 
          LDM    RERA,T1     GET MESSAGE CHARACTERS 
          STM    MSFS+7 
          LDD    CM+2        GET MODEL NUMBER 
          LPC    377
          RJM    CTD         CONVERT DIGITS 
          LDD    T4          ADD MODEL NUMBER TO MESSAGE
          STM    MSFS+10
          UJP    RERX        RETURN 
  
  
**        RERA - TABLE OF MESSAGE CHARACTERS. 
* 
*         INDEXED BY ELEMENT CODE.
  
  
 RERA     BSS    0
          DATA   2R00        UNKNOWN ELEMENT
          DATA   2RDC        PROCESSOR 0
          DATA   2RDM        MEMORY 
          DATA   2RDI        IOU 0
          DATA   2R          UNUSED 
          DATA   2RDD        PROCESSOR 1
          DATA   2R          UNUSED 
          DATA   2RDJ        IOU 1
  
 SCM      SPACE  4,15 
**        SCM - SET ANALYSIS CODE IN MESSAGE. 
* 
*         THE *DFT* ANALYSIS CODE FROM THE CONTROL WORD IS CONVERTED
*         TO HEXADECIMAL DISPLAY CODE AND PLACED IN THE CONSOLE 
*         MESSAGE.
* 
*         ENTRY  (CN - CN+3) = CONTROL WORD.
  
  
 SCM      SUBR               ENTRY/EXIT 
          LDD    CN+1        GET *DFT* ANALYSIS CODE
          RJM    CHC         CONVERT THIRD CHARACTER
          SHN    6
          STM    MSFS+12
          LDD    CN+1        CONVERT SECOND CHARACTER 
          SHN    -4 
          RJM    CHC
          STM    MSFS+11
          LDD    CN+1        CONVERT FIRST CHARACTER
          SHN    -10
          RJM    CHC
          SHN    6
          RAM    MSFS+11
          UJP    SCMX        RETURN 
 WWC      SPACE  4,10 
**        WWC - WAIT FOR WARNING CLEAR. 
* 
*         EXIT   TO *LED* TO LOAD *DFT* IF *DFT* NOT DEDICATED. 
*                TO *WCL* TO PROCESS WARNING CLEAR IF *DFT* DEDICATED.
* 
*         USES   CN - CN+3. 
* 
*         CALLS  CCI. 
* 
*         MACROS DELAY. 
  
  
 WWC      RJM    CCI         CLEAR M/R CONTROL WORD INTERLOCK 
          LDDL   DC+3        CHECK IF DEDICATED *DFT* 
          SHN    21-DCDM
          PJN    WWC1        IF *DFT* DEDICATED 
          LJM    LED         LOAD *DFT* 
  
 WWC1     DELAY 
          LDD    MB          READ M/R CONTROL WORD
          SHN    14 
          LMD    MB+1 
          CRDL   CN 
          LDD    CN          CHECK FOR WARNING CLEAR
          LPC    377
          LMK    WCAC 
          ZJN    WWC2        IF WARNING CLEAR 
          LMK    RSAC&WCAC
          ZJN    WWC2        IF SYSTEM RESUME 
          LMK    USAC&RSAC
          NJN    WWC1        IF NOT SYSTEM UNSTEP 
 WWC2     LDD    CN+1        PUT SYMPTOM CODE IN *BML*
          STM    IBMF+1 
          LJM    WCL         PROCESS WARNING CLEAR
          TITLE  MAINTENANCE REGISTER PROCESSING SUBROUTINES. 
 CBM      SPACE  4,10 
**        CBM - COMPLETE *BML* MESSAGES.
* 
*         ENTRY  ALL DATA PRESENT IN *BML* BUFFER AND TRAILER WORD. 
* 
*         EXIT   *BML* BUFFER PADDED WITH SUFFICIENT ZERO WORDS.
*                THE BUFFER IS FLUSHED IF NECESSARY.
*                FINAL *BML* MESSAGE ISSUED.
* 
*         USES   BP.
* 
*         CALLS  PMB, WLB.
  
  
 CBM      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRML   BDMR,ON     USE ZERO AS REGISTER NUMBERS 
          LDN    ZERL 
          CRM    BCMR,ON     CLEAR M/R BUFFER 
          LDN    ZERL 
          CRM    BCMR+7-4,ON
 CBM1     LDD    T5 
          ZJN    CBM2        IF WRITE COMPLETE
          RJM    PMB         PACK AND WRITE FAKE M/R
          UJN    CBM1        CONTINUE PROCESSING
  
 CBM2     LDN    5           UPDATE POINTER TO *BML* BUFFER 
          RAD    BP 
          STM    CBMA 
          ADC    -IBMHL 
          PJN    CBM3        IF READ COMPLETE 
          LDN    ZERL        CLEAR BUFFER 
          CRM    **,ON
 CBMA     EQU    *-1
          UJN    CBM2        CHECK AGAIN
  
 CBM3     LDN    6           SET MESSAGE LENGTH 
          STD    T4 
          RJM    WLB         WRITE LAST *BML* MESSAGE 
          UJP    CBMX        RETURN 
 CPM      SPACE  4,10 
**        CPM - CLEAR PP MEMORY.
* 
*         ENTRY  (DC - DC+3) = *DFT* CONTROL WORD.
* 
*         USES   T0.
* 
*         CLEARS ALL PP MEMORY FROM LWA OF *1MB* CODE TO THE END OF 
*         THE PP.  THIS INSURES THAT ALL 16-BIT INSTRUCTIONS USED BY
*         *DFT* ARE CLEARED BEFORE THE PP IS RETURNED TO NOS. 
  
  
 CPM      SUBR               ENTRY/EXIT 
          LDDL   DC+3 
          SHN    21-DCDM
          PJN    CPMX        IF DEDICATED *DFT* 
          LDC    L1MB        FIRST WORD TO CLEAR
          STD    T0 
          LDN    0
 CPM1     STI    T0 
          AOD    T0 
          SHN    -14
          ZJN    CPM1        IF MORE MEMORY TO CLEAR
          UJN    CPMX        RETURN 
 CTH      SPACE  4,10 
**        CTH - CHECK THRESHOLD EXCEEDED. 
* 
*         ENTRY  (CN - CN+3) = M/R BUFFER CONTROL WORD. 
* 
*         USES   CM - CM+4, T1, T2. 
* 
*         CALLS  DFM. 
* 
*         MACROS MONITOR. 
  
  
 CTH      SUBR               ENTRY/EXIT 
          LDDL   CN+2 
          SHN    21-MRTH
          PJN    CTHX        IF NOT THRESHOLD EXCEEDED
          LDDL   CN+1        GET *DFT* ANALYSIS CODE
          SHN    0-14 
          LMN    3
          STD    T1          (1 = CORRECTED, 0 = UNCORRECTED) 
          LDD    CN+1        GET TYPE OF ERROR
          SHN    0-10 
          LPN    3
          SHN    1
          STD    T2          (0 = IOU, 2 = CM, 4 = CPU) 
          LDM    CTHA,T2     BUILD APPROPRIATE MESSAGE TEXT 
          STM    CTHB,T1
          LDM    CTHA+1,T2
          STM    CTHB+1,T1
          LDC    CTHB+ERLN   ISSUE ERROR LOG MESSAGE
          ADD    T1 
          RJM    DFM
          LDN    ZERL        ISSUE OPERATOR EVENT 
          CRD    CM 
          LDK    ELAE 
          STM    CM+4 
          MONITOR  EATM 
          UJP    CTHX        RETURN 
  
 CTHA     DATA   4HIOU
          DATA   4HCM 
          DATA   4HCPU
 CTHB     DATA   6H    UN 
          DATA   C*CORRECTED ERROR THRESHOLD EXCEEDED.* 
 CTP      SPACE  4,10 
**        CTP - CHECK FOR TIME AND CHECKPOINT PROCESSING. 
* 
*         ENTRY  (IR+2) = FUNCTION CALL.
* 
*         EXIT   TO *CSH* IF CHECKPOINT REQUEST.
*                TO *LED* IF TIME REQUEST AND *DFT* NOT DEDICATED.
*                TO *DPP* IF TIME REQUEST AND *DFT* DEDICATED.
* 
*         USES   CM - CM+3, DC - DC+3, IR+2.
* 
*         CALLS  CCO, CRC, CSH, DOB, PES, UCC, *2TH*. 
* 
*         MACROS EXECUTE. 
  
  
 CTP      SUBR               ENTRY/EXIT 
          LDD    IR+2        CHECK FOR TIME PROCESSING
          LPN    SPCP 
          NJP    CTP2        IF CHECKPOINT REQUEST
          LMD    IR+2 
          LPN    SPTP 
          ZJN    CTPX        IF NOT TIME PROCESSING 
          RJM    UCC         UPDATE CTI CLOCK 
          EXECUTE  2TH       LOAD TOP-OF-HOUR ROUTINES
          RJM    /IHD/CRC    CLEAR RELOAD COUNT IN CONTROLWARE TABLE
          RJM    /IHD/CCO    CLEAR COUNTS IN EST/MST ENTRIES
          RJM    /IHD/PES    PROCESS ESM SECDED LOGGING 
 CTPA     LDC    ZERL        SET LOG COUNTERS AND SECDED TABLE FLAG 
*         LJM    CTPX        (IF NOS/VE LOGGING)
          CRDL   CM 
          LDBC   DCZC 
          STDL   CM+3 
          RJM    DOB
          ADK    DFCW 
          RDSL   CM 
          CRDL   DC 
          LDDL   DC+3        CHECK DEDICATED FLAG 
          SHN    21-DCDM
          PJP    DPP         IF DEDICATED *DFT* 
 CTP1     LDN    SPLG        SET LOGGING FUNCTION CODE
 CTPB     EQU    *-1
*         LDN    SPTH        (IF TOP OF HOUR PART TWO)
          STD    IR+2 
          LDD    IA 
          CWD    IR 
          LJM    LED         LOAD *DFT* 
  
 CTP2     LDN    10          SET *1CK* TO RECALL *1MB*
          STM    CKPA+2 
          LDN    SPCP        SET *1MB* FUNCTION CODE
          STM    CKPA+3 
          LDC    MSCP        *(204) FATAL CPU ERROR*
          STM    CSHA 
          STM    CSHB 
          RJM    CSH         CHECKPOINT AND HANG
 C9E      SPACE  4,15 
**        C9E - CHECK SPECIAL MODEL 990 ERRORS. 
* 
*         ENTRY  (IBMF+1) = *DFT* ANALYSIS CODE.
*                (T4) = CURRENT OFFSET INTO M/R BUFFER. 
* 
*         EXIT   (A) = 0, IF SPECIAL 990 ERROR PRESENT. 
*                *BML* DATA PLACED IN BUFFER, IF (A) = 0. 
* 
*         USES   T4, T6.
* 
*         CALLS  GPB, RMR.
  
  
 C9E      SUBR               ENTRY/EXIT 
          LDM    IBMF+1 
          LPC    3777        MASK MULTIPLE OCCURRANCE FLAG
          LMC    0#206
          ZJN    C9E1        IF REPAIRED ERROR
          LMK    0#207&0#206
          ZJN    C9E1        IF UNREPAIRED ERROR
          LMK    0#205&0#207
          ZJN    C9E1        IF RETRY IN PROGRESS ERROR 
          LMK    0#21B&0#205
          ZJN    C9E1        IF RETRY CONVERTED TO UNCORRECTED ERROR
          LMK    0#21C&0#21B
          ZJN    C9E1        IF RETRY EXHAUSTED ERROR 
          LMK    0#21D&0#21C
          NJN    C9EX        IF NOT RETRY EXHAUSTED ERROR 
 C9E1     LDD    T4 
          SBN    5
          NJN    C9EX        IF NOT LAST M/R BUFFER 
          STD    T4 
          STD    T6          INITIALIZE SUMMARY STATUS FLAG 
  
*         PROCESS LAST BUFFER FOR SPECIAL 990 ERRORS. 
  
          RJM    GPB         READ DATA WORD INTO *BML* MESSAGE
          LDD    BP 
          STM    C9EA 
          LDD    MS 
          SHN    14 
          LMD    MS+1 
          CRM    **,ON
 C9EA     EQU    *-1
          LDC    LDNI+0      SET *RMR* TO NOT USE *STATUS SUMMARY* FLAG 
          STM    RMRA 
          LDN    ZERL        USE ZERO AS REGISTER NUMBERS 
          CRML   BDMR,ON
          RJM    RMR         LOG FAILING ADDRESS WORDS AS REGISTERS 
          LDC    LDNI+1      RESTORE *RMR* USE OF *STATUS SUMMARY* FLAG 
          STM    RMRA 
          LDN    0           SET EXIT FLAG
          LJM    C9EX        RETURN 
 DOA      SPACE  4,10 
**        DOA - DETERMINE OS ACTION.
* 
*         ENTRY  (CN - CN+3) = CONTROL WORD.
* 
*         EXIT   TO OS ACTION ROUTINE.
*                NORMAL RETURN, IF NO OS ACTION CODE OR VERSION 3 
*                 AND NO VALID OS ACTION CODE.
* 
*         USES   T1, T2.
  
  
 DOA3     LDD    T1 
          SBN    MXAC 
          PJN    DOAX        IF NOT A VALID ACTION CODE 
          LDM    TOSC,T1     SET OS ACTION ROUTINE ADDRESS
          UJN    DOA5        EXIT TO ROUTINE
  
 DOA4     LDC    MOB         ROUTINE FOR NO MATCH FOUND 
 DOA5     STM    DOAA 
          LJM    **          PROCESS OS ACTION
 DOAA     EQU    *-1
  
 DOA      SUBR               ENTRY/EXIT 
          LDD    CN 
          LPC    377
          STD    T1 
          ZJN    DOAX        IF NO OS ACTION CODE 
          LDD    CN+2        CHECK VALID 170 DATA FLAG
          LPBC   MRV7 
          ZJN    DOAX        IF NO VALID 170 DATA FLAG
          LDM    DFTV 
          ZJN    DOA3        IF *DFT* VERSION 3 
          LDN    0
          STD    T2 
          UJN    DOA2        ENTER LOOP 
  
 DOA1     LDN    3           ADVANCE TO NEXT ENTRY
          RAD    T2 
 DOA2     LDD    CN+1        GET *DFT* ANALYSIS CODE
          LPC    3777 
          SBM    TDFA,T2
          MJN    DOA4        IF ENTRY NOT IN TABLE
          NJN    DOA1        IF NO MATCH
          LDD    T1          GET OS ACTION CODE 
          LMM    TDFA+1,T2
          NJN    DOA1        IF ACTION CODE DOES NOT MATCH
          LDM    TDFA+2,T2   SET OS ACTION CODE ADDRESS 
          UJP    DOA5        EXIT TO ROUTINE
 DOB      SPACE  4,10 
**        DOB - GET DFT/OS BUFFER ADDRESS.
* 
*         EXIT   (A) = ADDRESS OF DFT/OS BUFFER.
  
 DOB      SUBR               ENTRY/EXIT 
 DOBA     LDC    ** 
          UJN    DOBX        RETURN 
 DPR      SPACE 4,10
**        DPR - DUMP PP REGISTERS.
* 
*         EXIT   A, P, Q AND K REGISTERS OF EACH PP 
*                DUMPED TO *PRGB*.
* 
*         USES   EC, T2, T3, T4, CM - CM+4, CN - CN+4.
* 
*         MACROS EXITMR, LOCKMR, READMR, WRITMR.
  
  
 DPR      SUBR               ENTRY/EXIT 
          EXITMR DPRX        MODIFY ERROR EXIT ADDRESS
          LDK    PPUL        GET NUMBER OF PP-S 
          CRD    CN 
          ADK    EABL+2-PPUL GET IOU CONNECT CODE 
          CRD    CM 
          LDD    CM+3 
          STD    EC 
          READMR BCMR,,DEMR  READ EC REGISTER 
          LDN    0           INITIALIZE BUFFER POINTER
          STD    T3 
          STD    T4          INITIALIZE REGISTER NUMBER 
          STD    T2          INITIALIZE PP NUMBER 
 DPR1     LDM    BCMR+4      SET PP NUMBER
          SCN    77 
          LMD    T2 
          LMN    40          SET AUTO MODE BIT
          STM    BCMR+4 
          LDM    BCMR+6      MERGE REGISTER NUMBER
          SCN    3
          LMD    T4 
          STM    BCMR+6 
          LOCKMR SET         GET LONG TERM INTERLOCK
          WRITMR BCMR,,DEMR  WRITE EC REGISTER
          READMR BDMR,,ISTR  READ STATUS REGISTER 
          LOCKMR CLEAR       CLEAR LONG TERM INTERLOCK
          LDM    BDMR+4      FETCH REGISTER 
          LPN    3
          SHN    10 
          LMM    BDMR+5 
          SHN    10 
          LMM    BDMR+6 
          STM    PRGB+1,T3   STORE IN BUFFER
          SHN    -14
          STM    PRGB,T3
          LDN    2           INCREMENT BUFFER POINTER 
          RAD    T3 
          AOD    T4          INCREMENT REGISTER NUMBER
          SBN    4
          MJN    DPR2        IF NOT END OF REGISTERS FOR THIS PP
          LDN    0           RESET REGISTER NUMBER
          STD    T4 
          SOD    CN+2        DECREMENT NUMBER OF PP-S 
          ZJN    DPR3        IF END OF PP-S 
          AOD    T2          INCREMENT PP NUMBER
          SBN    12 
          NJN    DPR2        IF NOT PP 20 
          ADN    12+6 
          STD    T2 
 DPR2     LJM    DPR1        READ NEXT REGISTER 
  
 DPR3     LDC    PRGB        SET BUFFER ADDRESS IN INPUT REGISTER 
          STD    IR+4 
          LDD    IA 
          CWD    IR 
          LJM    DPRX        RETURN 
 DSP      SPACE  4,10 
**        DSP - GET *EICB* ADDRESS. 
* 
*         ENTRY  (DSPA) = ADDRESS OF *EICB*.
* 
*         EXIT   (A) = ADDRESS OF *EICB*. 
  
  
 DSP      SUBR               ENTRY/EXIT 
 DSPA     LDC    ** 
          UJN    DSPX        RETURN 
 FNR      SPACE  4,15 
**        FNR - FIND NON-REGISTER DATA. 
* 
*         ENTRY  (FNRA - FNRA+1) = FWA OF NON-REGISTER DATA.
* 
*         EXIT   (A) = 0, IF NO ENTRY TO PROCESS. 
*                (MB - MB+1) = ADDRESS OF CONTROL WORD FOR ENTRY. 
*                (CN - CN+3) = CONTROL WORD TO PROCESS. 
*                (CN+3) = SIZE OF ENTRY TO LOG. 
* 
*         USES   T1, T2, CM - CM+3, MB - MB+1.
* 
*         CALLS  FOM. 
  
  
 FNR      SUBR               ENTRY/EXIT 
 FNRA     LDC    **          (FWA OF NON-REGISTER DATA) 
          ZJN    FNRX        IF *DFT* VERSION 3 
          CRDL   CM          READ HEADER WORD 
          ADN    1
          STD    MB+1        SAVE ADDRESS OF START OF FIRST ENTRY 
          SHN    -14
          STD    MB 
          LDD    CM+3        SET INTERVAL BETWEEN CONTROL WORDS 
          STD    T2 
          LDD    CM+2        SET NUMBER OF CONTROL WORDS TO SEARCH
          RJM    FOM         FIND OLDEST ENTRY
          ZJN    FNR1        IF NO ENTRY TO PROCESS 
          LDD    MB          READ SIZE OF DATA TO LOG 
          SHN    14 
          LMD    MB+1 
          ADN    1
          CRDL   CM 
          LDD    CM+3        SAVE SIZE OF DATA TO LOG 
 FNR1     STD    CN+3 
          UJN    FNRX        RETURN 
 FOM      SPACE  4,10 
**        FOM - FIND OLDEST M/R BUFFER ENTRY. 
* 
*         ENTRY  (A) = NUMBER OF CONTROL WORDS TO SEARCH. 
*                (T2) = INTERVAL BETWEEN CONTROL WORDS. 
*                (MB - MB+1) = ADDRESS OF FIRST CONTROL WORD. 
* 
*         EXIT   (A) = (T7) = OFFSET OF OLDEST CONTROL WORD.
*                    = 0, IF NO ENTRY FOUND TO PROCESS. 
*                (CN - CN+3) = OLDEST M/R CONTROL WORD. 
*                (MB - MB+1) = ADDRESS OF OLDEST M/R CONTROL WORD.
* 
*         USES   CN - CN+3, MB - MB+1, T1, T6, T7, T8.
  
  
*         INTERLOCK SELECTED ENTRY.  IF UNABLE TO DO SO, *DFT* IS IN
*         THE PROCESS OF OVERWRITING IT AND A NEW ENTRY MUST BE 
*         SELECTED.  IF THE INTERLOCK IS OBTAINED, BUT THE SEQUENCE 
*         NUMBER IS DIFFERENT, *DFT* HAS OVERWRITTEN IT.  A NEW ENTRY 
*         MUST BE SELECTED. 
  
 FOM6     LDD    T7 
          ZJN    FOMX        IF NO ENTRY SELECTED 
          LDN    ZERL        SET UP INTERLOCK WORD
          CRDL   CN 
          LDBC   MRIL 
          STD    CN+2 
          LDD    MB 
          SHN    14 
          LMD    MB+1 
          ADD    T7 
          RDSL   CN          SET INTERLOCK ON OLDEST CONTROL WORD 
          LDDL   CN+2 
          SHN    21-MRIL
          MJN    FOM1        IF INTERLOCKED BY *DFT*
          LDDL   CN+2 
          SHN    -10         CHECK SEQUENCE NUMBER
          SBD    T8 
          ZJN    FOM7        IF SAME SEQUENCE NUMBER
          LDD    MB          CLEAR INTERLOCK
          SHN    14 
          LMD    MB+1 
          ADD    T7 
          CWDL   CN 
          UJN    FOM1        RESTART SEARCH 
  
 FOM7     LDD    T7          SET OLDEST BUFFER CONTROL WORD ADDRESS 
          RAD    MB+1 
          SHN    -14
          RAD    MB 
          LDD    T7 
  
 FOM      SUBR               ENTRY/EXIT 
          STM    FOMB        SAVE NUMBER OF CONTROL WORDS 
 FOM1     LDN    0
          STD    T6          COUNTER FOR M/R BUFFER ENTRIES 
          STD    T7          OFFSET OF OLDEST M/R BUFFER
          STD    T8          SEQUENCE NUMBER OF OLDEST M/R BUFFER 
          LDC    ** 
 FOMB     EQU    *-1         (NUMBER OF CONTROL WORDS TO SEARCH)
          STD    T1 
          UJN    FOM3        ENTER LOOP 
  
 FOM2     LDD    T2          ADVANCE TO NEXT CONTROL WORD 
          RAD    T6 
          SOD    T1 
          ZJP    FOM6        IF SEARCH COMPLETE 
 FOM3     LDD    MB          READ NEXT M/R CONTROL WORD 
          SHN    14 
          LMD    MB+1 
          ADD    T6 
          CRDL   CN 
          LDDL   CN+2        CHECK VALID DATA FLAG AND INTERLOCK FLAG 
 FOMA     LPBC   (MRV7,MRIL,MRLG) 
*         LPBC   (MRV7,MRIL) (IF 180 LOGGING) 
          SHN    21-MRIL
          MJN    FOM2        IF INTERLOCKED BY *DFT*
          ZJN    FOM2        IF NOT A POTENTIAL EARLIEST ENTRY
          LDD    T7 
          ZJN    FOM5        IF NO ENTRY SELECTED YET 
          LDDL   CN+2        GET SEQUENCE NUMBER
          SHN    -10
          SBD    T8          SUBTRACT OLDEST SEQUENCE NUMBER
          MJN    FOM4        IF LOWER THAN PREVIOUS 
          SBN    40 
          PJN    FOM5        IF WRAP AROUND 
 FOM3.1   UJP    FOM2        PROCESS NEXT ENTRY 
  
 FOM4     ADN    40 
          MJN    FOM2        IF NOT AN EARLIER ENTRY
 FOM5     LDDL   CN+2        SET NEW OLDEST SEQUENCE NUMBER 
          SHN    -10
          STD    T8 
          LDD    T6          SET NEW OLDEST OFFSET
          STD    T7 
          UJN    FOM3.1      PROCESS NEXT ENTRY 
 FSS      SPACE  4,10 
**        FSS - FIND SUPPORTIVE STATUS DATA.
* 
*         ENTRY  (FSSA) = FWA OF SUPPORTIVE STATUS BUFFER.
*                (FSSB) = OFFSET OF ENTRY IN M/R BUFFER CONTROL WORDS.
*                         (MUST BE NON-ZERO)
* 
*         EXIT   (SSCW - SSCW+1) = ADDRESS OF CONTROL WORD FOR
*                                  SUPPORTIVE STATUS DATA.
* 
*         USES   T1, CM - CM+4, MS - MS+1.
  
  
 FSS      SUBR               ENTRY/EXIT 
 FSSA     LDC    **          GET START OF SUPPORTIVE STATUS BUFFERS 
          ZJN    FSSX        IF *DFT* VERSION 3 
          CRDL   CM 
          ADN    1           ADVANCE TO START OF FIRST ENTRY
          STD    MS+1 
          SHN    -14
          STD    MS 
          LDC    *           SET OFFSET 
 FSSB     EQU    *-1
          STD    T1 
 FSS1     LDD    CM+3        ADVANCE TO NEXT ENTRY
          RAD    MS+1 
          SHN    -14
          RAD    MS 
          SOD    T1 
          NJN    FSS1        IF NOT YET AT CORRECT ENTRY
          LDD    MS          SAVE ADDRESS OF CONTROL WORD FOR ENTRY 
          STM    SSCW 
          LDD    MS+1 
          STM    SSCW+1 
          UJN    FSSX        RETURN 
 GPB      SPACE  4,10 
**        GPB - GET POINTER TO *BML* BUFFER.
* 
*         ENTRY  (BP) = PREVIOUS POINTER INTO *BML* BUFFER. 
* 
*         EXIT   (BP) UPDATED.
*                *BML* MESSAGE ISSUED.
* 
*         USES   BP, CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
 GPB      SUBR               ENTRY/EXIT 
          LDN    5
          RAD    BP          UPDATE POINTER TO *BML* BUFFER 
          ADC    -IBMHL 
          MJN    GPBX        IF STILL WITHIN BUFFER 
          LDN    ZERL 
          CRD    CM          FORM *BML* PARAMETERS
          LDN    6*5         SET BYTE COUNT 
          STD    CM+1 
          LDM    IBMG+1      UNCONDITIONALLY SET CONTINUATION BIT 
          SCN    4
          LMN    4
          STM    IBMG+1 
          LDC    IBMF+BMLN   SEND *BML* MESSAGE 
          RJM    DFM
          LDC    IBMH 
          STD    BP 
          LDM    IBMG+1      SET NOT FIRST BLOCK FLAG 
          SCN    10 
          LMN    10 
          STM    IBMG+1 
          UJN    GPBX        RETURN 
 IMD      SPACE  4,10 
**        IMD - ISSUE MODEL DEPENDENT DATA *BML* MESSAGE. 
* 
*         ENTRY  MESSAGE BUILT AT *BHDR*. 
*                (A) = LENGTH OF MESSAGE TO ISSUE.
* 
*         CALLS  IMB. 
  
  
 IMD      SUBR               ENTRY/EXIT 
          ADN    1
          STM    BHDR+3 
          LDC    BHDR 
          RJM    IMB         ISSUE MESSAGE TO BUFFER
          LDM    MBUF+1*5+1  SET NOT FIRST BLOCK FLAG 
          SCN    10 
          LMN    10 
          STM    MBUF+1*5+1 
          UJP    IMDX        RETURN 
 LDT      SPACE  4,15 
**        LDT - LOG DATA STRUCTURE. 
* 
*         *LDT* LOGS THE SUPPORTIVE STATUS BUFFER AND NON-REGISTER
*         DATA. 
* 
*         ENTRY  (T4) = NUMBER OF WORDS TO LOG. 
*                (MS - MS+1) = ADDRESS-1 OF FIRST WORD TO LOG.
* 
*         USES   BP, T4, T5, CN - CN+3, MS - MS+1.
* 
*         CALLS  CMB, PMB, PMR. 
  
  
 LDT      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR CONTINUATION/NOT FIRST BLOCK FLAGS 
          STM    IBMG+1 
          STD    T5          SET UP FOR *PMB* 
          LDC    IBMH-5 
          STD    BP 
          LDN    ZERL        USE ZERO AS REGISTER NUMBERS 
          CRML   BDMR,ON
 LDT1     AOD    MS+1        READ NEXT WORD OF DATA 
          SHN    -14
          RAD    MS 
          SHN    14 
          LMD    MS+1 
          CRDL   CN 
          RJM    PMR         PACK DATA INTO *BCMR* BUFFER 
          RJM    PMB         PACK DATA INTO *BML* MESSAGE 
          NJN    LDT2        IF NOT AT END OF BLOCK 
          LDM    IBMG+1      SET NOT FIRST BLOCK FLAG 
          SCN    10 
          LMN    10 
          STM    IBMG+1 
 LDT2     SOD    T4 
          NJN    LDT1        IF MORE WORDS TO LOG 
          RJM    CBM         COMPLETE *BML* MESSAGES
          UJP    LDTX        RETURN 
 LED      SPACE  4,10 
**        LED - LOAD AND EXECUTE *DFT*. 
* 
*         EXIT   *DFT* IS LOADED INTO THIS PP.
* 
*         USES   DC - DC+1, CM - CM+3, CN - CN+4, SC, T0, T7. 
* 
*         CALLS  DOB. 
  
  
 LED      BSS    0           ENTRY
          RJM    DOB         READ *DFT* CONTROL WORD
          ADK    DFCW 
          CRDL   DC 
          LDDL   DC+3        CHECK DEDICATED MODE 
          SHN    21-DCDM
          PJP    LED1        IF *DFT* IS IN DEDICATED MODE
  
*         SAVE PP RESIDENT. 
  
          SETMS  NODRIVER    CLEAR DRIVER PRESENT FLAG
          LDC    DFPSL-1     SET WORD COUNT TO SAVE 
          STD    T7 
          LDN    DFTBL       TRANSFER BOOTSTRAP TO *MSFW* 
          STD    CM 
          LDD    MA 
          CWM    LEDD,CM
          LDD    MA 
          CRM    MSFW,CM
          LDC    MSFW-1      SET EXECUTION ADDRESS ON RETURN FROM *DFT* 
          STD    T0 
          RJM    DOB         GET *PPR* SAVE AREA BUFFER ADDRESS 
          ADK    DFPS 
          CRDL   CM 
          RPTR   CM          CONVERT ADDRESS
          CWD    T0          WRITE FIRST WORD OF *PPR*
          ADN    1
          CWM    5,T7        WRITE REMAINDER OF *PPR* 
          LDN    DSAL        RESERVE CIP CHANNEL
          CRD    CM 
          LDD    CM+4 
          LPN    77 
          RCHAN 
  
*         CHECK NOS REQUEST STATUS. 
  
          RJM    SDA         READ NOS REQUEST HEADER
          CRD    CM 
          LDD    CM+4        CHECK STATUS 
          LMN    STRY 
          NJN    LED3        IF NOT STATUS = *READY*
          LDN    STAC        SET STATUS = *ACTIVE*
          STD    CM+4 
          RJM    SDA         REWRITE NOS REQUEST HEADER 
          CWD    CM 
          UJN    LED3        CONTINUE WITH LOADING *DFT*
  
 LED1     SHN    21-DCVR-21+DCDM+22 
          PJN    LED2        IF *DFT* NOT ALREADY ACTIVATED 
          RJM    CNR         CHECK FOR NOS REQUEST
          LJM    DPP         DROP PP
  
 LED2     LDD    IA          CHANGE *1MB* TO *DFT* IN INPUT REGISTER
          CRD    CM 
          LDC    2RDF 
          STD    CM 
          LDD    CM+1 
          LPN    77 
          LMC    1RT*100
          STD    CM+1 
          LDD    IA 
          CWD    CM 
 LED3     LDM    IBMF+2      SET PP NUMBER IN *DFT* CONTROL WORD
          SHN    -6 
          LMDL   DC+1 
          LPN    37 
          LMDL   DC+1 
          STDL   DC+1 
          RJM    DOB
          ADK    DFCW 
          CWDL   DC          UPDATE *DFT* CONTROL WORD
  
*         FIND *DFT* ENTRY IN *CTI* CM DIRECTORY. 
  
          LDN    0
          STD    T1 
          LDK    EIBP 
          CRD    CN 
          LDD    CN+3 
          SHN    14 
          LMD    CN+4 
          ADK    DSCM+2      READ *CTI* CM DIRECTORY POINTER
          CRDL   CN 
          LRD    CN+1        LOAD R-REGISTER
          LDDL   CN          SAVE REMAINDER 
          STD    T2 
 LED4     ADC    400000      SET BIT TO USE R-REGISTER
          CRDL   CN          READ *CTI* DIRECTORY ENTRY 
          LDDL   CN 
          LMC    2RDF 
          NJN    LED5        IF NOT *DFT* ENTRY 
          LDDL   CN+1 
          SHN    -6 
          LMN    1RT
          ZJN    LED6        IF *DFT* ENTRY 
 LED5     LDDL   CN+3        FIND NEXT DIRECTORY ENTRY
          RAD    T2 
          SHN    -14
          RAD    T1 
          SHN    14 
          LMD    T2 
          UJN    LED4        CHECK NEXT DIRECTORY ENTRY 
  
*         MOVE CODE TO SAVE AREA SO *DFT* DOES NOT OVERWRITE IT.
  
 LED6     LDN    .LED2       SIZE OF CODE TO MOVE 
          STD    T3 
          LDD    MA          MOVE CODE THROUGH MESSSAGE BUFFER
          CWML   LEDA,T3
          SBD    T3 
          CRML   CN,T3
          LJM    CN          JUMP TO LOADER 
  
*         LOAD AND EXECUTE *DFT*. 
  
 LEDA     BSS    0           START OF CODE TO MOVE
          LDD    T1 
          SHN    14 
          LMD    T2 
          ADC    400001 
          CRDL   CN          READ *DFT* LOAD PARAMETERS 
          ADN    1
          STD    T2 
          SHN    -14
          STD    T1 
          LDD    CN          SET *DFT* LOAD ADDRESS 
          STD    LEDC 
          LDD    T1          LOAD *DFT* 
          SHN    14 
          LMD    T2 
          CRML   **,CN+1
 LEDB     EQU    *-1         (*DFT* LOAD ADDRESS) 
          LJM    100         EXECUTE *DFT*
  
  
 .LED1    EQU    *-LEDA-1 
 .LED2    EQU    .LED1/4+1
          ERRPL  .LED2-7     CODE LONGER THAN MESSAGE BUFFER
 LEDC     EQU    LEDB-LEDA+CN  LOCATION TO PLUG *DFT* LOAD ADDRESS
  
*         BOOTSTRAP USED TO DROP CIP CHANNEL ON RETURN FROM *DFT*.
  
 LEDD     BSS    0
          LOC    MSFW 
          LDN    DSAL        LOCATE CIP CHANNEL 
          CRD    CM 
          LDD    CM+4        RELEASE CIP CHANNEL
          LPN    77 
          DCHAN 
          LJM    PPR         RELOAD *1MB* 
          LOC    *O 
 .LEDDL   SET    *-LEDD+4 
          ERRNG  DFTBL-.LEDDL/5  *DFT* BOOTSTRAP TOO LONG 
 LMD      SPACE  4,15 
**        LMD - LOG MODEL DEPENDENT BUFFER. 
* 
*         ENTRY  (T4) = LENGTH OF DATA TO LOG.
*                (MS - MS+1) = FWA - 1 OF DATA TO LOG.
* 
*         EXIT   MODEL DEPENDENT DATA ISSUED TO *BML*.
* 
*         USES   T1 - T5, BP, MS, CN - CN+3.
* 
*         CALLS  IMD, PMR, PWB. 
  
  
 LMD7     LDM    MBUF+1*5+1  CLEAR CONTINUATION BIT 
          SCN    4
          STM    MBUF+1*5+1 
 LMD8     LDC    18D
 LMDA     EQU    *-1         (NUMBER OF WORDS TO LOG) 
          RJM    IMD         ISSUE *BML* MESSAGE
          LDN    18D         RESET WORD COUNT 
          STM    LMDA 
          LDD    T4 
          NJN    LMD1        IF MORE DATA TO LOG
  
 LMD      SUBR               ENTRY/EXIT 
 LMD1     LDC    MBUF+2*5    SET BUFFER POINTER 
          STD    T1 
          STD    BP 
          ADK    15D*5       SET POINTER TO ASSEMBLY FOR LAST 4 BITS
          STD    EC 
 LMD2     LDN    0           CLEAR BUFFER 
          STI    T1 
          AOD    T1 
          LMC    MBUF+50D*5 
          NJN    LMD2        IF MORE TO CLEAR 
          STD    T5          INITIALIZE COUNTER 
          LDN    15D         NUMBER OF WORDS PER BLOCK
          STD    T1 
 LMD3     AOD    MS+1        READ NEXT WORD 
          SHN    -14
          RAD    MS 
          SHN    14 
          LMD    MS+1 
          CRDL   CN 
          RJM    PMR         PACK WORD INTO *BCMR*
          RJM    PWB         PACK WORD INTO BUFFER
          LJM    LMD4,T5     POSITION LAST 4 BITS 
*         LJM    LMD4        (LEFTMOST BITS)
*         LJM    LMD4+1      (MIDDLE BITS)
*         LJM    LMD4+2      (RIGHTMOST BITS) 
  
 LMD4     SHN    4
          SHN    4
          RAI    EC          ADD TO ASSEMBLY
          SOD    T4 
          ZJP    LMD7        IF NO MORE DATA TO LOG 
          AOD    T5 
          SBN    3
          MJN    LMD5        IF NOT END OF BYTE 
          LDN    0           RESET COUNTER
          STD    T5 
          AOD    EC          ADVANCE TO NEXT BYTE 
 LMD5     LDN    5           ADVANCE BUFFER POINTER 
          RAD    BP 
          SOD    T1 
 LMD6     NJP    LMD3        IF NOT END OF GROUP
          LDN    15D         RESET GROUP COUNTER
          STD    T1 
          LDC    15D*5       ADVANCE ASSEMBLY BUFFER
          RAD    EC 
          LDN    5           SKIP OVER ASSEMBLY BUFFER
          RAD    BP 
          LMC    MBUF+50D*5 
          ZJP    LMD8        IF END OF *BML* MESSAGE
          LDN    16D         INCREMENT WORD COUNT TO LOG
          RAM    LMDA 
          UJN    LMD6        READ NEXT WORD 
 LMR      SPACE 4,10
**        LMR - LOG MAINTENANCE REGISTERS.
* 
*         ENTRY  (CN - CN+3) = M/R CONTROL WORD.
*                (MB - MB+1) = ADDRESS OF CONTROL WORD. 
*                (LMRA) = SIZE OF ELEMENT COUNTER BUFFER. 
*                (LMRB) = SIZE OF M/R BUFFER. 
*                (LMRD) = NON-REGISTER DATA FLAG. 
* 
*         EXIT   MAINTENANCE REGISTERS LOGGED TO *BML*. 
*                (MB - MB+1) UNCHANGED. 
* 
*         USES   BP, T4, T5, T6, CM - CM+4, MS - MS+1.
* 
*         CALLS  CBM, C9E, DOB, LNR, LSS, LTE, MDB, MRB, RMR, SID, WLB. 
* 
*         MACROS RPTR.
  
  
 LMR10    RJM    LNR         LOG NON-REGISTER DATA
  
 LMR      SUBR               ENTRY/EXIT 
 LMRC     LDD    CN+2 
*         UJN    LMRX        (NOS/VE LOGGING) 
          SHN    21-MRLG
          PJN    LMRX        IF NO LOGGING ACTION 
          LDC    ** 
 LMRD     EQU    *-1         (NON-REGISTER DATA FLAG) 
          ZJN    LMR10       IF PROCESSING NON-REGISTER DATA
          LDM    IBMG+1      CLEAR NOT FIRST BLOCK FLAG 
          SCN    10 
          STM    IBMG+1 
  
*         LOCATE MAINTENANCE REGISTER BUFFER. 
  
          LDC    ** 
 LMRB     EQU    *-1         (LENGTH OF M/R BUFFER) 
          STD    T4 
          RJM    MRB         GET ADDRESS OF M/R BUFFERS 
          ADD    CN+3        ADD OFFSET 
          STD    MS+1 
          SHN    -14
          STD    MS 
  
*         DETERMINE ANALYSIS CODE.
  
          LDD    CN+1        GET ANALYSIS CODE
          LMC    0#707
          ZJN    LMR1        IF TO LOG ELEMENT COUNTER TABLE
          LMK    0#708&0#707
          ZJN    LMR4        IF TO LOG SECDED ID TABLE
          SHN    -10
          NJN    LMR5        IF NOT WARNING ANALYSIS CODE 
  
*         PROCESS WARNING ANALYSIS CODE.
  
          LDN    10D         SET SIZE TO LOG
          UJN    LMR2        LOG EID REGISTERS
  
*         PROCESS ELEMENT COUNTER TABLE.
  
 LMR1     LDC    MECB 
 LMRA     EQU    *-1         (SIZE OF ELEMENT COUNTER BUFFER) 
 LMR2     STD    T4 
 LMR3     RJM    LTE         LOG TABLE ENTRIES
          RJM    WLB         WRITE LAST *BML* MESSAGE 
          LJM    LMR8        LOG SUPPORTIVE STATUS DATA 
  
*         PROCESS SECDED ID TABLE.
  
 LMR4     RJM    SID         SET SECDED INFORMATION 
          NJN    LMR3        IF SECDED ID TABLE NOT EMPTY 
          UJN    LMR9        RETURN 
  
*         PROCESS MAINTENANCE REGISTERS.
  
 LMR5     LDN    0           PRESET *RMR* 
          STD    T5 
          STD    T6 
          LDC    IBMH-5      PRESET *GPB* 
          STD    BP 
 LMR6     LCN    5
          RAD    T4 
          MJN    LMR7        IF ALL BUFFERS PROCESSED 
          LDD    MS          READ M/R BUFFER HEADER WORD
          SHN    14 
          LMD    MS+1 
          CRML   BDMR,ON
          RJM    RMR         READ MAINTENANCE REGISTER BUFFER 
          NJN    LMR7        IF LOGGING COMPLETE
          AOD    MS+1        ADVANCE TO NEXT BUFFER 
          SHN    -14
          RAD    MS 
          RJM    C9E         CHECK SPECIAL 990 ERROR
          NJN    LMR6        IF NOT SPECIAL 990 ERROR 
 LMR7     RJM    CBM         COMPLETE *BML* MESSAGES
 LMR8     RJM    LSS         LOG SUPPORTIVE STATUS DATA 
          RJM    MDB         LOG MODEL DEPENDENT BUFFER 
 LMR9     LDM    IBMG        CLEAR SPECIAL FLAGS FROM *BML* 
          LPN    77 
          STM    IBMG 
          LJM    LMRX        RETURN 
 LNR      SPACE  4,10 
**        LNR - LOG NON-REGISTER DATA.
* 
*         ENTRY  (MB - MB+1) = ADDRESS OF CONTROL WORD FOR ENTRY. 
*                (CN - CN+3) = CONTROL WORD FOR ENTRY TO LOG. 
* 
*         EXIT   NON-REGISTER DATA LOGGED TO BML. 
* 
*         USES   T4, MS - MS+1. 
* 
*         CALLS  LDT. 
  
  
 LNR      SUBR               ENTRY/EXIT 
          LDM    IBMG        SET NON-REGISTER DATA FLAG 
          LPN    77 
          ADC    400
          STM    IBMG 
          LDD    MB          INITIALIZE ADDRESS OF DATA TO LOG
          STD    MS 
          SHN    14 
          LMD    MB+1 
          STD    MS+1 
          ADN    1           LENGTH TO LOG WORD 
          CRD    CM          READ LENGTH WORD 
          LDD    CM+4        SET LENGTH OF DATA TO INCLUDE LENGTH WORD
          STD    T4 
          RJM    LDT         LOG DATA STRUCTURE 
          LDM    IBMG        CLEAR NON-REGISTER DATA FLAG 
          LPN    77 
          STM    IBMG 
          UJN    LNRX        RETURN 
 LSS      SPACE  4,15 
**        LSS - LOG SUPPORTIVE STATUS DATA. 
* 
*         ENTRY  (SSCW - SSCW+1) = ADDRESS OF CONTROL WORD FOR ENTRY
*                                  TO LOG.
* 
*         EXIT   SUPPORTIVE STATUS BUFFER DATA LOGGED.
*                (MDBB) = MODEL DEPENDENT BUFFER ORDINAL. 
*                (MDBC) = MDB DATA UNLOGGED STATUS. 
* 
*         USES   T4, CM - CM+3, MS - MS+1.
* 
*         CALLS  LDT. 
  
  
 LSS      SUBR               ENTRY/EXIT 
          LDM    DFTV 
          ZJN    LSSX        IF *DFT* VERSION 3 
          LDM    SSCW        SET ADDRESS OF CONTROL WORD
          STD    MS 
          SHN    14 
          LMM    SSCW+1 
          STD    MS+1 
          CRDL   CM          READ CONTROL WORD
          LDD    CM+1        SET LENGTH OF DATA TO LOG
          STD    T4 
          ZJN    LSSX        IF NO DATA TO LOG
          LDD    CM+2        SAVE MODEL DEPENDENT BUFFER ORDINAL
          LPC    377
          STM    MDBB 
          LDDL   CM+2        SAVE UNLOGGED DATA STATUS
          SHN    -10
          STM    MDBC 
          LDD    HN          SET SUPPORTIVE STATUS BUFFER FLAG
          RAM    IBMG 
          RJM    LDT         LOG DATA STRUCTURE 
          UJP    LSSX        RETURN 
 LTE      SPACE  4,15 
**        LTE - LOG TABLE ENTRIES.
* 
*         ENTRY  MESSAGE ID AND SYMPTOM CODE IN *BML* HEADER. 
*                (T4) = WORD SIZE OF *BML* MESSAGE. 
*                (MS - MS+1) = ADDRESS OF FIRST ENTRY TO LOG. 
* 
*         EXIT   ENTRIES LOGGED TO *BML*. 
*                (T4) = CM WORDS TO WRITE IN LAST *BML* MESSAGE.
* 
*         USES   MS - MS+1, T1, T4. 
* 
*         CALLS  DFM, LMB.
  
  
 LTE2     LDD    MS          READ LAST *BML* MESSAGE DATA 
          SHN    14 
          LMD    MS+1 
          CRM    IBMH,T4
          AOD    T4          ADD HEADER WORDS TO COUNT
          AOD    T4 
  
 LTE      SUBR               ENTRY/EXIT 
 LTE1     LDN    4
          STD    T1 
          LDM    IBMG+1      SET CONTINUATION BIT 
          SCN    4
          LMN    4
          STM    IBMG+1 
          LDD    T4 
          SBN    5
          MJN    LTE2        IF LAST *BML* MESSAGE TO ISSUE 
          ADN    1
          STD    T4 
          LDD    MS 
          SHN    14 
          LMD    MS+1 
          CRM    IBMH,T1     READ BUFFER INTO *BML* 
          STD    MS+1 
          SHN    -14
          STD    MS 
          LDN    6*5         PP WORDS IN *BML* MESSAGE
          STD    CM+1 
          LDC    IBMF+BMLN   ISSUE *BML* MESSAGE
          RJM    DFM
          LDM    IBMG+1      SET NOT FIRST BLOCK FLAG 
          SCN    10 
          LMN    10 
          STM    IBMG+1 
          LJM    LTE1        PROCESS NEXT *BML* MESSAGE 
 MDB      SPACE  4,15 
**        MDB - LOG MODEL DEPENDENT BUFFER DATA.
* 
*         ENTRY  (MB - MB+1) = ADDRESS OF M/R BUFFER CONTROL WORD.
*                (MDBA) = ADDRESS OF MODEL DEPENDENT BUFFER.
*                (MDBB) = MODEL DEPENDENT BUFFER ORDINAL. 
*                (MDBC) = MODEL DEPENDENT DATA UNLOGGED STATUS. 
* 
*         EXIT   MODEL DEPENDENT BUFFER DATA LOGGED.
* 
*         USES   T1, T4, CM - CM+3, MS - MS+1, T8 - T9. 
* 
*         CALLS  LMD. 
* 
*         MACROS RPTR.
  
  
 MDB      SUBR               ENTRY/EXIT 
          LDD    MB          READ M/R BUFFER CONTROL WORD 
          SHN    14 
          LMD    MB+1 
          CRDL   CM 
          LDDL   CM+2 
          SHN    21-MRMD
          PJN    MDBX        IF NO MODEL DEPENDENT DATA 
 MDBA     LDC    **          (MODEL DEPENDENT BUFFER ADDRESS) 
          ADC    ** 
 MDBB     EQU    *-1         (MODEL DEPENDENT BUFFER ORDINAL) 
          CRDL   CM          READ MODEL DEPENDENT BUFFER POINTER
          LDC    *
 MDBC     EQU    *-1         (DATA UNLOGGED STATUS) 
          NJN    MDBX        IF DATA UNLOGGED OR OVERWRITTEN
          RPTR   CM          CONVERT ADDRESS
          CRDL   CM          READ HEADER
          STD    MS+1        SAVE ADDRESS OF HEADER 
          STD    T9 
          SHN    -14
          STD    MS 
          STD    T8 
          LDD    CM+3        SET LENGTH TO LOG
          ZJN    MDBX        IF NO DATA TO LOG
          SBN    1
          STD    T4 
          LDM    IBMG        SET MODEL DEPENDENT DATA FLAG
          LPN    77 
          ADC    200
          STM    IBMG 
          LDM    IBMG+1 
          SCN    14          CLEAR NOT FIRST BLOCK FLAG 
          LMN    4           SET CONTINUATION BIT 
          STM    IBMG+1 
          LDN    2           MOVE MESSAGE HEADER TO PP BUFFER 
          STD    T1 
          LDD    MA 
          CWM    IBMF,T1
          SBD    T1 
          CRM    MBUF,T1
          LDN    ZERL        CLEAR *EMB* HEADER WORD
          CRM    BHDR,ON
          LDK    MLDY        SET MESSAGE TYPE 
          STM    BHDR+4 
          RJM    LMD         LOG MODEL DEPENDENT DATA 
          LDD    T8          READ MODEL DEPENDENT HEADER
          SHN    14 
          LMD    T9 
          CRDL   CM 
          LDDL   CM          CLEAR CONTROL WORD OFFSET
          LPC    0#FF00 
          STDL   CM 
          LDD    T8 
          SHN    14 
          LMD    T9 
          CWDL   CM 
 MDB1     DELAY 
          LDK    EMBP        CHECK FOR *1MD* STILL ACTIVE 
          CRD    CM 
          LDD    CM+1 
          SHN    14 
          LMD    CM+2 
          CRD    CM 
          LDD    CM+4 
          LPN    2
          NJN    MDB1        IF *1MD* ACTIVE
          UJP    MDBX        RETURN 
 MRB      SPACE  4,10 
**        MRB - GET M/R BUFFERS ADDRESS.
* 
*         (A) = ADDRESS OF M/R BUFFERS. 
  
  
 MRB      SUBR               ENTRY/EXIT 
 MRBA     LDC    **          (ADDRESS OF M/R BUFFERS) 
          UJN    MRBX        RETURN 
 MRER     SPACE  4,10 
**        MRER - MAINTENANCE REGISTER ERROR HANDLER.
* 
*         ENTRY  FATAL MAINTENANCE REGISTER ERROR.
* 
*         EXIT   TO *CSH*.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  CSH. 
* 
*         MACROS MONITOR. 
  
  
 MRER     LDC    MSME        SET MESSAGE ADDRESS
          STM    CSHA 
          STM    CSHB 
          STM    CKPA+2 
          LDN    SPLG        SET *1MB* FUNCTION CODE
          STM    CKPA+3 
          LDN    ZERL 
          CRD    CM 
          LDN    1           SET *MCH* ERROR IN PROGRESS
          STD    CM+1 
          STD    CM+2 
          LDD    MA 
          CWM    MRERA,ON 
          MONITOR  UADM 
          RJM    CSH         CHECKPOINT AND HANG THE SYSTEM 
  
  
 MRERA    CON    LIOS        INCREMENT LOW CORE FIELD BY ONE
          CON    INWL        WORD ADDRESS 
          CON    5*100+1     BIT ADDRESS/FIELD WIDTH
          CON    0
          CON    0
 PMB      SPACE  4,15 
**        PMB - PACK MAINTENANCE REGISTER TO *BML*. 
* 
*         ENTRY  (T5) = BYTE IN M/R HEADER WORD WITH REGISTER NUMBER. 
*                (BCMR - BCMR+7) = CONTENTS OF REGISTER.
* 
*         EXIT   REGISTER WRITTEN TO *BML*. 
*                (A)= (T5) = 0, IF ALL REGISTERS IN THIS BLOCK
*                               WRITTEN.
*                (T5) = BYTE WITH NEXT REGISTER NUMBER, OTHERWISE.
* 
*         USES   T5.
* 
*         CALLS  GPB, PWB.
  
  
 PMB      SUBR               ENTRY/EXIT 
          RJM    GPB         GET POINTER INTO *BML* BUFFER
          RJM    PWB         PACK REGISTER INTO BUFFER
          SHN    10 
          LMML   BDMR,T5     INCLUDE REGISTER NUMBER
          STM    PMBB,T5
          AOD    T5 
          SBN    4
          MJN    PMB1        IF TRAILER WORD NOT FULL 
          RJM    GPB         GET POINTER TO *BML* BUFFER
          LDD    BP 
          STM    PMBA 
          LDD    MA 
          CWM    PMBB,ON     COPY TRAILER WORD TO *BML* BUFFER
          LDD    MA 
          CRM    **,ON
 PMBA     EQU    *-1
          LDN    0
          STD    T5 
 PMB1     UJP    PMBX        RETURN 
  
 PMBB     VFD    4/0,8/0,4/0,8/0,4/0,8/0,4/0,8/0,12/0 
 PMR      SPACE  4,10 
**        PMR - UNPACK M/R INTO *BCMR*. 
* 
*         ENTRY  (CN - CN+3) = REGISTER.
* 
*         EXIT   MAINTENANCE REGISTER WRITTEN TO *BML* BUFFER.
* 
*         USES   T3, T7.
  
  
 PMR      SUBR               ENTRY/EXIT 
          LDN    0
          STD    T3 
          LDN    CN 
          STD    T7 
 PMR1     LDIL   T7 
          SHN    -10
          STM    BCMR,T3
          AOD    T3 
          LDIL   T7 
          LPC    377
          STM    BCMR,T3
          AOD    T3 
          AOD    T7 
          SBN    CN+4 
          ZJN    PMRX        IF PACKING COMPLETE
          UJN    PMR1        CONTINUE PACKING 
 PWB      SPACE  4,10 
**        PWB - PACK WORD TO BUFFER.
* 
*         ENTRY  (BCMR - BCMR+7) = DATA WORD. 
*                (BP) = OFFSET INTO *BML* BUFFER. 
* 
*         EXIT   (A) = BITS 60 - 63 OF DATA WORD RIGHT JUSTIFIED. 
*                BITS 0 - 59 OF DATA WORD MOVED TO *BML* WORD.
  
  
 PWB      SUBR               ENTRY/EXIT 
          LDM    BCMR        PACK REGISTER INTO BUFFER
          SHN    10 
          LMM    BCMR+1 
          SHN    -4+22
          STI    BP 
          SHN    0+4-22 
          SHN    10 
          LMM    BCMR+2 
          STM    1,BP 
          LDM    BCMR+3 
          SHN    10 
          LMM    BCMR+4 
          SHN    -4+22
          STM    2,BP 
          SHN    0+4-22 
          SHN    10 
          LMM    BCMR+5 
          STM    3,BP 
          LDM    BCMR+6 
          SHN    10 
          LMM    BCMR+7 
          SHN    -4+22
          STM    4,BP 
          SHN    0+4-22 
          UJP    PWBX        RETURN 
 RMR      SPACE  4,10 
**        RMR - READ MAINTENANCE REGISTER.
* 
*         ENTRY  (BDMR - BDMR+3) = M/R CONTROL WORD.
*                (MS - MS+1) = ADDRESS OF MAINTENANCE REGISTER. 
*                (T5) = BYTE WITH NEXT REGISTER NUMBER TO LOG.
*                (T6) = 0 IF STATUS SUMMARY NOT YET LOGGED. 
* 
*         EXIT   (A) = 0, IF MORE BUFFERS TO CHECK. 
* 
*         USES   CN - CN+3, MS - MS+1, T5.
* 
*         CALLS  PMB, PMR.
  
  
 RMR      SUBR               ENTRY/EXIT 
 RMR1     LDML   BDMR,T5     GET NEXT REGISTER NUMBER 
          NJN    RMR2        IF REGISTER IS PRESENT 
          LDD    T6 
          NJN    RMRX        IF ALL REGISTERS LOGGED
 RMRA     LDN    1           SET STATUS SUMMARY LOGGED
          STD    T6 
 RMR2     AOD    MS+1        READ MAINTENANCE REGISTER
          SHN    -14
          RAD    MS 
          SHN    14 
          LMD    MS+1 
          CRDL   CN 
          RJM    PMR         PACK REGISTER INTO *BCMR* BUFFER 
          RJM    PMB         PACK M/R INTO *BML* MESSAGE
          ZJN    RMRX        IF BUFFER COMPLETE 
          UJN    RMR1        PROCESS NEXT REGISTER
 SCA      SPACE  4,10 
**        SCA - SET M/R BUFFER CONTROL WORDS ADDRESS. 
* 
*         EXIT   (MB - MB+1) = ADDRESS OF FIRST M/R CONTROL WORD. 
* 
*         CALLS  DOB. 
* 
*         USES   CM - CM+3, MB - MB+1.
* 
*         MACROS RPTR.
  
  
 SCA      SUBR               ENTRY/EXIT 
          RJM    DOB
 SCAA     ADK    DFHL 
*         UJN    SCA2        (*DFT* VERSION 4 OR ABOVE) 
 SCA1     STD    MB+1        SAVE ADDRESS 
          SHN    -14
          STD    MB 
          UJN    SCAX        RETURN 
  
 SCA2     ADK    DFBC 
          CRDL   CM          READ M/R BUFFER CONTROL WORD POINTER 
          RPTR   CM          CONVERT ADDRESS
          UJN    SCA1        SAVE ADDRESS 
 SDA      SPACE  4,10 
**        SDA - SET NOS REQUEST HEADER ADDRESS. 
* 
*         EXIT   (A) = ADDRESS OF NOS REQUEST HEADER. 
  
  
 SDA      SUBR               ENTRY/EXIT 
 SDAA     LDC    **          (ADDRESS OF NOS REQUEST HEADER)
          UJN    SDAX        RETURN 
 SID      SPACE  4,10 
**        SID - SET SECDED ID TABLE INFORMATION.
* 
*         ENTRY  (MS - MS+1) = ADDRESS OF M/R BUFFER. 
* 
*         EXIT   (A) = NUMBER OF SECDED ENTRIES.
* 
*         USES   CM - CM+4, MS - MS+1, T1 - T1+4. 
  
  
 SID      SUBR               ENTRY/EXIT 
          LDD    MS          READ MEMORY SIZE 
          SHN    14 
          LMD    MS+1 
          CRD    CM 
          ADN    1           READ MEMORY MODEL
          CRD    T1 
          LDD    T1+3 
          SHN    -4 
          STM    IBMG+2      STORE MEMORY MODEL 
          LDDL   CM          ADD MEMORY SIZE TO *BML* 
          SHN    22-4 
          STM    IBMF+3 
          SHN    4-22 
          SHN    10 
          STD    T1 
          LDDL   CM+1 
          SHN    -10
          LMD    T1 
          STM    IBMF+4 
          LDN    2           ADVANCE TO SECDED ENTRIES
          RAD    MS+1 
          SHN    -14
          RAD    MS 
  
*         CALCULATE SECDED TABLE SIZE.
  
          LDN    0
          STD    T4 
 SID1     LDD    MS          READ NEXT SECDED ENTRY 
          SHN    14 
          LMD    MS+1 
          ADD    T4 
          CRD    CM 
          LDD    CM          CHECK IF EMPTY ENTRY 
          ADD    CM+1 
          ADD    CM+2 
          ADD    CM+3 
          ADD    CM+4 
          SBN    1
          MJN    SID2        IF LAST ENTRY
          AOD    T4 
          UJN    SID1        CHECK NEXT ENTRY 
  
 SID2     LDD    T4          RETURN SECDED SIZE 
          UJP    SIDX        RETURN 
 UCC      SPACE  4,10 
**        UCC - UPDATE CTI CLOCK. 
* 
*         ENTRY  DURING TOP-OF-HOUR PROCESSING. 
* 
*         EXIT   *1MA* CALLED IF TIME IS MIDNIGHT.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 UCC      SUBR               ENTRY/EXIT 
          LDN    PDTL        CHECK TIME 
          CRD    CM 
          LDD    CM+3 
          LPN    77 
          NJN    UCCX        IF NOT MIDNIGHT
          LDD    IR+1        UPDATE CONTROL POINT NUMBER
          LPN    37 
          RAM    UCCA+1 
          LDD    MA          WRITE *1MA* REQUEST TO MESSAGE BUFFER
          CWM    UCCA,ON
          MONITOR  RPPM      REQUEST PP FOR *1MA* 
          UJN    UCCX        RETURN 
  
  
 UCCA     VFD    18/3L1MA,6/**,12/6,12/,12/ 
 WLB      SPACE  4,10 
**        WLB - WRITE LAST *BML* MESSAGE. 
* 
*         ENTRY  DATA FOR LAST *BML* MESSAGE IN BUFFER. 
*                (T4) = WORD COUNT OF MESSAGE.
* 
*         EXIT   LAST *BML* MESSAGE WRITTEN.
* 
*         CALLS  DFM. 
* 
*         USES   CM - CM+4. 
  
  
 WLB      SUBR               ENTRY/EXIT 
          LDM    IBMG+1      CLEAR CONTINUATION BIT 
          SCN    4
          STM    IBMG+1 
          LDN    ZERL 
          CRD    CM 
          LDD    T4          SET BYTE COUNT 
          SHN    2
          ADD    T4 
          STD    CM+1 
          LDC    IBMF+BMLN   SEND LAST *BML* MESSAGE
          RJM    DFM
          UJN    WLBX        RETURN 
 LINS     SPACE  4,10 
 LINS     BSS    0           TABLE OF LONG INSTRUCTIONS 
          LIST16
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPDLI 
          QUAL   COMPIMB
          LIST   X
*CALL     COMPIMB 
          LIST   *
          QUAL   *
 IMB      EQU    /COMPIMB/IMB 
          SPACE  4,15 
**        MAINTENANCE REGISTER BUFFERS. 
  
  
 BCMR     EQU    *
 BDMR     EQU    BCMR+10
 PRGB     EQU    BDMR+10     PP REGISTER BUFFER 
 BHDR     EQU    PRGB        *EMB* HEADER WORD
 MBUF     EQU    BHDR+5      MODEL DEPENDENT DATA *BML* BUFFER
  
          ERRPL  PRGB+240B-EPFW  PP REGISTER BUFFER OVERFLOW
          ERRPL  MBUF+50D*5-EPFW  MODEL DEPENDENT DATA BUFFER OVERFLOW
          TITLE  OVERLAYABLE SUBROUTINES. 
*         THESE SUBROUTINES ARE OVERLAYED BY THE MAINTENANCE REGISTER 
*         AND MODEL DEPENDENT DATA BUFFERS. 
 SBA      SPACE  4,25 
**        SBA - SET BUFFER ADDRESSES. 
* 
*         EXIT   (DC - DC+3) = *DFT* CONTROL WORD.
*                (DOBA - DOBA+1) = DFT/OS BUFFER ADDRESS. 
*                (SDAA - SDAA+1) = NOS REQUEST HEADER ADDRESS.
*                (MRBA - MRBA+1) = ADDRESS OF M/R BUFFERS.
*                (LMRB) = LENGTH OF M/R BUFFER. 
*                MACHINE ID, MESSAGE ID AND CHANNEL PLACED IN *BML* 
*                 MESSAGE BUFFER. 
*                *DFT* VERSION PLACED IN *BML* MESSAGE BUFFER.
*                CODE MODIFIED TO SKIP LOGGING IF NOS/VE IS LOGGING.
* 
*                IN ADDITION, FOR *DFT* VERSION 4 OR ABOVE -
*                (DFTV) = *DFT* VERSION.
*                (LMRA) = SIZE OF ELEMENT COUNTER BUFFER. 
*                (FNRA - FNRA+1) = NON-REGISTER DATA ADDRESS. 
*                (LSSA - LSSA+1) = SUPPORTIVE STATUS BUFFER ADDRESS.
*                (MDBA - MDBA+1) = MODEL DEPENDENT BUFFER ADDRESS.
* 
*         USES   CM - CM+4, CN - CN+4, DC - DC+3. 
* 
*         CALLS  DLI, DOB, DSP. 
* 
*         MACROS ISTORE, RPTR.
  
  
 SBA      SUBR               ENTRY/EXIT 
          LDC    SBAL        DEFINE LONG INSTRUCTIONS 
          RJM    DLI
          RJM    DSP         READ *DFT/OS* BUFFER POINTER 
          ADK    DSCM+3 
          CRDL   CN 
          RPTR   CN,DOBA     SET *DFT/OS* BUFFER ADDRESS
          RJM    DOB         READ *DFT* CONTROL WORD
          ADK    DFCW 
          CRDL   DC 
          ADK    DFRQ-DFCW   READ NOS REQUEST HEADER POINTER
          CRDL   CM 
          ADK    DFMR-DFRQ   READ M/R BUFFERS POINTER 
          CRDL   CN 
          RPTR   CN,MRBA     SAVE FWA OF M/R BUFFERS
          RPTR   CM,SDAA     SET ADDRESS OF NOS REQUEST HEADER
          LDDL   DC+2        SET LENGTH OF M/R BUFFER 
          SHN    -10
          STM    LMRB 
          LDDL   DC+1        GET *DFT* VERSION
          SHN    -10
          LPN    77 
          STM    IBMG        SET *DFT* VERSION INTO *BML* 
          SHN    -2 
          STM    DFTV        SAVE *DFT* VERSION (0 = VERSION 3) 
          ZJP    SBA2        IF *DFT* VERSION 3 
          ISTORE SCAA,(UJN SCA2)  USE POINTER TO FIND CONTROL WORDS 
          RJM    DOB
          ADK    DFMD        READ MODEL DEPENDENT BUFFER POINTER
          CRDL   T1 
          ADK    DFSS-DFMD   READ SUPPORTIVE STATUS BUFFER POINTER
          CRDL   CM 
          ADK    DFNR-DFSS   READ NON-REGISTER DATA POINTER 
          CRDL   CN 
          RPTR   T1,MDBA     SAVE FWA OF MODEL DEPENDENT BUFFER 
          RPTR   CM,FSSA     SAVE FWA OF SUPPORTIVE STATUS DATA 
          LDM    IBMG        CHECK FOR *DFT* VERSION 5 AND ABOVE
          SBN    5
          MJN    SBA1        IF *DFT* VERSION 4 OR PRIOR
          RPTR   CN,FNRA     SAVE FWA OF NON-REGISTER DATA
          LDDL   DC+3        CHECK DEDICATED MODE 
          SHN    21-DCDM
          PJN    SBA1        IF *DFT* IS IN DEDICATED MODE
          LDD    IR+2        CHECK FOR TOP OF HOUR
          LPN    SPTP 
          ZJN    SBA0        IF NOT TOP OF HOUR 
          ISTORE CTPB,(LDN SPTH)  SET TO SECOND TOP OF HOUR FUNCTION
          UJN    SBA1        CONTINUE 
  
 SBA0     LDD    IR+2        CHECK FOR TOP OF HOUR PASS TWO 
          LPN    SPTH 
          ZJN    SBA1        IF NOT TOP OF HOUR PASS TWO
          ISTORE DPPA,(UJN DPP5)  SET TO RECALL *DFT* 
*         LPN    SPTP 
          LPN    SPLG 
          STD    IR+2 
          LDD    IA          REWRITE INPUT REGISTER 
          CWD    IR 
 SBA1     RJM    DOB
          ADK    DFEC        READ ELEMENT COUNTER BUFFER POINTER
          CRDL   CM 
          LDD    CM+3        SAVE SIZE OF BUFFER
          STM    LMRA 
 SBA2     LDDL   DC+3        CHECK OS LOGGING FLAG
          SHN    21-DCLG
          MJN    SBA3        IF 170 LOGGING 
          ISTORE LMRC,(UJN LMRX)  SKIP LOGGING
          LDC    LJMI        SET *LJM*
          STM    CTPA 
          LDC    CTPX        SET *LJM* ADDRESS
          STM    CTPA+1 
          LDBC   (MRV7,MRIL)
          STM    FOMA+1 
          LDBC   (MRV7,MRIL)
          LMC    SCNI 
          STM    MEPC 
 SBA3     LDC    MMFL        SET MACHINE ID INTO *BML*
          CRD    CM 
          LDD    CM 
          STM    IBMG+3 
          LDC    /COMSDFS/HM0250  SET MESSAGE ID INTO *BML* 
          STM    IBMF 
          LDN    MR          SET CHANNEL NUMBER INTO *BML*
          RAM    IBMF+2 
          LDC    400000B+SBAL  CLEAR LONG INSTRUCTIONS
          RJM    DLI
          LJM    SBAX        RETURN 
  
  
 SBAL     BSS    0           TABLE OF LONG INSTRUCTIONS 
          LIST16
          TITLE  COMMON PRESET. 
 PRESET   SPACE  4,10 
**        PRESET - COMMON PRESET CODE FOR *1MB* AND *1SC*.
* 
*         THIS MACRO PROVIDES IDENTICAL CODE FOR *1MB* AND *1SC*. 
* 
*         ENTRY  (IR+2) = *1MB* FUNCTION BITS.
* 
*         EXIT   (MF) = MAINFRAME TYPE. 
*                     = 0 = MF70 = CYBER 70.
*                     = 1 = MF170 = CYBER 170.
*                     = 2 = MF700 = CYBER 170 - 700 SERIES. 
*                     = 3 = MF865 = CYBER 170 - 865.
*                     = 4 = MF875 = CYBER 170 - 875.
*                     = 5 = MF180 = CYBER 180 CLASS MACHINE.
*                     = 6 = MF176A = CYBER 176 LEVEL A. 
*                     = 7 = MF176B = CYBER 176 LEVEL B. 
*                (PN) = PP NUMBER * 100B
* 
*         ERROR  EXIT TO *PPR* IF CALLED WITH INCORRECT FUNCTION CODE.
* 
*         USES   MF, T1, T3, T4, CM - CM+4, MI - MI+4, SC - SC+4. 
* 
*         CALLS  DFM. 
  
  
 PRESET   MACRO 
 PRESET   RMT 
          LIST   D
 PRS      SUBR               ENTRY/EXIT 
          LDK    MABL        READ MAINFRAME IDENTIFICATION
          CRD    MI 
          LDC    SCRL        READ *SCRL* WORD 
          CRD    SC 
          LDN    MF70        PRESET CYBER 70 MAINFRAME TYPE 
          STD    MF 
          LDD    MI+1 
          SHN    21-7 
          PJN    PRS8        IF CYBER 70
          SHN    21-13-21+7+22
          MJN    PRS3        IF NOT CYBER 180 CLASS MACHINE 
          SHN    0-2-21+13+22 
          LPN    21 
          ZJN    PRS2        IF CYBER 170 - 865 
          LMN    1
          ZJN    PRS1        IF CYBER 170 - 875 
          LDN    MF180&MF875
 PRS1     LMN    MF875&MF865
 PRS2     LMN    MF865
          UJN    PRS7        SET MACHINE TYPE 
  
 PRS3     SHN    0-10-21+13 
          LMN    17 
          ZJN    PRS5        IF CYBER 176 LEVEL A 
          LMN    16&17
          ZJN    PRS6        IF CYBER 176 LEVEL B 
          LPN    1
          ZJN    PRS4        IF CYBER 170 - 700 SERIES
          LDN    MF170&MF700
 PRS4     LMN    MF700&MF176A 
 PRS5     LMN    MF176A&MF176B
 PRS6     LMN    MF176B 
 PRS7     STD    MF 
 PRS8     LDD    IR+2        CHECK FUNCTION BITS
          SBK    SPMX 
          MJN    PRS12       IF LEGAL FUNCTION
  
*         PROCESS INCORRECT FUNCTION CODE.
  
          LDC    PRSA        ISSUE CALL ERROR MESSAGE 
          RJM    DFM
          MONITOR  DPPM 
          LJM    PPR         EXIT TO PP RESIDENT
  
 PRS12    LDD    CP          SET CONTROL POINT NUMBER IN PP CALL
          SHN    -7 
          RAM    CKPA+1 
          LDN    PPCP        STORE LOGICAL PP NUMBER BEING USED 
          CRD    CM 
          LDD    IA 
          SBD    CM+4 
          SHN    -3 
          SBN    12          CHECK BARREL 
          MJN    PRS12.1     IF IN LOWER BARREL 
          ADN    20-12       ADJUST FOR PP20-PP31 
 PRS12.1  ADN    12 
          SHN    6
          STM    IBMF+2 
          STD    PN 
          LJM    PRS13       COMPLETE PRESET
  
  
 PRSA     DATA   C* 1MB - CALL ERROR.*
          LIST   *
 PRESET   RMT 
 PRESET   ENDM
          TITLE  PRESET.
          SPACE  4,10 
**        COMMON PRESET.
  
  
          PRESET
 PRESET   HERE
  
 PRS13    LDD    CP 
          SHN    -7 
          RAM    MEPD+1      PRESET CP IN *1DS* CALL
  
*         PLUG *EMB* ADDRESSES. 
  
          LDK    EMBP        FETCH *EMB* POINTER
          CRD    CM 
 .CM1     EQU    CM+1 
          LDC    .CM1*10000+TEMB
          RJM    STA         SET *EMB* ADDRESSES
          LJM    PRSX        EXIT PRESET
  
  
 TEMB     BSS    0           TABLE OF *EMB* ADDRESSES 
          QUAL   COMPIMB
 TEMB     HERE
          QUAL   *
          CON    0           TERMINATE TABLE
 STA      SPACE  4,10 
**        STA - SET TABLE ADDRESSES.
* 
*         ENTRY  (A) = 6/ TP, 12/ TA
*                      TP = TABLE POINTER.
*                      TA = INSTRUCTION TABLE ADDRESS.
* 
*         EXIT   (A) = 0. 
* 
*         USES   T0, T1, T2.
  
  
 STA1     STD    T2          SET INSTRUCTION ADDRESS
          LDM    1,T1 
          RAM    1,T2        SET LOWER 12 BITS OF ADDRESS 
          SHN    -14
          ADI    T1          SET UPPER 6 BITS OF ADDRESS
          LPN    37 
          RAI    T2 
          AOD    T0          ADVANCE INSTRUCTION LIST 
 STA2     LDI    T0 
          NJN    STA1        IF NOT END OF TABLE
  
 STA      SUBR               ENTRY/EXIT 
          STD    T0 
          SHN    -14         SET ADDRESS POINTER
          STD    T1 
          UJN    STA2        ENTER LOOP 
 L1MB     EQU    *           LWA+1 OF *1MB* CODE
          SPACE  4,10 
          OVERFLOW  PPFW,EPFW 
          TTL    1MB/1SC - SCR ERROR PROCESSOR. 
          TITLE 
          IDENT  1SC,PPFW 
          QUAL   1SC
*COMMENT  1MB - SCR ERROR PROCESSOR.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
 SEP      SPACE  4,10 
***       SEP - SCR ERROR PROCESSOR.
* 
*             *SEP* IS THE MAIN DRIVER THAT PROCESSES ERRORS
*         DETECTED IN THE SCR (OR SIMULATED SCR).  *1SC* IS CALLED
*         FOR LOGGING *UIDL* (SEE *COMSSCR*) UNIQUE SECDED ERRORS,
*         FOR END-OF-HOUR PROCESSING, AND FOR ALL SCR ERRORS OTHER
*         THAN SECDED ERRORS. 
* 
*         *1SC* FIRST CHECKS FOR GROUP 1 AND GROUP 2 FATAL ERRORS (SEE
*         *COMSSCR*).  IF ANY OF THESE BITS ARE SET, *1SC* DISPLAYS 
*         *FATAL MAINFRAME ERROR*, CHECKPOINTS THE DEVICES (IF NOT A
*         IAF ERROR), REQUESTS STEP MODE, AND HANGS THE PP.  IF NO
*         FATAL ERROR BITS ARE DETECTED, *1SC* CONTINUES CHECKING FOR 
*         OTHER ERRORS. 
* 
*         *1SC* THEN CHECKS THE S/C REGISTER FOR BITS 36 AND/OR 
*         37 SET. IF BIT 36 (POWER FAILURE) IS SET, THE STEP
*         REQUEST BIT IN CM WORD *SCRL* IS SET AND A STEP FUNCTION
*         IS ISSUED. THE S/C REGISTER(S) ARE READ ALONG WITH THE
*         TIME OF DAY. IF ONLY BIT 36 IS SET, THE MESSAGE 
*         *POWER FAILURE.* IS DISPLAYED AT THE SYSTEM CONTROL 
*         POINT. IF BOTH BITS 36 AND 37 ARE SET, THE MESSAGE
*         *POWER DOWN.* IS DISPLAYED. IF BIT 37 ALONE IS SET, *1CK* 
*         IS CALLED TO PERFORM A SYSTEM CHECKPOINT AND THE MESSAGE
*         *SHUTDOWN IMMINENT.* IS ENTERED IN THE ERROR LOG AND
*         DISPLAYED AT THE SYSTEM CP.  THEN THE STEP REQUEST BIT
*         IS SET AND A STEP FUNCTION IS ISSUED. DURING THIS TIME
*         AND SUBSEQUENTLY, BITS 36 AND 37 ARE MONITORED AND THE
*         CONTROL POINT MESSAGE KEPT UP TO DATE. IF BIT 36 BECOMES
*         SET, STEP MODE IS IMMEDIATELY REQUESTED. IF BOTH BITS 
*         BECOME CLEAR, THE MESSAGE *POWER/ENVIRONMENT NORMAL.* 
*         IS DISPLAYED AT THE SYSTEM CONTROL POINT, THE S/C 
*         REGISTER(S) AND THE TIME OF DAY ARE READ, AND THE STEP
*         REQUEST BIT IS CLEARED, ENABLING THE ENTERING OF THE
*         *DSD* COMMAND *UNSTEP.* BY THE OPERATOR. WHEN *UNSTEP.* 
*         IS EXECUTED, *1SC* ENTERS INTO THE ERROR LOG AS 
*         APPROPRIATE, THE MESSAGE *SR HH.MM.SS. POWER FAILURE.*
*         OR *SR HH.MM.SS. POWER DOWN.*.  THE LAST MESSAGE SEQUENCE 
*         IN THE ERROR LOG BEFORE *1MB* DROPS WILL BE 
*         *SR HH.MM.SS. POWER/ENVIRONMENT NORMAL.*. 
*         (ON A CYBER 70, BIT 0 OF THE INTERLOCK REGISTER INDICATES 
*         POWER FAILURE. THERE IS NO SHUTDOWN IMMINENT BIT. THE 
*         POWER FAILURE PROCEDURE DESCRIBED ABOVE IS FOLLOWED 
*         EXCEPT THE MESSAGE PREFIX BECOMES *IR* INSTEAD OF *SR*.)
* 
*         IF S/C REGISTER BITS 36 AND/OR 37 ARE NOT SET,
*         *1SC* S/C REGISTER(S) PROCESSING WILL, FOR EACH 
*         AVAILABLE S/C REGISTER, CLEAR APPROPRIATE ERROR 
*         BITS, AND ISSUE ERROR INFORMATION TO THE BML. 
* 
*         FOR PP MEMORY PARITY ERRORS, *1SC* WILL DISPLAY A 
*         *PP MEMORY PARITY ERROR* MESSAGE AT THE SYSTEM
*         CONTROL POINT.
* 
*         EACH SINGLE BIT SECDED ERROR DETECTED IN THE SCR (OR
*         SIMULATED SCR) WILL BE COUNTED.  THE FIRST *UIDL* UNIQUE
*         PER HOUR WILL BE LOGGED (SUBSEQUENT SINGLE BIT SECDED 
*         ERRORS DETECTED BY MONITOR WILL MERELY INCREMENT THE COUNTS 
*         AND CLEAR THE ERROR BITS IN MONITOR ITSELF).  AT THE END OF 
*         EACH HOUR, THE *TIME PROCESSING* CALL TO *1SC* WILL CAUSE 
*         THE CURRENT SINGLE BIT SECDED ERROR COUNT TO BE LOGGED TO 
*         THE ERROR LOG.  THE CM AND LCME SECDED ID TABLES AND COUNTS 
*         WILL ALSO BE LOGGED TO THE BML.  THESE TABLES AND COUNTS
*         WILL THEN BE CLEARED AFTER LOGGING.  THE ESM SECDED 
*         ERROR LOG IS ALSO LOGGED TO THE BML, IF AN ESM
*         MAINTENANCE PORT IS DEFINED.
* 
*         FOR CYBER 176 MACHINES, LCME SINGLE BIT SECDED
*         ERRORS ARE HANDLED IN A SIMILAR MANNER.  THE
*         THRESHOLD VALUE FOR LCME IS ALSO DEFINED BY *UIDL*. 
* 
*         ALL DETECTED DOUBLE BIT SECDED ERRORS WILL BE LOGGED. 
* 
*         NOTE - *1SC* IS, TO AN EXTENT, FUNCTION-DRIVEN BY BITS.  ONE
*         BIT IN THE PARAMETER LIST DENOTES WHETHER OR NOT MONITOR HAS
*         DETECTED A CM SINGLE BIT SECDED ERROR.  A SECOND BIT
*         SPECIFIES IF AN LCME SINGLE BIT SECDED ERROR HAS BEEN 
*         DETECTED.  A THIRD BIT DENOTES IF END-OF-HOUR PROCESSING HAS
*         BEEN SPECIFIED.  THUS, AN OPEN WINDOW FOR SECDED ERRORS 
*         EXISTS FROM THE TIME MONITOR CALLS *1SC* UNTIL *1SC* BEGINS 
*         PROCESSING.  THIS PRESENTS NO MAJOR CONCERN, HOWEVER, SINCE 
*         *1SC* WILL NOT PROCESS ANY SECDED ERRORS NOT DETECTED BY
*         MONITOR.  THOSE SECDED BITS WILL REMAIN SET UNTIL MONITOR 
*         DETECTS THE ERROR IN ITS NEXT CYCLE.
*         WHEN *1SC* IS FINISHED, IT WILL CLEAR BIT 59 IN 
*         CM LOCATION *SCRL*, SET BY *MTR*, TO RE-ENABLE
*         S/C REGISTER ERROR LOGGING. 
          SPACE  4,10 
***       CALL. 
* 
* 
*T  IR    18/  *1SC*,1/0,5/ CP,9/0,1/ C,1/ L,1/ T,24/0
*         CP     CONTROL POINT NUMBER.
*         C      SET IF CM SINGLE BIT SECDED ERROR. 
*         L      SET IF LCME SINGLE BIT SECDED ERROR (176 ONLY).
*         T      SET IF TIME PROCESSING SPECIFIED.
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
* 
*         * 1SC - CALL ERROR.* = *1SC* WAS CALLED WITH AN ILLEGAL 
*         FUNCTION BIT CODE.
* 
*         * 1SC - ESM CHANNEL HANG.* = THE ESM MAINTENANCE
*         CHANNEL HUNG ACTIVE WHILE WAITING TO FUNCTION THE 
*         ESM TO READ THE ESM SECDED LOG. 
* 
*         * 1SC - INCOMPLETE ESM SECDED READ.* = *1SC* DETECTED 
*         THAT NOT ALL OF THE ESM SECDED LOG WAS READ OFF THE 
*         ESM MAINTENANCE CHANNEL.
          SPACE  4,20 
***       SCR PROCESSING SYSTEM CONTROL POINT MESSAGES. 
* 
* 
*         * FATAL MAINFRAME ERROR.* 
* 
*         * POWER FAILURE.* 
*                BIT 36 OF S/C REGISTER SET.
*                BIT 0 OF INTERLOCK REGISTER SET (CYBER 70) 
* 
*         * SHUTDOWN IMMINENT.* 
*                BIT 37 OF S/C REGISTER SET.
* 
*         * POWER DOWN.*
*                BOTH BITS 36 AND 37 OF S/C REGISTER SET. 
* 
*         * POWER/ENVIRONMENT NORMAL.*
*                BOTH BITS 36 AND 37 OF S/C REGISTER CLEAR. 
          SPACE  4,40 
***       SCR PROCESSING ERROR LOG MESSAGES.
* 
* 
*         *SR HH.MM.SS. POWER FAILURE.* 
*         *IR HH.MM.SS. POWER FAILURE.* (CYBER 70)
* 
*         *SR SHUTDOWN IMMINENT.* 
* 
*         *SR HH.MM.SS. POWER DOWN.*
* 
*         *SR HH.MM.SS. POWER/ENVIRONMENT NORMAL.*
*         *IR HH.MM.SS. POWER/ENVIRONMENT NORMAL.* (CYBER 70) 
* 
*                WHERE HH.MM.SS. IS TIME OF DAY.
*                ABOVE MESSAGES ARE FOLLOWED BY S/C REGISTER(S) 
*                CONTENTS READ AT TIME HH.MM.SS. IN FORMAT
*                SHOWN ABOVE. 
  
  
          ORG    PPFW 
 SEP      RJM    PSC         PRESET FOR *1SC* 
          RJM    RSC         READ S/C REGISTER(S) 
 SEPA     RJM    CFE         CHECK FOR FATAL ERRORS 
*         UJN    *+2         (IF CYBER 70 AND NO SIMULATION)
          RJM    PEF         CHECK FOR POWER OR ENVIRONMENTAL FAILURE 
          RJM    TEB         CLEAR TEST ERROR BITS IN S/C 
          RJM    PSB         PROCESS SINGLE BIT ERRORS
          RJM    IBM         ISSUE BML MESSAGE
          RJM    PTP         PERFORM TIME PROCESSING
          LJM    DPP         DROP PP
          SPACE  4,10 
**        COMMON SUBROUTINES. 
  
  
          COMMON
  
          LIST   D
 COMMON   HERE
          LIST   *
 BIS      SPACE  4,10 
**        BIS - BUILD ID SUMMARY TABLE ADDRESS. 
* 
*         ENTRY  (SC - SC+4) = SCR PARAMETER WORD *SCRL*. 
* 
*         EXIT   (T3) = ID TABLE LENGTH.
* 
*         USES   T3, T6, T7.
  
  
 BIS      SUBR               ENTRY/EXIT 
          LDD    SC          BUILD ID SUMMARY TABLE ADDRESS 
          LPN    77 
          SHN    14 
          LMD    SC+1 
 BISA     ADN    UIDL 
*         ADN    UIDL*2      (ADD OFFSET FOR LCME ID TABLE) 
          STD    T7 
          SHN    -14
          STD    T6 
          LDN    UIDL        GET ID TABLE LENGTH
          STD    T3 
          UJN    BISX        RETURN 
 CFE      SPACE  4,10 
**        CFE - CHECK FOR FATAL ERRORS. 
* 
*         ENTRY  (MF) = MAINFRAME TYPE FLAG.
* 
*         EXIT   IF ANY FATAL ERROR BITS SET, HANGS WITH STEP MODE
*                SET, FORCING DEADSTART. OTHERWISE, EXIT IS NORMAL. 
* 
*         USES   T2, CM - CM+4, CN - CN+4.
* 
*         CALLS  CSH, TRB.
  
 CFE      SUBR               ENTRY/EXIT 
          LDM    TSCR+20     TEST SCR FOR GROUP ONE FATAL ERRORS
          LPC    FEM0        (CYBER 170)
*         LPC    FEM6        (CYBER 176)
*         LPC    FEM7        (CYBER 170 - 700 SERIES) 
*         LPC    FEM8        (CYBER 170 - 865/875)
 CFEA     EQU    *-1
          NJN    CFE1        IF FATAL ERROR 
          LDM    TSCR+17
          NJN    CFE1        IF FATAL ERROR 
          LDD    CH+1 
          ZJN    CFE2        IF DONE WITH SCR REGISTERS 
          LDM    TSCR+40
          ZJN    CFE2        IF NO GROUP ONE FATAL ERRORS 
 CFE1     LJM    CFE7        PROCESS FATAL ERROR
  
 CFE2     LDN    CMCE        CHECK FOR *CMC* ERROR (BIT CLEAR ON 176) 
          RJM    TRB         TEST BIT 
          NJN    CFE6        IF *CMC* INPUT ERROR 
 CFE3     LDN    SECD 
          RJM    TRB
          ZJN    CFE4        IF NO SECDED ERROR 
          LDC    SDSC        CHECK IF DOUBLE BIT ERROR
          RJM    TRB
          ZJN    CFE4        IF NO DOUBLE BIT ERROR 
          LDD    MF 
          SBN    MF176A 
          MJN    CFE6        IF NOT A CYBER 176 
          LJM    CSH1        REQUEST STEP AND HANG
  
 CFE4     LDD    MF          GET MACHINE TYPE 
          SBN    MF176A 
          MJN    CFE5        IF NOT CYBER 176 
          LDN    LSCD        CHECK FOR LCME SECDED ERROR
          RJM    TRB
          ZJN    CFE5        IF NO LCME SECDED ERROR
          LDC    LDSC        CHECK IF DOUBLE BIT ERROR
          RJM    TRB
          NJN    CFE6        IF DOUBLE BIT LCME ERROR 
 CFE5     LJM    CFEX        RETURN 
  
 CFE6     LDD    CP          CHECK SYSTEM CONTROL POINT FOR *PEET*
          ADN    STSW 
          CRD    CM 
          LDD    CM+1 
          LMN    PEET 
          ZJN    CFE7        IF PROGRAM MODE CPUMTR ENCOUNTERED ERROR 
          LDC    VCPT*200+STSW  CHECK FOR *IAF* ERROR 
          CRD    CM 
          ADN    JCIW-STSW-1
          CRD    CN 
          LDD    CN+2 
          LMC    /SSD/IFSI
          NJN    CFE8        IF NOT *IAF* 
          LDD    CM+1 
          LMN    PEET 
          NJN    CFE8        IF ERROR NOT IN *IAF* FL 
 CFE7     AOM    CKPA+2      SET FUNCTION TO CHECKPOINT DEVICES 
 CFE8     RJM    CSH         CHECKPOINT, STEP, AND HANG 
  
  
 CSHM     DATA   C* FATAL MAINFRAME ERROR.*  DEFAULT *CSH* MESSAGE
 IBM      SPACE  4,10 
**        IBM - ISSUE BML MESSAGE.
* 
*         ENTRY  (IR+2) = *1MB* FUNCTION BITS.
*                (MF) = MAINFRAME TYPE. 
*                (SC - SC+4) = SCR PARAMETER WORD *SCRL*. 
* 
*         USES   T3, T5 - T7, CM - CM+4, CN - CN+4, NW. 
* 
*         CALLS  BIS, DFM, OLB. 
  
  
 IBM      SUBR               ENTRY/EXIT 
          LDM    TMID,MF     GET MESSAGE ID 
          STM    IBMF 
          LDC    MMFL        GET MACHINE ID 
          CRD    CM 
          LDD    CM 
          STM    IBMG+3 
          LDD    MF          CHECK FOR CYBER 70 
          ZJN    IBMX        IF INTERLOCK REGISTER
          LDN    CHSC        STORE SCR CHANNEL
          RAM    IBMF+2 
          LDD    ER 
          ZJN    IBM3        IF NO ERRORS IN SCR
          RJM    OLB         OUTPUT LOG TO BML
 IBM3     LDD    IR+2 
          LPN    SPTP 
          ZJN    IBMX        IF NOT TIME PROCESSING 
  
*         OUTPUT SECDED ERROR SUMMARY TABLE TO BML. 
  
 IBM4     LDM    IBMH+2      RESET FIRST SCR CHANNEL
          SCN    77 
          LMD    CH 
          STM    IBMH+2 
          LDC    /COMSDFS/HS0102  (CM SUMMARY TABLE)
*         LDC    /COMSDFS/HS0104  (LCME SUMMARY TABLE)
 IBMA     EQU    *-1
          STM    IBMF+1 
          LDN    ZERL        SAVE 5 WORDS OF ZEROES 
          CRD    CN 
          RJM    BIS         BUILD ID SUMMARY TABLE ADDRESS 
          LDN    0           INITIALIZE TOTAL MESSAGE WORD COUNT
          STD    NW 
 IBM5     SOD    T7          DECREMENT NEXT TABLE ENTRY ADDRESS 
          PJN    IBM6        IF NO UNDERFLOW
          SOD    T6 
          AOD    T7 
 IBM6     LDD    T6          READ NEXT ID TABLE ENTRY 
          SHN    14 
          ADD    T7 
          CRD    CM 
          LDD    CM+4        CHECK IF ERROR COUNT .GT. 0
          ZJN    IBM7        IF REMAINING TABLE ENTRIES EMPTY 
          AOD    NW          INCREMENT UNIQUE SECDED ERROR COUNT
          SOD    T3 
          NJN    IBM5        IF ENTIRE ID TABLE NOT SEARCHED
 IBM7     RJM    BIS         REBUILD LWA+1 OF TABLE 
          RAM    BISA 
 IBM8     LDD    NW 
          NJN    IBM10       IF SECDED ERRORS OCCURRED THIS HOUR
          LDD    MF 
          SBN    MF176A 
          MJN    IBM9        IF NOT CYBER 176 
          LDN    /COMSDFS/HS0104-/COMSDFS/HS0102  LCME ERRORS ID
          RAM    IBMA 
          LMC    /COMSDFS/HS0104
          NJN    IBM9        IF LCME ERRORS REPORTED
          LJM    IBM4        PROCESS LCME SECDED SUMMARY TABLE
  
 IBM9     LJM    IBMX        RETURN 
  
 IBM10    LDN    12          INITIALIZE BML MESSAGE BYTE COUNT
          STD    T5 
          LDC    IBMH        INITIALIZE MESSAGE BUFFER POINTER
          STM    IBME 
 IBM11    SOD    T7          DECREMENT NEXT TABLE ENTRY ADDRESS 
          PJN    IBM12       IF NO UNDERFLOW
          SOD    T6 
          AOD    T7 
 IBM12    LDD    NW 
          ZJN    IBM13       IF TIME TO ISSUE DAYFILE MESSAGE 
          SOD    NW          DECREMENT UNIQUE SECDED ERROR COUNT
          LDD    T6          READ NEXT TABLE ENTRY INTO MESSAGE BUFFER
          SHN    14 
          ADD    T7 
          CRM    IBMH,ON
 IBME     EQU    *-1
*         CRM    IBMH+5,ON
*         CRM    IBMH+12,ON 
*         CRM    IBMH+17,ON 
          SBN    1           RESET CURRENT ID TABLE ADDRESS 
          CWD    CN          CLEAR ID SUMMARY TABLE ENTRY 
          LDN    5           INCREMENT MESSAGE BUFFER POINTER 
          RAM    IBME 
          LDN    5           INCREMENT MESSAGE BYTE COUNT 
          RAD    T5 
          SBN    36 
          ZJN    IBM13       IF BML MESSAGE BUFFER FULL 
          LJM    IBM11       PROCESS MORE TABLE ENTRIES 
  
*         ISSUE DAYFILE MESSAGE.
  
 IBM13    LDN    ZERL        CLEAR CM REGISTERS FOR DAYFILE CALL
          CRD    CM 
          LDD    T5          SET BYTE COUNT OF MESSAGE
          STD    CM+1 
          LDD    NW 
          ZJN    IBM14       IF END OF BML MESSAGE
          LDM    IBMG+1      SET CONTINUATION BIT STATUS
          SCN    4
          LMN    4
          UJN    IBM15       STORE STATUS 
  
 IBM14    LDM    IBMG+1      STORE MESSAGE STATUS 
          SCN    4
 IBM15    STM    IBMG+1 
          LDC    IBMF+BMLN   ISSUE DAYFILE MESSAGE
          RJM    DFM
          LDM    IBMG+1      SET NOT FIRST BLOCK FLAG 
          SCN    10 
          LMN    10 
          STM    IBMG+1 
          LJM    IBM8        CONTINUE PROCESSING
          SPACE  4,10 
 TMID     INDEX              TABLE OF MESSAGE IDS 
          INDEX  MF170,/COMSDFS/HM0200   CYBER 170
          INDEX  MF700,/COMSDFS/HM0201   CYBER 170 - 700 SERIES 
          INDEX  MF865,/COMSDFS/HM0204   CYBER 170 - 865
          INDEX  MF875,/COMSDFS/HM0205   CYBER 170 - 875
          INDEX  MF176A,/COMSDFS/HM0202  CYBER 176 LEVEL A
          INDEX  MF176B,/COMSDFS/HM0203  CYBER 176 LEVEL B
          INDEX  MFMAX
 ODW      SPACE  4,10 
**        ODW - OUTPUT DESCRIPTOR WORD TO SCR.
* 
*         ENTRY  (A) = DESCRIPTOR WORD. 
*                CHANNEL INSTRUCTION SET. 
* 
*         EXIT   (A) = SCR REPLY WORD.
  
  
 ODW      SUBR               ENTRY/EXIT 
          OAN    CHSC        OUTPUT DESCRIPTOR WORD 
*         OAN    CHSC+20     (SECOND SCR) 
*         OAN    15          (INTERLOCK REGISTER) 
 ODWA     EQU    *-1
          IAN    CHSC        INPUT SCR REPLY WORD 
*         IAN    CHSC+20     (SECOND SCR) 
*         IAN    15          (INTERLOCK REGISTER) 
 ODWB     EQU    *-1
          UJN    ODWX        EXIT 
 OLB      SPACE  4,10 
**        OLB - OUTPUT LOG TO *BML*.
* 
*         ENTRY  (CH+1) = 0, IF ONLY ONE SCR REGISTER.
*                TABLE *TSCR* CONTAINS SCR SECDED DATA. 
* 
*         USES   CM - CM+4, T3 - T5.
* 
*         CALLS  DFM. 
  
  
 OLB8     LDN    ZERL        CLEAR FOR DAYFILE CALL 
          CRD    CM 
          LDN    6*5         SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    IBMF+BMLN   ISSUE DAYFILE MESSAGE
          RJM    DFM
          LDM    IBMG+1      CHECK CONTINUATION BIT 
          LPN    4
          ZJN    OLBX        IF COMPLETE, RETURN
          LDN    14          SET NOT FIRST BLOCK FLAG 
          STM    IBMG+1 
          UJN    OLB1        ISSUE NEXT MESSAGE 
  
 OLB      SUBR               ENTRY/EXIT 
          LDC    /COMSDFS/HS0100
          STM    IBMF+1 
          LDN    0           PRESET INPUT TABLE INDEX 
          STD    T3 
 OLB1     LDN    0           PRESET *BML* MESSAGE INDEX 
          STD    T4 
 OLB2     LDM    TSCR,T3     SCR ERROR LOG TABLE
          STM    IBMH,T4     MOVE ONE BYTE FROM INPUT TABLE TO *BML*
          AOD    T3          INCREMENT INPUT TABLE INDEX
          AOD    T4          INCREMENT *BML* MESSAGE INDEX
          LMN    4*5
          ZJN    OLB4        IF AT END OF *BML* MESSAGE BUFFER
          LDD    T3 
          ADC    -NSCB       (FIRST SCR ERROR LOG)
 OLBA     EQU    *-1
*         ADC    -NSCB-NSCB  (SECOND SCR ERROR LOG) 
          NJN    OLB2        IF NOT AT END OF ERROR LOG 
 OLB3     LDN    0           CLEAR BYTES AT END OF ERROR LOG
          STM    IBMH,T4
          AOD    T4 
          LMN    4*5
          NJN    OLB3        IF MORE BYTES TO CLEAR 
          LDM    IBMG+1      CHECK CONTINUATION BIT 
          LPN    4
          NJN    OLB5        IF PROCESSING SECOND SCR *BML* MESSAGE 
          LDD    CH+1 
          ZJN    OLB6        IF ONLY ONE SCR *BML* MESSAGE
          LDC    -NSCB-NSCB  RESET FOR END OF SECOND SCR *BML* MESSAGE
          STM    OLBA 
 OLB4     LDM    IBMG+1      SET CONTINUATION BIT 
          SCN    4
          LMN    4
          UJN    OLB7        STORE STATUS 
  
 OLB5     LDM    IBMF+2      CHANGE TO SECOND SCR CHANNEL 
          SCN    77 
          LMD    CH+1 
          STM    IBMF+2 
 OLB6     LDM    IBMG+1      CLEAR CONTINUATION BIT 
          SCN    4
 OLB7     STM    IBMG+1 
          LJM    OLB8        CONTINUE 
 PTP      SPACE  4,15 
**        PTP - PERFORM TIME PROCESSING.
* 
*         ENTRY  (IR+2) = *1MB* FUNCTION BITS.
*                (MF) = MAINFRAME TYPE. 
* 
*         EXIT   THE ESM SECDED ERROR LOG IS LOGGED TO THE
*                BML FOR A *TIME PROCESSING* CALL, IF AN ESM
*                MAINTENANCE PORT IS DEFINED. 
* 
*         USES   CM - CM+4, T3. 
* 
*         CALLS  CCO, CRC, DFM, PES, *2TH*. 
* 
*         MACROS EXECUTE. 
  
  
 PTP      SUBR               ENTRY/EXIT 
          LDD    IR+2        CHECK FOR *TIME PROCESSING* FUNCTION 
          LPN    SPTP 
          ZJN    PTPX        IF NOT *TIME PROCESSING* FUNCTION
          EXECUTE  2TH       LOAD TOP-OF-HOUR ROUTINES
          LDC    CECL        READ ERROR COUNTERS
          CRD    CM 
          CRM    IBMG,ON
          LDD    CM 
          ADD    CM+1 
          ADD    CM+2 
          ADD    CM+3 
          ADD    CM+4 
          NJN    PTP1        IF ERRORS TO REPORT
          LJM    PTP2        CLEAR COUNTS 
  
 PTP1     LDN    ZERL        CLEAR MESSAGE BUFFER 
          CRD    CM 
          CRM    IBMF,ON
          SBN    1
          CRM    IBMH,ON
          SBN    1
          CRM    IBMH+5,ON
          LDC    CECL        CLEAR ERROR COUNTERS 
          CWD    CM 
          LDD    T3          IOU CORRECTED ERROR COUNT
          STM    IBMH+4      PLACE IN BML MESSAGE 
          LDC    /COMSDFS/HM0410  SET MESSAGE ID
          STM    IBMF 
          LDC    /COMSDFS/HS0101  SET MESSAGE SYMPTOM 
          STM    IBMF+1 
          LDN    3*5         SET BYTE COUNT FOR BML MESSAGE 
          STD    CM+1 
          LDC    IBMF+BMLN   ISSUE BML MESSAGE
          RJM    DFM
          LDN    ZERL        CLEAR BML BUFFER 
          CRM    IBMG,ON
 PTP2     RJM    /IHD/CRC    CLEAR RELOAD COUNT IN CONTROLWARE TABLE
          RJM    /IHD/CCO    CLEAR COUNTS IN EST/MST ENTRIES
          LDD    MF          CHECK FOR CYBER 70 
          ZJN    PTP3        IF PROCESSING INTERLOCK REGISTER 
          RJM    /IHD/PES    PROCESS ESM SECDED LOGGING 
 PTP3     LJM    PTPX        RETURN 
 RSC      SPACE  4,15 
**        RSC - READ S/C REGISTER(S). 
* 
*         READS THE CONTENTS OF THE S/C REGISTER(S) FROM
*         CHANNEL 16 AND/OR CHANNEL 36. 
* 
*         ENTRY  (MF) = MAINFRAME TYPE. 
* 
*         EXIT   TABLE *TSCR* CONTAINS HARDWARE COPY OF SCR.
* 
*         USES   T1, T2, T3, T4.
* 
*         CALLS  CHN, ODW.
  
  
 RSC      SUBR               ENTRY/EXIT 
  
*         READ S/C REGISTER.
  
          LDC    TSCR        SET BUFFER ADDRESS 
*         LDC    TSCR+50     (POWER FAILURE)
 RSCA     EQU    *-1
          STD    T1 
          STD    T2 
          LDD    CH+1        SECOND SCR CHANNEL 
          SHN    0-4         CONVERT 0 TO 0, 36 TO 1
          STD    T4 
 RSC1     LDN    NSCB-1      SET S/C WORD TO READ 
          STD    T3 
 RSC2     LDD    T3          READ WORD (T3) OF S/C REGISTER 
          RJM    ODW         OUTPUT DESCRIPTOR WORD 
          STI    T2          SAVE S/C CONTENTS
          AOD    T2          INCREMENT *TSCR* BUFFER ADDRESS
          SOD    T3          DECREMENT WORD COUNT FOR S/C 
          PJN    RSC2        IF NOT FINISHED WITH S/C 
          SOD    T4 
          NJN    RSC3        IF FINISHED WITH BOTH S/C,S
          LDN    CHSC+20     CHANNEL 36 
          RJM    CHN         CHANGE TO CHANNEL 36 S/C 
          UJN    RSC1        LOOP FOR CHANNEL 36 S/C
  
 RSC3     LDD    CH          FIRST SCR CHANNEL
          RJM    CHN         RESET CHANNEL FOR BITS 36 AND 37 
          LDM    20,T1       CLEAR FIRST SCR BYTE 0 INACTIVE BITS 
          LPC    ABM0        CYBER 170 ACTIVE BIT MASK
*         LPC    ABM6        (CYBER 176)
*         LPC    ABM7        (CYBER 170 - 700 SERIES) 
*         LPC    ABM8        (CYBER 170 - 865/875)
 RSCB     EQU    *-1
          STM    20,T1
          LDM    17,T1       CLEAR FIRST SCR BYTE 1 INACTIVE BITS 
 RSCC     SCN    0
*         SCN    INB6        (CYBER 176)
*         SCN    INB1        (CPU 1 OFF)
*         SCN    INB0        (CPU 0 OFF)
          STM    17,T1
          LDM    40,T1       CLEAR SECOND SCR BYTE 1 INACTIVE BITS
 RSCD     SCN    0
*         SCN    INB6        (CYBER 176)
*         SCN    INB1        (CPU 1 OFF)
*         SCN    INB0        (CPU 0 OFF)
          STM    40,T1
          LJM    RSCX        RETURN 
 PEF      SPACE  4,15 
**        PEF - CHECK FOR POWER OR ENVIRONMENTAL FAILURE. 
* 
*         EXIT   NORMAL IF POWER FAILURE OR ENVIRONMENTAL BITS NOT SET. 
*                NO EXIT TAKEN IF POWER FAILURE AND/OR ENVIRONMENTAL
*                BITS REMAIN SET. 
*                EXIT THROUGH *UBS* OTHERWISE.
* 
*         USES   T2.
* 
*         CALLS  CKC, CKP, DFM, IEL, RSC, RSM, TPE, UBS.
  
  
 PEF      SUBR               ENTRY/EXIT 
          RJM    TPE         TEST POWER FAILURE AND ENVIRONMENTAL BITS
          ZJN    PEFX        IF NEITHER SET 
          LPN    1
          ZJN    PEF2        IF NO POWER FAILURE
  
*         ENTRY HERE FROM *UBS* IF POWER FAILURE SET FOR FIRST TIME.
  
 PEF1     RJM    RSM         REQUEST STEP 
          LDM    UBSC,T1     SET MESSAGE
          SBN    5
          STM    PEFA 
          SBN    1
          STM    UBSB 
          LDN    TIML        READ TIME
          CRM    *,ON 
 PEFA     EQU    *-1         (TIME MESSAGE ADDRESS) 
          LDC    TSCR+50     SET BUFFER ADDRESS 
          STM    RSCA 
          LDC    LDNI+1      SET POWER FAILURE PREVIOUSLY PROCESSED 
          STM    UBSD 
          RJM    RSC         READ S/C REGISTER(S) 
          LDC    TSCR        RESET BUFFER ADDRESS 
          STM    RSCA 
          UJN    PEF3        WAIT FOR CONDITION TO CHANGE 
  
 PEF2     RJM    CKP         CALL *1CK* IF NOT ALREADY CALLED 
          LDC    MSGF-1+ERLN
          RJM    DFM
          RJM    CKC         CHECK FOR *1CK* COMPLETE 
          RJM    RSM         REQUEST STEP MODE
 PEF3     RJM    UBS         UPDATE BIT STATUS
          UJN    PEF3        WAIT UNTIL CLEAR 
 PSB      SPACE  4,15 
**        PSB - PROCESS SINGLE BIT SECDED ERRORS. 
* 
*         ENTRY  (IR+2) = FUNCTION BITS.
*                (MF) = MAINFRAME TYPE. 
* 
*         EXIT   SECDED ERROR BITS ARE CLEARED IN THE SCR IF THEIR
*                CORRESPONDING FUNCTION BITS IN IR+2 WERE SET.
* 
*         USES   ER.
* 
*         CALLS  ODW. 
  
  
 PSB      SUBR               ENTRY/EXIT 
          LDD    IR+2        CHECK FOR CM SECDED FUNCTION BIT SET 
          LPN    SPCS 
          ZJN    PSB2        IF CM SECDED FUNCTION BIT NOT SET
          AOD    ER          SET ERROR FLAG 
          LDC    FCCL+SECD   CLEAR SECDED ERROR 
          RJM    ODW
          LDD    MF          TEST FOR CYBER 176 
          SBN    MF176A 
          MJN    PSBX        IF NOT CYBER 176 
          LDC    FCSB+CCRT   SET CM RANK II CLEAR 
          RJM    ODW
          LDC    FCCL+CCRT   CLEAR CM RANK II CLEAR 
          RJM    ODW
 PSB2     LDD    IR+2        CHECK FOR LCME SECDED FUNCTION BIT SET 
          LPN    SPLS 
          ZJN    PSBX        IF LCME SECDED FUNCTION BIT NOT SET
 PSB3     AOD    ER          SET ERROR FLAG 
          LDC    FCCL+LSCD   CLEAR LCME SECDED ERROR
          RJM    ODW
          LDC    FCSB+LCRT   SET LCME RANK II CLEAR 
          RJM    ODW
          LDC    FCCL+LCRT   CLEAR LCME RANK II CLEAR 
          RJM    ODW
          LJM    PSBX        EXIT 
 TEB      SPACE  4,15 
**        TEB - CLEAR TEST/ERROR BITS IN S/C. 
* 
*         ENTRY  (CH) = SCR CHANNEL NUMBER. 
*                (MF) = MAINFRAME TYPE. 
*                (CH+1) = 0, IF ONLY ONE SCR CHANNEL. 
*                (TSCR) = TABLE CONTAINING COPY OF THE SCR(S).
* 
*         EXIT   ERROR BITS THAT ARE SET IN *TSCR* ARE CLEARED FROM 
*                THE SCR WITH THE EXCEPTION OF BIT 3.  ON A CYBER 176 
*                BIT 11 IS ALSO NOT CLEARED.  BIT 3 (AND BIT 11 ON A
*                CYBER 176) IS PROCESSED IN ROUTINE *PSB*.
* 
*         USES   ER, T4, T5.
* 
*         CALLS  CHN, ODW, TRB. 
  
  
 TEB3     SOD    T5 
          PJN    TEB1        IF SECOND CHANNEL
  
 TEB      SUBR               ENTRY/EXIT 
          LDD    CH+1 
          SHN    0-4         CONVERT 0 TO 0, 36 TO 1
          STD    T5 
          LDD    MF 
          SBN    MF176A 
          PJN    TEB1        IF CYBER 176 
          LDN    PSNI        ENABLE CLEARING OF BIT 11
          STM    TEBA 
 TEB1     LDM    CH,T5       SET REGISTER CHANNEL 
          RJM    CHN         CHANGE CHANNEL 
          LDN    NTEB        SET MAXIMUM ERROR BIT
          STD    T4 
 TEB2     SOD    T4          TEST NEXT BIT
          MJN    TEB3        IF END OF BITS 
          LMN    SECD 
          ZJN    TEB2        IF BIT 3 
          LMN    LSCD&SECD
 TEBA     ZJN    TEB2        IF BIT 11
*         PSN                (NON-CYBER 176 MAINFRAMES) 
          LMN    LSCD        RESTORE CONTENTS 
          RJM    TRB
          ZJN    TEB2        IF NOT SET 
          AOD    ER          SET ERROR FLAG 
          LDC    FCCL 
          LMD    T4 
          RJM    ODW         CLEAR BIT
          UJN    TEB2        LOOP FOR NEXT BIT
 CHN      SPACE  4,10 
**        CHN - CHANGE S/C REGISTER CHANNEL.
*         MODIFIES CHANNEL INSTRUCTIONS IN SUBROUTINE *ODW*.
* 
*         ENTRY  (A) = S/C REGISTER CHANNEL.
  
  
 CHN      SUBR               ENTRY/EXIT 
          LMC    OANI 
          STM    ODWA 
          LMC    IANI&OANI
          STM    ODWB 
          LPN    77 
          LMN    36 
          ZJN    CHN1        IF CHANNEL 36
          LCN    NSCB 
 CHN1     ADC    LDNI+NSCB*2
          STM    TRBA 
          UJN    CHNX        RETURN 
 TPE      SPACE  4,20 
**        TPE - TEST POWER FAILURE AND ENVIRONMENTAL BITS.
* 
*         EXIT   IF POWER FAILURE BIT SET, (T1) = (A) = 1.
*                IF ENVIRONMENTAL BIT SET, (T1) = (A) = 2.
*                IF BOTH BITS SET, (T1) = (A) = 3.
*                IF NEITHER BIT SET, (T1) = (A) = 0.
* 
*         USES   T1, T5.
* 
*         CALLS  ODW. 
* 
*         MACROS DELAY. 
* 
*         NOTE - A *TEST* FUNCTION IS USED FOR THE FIRST CALL AND A 
*         *TEST/CLEAR* FUNCTION IS USED FOR ALL FURTHER CALLS.
*         THIS PREVENTS A TRANSIENT SETTING OF BITS 36,37 FROM
*         CAUSING A SYSTEM CHECKPOINT IN ROUTINE *PEF* BUT CLEARING 
*         BEFORE *1MB* CAN BE RECALLED TO LOG THE ERROR MESSAGES. 
  
  
 TPE      SUBR               ENTRY/EXIT 
          LDC    600         PRESET DELAY LOOP COUNT
          STM    TPEF 
 TPEA     UJN    TPE1        TEST BIT 36
*         PSN                IF CYBER 70
          LDC    FCTB        TEST BIT 0 OF INTERLOCK REGISTER 
*         LDC    FCTC        (SUBSEQUENT CALLS) 
 TPEB     EQU    *-1
          RJM    ODW         OUTPUT DESCRIPTOR WORD 
          STD    T1          SET RETURN CODE
          LDC    FCTC        CHANGE TO TEST/CLEAR FUNCTION
          STM    TPEB 
 TPEC     UJN    TPE3        RESTORE EXIT VALUE 
*         PSN                IF SIMULATOR REQUESTED 
  
 TPE1     LDC    FCTB+MAPF   TEST MAINS POWER FAILURE 
*         LDC    FCTC+MAPF   (SUBSEQUENT CALLS) 
 TPED     EQU    *-1
          RJM    ODW         OUTPUT DESCRIPTOR WORD 
          STD    T1          SET RETURN CODE
          LDC    FCTB+SHIM   TEST SHUTDOWN IMMINENT 
*         LDC    FCTC+SHIM   (SUBSEQUENT CALLS) 
 TPEE     EQU    *-1
          RJM    ODW         OUTPUT DESCRIPTOR WORD 
          SHN    1           SET RETURN CODE
          RAD    T1 
 TPE1.1   UJN    TPE4        CHANGE FUNCTION CODES
*         ZJN    TPEX        IF NO ERROR DETECTED 
 TPEG     EQU    *-1
          LPN    1
          NJN    TPE3        IF MAINS POWER FAILURE 
          LDN    77          INNER LOOP DELAY COUNT 
          STD    T5 
 TPE2     DELAY 
          SOD    T5 
          NJN    TPE2        IF NOT END OF INNER DELAY LOOP 
          SOM    TPEF 
          NJN    TPE1        IF NOT END OF DELAY PERIOD 
 TPE3     LDD    T1          GET RETURN CODE
          LJM    TPEX        RETURN 
  
 TPE4     LDC    FCTC+MAPF   CHANGE TO TEST/CLEAR FUNCTION
          STM    TPED 
          ADN    SHIM-MAPF
          STM    TPEE 
          ISTORE TPEG,(ZJN TPEX)
          LDD    T1 
          UJN    TPE1.1      ENTER LOOP 
  
  
 TPEF     CON    0           DELAY LOOP COUNT 
 TRB      SPACE  4,10 
**        TRB - TEST S/C REGISTER BIT.
* 
*         ENTRY  (A) BIT TO BE TESTED.
* 
*         EXIT   (A) = 0 BIT CLEAR. 
*                (A) = 1 BIT SET. 
* 
*         USES   T0, T1.
  
  
 TRB      SUBR               ENTRY/EXIT 
          STD    T0 
 TRBA     LDN    NSCB        SET WORD INDEX 
*         LDN    NSCB*2      (CHANNEL 36) 
          STD    T1 
 TRB1     SOD    T1 
          LCN    14 
          RAD    T0 
          PJN    TRB1        IF WORD NOT FOUND
          ADN    14 
          LMC    SHNI+77
          STM    TRBB 
          LDM    TSCR,T1
 TRBB     SHN    -0 
          LPN    1
          UJN    TRBX        RETURN 
 UBS      SPACE  4,25 
**        UBS - UPDATE BIT STATUS.
*         CHECKS S/C REGISTER FOR STATUS OF POWER FAILURE (BIT 36) AND
*         SHUTDOWN IMMINENT (BIT 37), UPDATES CONTROL POINT MESSAGE IF
*         NECESSARY, EXITS TO POWER FAILURE ROUTINE IF BIT 36 SET FOR 
*         THE FIRST TIME, AND TERMINATES IF BOTH BITS CLEAR 
*         AFTER UNSTEP IS ENTERED BY OPERATOR.
* 
*         ENTRY  (T2) = 77 IF FIRST ENTRY.
*                     = PREVIOUS EXIT CONDITION OF *UBS*. 
*                (T1) = OUTPUT OF *TPE*.
* 
*         EXIT   (T2) = CONDITION CODE. 
*                       1, IF POWER FAILURE (BIT 36) SET. 
*                       2, IF SHUTDOWN IMMINENT (BIT 37) SET. 
*                       3, IF BOTH BITS SET.
*                IF BOTH BITS CLEAR, WAITS FOR OPERATOR *UNSTEP*
*                COMMAND, THEN EXITS TO *DPP*.
* 
*         USES   SC - SC+4. 
* 
*         CALLS  DFM, DPP, IEL, RSC, RSM, TPE.
  
  
 UBS9     LDD    T2 
          NJN    UBS10       IF PREVIOUS CONDITION NOT ALL CLEAR
          RJM    RSM         RESTORE STEP MODE
 UBS10    LDD    T1          SET CONDITION HISTORY
          STD    T2 
  
 UBS      SUBR               ENTRY/EXIT 
 UBS1     RJM    TPE         TEST POWER FAILURE AND ENVIRONMENTAL BITS
          LMD    T2 
          NJN    UBS2        IF CONDITION CHANGED 
          LDD    T1 
          NJN    UBSX        IF NOT BOTH CLEAR
          LJM    UBS5        CHECK STEP MODE
  
 UBS2     LDM    UBSC,T1     GET MESSAGE ADDRESS
          STM    UBSA 
          LDD    CP          DISPLAY STSTEM CONTROL POINT MESSAGE 
          ADN    MS2W 
          CWM    *,TR 
 UBSA     EQU    *-1         (MESSAGE ADDRESS)
          LDD    T1 
          ZJN    UBS4        IF ALL CLEAR 
          LPN    1
          ZJN    UBS9        IF NOT POWER FAILURE 
 UBSD     LDN    0
*         LDN    1           (POWER FAILURE PREVIOUSLY PROCESSED) 
          NJN    UBS9        IF POWER FAILURE PREVIOUSLY PROCESSED
          LJM    PEF1        PROCESS POWER FAILURE/ENVIRONMENTAL BITS 
  
 UBS4     LDN    TIML        READ TIME OF DAY 
          CRM    TIMA,ON
          LDD    SC          CLEAR STEP REQUEST 
          LPC    6777 
          STD    SC 
          LDC    SCRL        WRITE SCRL 
          CWD    SC 
          RJM    RSC         READ S/C REGISTER(S) 
 UBS5     LDC    SCRL        CHECK STEP MODE
          CRD    SC 
          LDD    SC 
          SHN    21-10
          PJN    UBS6        IF STEP NOT SET
          LDN    0           SET CONDITION HISTORY
          STD    T2 
          LJM    UBS1        TEST POWER/ENVIRONMENTAL BITS
  
 UBS6     LDC    0           LOG PRELIMINARY MESSAGE
 UBSB     EQU    *-1         (MESSAGE ADDRESS)
          NJN    UBS8        IF TWO MESSAGES TO BE LOGGED 
 UBS7     LDN    0           CLEAR TWO MESSAGE INDICATION 
          STM    UBSB 
          LDC    MSGD-6 
 UBS8     ADC    ERLN 
          RJM    DFM
          LDM    UBSB 
          NJN    UBS7        IF ALL MESSAGES NOT LOGGED 
          STD    CM+2        CLEAR INPUT FILE SCHEDULING FLAG 
          MONITOR RSJM       REQUEST SCHEDULER
          RJM    PTP         PERFORM TIME PROCESSING
          LJM    DPP         DROP PP
  
  
*         MESSAGE ADDRESS TABLE 
  
 UBSC     CON    MSGD 
          CON    MSGE 
          CON    MSGF 
          CON    MSGG 
  
  
*         ERROR LOG MESSAGES. 
  
 MIDA     CON    2RSR        MESSAGE ID 
 TIMA     VFD    60/0 
 MSGD     DATA   C* POWER/ENVIRONMENT NORMAL.*
 MIDB     CON    2RSR        MESSAGE ID 
          VFD    60/0        TIME (READ BY ROUTINE *PEF*) 
 MSGE     DATA   C* POWER FAILURE.* 
 MIDC     CON    2RSR        MESSAGE ID 
 MSGF     DATA   C* SHUTDOWN IMMINENT.* 
 MIDD     CON    2RSR        MESSAGE ID 
          VFD    60/0        TIME (READ BY ROUTINE *PEF*) 
 MSGG     DATA   C* POWER DOWN.*
          SPACE  4,10 
**        TSCR - TABLE FOR THE CONTENTS OF THE S/C REGISTERS. 
* 
*         THIS TABLE CONTAINS THE CONTENTS OF THE S/C REGISTER(S).
*         THE CHANNEL 16 REGISTER, WORDS 16 - 0, FIRST AND THE
*         CHANNEL 36 REGISTER, WORDS 16 - 0, NEXT.
  
  
 TSCR     EQU    *           S/C REGISTER TABLE 
 TSCRL    EQU    TSCR+4*NSCB LWA+1 OF S/C REGISTER TABLES 
 PSC      SPACE  4,10 
**        PCS - PRESET FOR 1SC. 
* 
*         USES   CH, CH+1, ER, NP, CM - CM+4. 
* 
*         CALLS  CFP, PRS.
  
  
*         CYBER 70 INITIALIZATION.
  
 PSC7     SOD    CH          CHANGE TO INTERLOCK REGISTER 
          SOM    ODWA 
          SOM    ODWB 
          LDN    PSNI        ENABLE CYBER 70 POWER FAILURE CHECKING 
          STM    TPEA 
          LDN    SSTL        CHECK FOR SCR SIMULATION 
          CRD    CM 
          LDD    CM+3 
          SHN    21-3 
          MJN    PSC8        IF NOT SIMULATING SCR
          LDN    PSNI        ENABLE SIMULATED ENVIRONMENT CHECKING
          STM    TPEC 
          UJN    PSCX        RETURN 
  
 PSC8     LDC    2RIR        CHANGE MESSAGE IDENTIFICATION
          STM    MIDA 
          STM    MIDB 
          STM    MIDC 
          STM    MIDD 
          LDC    UJNI+2      DISABLE FATAL ERROR CHECKING 
          STM    SEPA 
  
 PSC      SUBR               ENTRY/EXIT 
          LDC    2RSC        * 1SC - CALL ERROR.* 
          STM    PRSA+1 
          RJM    PRS         COMMON PRESET
          LDN    CHSC        SET SCR CHANNELS 
          STD    CH 
          LDN    0
          STD    CH+1 
          STD    ER          CLEAR SCR ERROR FLAG 
          STD    NP          INITIALIZE PHYSICAL PP COUNT 
          LDN    EABLL       ELEMENT ATTRIBUTE BLOCK LENGTH 
          STD    T1 
          LDK    EABL        READ MAINFRAME ATTRIBUTE BLOCK 
          CRM    EABB,T1
          LDN    2           READ I/O SYSTEM ENTRY
          STD    T1 
          LDM    EABB+IOEI*5+1  GET ADDRESS OF VARIABLE IOU ENTRY 
          SCN    77 
          SHN    6
          ADM    EABB+IOEI*5+0
          SHN    6
          CRM    VMAB,T1
          LDN    0
          STD    T1 
 PSC0.1   LDN    12          INITIALIZE INDEX FOR BYTE
          STD    T3 
          LDM    VMAB+1*5,T1 TEST BYTE FOR PP COUNT 
          STD    T4 
 PSC0.2   LDD    T4 
          SHN    21-0 
          STD    T4 
          MJN    PSC0.3      IF PHYSICAL PP NOT PRESENT 
          AOD    NP          INCREMENT PHYSICAL PP COUNT
 PSC0.3   SOD    T3 
          NJN    PSC0.2      IF MORE PP BITS TO TEST
          AOD    T1 
          LMN    1
          ZJN    PSC0.1      IF NEXT BYTE TO PROCESS
          LDM    TFEM,MF     SET SCR FATAL ERROR MASK 
          STM    CFEA 
          LDM    TABM,MF     SET SCR ACTIVE BIT MASK
          STM    RSCB 
          LDD    MF 
          NJN    PSC1        IF NOT CYBER 70
          LJM    PSC7        CONTINUE CYBER 70 PRESET 
  
*         CYBER 170, 700, 865/875 INITIALIZATION. 
  
 PSC1     LDD    MF 
          SBN    MF176A 
          MJN    PSC2        IF NOT CYBER 176 
          RJM    CFP         CHECK FOR *FLPP* ERROR 
          LDN    INB6        CLEAR INACTIVE BITS IN SCR BYTE 2
          UJN    PSC4        CHECK NUMBER OF S/C REGISTERS
  
 PSC2     LDD    MI+1 
          LPN    3
          ZJN    PSC5        IF DUAL CPU PRESENT
          LPN    1
          ZJN    PSC3        IF CPU 0 ON, CPU 1 OFF OR UNDEFINED
          LDN    INB0&INB1   CLEAR INACTIVE BIT IN SCR FOR CPU 0
 PSC3     LMN    INB1        CLEAR INACTIVE BIT IN SCR FOR CPU 1
 PSC4     RAM    RSCD 
          STM    RSCC 
 PSC5     LDD    NP          CHECK NUMBER OF S/C REGISTERS
          SBN    13 
          MJN    PSC6        IF ONLY 1 S/C REGISTER 
          LDN    36          ENABLE SECOND REGISTER CHECKING
          STD    CH+1 
 PSC6     LJM    PSCX        RETURN 
          SPACE  4,10 
**        COMMON PRESET.
  
  
          PRESET
 PRESET   HERE
  
 PRS13    LJM    PRSX        EXIT PRESET
 CFP      SPACE  4,10 
**        CFP - CHECK FOR *FLPP* ERROR. 
* 
*         EXIT   SCANNER POSITIONED TO *FLPP* WITH ERROR. 
* 
*         USES   T1 - T3. 
  
  
 CFP2     LDD    T3          CHECK NEXT BIT 
          SHN    -1 
 CFP3     STD    T3 
          LPN    1
          ZJN    CFP4        IF BIT TO BE CLEARED 
          LDC    FCSB&FCCL
 CFP4     LMD    T2 
          OAN    CHSC+40
          IAN    CHSC+40
          AOD    T2          ADVANCE BIT NUMBER 
          LMC    FCCL+SCSL+4
          NJN    CFP2        IF NOT END OF BITS 
          LDN    FCRD+FLPW   READ *FLPP* STATUS 
          OAN    CHSC+40
          IAN    CHSC+40
          LPN    37 
          NJN    CFPX        IF ERROR DETECTED
          AOD    T1          ADVANCE *FLPP* NUMBER
          LMN    20 
          NJN    CFP1        IF NOT END OF *FLPP-S* 
  
 CFP      SUBR               ENTRY/EXIT 
          LDN    1           SET STARTING *FLPP* NUMBER 
          STD    T1 
 CFP1     LDC    FCCL+SCSL   PRESET FUNCTION AND BIT NUMBER 
          STD    T2 
          LDD    T1          SELECT *FLPP*
          UJN    CFP3        ENTER LOOP 
          SPACE  4,10 
 TABM     INDEX              TABLE OF SCR ACTIVE BIT MASKS
          INDEX  MF70,ABM0   CYBER 70 
          INDEX  MF170,ABM0  CYBER 170
          INDEX  MF700,ABM7  CYBER 170 - 700 SERIES 
          INDEX  MF865,ABM8  CYBER 170 - 865
          INDEX  MF875,ABM8  CYBER 170 - 875
          INDEX  MF176A,ABM6 CYBER 176 LEVEL A
          INDEX  MF176B,ABM6 CYBER 176 LEVEL B
          INDEX  MFMAX
          SPACE  4,10 
 TFEM     INDEX              TABLE OF SCR FATAL ERROR MASKS 
          INDEX  MF70,FEM0   CYBER 70 
          INDEX  MF170,FEM0  CYBER 170
          INDEX  MF700,FEM7  CYBER 170 - 700 SERIES 
          INDEX  MF865,FEM8  CYBER 170 - 865
          INDEX  MF875,FEM8  CYBER 170 - 875
          INDEX  MF176A,FEM6 CYBER 176 LEVEL A
          INDEX  MF176B,FEM6 CYBER 176 LEVEL B
          INDEX  MFMAX
  
  
 EABB     BSS    EABLL*5     ELEMENT ATTRIBUTE BLOCK
 VMAB     BSS    5*2         BUFFER FOR I/O SYSTEM ENTRY
          SPACE  4,10 
          OVERFLOW  PPFW,EPFW 
          TTL    1MB/1MP - PROCESS SCR CHANNEL ERRORS.
          TITLE 
          IDENT  1MP,PPFW 
          QUAL   CCE
*COMMENT 1MB - CHANNEL ERROR PROCESSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       1MP - PROCESS SCR CHANNEL ERRORS. 
* 
*         P. D. HAAS.        82/11/30.
          SPACE  4,10 
***              *1MP* IS CALLED BY *MTR* TO PERFORM PRELIMINARY
*         CHECKS ON THE SCR.  IT RESIDES IN THE RPL TO ENSURE A 
*         SUCCESSFUL LOAD IN CASE OF CHANNEL ERRORS ON A SYSTEM 
*         DEVICE, AND AS SUCH SHOULD BE KEPT AS SMALL AS POSSIBLE.
* 
*                *1MP* CHECKS THE SCR FOR CHANNEL ERRORS, AND IF
*         NONE ARE FOUND OR IF NO SCR EXISTS, CALLS *1MB*.  IF
*         CHANNEL ERRORS ARE INDICATED, *1MP* SCANS THE EST TO
*         DETERMINE IF SAID CHANNEL IS ASSOCIATED WITH MASS STORAGE 
*         EQUIPMENT.  IF SO, *1DS* WILL BE CALLED TO REMOVE THE CHANNEL 
*         FROM SYSTEM USE.
* 
*                UPON COMPLETION, *1MP* LOADS *1MB*.  CHANNEL 
*         ERRORS ASSOCIATED WITH NON MASS STORAGE EQUIPMENT ARE 
*         IGNORED.
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMS1DS 
          SPACE  4,10 
****      DIRECT CELL USAGE.
  
  
 CH       EQU    IR+3        CHANNEL NUMBER 
****
          TITLE  MAIN PROGRAM.
          ORG    PPFW 
  
  
 CCE      RJM    PRS         PRESET PROGRAM 
          IJM    CCE2,CHSC   IF NO SCR
          LCN    0           CHANNEL 00 IS LEAST SIGNIFICANT BIT
          STD    CH 
          LDN    FCRD+CPEW   READ CHANNEL STATUS
          OAN    CHSC 
          IAN    CHSC 
          ZJN    CCE1        IF NO PARITY ERRORS
          RJM    CMC         CHECK MASS STORAGE CHANNELS
 CCE1     IJM    CCE2,CHSC+20  IF NO UPPER CHANNEL BANK 
          LDN    20-1        CHANNEL 20 IS LEAST SIGNIFICANT BIT
          STD    CH 
          LDN    FCRD+CPEW   READ CHANNEL STATUS
          OAN    CHSC+20
          IAN    CHSC+20
          ZJN    CCE2        IF NO PARITY ERRORS
          RJM    CMC         CHECK MASS STORAGE CHANNELS
 CCE2     LDD    IA          STORE INPUT REGISTER 
          CWD    IR 
          LJM    PPR         LOAD AND EXECUTE 
          TITLE  SUBROUTINES. 
 CMC      SPACE  4,15 
**        CMC - CHECK MASS STORAGE CHANNEL. 
* 
*         ENTRY  (A) = CHANNEL STATUS WORD (BYTE) FROM SCR. 
*                (CH) = INITIAL CHANNEL VALUE FOR BANK 0 OR 1.
*                (EM) = LAST MASS STORAGE EST ORDINAL + 1.
* 
*         USES   T1, T4, T5, CM - CM+4, CN - CN+4.
* 
*         MACROS EXECUTE, MONITOR, SFA. 
  
  
 CMC2     SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CN 
          LDD    CN 
          SHN    21-13
          PJN    CMC6        IF NOT MASS STORAGE
          LDD    CN+1 
          SHN    21-13
          PJN    CMC3        IF PRIMARY CHANNEL ACCESS IS DISABLED
          SHN    13-21
          LMD    CH 
          LPN    37 
          ZJN    CMC4        IF CHANNEL MATCH 
 CMC3     LDD    CN+2 
          SHN    21-13
          PJN    CMC6        IF SECONDARY CHANNEL NOT PRESENT/DISABLED
          SHN    13-21
          LMD    CH 
          NJN    CMC6        IF NOT A MATCH 
  
*         CALL *1DS* TO GLOBALLY DOWN THE CHANNEL.
  
 CMC4     LDD    MA          PLACE *1DS* CALL IN MESSAGE BUFFER 
          CWM    CMCA,ON
          LDN    0           INITIALIZE RETRY COUNT 
          STD    T1 
 CMC5     STD    CM+1 
          EXECUTE  1DS,=
          MONITOR  RPPM      CALL *1DS* 
          LDD    CM+1 
          NJN    CMC7        IF PP ASSIGNED 
          AOD    T1          INCREMENT RETRY COUNT
          SHN    -3 
          ZJN    CMC5        IF RETRY LIMIT NOT REACHED 
          UJN    CMCX        RETURN 
  
 CMC6     AOD    T5          ADVANCE EST ORDINAL
          LMD    EM 
          NJP    CMC2        IF MORE DEVICES TO PROCESS 
 CMC7     LDD    T4 
          NJN    CMC1        IF MORE CHANNELS WITH ERROR
  
 CMC      SUBR               ENTRY/EXIT 
          STD    T4 
 CMC1     AOD    CH          ADJUST CHANNEL NUMBER
          STM    CMCA+3      STORE CHANNEL NUMBER IN *1DS* CALL 
          LDD    T4 
          SHN    21-0        CHECK CHANNEL FLAG 
          STD    T4 
          PJN    CMC1        IF NOT CHANNEL WITH ERROR
          LDN    NOPE        INITIALIZE EST ORDINAL FOR SEARCH
          STD    T5 
          UJP    CMC6        BEGIN EST SCAN 
  
  
 CMCA     VFD    18/3R1DS,6/,6/0,6/DWNF,12/0,12/0 
          TITLE  PRESET PROGRAM.
 PRS      SPACE  4,10 
**        PRS - PRESET PROGRAM. 
* 
*         EXIT   (EM) = LAST MASS STORAGE EST ORDINAL + 1.
* 
*         USES   EM, CM - CM+4, IR - IR+1, MI - MI+4. 
* 
*         MACROS MONITOR. 
  
  
 PRS3     LDK    ESTP 
          CRD    CM 
          LDD    CM+3        SET LAST MASS STORAGE EST ORDINAL + 1
          STD    EM 
  
 PRS      SUBR               ENTRY/EXIT 
          LDN    NCPL 
          CRD    CM 
          ADN    MABL-NCPL
          CRD    MI 
          AOD    CM+1        CHECK CONTROL POINT
          SHN    7
          LMD    CP 
          ZJN    PRS1        IF CALLED BY SYSTEM
          MONITOR  ABTM      ABORT JOB
          LJM    PPR         EXIT TO PP RESIDENT
  
 PRS1     LDD    MI+1 
          SHN    -6 
          LPN    41 
          LMN    1
          ZJN    PRS2        IF LOWER 800 SERIES MACHINE
          LDN    1RS-1RM
          RAD    IR 
          LDN    1RC-1RB
 PRS2     SBN    1RP-1RB
          SHN    6
          RAD    IR+1 
          UJP    PRS3        CONTINUE 
          SPACE  4,10 
          OVERFLOW  PPFW,EPFW,CMR 
          TTL    1MB/2TH - PROCESS COMMON TOP-OF-HOUR FUNCTIONS.
          TITLE 
          QUAL   IHD
          IDENT  2TH,IHDX 
*COMMENT 1MB - TOP-OF-HOUR PROCESSOR. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          SPACE  4,10 
***       2TH - TOP-OF-HOUR PROCESSOR.
* 
*         J. M. MAREK        87/11/24.
          SPACE  4,10 
***              *2TH* IS CALLED BY *1MB* AND *1SC* TO PERFORM
*         THE FOLLOWING TOP-OF-HOUR TASKS - 
* 
*         - ISSUE HOUR AND DAY MESSAGES TO THE DAYFILES.
*         - CLEAR THE RELOAD COUNT IN THE CONTROLWARE TABLE.
*         - CLEAR COUNTS IN THE EST AND MST.
*         - LOG ESM AND STORNET SECDED AND STATUS INFORMATION.
          SPACE  4,10 
*         ASSEMBLY CONSTANTS. 
  
  
 FRDL     EQU    1010B       FUNCTION - READ ESM SECDED LOG 
 FRST     EQU    1011B       FUNCTION - RESET ESM SECDED LOG
 FRSP     EQU    1040        FUNCTION - READ SIDE DOOR PORT STATUS
 FCSP     EQU    1203        FUNCTION - CLEAR SIDE DOOR PORT STATUS 
 DCSP     EQU    1000        DATA - CLEAR SIDE DOOR PORT STATUS 
 NESB     EQU    83D         NUMBER OF ESM SECDED LOG BYTES 
 OVLO     MAX    /1MB/BCMR+5,/1SC/TSCRL+5 
  
          ORG    OVLO 
 IHD      SPACE  4,10 
**        IHD - ISSUE HOUR AND DATE TO DAYFILES.
* 
*         EXIT   HOUR AND DATE MESSAGE ISSUED TO DAYFILES.
* 
*         USES   CM+1.
* 
*         CALLS  DFM. 
  
  
 IHD      SUBR               ENTRY/EXIT 
          LDN    DTEL        SET DATE IN DAYFILE MESSAGES 
          CRM    IHDA+7,ON
          SBN    1
          CRM    IHDB+3,ON
          LDC    IHDA        ISSUE MESSAGE TO SYSTEM DAYFILE
          RJM    DFM
          LDC    ERLN+IHDA   ISSUE MESSAGE TO ERROR LOG 
          RJM    DFM
          LDC    ACFN+IHDB   ISSUE MESSAGE TO ACCOUNT FILE
          RJM    DFM
          UJN    IHDX        RETURN 
  
  
 IHDA     DATA   C*SYSTEM DATE:  NNNNNNNNNN*
 IHDB     DATA   C*SIDT, NNNNNNNNNN*
 CCO      SPACE  4,10 
**        CCO - CLEAR COUNTS IN EST/MST ENTRIES.
* 
*         EXIT   RELOAD COUNTS IN CONTROL MODULE EST ENTRIES CLEARED
*                     IF NOT EQUAL TO RELOAD LIMIT. 
*                RECOVERED AND UNRECOVERED ERROR COUNTS CLEARED IN EACH 
*                     MST IN WHICH THE *1SJ* PROCESSED BIT IS NOT SET.
* 
*         USES   CM - CM+4, CN - CN+4, T0 - T7. 
* 
*         MACROS MONITOR, SFA.
  
  
 CCO      SUBR               ENTRY/EXIT 
          LDN    ESTP        INITIALIZE FOR EST SEARCH
          CRD    T0 
 CCO1     SOD    T0+2        DECREMENT EST ORDINAL
          STD    CM+1 
          ZJN    CCOX        IF END OF EST
  
*         CLEAR CONTROL MODULE RELOAD COUNT IN EST. 
  
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    T3 
          ADK    EQAE-EQDE
          CRD    CN 
          LDD    T3+3 
          LMC    2RCM 
          NJN    CCO2        IF NOT *CM* DEVICE 
          STD    CM+4 
          LDD    CN+2 
          SHN    -6 
          LPN    7
          ZJN    CCO2        IF NO RELOAD COUNT 
          SBN    /MSP/CRTH
          ZJN    CCO2        IF RELOAD LIMIT
          LDN    SB2S 
          STD    CM+2 
          LDC    7077 
          STD    CM+3 
          MONITOR  SEQM      CLEAR RELOAD COUNT 
  
*         CLEAR THRESHOLD COUNTS IN MST.
  
 CCO2     LDD    T3 
          SHN    21-13
          PJN    CCO1        IF NOT MASS STORAGE DEVICE 
          LDD    T3+4        SET MST ADDRESS
          SHN    3
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDN    2           SET NUMBER OF REQUESTS 
          STD    CM+1 
          LDD    MA 
          CWM    CCOA,CM+1
          MONITOR  UTEM 
          LDD    T3+4        SET MST ADDRESS
          SHN    3
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDN    2           SET NUMBER OF REQUESTS 
          STD    CM+1 
          LDD    MA 
          CWM    CCOB,CM+1
          MONITOR  UTEM 
          LJM    CCO1        PROCESS NEXT EST ENTRY 
  
  
 CCOA     VFD    1/1,5/CTLL,6/1,6/11D,42/0  VERIFY *1SJ* BIT NOT SET
          VFD    1/0,5/CTLL,6/11D,6/0,42/0  CLEAR ERROR COUNT 
 CCOB     VFD    1/1,5/CTLL,6/1,6/23D,42/0  VERIFY *1SJ* BIT NOT SET
          VFD    1/0,5/CTLL,6/11D,6/12D,42/0  CLEAR ERROR COUNT 
 CRC      SPACE  4,10 
**        CRC - CLEAR RELOAD COUNTS IN CONTROLWARE TABLE. 
* 
*         USES   CM - CM+4, CN - CN+4, T2 - T7. 
* 
*         MACROS MONITOR. 
  
  
 CRC      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CN 
          ADN    CHTP-ZERL   FETCH CHANNEL TABLES POINTER 
          CRD    T3+1 
          LDN    1           PARAMETER COUNT FOR *UTEM* REQUEST 
          STD    T4 
          LDN    CTALL       SET CONTROLWARE TABLE LENGTH 
          STD    T3 
          SHN    1           CONTROLWARE TABLE OFFSET 
          RAD    T7 
          SHN    -14         SET CONTROLWARE TABLE ADDRESS
          RAD    T6 
          SHN    14 
          LMD    T7          READ CONTROLWARE TABLE 
          CRM    IBMH,T3
          LDN    0           INITIAL CHANNEL VALUE
          STD    T5 
          LDC    IBMH-1      PRESET BYTE ADDRESS FOR TABLE SCAN 
          STD    T2 
          LDN    3           RELOAD COUNT FIELD WIDTH 
          STD    CN 
 CRC1     AOD    T2          ADVANCE CONTROLWARE TABLE SEARCH 
          LDI    T2 
          SHN    -6          POSITION RELOAD COUNT FIELD
          LPN    7
          ZJN    CRC2        IF NO COUNT
          LMN    /MSP/CRTH
          ZJN    CRC2        IF RELOAD LIMIT
          LDM    CRCA,T5
          STD    CN+1        DEFINE RELOAD COUNT FIELD IN WORD
          LDD    MA 
          CWD    T3          *UTEM* REQUEST TO (CM - CM+4)
          CRD    CM 
          CWD    CN          STORE PARAMETER WORD 
          MONITOR  UTEM 
 CRC2     AOD    T5          ADVANCE CHANNEL BYTE INDEX 
          LMN    5
          NJN    CRC1        IF NOT 5 CHANNELS CHECKED
          STD    T5 
          AOD    T7          ADVANCE CONTROLWARE TABLE ADDRESS
          SHN    -14
          RAD    T6 
          SOD    T3 
          NJN    CRC1        IF MORE CHANNELS TO CHECK
          LJM    CRCX        RETURN 
  
  
 CRCA     BSS    0           RELOAD COUNT FIELD BIT POSITIONS 
          CON    54DS6
          CON    42DS6
          CON    30DS6
          CON    18DS6
          CON    6DS6 
 PES      SPACE  4,10 
**        PES - PROCESS ESM SECDED ERROR LOG. 
* 
*         ENTRY  (MF) = MAINFRAME TYPE. 
* 
*         USES   T1, T2, T5, CM - CM+4, CN - CN+4.
* 
*         CALLS  C2D, DFM, OLB, PCI, WCF. 
* 
*         MACROS DCHAN, RCHAN, RICHI, RSTC, SFA.
  
  
 PES      SUBR               ENTRY/EXIT 
          LDN    NOPE-1      SEARCH FOR EM DEVICE WITH MAINTENANCE PORT 
          STD    T5 
 PES1     AOD    T5          ADVANCE EST ORDINAL
          LMD    EM 
          ZJN    PESX        IF END OF MASS STORAGE DEVICES 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    CN 
          ADK    EQAE-EQDE
          CRD    CM 
          LDD    CN+3 
          LMC    2RDE 
          ZJN    PES3        IF EXTENDED MEMORY ENTRY 
          LMN    2RDP&2RDE
 PES2     NJN    PES1        IF NOT EXTENDED MEMORY ENTRY 
  
 PES3     LDD    CM+2        SAVE MAINTENANCE PORT CHANNEL NUMBER 
          LPN    37 
          ZJN    PES1        IF NO MAINTENANCE PORT DEFINED 
          STD    CN 
          LMD    PN          SET PP NUMBER AND CHANNEL NUMBER 
          STM    IBMF+2 
  
*         REQUEST MAINTENANCE PORT CHANNEL. 
  
          RJM    PCI         PRESET CHANNEL INSTRUCTIONS
          RICHI              REDEFINE I/O INSTRUCTIONS
          LDC    4000+0      REQUEST CHANNEL, RETURN IF DOWN
          CHTE   *-1
          RCHAN 
          LDD    CM+1 
          SHN    0-13 
          NJN    PES2        IF CHANNEL DOWN
          LDD    CN+4        CHECK EM TYPE
          SHN    3
          ADN    DILL 
          CRD    CM 
          LDD    CM+3 
          SHN    -6 
          LPN    7
          LMN    5
          ZJN    PES3.1      IF ESM 
          LDK    /COMSDFS/HM0173-/COMSDFS/HM0211  STORNET MESSAGE ID
 PES3.1   ADC    /COMSDFS/HM0211  ESM MESSAGE ID
          STM    IBMF 
          LDD    T5          SET EST ORDINAL
          STM    IBMG 
          SHN    -3 
          RJM    C2D         CONVERT UPPER TWO DIGITS 
          STM    PESA+1 
          STM    PESB+1 
          LDD    T5          CONVERT LOWER DIGIT
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    PESA+2 
          STM    PESB+2 
  
*         READ MAINTENANCE CHANNEL STATUS.
  
          AJM    PES5,0      IF CHANNEL IS ACTIVE 
          FNC    FRSP,0 
          LDN    77 
 PES4     IJM    PES6,0      IF ESM MAINTENANCE CHANNEL INACTIVE
          SBN    1
          NJN    PES4        IF NOT TIMED OUT ON INACTIVE 
 PES5     DCN    40 
          LDC    PESA        ISSUE ERROR MESSAGE TO SYSTEM DAYFILE
          RJM    DFM
          LDC    PESA+ERLN   ISSUE ERROR MESSAGE TO ERROR LOG 
          RJM    DFM
          LDD    CN          DROP CHANNEL 
          DCHAN 
          LJM    PES1        RETURN 
  
 PES6     ACN    0
          RJM    WCF         WAIT FOR CHANNEL FULL
          LDN    4
          STD    NB 
          IAM    IBMH,0 
          DCN    40 
          FNC    FCSP,0      CLEAR SIDE DOOR PORT STATUS
          LDK    DCSP 
          ACN    0
          OAN    0
          LDC    /COMSDFS/HS0101
          STM    IBMF+1 
          RJM    OLB         OUTPUT LOG TO *BML*
          LDN    77 
          FJM    PES5,0      IF CLEAR OPERATION NOT COMPLETE
          DCN    40 
  
*         READ MAINTENANCE CHANNEL STATUS.
  
          FNC    FRDL,0      ISSUE ESM READ FUNCTION
          ACN    0
          RJM    WCF         WAIT FOR CHANNEL FULL
          LDC    NESB 
          STD    NB 
          IAM    IBMH,0      READ LOG TO ESM SECDED TABLE 
          DCN    40 
          ZJN    PES8        IF ALL SECDED DATA READ
          STD    T1          SAVE COUNT OF WORDS NOT READ 
          LDC    NESB-1      PRESET INDEX TO BEGIN CLEARING TABLE 
          STD    T2 
 PES7     LDN    0           CLEAR NEXT ESM TABLE BYTE
          STM    IBMH,T2
          SOD    T2          DECREMENT ESM TABLE INDEX
          SOD    T1          DECREMENT COUNT OF WORDS TO BE CLEARED 
          NJN    PES7        IF MORE WORDS TO CLEAR 
          LDC    PESB        ISSUE ERROR MESSAGE TO SYSTEM DAYFILE
          RJM    DFM
          LDC    PESB+ERLN   ISSUE ERROR MESSAGE TO ERROR LOG 
          RJM    DFM
 PES8     FNC    FRST,0      ISSUE ESM RESET FUNCTION 
          LDD    CN          DROP CHANNEL 
          DCHAN 
          LDC    /COMSDFS/HS0100
          STM    IBMF+1 
          RJM    OLB         OUTPUT LOG TO *BML*
          LJM    PES1        RETURN 
  
  
 PESA     DATA   C*EQ000, MAINTENANCE CHANNEL ERROR.* 
 PESB     DATA   C*EQ000, INCOMPLETE SECDED READ.*
 OLB      SPACE  4,15 
**        OLB - OUTPUT LOG TO *BML*.
* 
*         ENTRY  (NB) = NUMBER OF BYTES TO WRITE TO *BML*.
*                (IBMF) = *BML* MESSAGE ID. 
*                (IBMF+1) = *BML* SYMPTOM CODE. 
*                (IBMF+2) = 6/ PP NUMBER, 6/ EM MAINTENANCE CHANNEL.
*                BUFFER *IBMH* CONTAINS *BML* DATA. 
* 
*         USES   T3, T4, CM - CM+4. 
* 
*         CALLS  DFM. 
  
  
  
 OLB      SUBR               ENTRY/EXIT 
          LDN    0
          STM    IBMG+1      CLEAR NOT FIRST MESSAGE/CONTINUATION 
          LDN    ZERL        CLEAR FOR DAYFILE CALL 
          CRD    CM 
          LDD    NB 
          STD    T4 
          SBN    4*5+1
          PJN    OLB3        IF MESSAGE CONTINUES 
 OLB1     LDD    T4          SET BYTE COUNT 
          ADN    2*5
          STD    CM+1 
 OLB2     LDN    0           CLEAR REMAINDER OF MESSAGE 
          STM    IBMH,T4
          AOD    T4 
          SBN    4*5
          MJN    OLB2        IF MORE BYTES TO CLEAR 
          LDM    IBMG+1      CLEAR CONTINUATION BIT 
          SCN    4
          UJN    OLB5        STORE CONTINUATION BIT 
  
 OLB3     LDN    4*5         INITIALIZE MESSAGE OFFSET
          STD    T3 
 OLB4     LDN    6*5         SET MESSAGE LENGTH 
          STD    CM+1 
          LDM    IBMG+1      SET CONTINUATION BIT 
          SCN    4
          LMN    4
 OLB5     STM    IBMG+1 
          LDC    IBMF+BMLN   ISSUE DAYFILE MESSAGE
          RJM    DFM
          LDM    IBMG+1      CHECK CONTINUATION BIT 
          LPN    4
          ZJP    OLBX        IF COMPLETE, RETURN
          LDN    14 
          STM    IBMG+1 
          LDN    0           PRESET *BML* MESSAGE INDEX 
          STD    T4 
 OLB6     LDM    IBMH,T3     MOVE ONE BYTE FROM INPUT TABLE TO *BML*
          STM    IBMH,T4
          AOD    T4          INCREMENT BUFFER INDEX 
          AOD    T3          INCREMENT MESSAGE INDEX
          LMD    NB 
          ZJP    OLB1        IF AT END OF MESSAGE 
          LDD    T4 
          LMN    4*5
          NJN    OLB6        IF NOT AT END OF BUFFER
          UJP    OLB4        OUTPUT BUFFER
 WCF      SPACE  4,10 
**        WCF - WAIT FOR CHANNEL FULL.
* 
*         *WCF* WAITS 250 MICROSECONDS FOR THE CHANNEL TO BECOME FULL.
* 
*         EXIT   TO *PES5* IF CHANNEL TIMES OUT.
  
  
 WCF      SUBR               ENTRY/EXIT 
          LDM    .DLY        GET DELAY COUNT
 WCF1     FJM    WCFX,0      IF MAINTENANCE CHANNEL FULL
          SBN    1
          NJN    WCF1        IF NOT TIMED OUT 
          LJM    PES5        ISSUE ERROR MESSAGE
  
  
          RSTC               RESTORE I/O INSTRUCTIONS 
 PCI      SPACE  4,10 
**        PCI - PRESET CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (CN) = MAINTENANCE CHANNEL NUMBER. 
*                (CTABLE) = FWA OF CHANNEL TABLE. 
* 
*         EXIT   MAINTENANCE CHANNEL NUMBER IS ADDED TO ALL 
*                CHANNEL INSTRUCTIONS IN SUBROUTINE *PES*.
* 
*         USES   T1, T2.
* 
*         MACROS CHTB.
  
  
 PCI      SUBR               ENTRY/EXIT 
          LDC    CTABLE      SET START OF CHANNEL TABLE 
          STD    T1 
 PCI1     LDI    T1 
          ZJN    PCIX        IF AT END OF CHANNEL TABLE 
          STD    T2 
          LDI    T2          GET NEXT CHANNEL INSTRUCTION 
          SCN    37 
          LMD    CN          SET MAINTENANCE CHANNEL
          STI    T2 
          AOD    T1 
          UJN    PCI1        CHECK NEXT TABLE ENTRY 
  
  
 CTABLE   CHTB               TABLE TO PRESET ESM I/O INSTRUCTIONS 
 COMMON   SPACE  4,10 
*         COMMON DECKS. 
  
  
*CALL     COMPC2D 
 IBM      SPACE  4,10 
*         *BML* MESSAGE BUFFER. 
  
  
 IBMF     VFD    12/0,12/0,6/0,6/0,24/0  MESSAGE ID/SYMPTOM CODE
 IBMG     VFD    12/0,9/0,1/0,2/0,36/0  MESSAGE CONTINUATION BIT
 IBMH     BSS    0           *BML* MESSAGE BUFFER (4 CM WORDS)
 IBMHL    EQU    4*5         END OF *BML* BUFFER
          SPACE  4,10 
 .1       MAX    IBMHL,NESB,CTALL*5 
          ERRNG  EPFW-IBMH-.1  BUFFER OVERFLOWS ERROR PROCESSOR 
          OVERFLOW  IHDX,EPFW 
          SPACE  4,10 
          TTL    1MB - HARDWARE ERROR PROCESSOR.
          END 
