*DECK DHE 
          IDENT  DHE,/CTI/LOAD
          PERIPH
          BASE   MIXED
          SST 
*CALL,VERS
          TITLE  DHE         CTI DISPLAY HARDWARE ERRORS - "VERS" 
          COMMENT CTI DISPLAY HARDWARE ERRORS - "VERS"
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
 DHE      SPACE  4,10 
*****     DHE - DISPLAY HARDWARE ERRORS 
*         R. E. DENNIS.      78/06/23.
*         J. F. RIAN.        78/06/23.
          SPACE  4,20 
***       *DHE* IS CALLED BY *PCM* OR *IOQ* IF AN ERROR BIT IS
*         FOUND TO BE SET IN THE S/C REGISTER. IF THE ERROR 
*         IS CORRECTABLE (SINGLE BIT SECDED ERROR) *DHE*
*         SIMPLY CLEARS THE ERROR BIT AND LOADS THE ROUTINE 
*         IDENTIFIED BY *DHEP* AS FOLLOWS - 
* 
*                DHEP = 0  *MAD*
*                DHEP = 1  *OIP*
*                DHEP = 2  *EBL*
* 
*         IF THE MAINFRAME IS A C76A, C76B, OR C176,
*         *DHE* WILL ALSO MASTER CLEAR CM RANK II AND 
*         RETEST THE S/C REGISTER BEFORE EXITING. THIS
*         IS NECESSARY BECAUSE A DOUBLE-BIT ERROR MAY BE
*         DETECTED AND HELD IN CM RANK I UNTIL CM RANK II 
*         IS CLEARED. 
* 
*         IF THE ERROR IS UNCORRECTABLE, *DHE* WILL NOT 
*         ALLOW THE DEADSTART PROCESS TO CONTINUE. *DHE*
*         WILL SAVE THE CURRENT S/C REGISTER IMAGE AND THEN 
*         CLEAR ALL ERROR BITS WHICH ARE SET. 
* 
*         ON C76A, C76B, AND C176 MAINFRAMES, CM RANK I 
*         AND RANK II WILL BE MASTER CLEARED IN THAT ORDER. 
* 
*         *DHE* WILL THEN DISPLAY THE SAVED S/C REGISTER
*         CONTENTS ON THE LEFT SCREEN IN THE FOLLOWING FORMAT - 
* 
*                DEADSTART ABORTED - FATAL ERROR
*         SC-0-2 YYYY YYYY YYYY YYYY YYYY.
*         SC-0-1 YYYY YYYY YYYY YYYY YYYY YYYY. 
*         SC-0-0 YYYY YYYY YYYY YYYY YYYY YYYY. 
* 
*         WHERE YYYY IS THE CONTENTS OF A WORD IN THE REGISTER, WORD
*         0 AT THE LOWER RIGHT, WORD 16 AT THE UPPER LEFT,
*         FOLLOWED BY THE EXPLANATIONS, THE CONTENTS OF THE 
*         CHANNEL 36 S/C REGISTER, IF IT EXISTS, IS DISPLAYED IN
*         SIMILAR FORMAT, WITH 1 REPLACING 0 IN THE X FIELD OF
*         SC-X-Y.  FINALLY, THE EXPLANATIONS OF THE CHANNEL 
*         36 ERROR BITS CURRENTLY SET ARE DISPLAYED.  OVERFLOW FROM 
*         THE LEFT DISPLAY SCREEN IS DISPLAYED ON THE RIGHT SCREEN, 
*         WITH AN INFORMATIVE MESSAGE DISPLAYED AT THE END OF THE 
*         MESSAGES ON THE LEFT SCREEN.  IF ALL OF THE ERROR MESSAGES
*         CANNOT FIT ON THE TWO SCREENS, THE MESSAGES NOT SHOWING 
*         WILL APPEAR AS OTHERS ARE CLEARED.
* 
* 
          EJECT 
**        COMMON DECKS
*CALL COMPMAC 
*CALL COMSCPA 
*CALL COMSCTI 
*CALL COMSSCR 
*CALL COMPCHI 
          SPACE  4,10 
*         CHANNEL EQUIVALENCES. 
  
  
 CH       EQU    10          DISPLAY CHANNEL
 IC       EQU    15          INTERLOCK REGISTER CHANNEL 
 SC       EQU    16          S/C REGISTER CHANNEL 
 CHSC     EQU    SC 
 MC       EQU    0           MAINTENANCE CHANNEL
          SPACE  4
*         ASSEMBLY CONSTANTS. 
  
  
 EBUFL    EQU    2000        ERROR MESSAGE BUFFER LENGTH
 YCUL     EQU    7776        Y COORDINATE UPPER LIMIT 
 YCIN     EQU    12          Y COORDINATE INCREMENT 
 YCLC     EQU    7012        Y COORDINATE LEFT SCREEN CUTOFF
  
  
*         INSTRUCTIONS USED AS CONSTANTS. 
  
  
 LJMI     EQU    0100        LJM INSTRUCTION
 UJNI     EQU    0300        UJN INSTRUCTION
 LDNI     EQU    1400        LDN INSTRUCTION
 IANI     EQU    7000        IAN INSTRUCTION
 IAMI     EQU    7100        IAM INSTRUCTION
 OANI     EQU    7200        OAN INSTRUCTION
 LCNI     EQU    1500B       LCN INSTRUCTION                             DIMA222
 STDI     EQU    3401B       STD INSTRUCTION                             DIMA222
 STII     EQU    4401B       STI INSTRUCTION                             DIMA222
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
          ORG    /CTI/LOAD
 T0       EQU    0
 T1       EQU    1
 T2       EQU    2
 T3       EQU    3
 T4       EQU    4
 T5       EQU    5
 T6       EQU    6
 T7       EQU    7
  
 BA       CON    SC0B        S/C REGISTER CONTENTS BUFFER ADDRESS 
 NO       CON    0           CHANNEL 36 S/C REGISTER FLAG 
 TA       CON    TEMA        ADDRESS OF MESSAGE ADDRESS TABLE (TEMA)
 BN       CON    0           BIT NUMBER 
 FF       CON    0           FATAL ERROR FLAG 
 IL       CON    0           1 = IDLE LOOP SENT TO PP10 
  
 RN       CON    0           REGISTER NUMBER
 MS       CON    0           MESSAGE ADDRESS
 XS       CON    6140        X COORDINATE FOR REGISTER DISPLAY
 XE       CON    6160        X COORDINATE FOR MESSAGE DISPLAY 
 XK       CON    6060        X COORDINATE FOR KEYBOARD INPUT DISPLAY
 YC       CON    7764        Y COORDINATE 
  
          BSS    60-* 
  
  
*         COMPSCE REQUIRED DIRECT LOCATIONS.
  
  
 C1       CON    0
 C2       CON    0
 FW       CON    EBUF        FWA OF ERROR MESSAGE BUFFER
 LW       CON    EBUFL       LWA+1 OF ERROR MESSAGE BUFFER
 AM       CON    0           ADDRESS OF ERROR MESSAGE 
 TE       CON    TEMA        ADDRESS IN TABLE TEMA
 BT       CON    0           FIRST BIT IN WORD BIT NUMBER 
 BW       CON    0           BIT NUMBER WITHIN WORD 
  
 CB       CON    0           CURRENT BIT NUMBER 
 WC       CON    0           S/C REGISTER WORD CONTENTS 
 RW       CON    FCRD        READ CURRENT WORD FUNCTION 
 CT       CON    0           NOT USED BIT TABLE FLAG
  
****
  
  
          EJECT 
          TITLE  DHE - MAIN PROGRAM.
**        DHE -  MAIN PROGRAM.
  
  
          ORG    /CTI/TRAN
  
 DHE      RJM    PRS         PRESET 
          RJM    RSC         READ S/C REGISTER(S) 
          RJM    CLE         CLASSIFY ERRORS
          LDD    FF 
          NJN    DHE2        IF FATAL ERRORS
          RJM    CEB         CLEAR ERRORS 
          LDM    /CPA/OPTN
          SHN    -11
          LPN    3
          ZJN    DHE1        IF NOT A CYBER 176 
          RJM    RSC         READ S/C REGISTER(S) 
          RJM    CLE         CLASSIFY ERRORS
          LDD    FF 
          NJN    DHE2        IF FATAL ERRORS
          RJM    CEB         CLEAR ERRORS 
 DHE1     LJM    LNP         LOAD NEXT PROGRAM
  
*         SET UP ERROR MESSAGES.
  
 DHE2     LDM    /CPA/OPTN
          SHN    -11
          LPN    3
          ZJN    DHE2.5      IF NOT A CYBER176
*                            THE FOLLOWING IDLE PP10 CODE 
*                            SEQUENCE IS REQUIRED TO
*                            RELEASE PP10 FROM THE SCANNER
*                            CHANNEL ON A C176.  THIS 
*                            CONDITION WAS ESTABLISHED IN 
*                            PRESET OF DHE. 
          ACN.   CH 
          ACN.   MC 
          LDN    DHEAL
          OAM.   DHEA,CH     IDLE PP10
          FJM.   *,CH 
          DCN.   CH+40
          DCN.   MC+40
 DHE2.5   LDC    EBUFL       SET BUFFER LENGTH
          STD    LW 
          LDC    TEMA        SET FWA OF ADDRESS TABLE 
          STD    TE 
          STD    T1          INITIALIZATION FWA                          DIMA222
 DHE2A    STI    T1                                                      DIMA222
          AOD    T1                                                      DIMA222
          LMC    /CTI/IPLB   INITIALIZATION LWA                          DIMA222
          NJN    DHE2A                                                   DIMA222
          LDC    EBUF        SET BUFFER FWA 
          RJM    SCE         PROCESS S/C REGISTER ERRORS
          RJM    HPP                                                     DIMA222
          RJM    CEB         CLEAR ERRORS 
          LDC    FCCA        CLEAR ALL BITS                              DIMA222
          OAN    SC+40B+20B                                              DIMA222
          IAN    SC+40B+20B                                              DIMA222
          LDC    FCCA        CLEAR ALL SCR0 CONTROL BITS
          OAN    SC+40B                                                  DIMA222
          IAN    SC+40B                                                  DIMA222
  
*         DISPLAY CHANNEL 16 S/C REGISTER AND ERROR MESSAGES. 
  
 DHE3     LDC    YCUL-YCIN   SET Y COORDINATE 
          STD    YC 
          LDC    7000        SELECT LEFT SCREEN 
          STM    DCLA 
          LDC    SC0B        SET CHANNEL 16 S/C REGISTER BUFFER 
          STD    BA 
          LDC    DMSC        *DEADSTART ABORTED - FATAL ERROR.* 
          STD    MS 
          LDC    6000+7*10
          RJM    DCL
          LCN    YCIN        SKIP ONE LINE
          RAD    YC 
          LDN    0           DISPLAY REGISTER CONTENTS
          RJM    DRC
          LDC    TEMA        SET ADDRESS OF MESSAGE ADDRESS TABLE 
          STD    TA 
          LDN    0           DISPLAY ERROR MESSAGES 
          RJM    DEM
  
*         DISPLAY CHANNEL 36 S/C REGISTER AND ERROR MESSAGES. 
  
          LDD    NO 
          ZJN    DHE3        IF NO CHANNEL 36 S/C REGISTER
          LDC    SC1B        SET BUFFER ADDRESS FOR CHANNEL 36 REGISTER 
          STD    BA 
          LDN    1           DISPLAY REGISTER CONTENTS
          RJM    DRC
          LDN    1           DISPLAY ERROR MESSAGES 
          RJM    DEM
          LJM    DHE3 
  
 DHEA     BSSZ   1           PP10 IDLE PROGRAM
          CON    0300B
 DHEAL    EQU    *-DHEA 
 LNP      SPACE  4,15 
**        LNP - LOAD NEXT PROGRAM.
* 
*         ENTRY  (DHEP) = 0  CALL *MAD*.
*                       = 1  CALL *OIP*.
*                       = 2  CALL *EBL*.
* 
*         EXIT   TO SPECIFIED PROGRAM.
* 
*         USES   T1.
* 
*         CALLS  CDS. 
  
  
 LNP      LDM    LNPE        RESTORE /CPA/OPTN WORD 
          STM    /CPA/OPTN
          LDM    /CTI/DHEP
          STD    T1 
          SBN    3
          MJN    LNP1        IF VALID PROGRAM NUMBER
 LPN.1    FNC.   7001,CH     FUNCTION DISPLAY 
          ACN.   CH 
          LDD    XE          OUTPUT X COORDINATE
          OAN.   CH 
          LDD    YC          OUTPUT Y COORDINATE
          OAN.   CH 
          LDC    MSGAL
          OAM.   MSGA,CH     OUTPUT MESSAGE 
          FJM.   *,CH 
          DCN.   CH 
          SBN    40B         DELAY TO REDUCE INTENSITY
          MJN    *-1
          UJN    LPN.1       LOOP ON DISPLAY
 LNP1     RJM    CDS         CLEAR DISPLAY
          LDM    LNPA,T1
          LJM    /CTI/CDEP   CALL DRIVER
  
 MSGA     EQU    *
          DATA   H*INVALID PROGRAM NUMBER*
 MSGAL    EQU    *-MSGA 
  
 LNPA     CON    LNPB 
          CON    LNPC 
          CON    LNPD 
  
 LNPB     CON    /CTI/LOAD   CDIB 
          CON    /CTI/TRAN   CDTA 
          CON    0           CDRW 
          DATA   L*MAD*      CDNC 
  
 LNPC     CON    /CTI/LOAD   CDIB 
          CON    /CTI/TRAN   CDTA 
          CON    1           CDRW 
          DATA   L*OIP*      CDNC 
  
 LNPD     CON    /CTI/EBLLOAD   CDIB
          CON    /CTI/EBLLOAD   CDTA
          CON    0           CDRW 
          DATA   L*EBL*      CDNC 
  
 LNPE     BSS    1           SAVED /CPA/OPTN WORD 
          TITLE  PRIMARY SUBROUTINES. 
 DEM      SPACE  4,15 
**        DEM - DISPLAY ERROR MESSAGES. 
* 
*         ENTRY  (A) = 0 IF CHANNEL 16, 1 IF CHANNEL 36.
*                (TA) = ADDRESS IN MESSAGE ADDRESS TABLE. 
*                (XE) = X COORDINATE OF ERROR MESSAGES. 
*                (YC) = Y COORDINATE. 
* 
*         EXIT   (TA) = ADDRESS OF NEXT ADDRESS IN TABLE. 
* 
*         USES   T5, T6, MS, YC.
* 
*         CALLS  CFO, DCL.
  
  
 DEM      SUBR               ENTRY/EXIT 
          SHN    6           SET REGISTER CHECK 
          ADC    2R0
          STD    T5 
          LCN    YCIN        SET Y COORDINATE 
          RAD    YC 
 DEM1     LDI    TA          GET NEXT MESSAGE ADDRESS 
          ZJN    DEMX        IF END OF MESSAGES 
          STD    T6 
          LDI    T6          CHECK IF CORRECT REGISTER
          LMD    T5 
          NJN    DEMX        IF END OF REGISTER MESSAGES
          AOD    T6          SET MESSAGE SECOND WORD ADDRESS
          STD    MS 
          LDD    XE          SET X COORDINATE 
          RJM    DCL         DISPLAY CODED LINE 
          AOD    TA 
          UJN    DEM1        LOOP FOR NEXT MESSAGE
 DRC      SPACE  4,15 
**        DRC - DISPLAY REGISTER CONTENTS.
* 
*         ENTRY  (A) = 0 IF CHANNEL 16, 1 IF CHANNEL 36.
*                (XS) = X COORDINATE FOR REGISTER CONTENTS DISPLAY. 
*                (YC) = Y COORDINATE FOR REGISTER CONTENTS MESSAGE. 
* 
*         USES   T2, T3, T4, MS.
* 
*         CALLS  DCL, PDB, PDC. 
  
  
 DRC      SUBR               ENTRY/EXIT 
          ADC    2R-0        SET REGISTER NUMBER IN MESSAGE 
          STM    DMSA+1 
          LDC    2R-2        SET LINE NUMBER
          STM    DMSA+2 
          LDN    3           BYTE POSITIONS IN FIRST MESSAGE
          STD    T2 
 DRC1     LDC    DMSA+3      MESSAGE INDEX
          STD    T4 
          LDN    3           BYTE POSITION IN SECOND AND THIRD MESSAGES 
          STD    T3 
  
*         SET REGISTER CONTENTS IN MESSAGE. 
  
 DRC2     RJM    PDB         POSITION TO DISPLAY WITH BLANK 
          SOD    T2 
          ZJN    DRC4        IF FIRST MESSAGE BYTES DONE
          RJM    PDC         POSITION TO DISPLAY
          SOD    T3 
          NJN    DRC2        IF NOT END OF MESSAGE
          LDC    2R.         PLACE PERIOD (.) AT END OF MESSAGE 
  
*         DISPLAY MESSAGE.
  
 DRC3     STI    T4 
          AOD    T4 
          LDN    0           END MESSAGE WITH BYTE OF ZEROS 
          STI    T4 
          LDC    DMSA        SET MESSAGE ADDRESS
          STD    MS 
          LDD    XS          SET X COORDINATE 
          RJM    DCL         DISPLAY CODED LINE 
          SOM    DMSA+2      DECREMENT MESSAGE TO NEXT LINE 
          LPN    77          CHECK IF ENTIRE REGISTER DISPLAYED 
          LMN    1R0-1
          NJN    DRC1        IF NOT DONE WITH REGISTER
          LJM    DRCX        RETURN 
  
 DRC4     SOD    T4          TERMINATE MESSAGE WITH PERIOD (.)
          LDI    T4 
          SCN    77 
          LMN    1R.
          UJN    DRC3        LOOP FOR NEXT MESSAGE
 RSC      SPACE  4,10 
**        RSC - READ S/C REGISTER(S). 
* 
*         ENTRY  NONE.
* 
*         EXIT   (SC0B) = CHANNEL 16 S/C REGISTER.
*                (SC1B) = CHANNEL 36 S/C REGISTER.
* 
*         USES   NONE.
* 
*         CALLS  CCH, RER.
  
  
 RSC      SUBR               ENTRY/EXIT 
          LDN    0           CHANGE TO CHANNEL 16 
          RJM    CCH
          LDC    SC0B        SET CHANNEL 16 S/C REGISTER BUFFER 
          RJM    RER         READ REGISTER
          LDD    NO 
          ZJN    RSCX        RETURN IF NO CHANNEL 36 S/C REGISTER 
          RJM    CCH         CHANGE CHANNEL 
          LDC    SC1B        SET CHANNEL 36 S/C REGISTER BUFFER 
          RJM    RER         READ REGISTER
          UJN    RSCX        RETURN 
 RER      SPACE  4,7
**        RER - READ S/C REGISTER.
* 
*         ENTRY  (A) = BUFFER ADDRESS FOR REGISTER CONTENTS.
* 
*         EXIT   S/C REGISTER READ. 
* 
*         USES   T1, BA.
* 
*         CALLS  SFC. 
  
  
 RER      SUBR               ENTRY/EXIT 
          STD    BA 
          LDC    FCRD+NSCB-1 SET CODE TO READ LAST WORD IN REGISTER 
          STD    T1 
 RER1     RJM    SFC         SEND FUNCTION
          STI    BA          STORE IN BUFFER
          AOD    BA 
          SOD    T1          SET NEXT WORD
          PJN    RER1        IF NOT ALL WORDS READ
          UJN    RERX        RETURN 
 CCH      SPACE  4,5
**        CCH - CHANGE CHANNEL. 
* 
*         ENTRY  (A) = 0 IF CHANNEL 16, 1 IF CHANNEL 36.
* 
*         EXIT   CHANNEL CHANGED IN CHANNEL INSTRUCTIONS OF *SFC*.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
 CCH      SUBR               ENTRY/EXIT 
          SHN    4           SET UP OAN INSTRUCTION 
          LMC    OANI+SC+40 
          STM    SFCA 
          LMC    IANI&OANI   SET UP IAN INSTRUCTION 
          STM    SFCB 
          UJN    CCHX        RETURN 
 CDS      SPACE  4,1
**        CDS - CLEAR DISPLAY.
* 
*         ENTRY  PP 10 ON CHANNEL 0.
*                CHANNEL 10 USED FOR DISPLAY. 
* 
*         EXIT   PP 10 ON CHANNEL 10. 
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
 CDS      SUBR               ENTRY/EXIT 
          FNC.   0,CH 
          LDC    1000        DELAY
          SBN    1
          NJN    *-1
          DCN.   CH+40
          LDD    IL 
          ZJN    CDSX        IF IDLE LOOP NOT SENT TO PP10
          ACN.   CH          MOVE PP10 TO CHANNEL 10
          ACN.   0
          DCN.   0+40 
          UJN    CDSX        RETURN 
 CEB      SPACE  4,15 
**        CEB - CLEAR ALL ERROR BITS. 
* 
*         ENTRY  (NO) = 0 IF NO CHANNEL 36 S/C REGISTER.
*                (NO) = 1 IF CHANNEL 36 S/C REGISTER EXISTS.
* 
*         EXIT   ALL ERROR BITS IN S/C REGISTER(S)
*                AND SECDED ERRORS CLEARED. 
* 
*         USES   BN, RN.
* 
*         CALLS  CCH, CLS, SFC. 
  
  
 CEB      SUBR               ENTRY/EXIT 
          LDD    NO          INITIALIZE NOT-BOTH-REGISTERS-CLEARED
          STD    RN 
 CEB1     RJM    CCH         CHANGE CHANNEL 
          LDC    0167B       CLEAR BIT 119                               DIMA222
          STD    BN                                                      DIMA222
          LDD    RN                                                      DIMA222
          RJM    CLS                                                     DIMA222
          RJM    SFC                                                     DIMA222
          LDN    0           SET BIT NUMBER 
          STD    BN 
 CEB2     LDD    RN          CLEAR SECDED ERROR AND FLPP ERROR
          RJM    CLS
          RJM    SFC         SEND FUNCTION
          AOD    BN          ADVANCE BIT NUMBER 
          SBN    NTEB 
          MJN    CEB2        IF NOT ALL ERROR BITS CLEARED
          SOD    RN 
          PJN    CEB1        IF SECOND PPS TO PROCESS 
          UJN    CEBX 
 CFO      SPACE  4,10 
**        CFO - CHECK FOR LEFT SCREEN OVERFLOW. 
* 
*         ENTRY  (YC) = Y COORDINATE VALUE. 
* 
*         EXIT   IF OVERFLOW DETECTED,
*                (DCLA) = 7100 TO SELECT RIGHT SCREEN.
*                (YC) = RESET TO TOP OF SCREEN. 
*                *MORE ON RIGHT SCREEN* DISPLAYED ON LEFT SCREEN. 
* 
*         CALLS  NONE.
  
  
 CFO      SUBR               ENTRY/EXIT 
          LDD    YC          CHECK Y COORDINATE 
          ADC    -YCLC
          PJN    CFOX        IF NOT AT END OF LEFT SCREEN 
          FNC.   7000,CH     DISPLAY *MORE ON RIGHT SCREEN* 
          ACN.   CH 
          LDD    YC 
          OAN.   CH 
          LDN    CFOAL
          OAM.   CFOA,CH
          FJM    *,CH                                                    DIMA222
          DCN    CH                                                      DIMA222
          LDC    7100        SET FUNCTION FOR RIGHT SCREEN
          STM    DCLA 
          LDC    YCUL-YCIN   RESET TOP OF SCREEN
          STD    YC 
          UJN    CFOX        RETURN 
  
 CFOA     CON    6500 
          DATA   C*MORE ON RIGHT SCREEN*
 CFOAL    EQU    *-CFOA 
 CLS      SPACE  4,20 
**        CLS - CLEAR SECDED ERROR BITS AND FLPP ERRORS.
* 
*         ENTRY  (A) .NE. 0 IF CHANNEL 36 FUNCTION. 
*                (BN) = BIT NUMBER. 
* 
*         EXIT   (A) = CLEAR BIT FUNCTION SET FOR BIT (BN). 
*                DOUBLE SECDED ERROR BIT CLEARED FOR CYBER 171 - 175. 
*                CLEAR RANK BIT(S) SET AND CLEARED FOR CYBER 176. 
*                ERRORS FOUND AND CLEARED FOR FLPP-S FOR CYBER 176. 
* 
*         USES   T3.
* 
*         CALLS  CCH, IPN, SFC. 
  
  
*         CLEAR SECDED ERROR ON CYBER 171 - 175.
  
 CLS6     LDD    BN          CHECK IF SECDED ERROR BIT
          SBN    SECD 
          NJN    CLS9        IF NOT SECDED BIT
          LDC    FCCL+SDSC   CLEAR DOUBLE BIT ERROR 
          RJM    SFC         SEND FUNCTION
          UJN    CLS9        CLEAR ERROR BIT
  
*         CLEAR FLPP ERRORS ON CYBER 176. 
  
 CLS7     LDN    0           INITIALIZE (PPU NUMBER TO 1) 
          STD    T3 
          LDC    FCCL+DDFP   CLEAR DEADSTART DUMP BIT 
          RJM    SFC
 CLS8     AOD    T3 
          RJM    ASE         ACTIVATE SCANNER ENABLE
          LDN    DSFP        DEADSTART LOAD PPU FUNCTION
          RJM    DSP
          RJM    CSE         CLEAR SCANNER ENABLE AND CHANNEL 
          LDD    T3 
          LMN    15 
          NJN    CLS8        IF NOT ALL PPU-S 
 CLS9     LDC    FCCL        CLEAR BIT FUNCTION 
          ADD    BN 
  
 CLS      SUBR               ENTRY/EXIT 
          NJN    CLS9        IF CHANNEL 36
          LDM    /CPA/OPTN
          SHN    -11
          LPN    3
          NJN    CLS1        IF A CYBER 176 
          LJM    CLS6 
  
*         CLEAR SECDED ERROR ON CYBER 176.
  
 CLS1     LDD    BN          CHECK CM SECDED ERROR BIT
          SBN    SECD 
          ZJN    CLS4        IF CM SECDED ERROR 
          SBN    PPUE-SECD   CHECK IF PPU ERROR 
          NJN    CLS2        IF NOT PPU ERROR 
          LJM    CLS7 
 CLS2     SBN    LSCD-PPUE   CHECK IF LCM SECDED ERROR BIT
          NJN    CLS9        IF NOT LCM SECDED ERROR
          LDN    FCRD+LDSW   TEST LCME DOUBLE BIT ERROR 
          RJM    SFC
          SHN    21-4 
          PJN    CLS3        IF SINGLE BIT LCME ERROR 
          LDC    FCSB+LCRO   SET LCME RANK 1 ERROR CLEAR BIT
          RJM    SFC
          LDC    FCCL+LCRO   CLEAR LCME RANK 1 ERROR CLEAR BIT
          RJM    SFC
 CLS3     LDC    FCSB+LCRT   SET LCME RANK 2 ERROR CLEAR BIT
          RJM    SFC
          LDC    FCCL+LCRT   CLEAR LCME RANK 2 ERROR CLEAR BIT
          RJM    SFC
          LJM    CLS9 
  
  
 CLS4     LDN    FCRD+CDSW   TEST CM DOUBLE ERROR BIT 
          RJM    SFC         SEND FUNCTION
          SHN    21-3 
          PJN    CLS5        IF SINGLE BIT ERROR
          LDC    FCSB+CCRO   SET CM RANK I CLEAR BIT
          RJM    SFC         SEND FUNCTION
          LDC    FCCL+CCRO   CLEAR CM RANK I CLEAR BIT
          RJM    SFC         SEND FUNCTION
 CLS5     LDC    FCSB+CCRT   SET CM RANK II CLEAR BIT 
          RJM    SFC         SEND FUNCTION
          LDC    FCCL+CCRT   CLEAR CM RANK II CLEAR BIT 
          RJM    SFC
          LJM    CLS9 
          SPACE  4,10 
**        DSP  - DEADSTART FIRST LEVEL PPU-S. 
* 
*         ENTRY  (A)  =  FUNCTION.
* 
*         EXIT   PPU DEADSTARTED AND PPU
*                ERROR STATUS CLEARED.
* 
* 
*         CALLS  SFC,IPN. 
  
  
 DSP      SUBR               ENTRY/EXIT 
          ADC    FCCL 
          STM    DSPB 
          ADC    FCSB-FCCL
          STM    DSPA 
          LDC    FCSB+DSFP   DEADSTART PPU
*         LDC    FCSB+DDFP   DEADSTART DUMP PPU 
 DSPA     EQU    *-1
          RJM    SFC
          LDC    FCCL+DSFP   CLEAR DEADSTART BIT
*         LDC    FCCL+DDFP   CLEAR DEADSTART DUMP BIT 
 DSPB     EQU    *-1
          RJM    SFC
          LDC    FCSB+CPUE   SET *CLEAR PPU* ERROR
          RJM    SFC
          LDC    FCCL+CPUE   CLEAR *CLEAR PPU* ERROR
          RJM    SFC
          LJM    DSPX        RETURN 
          SPACE  4,10 
**        CSE  - CLEAR SCANNER ENABLE AND CHANNEL 
* 
*         ENTRY- SCANNER INTERFACE IS ENABLED AND 
*                SCANNER CHANNEL IS ACTIVE. 
* 
*         EXIT - SCANNER INTERFACE IS DISABLED AND
*                SCANNER CHANNEL IS INACTIVE. 
  
  
 CSE      SUBR               ENTRY/EXIT 
          LDC    FCCL+ENSC   CLEAR SCANNER ENABLE 
          OAN.   SC+40
          IAN.   SC+40
          DCN.   MC+40
          UJN    CSEX        RETURN 
          SPACE  4,10 
**        ASE  - ACTIVATE SCANNER ENABLE. 
* 
*         ENTRY  SCANNER CHANNEL IS INACTIVE AND
*                SCANNER INTERFACE IS DISABLED. 
* 
*                (T3) = PPU NUMBER. 
* 
*         EXIT   ACTIVE SCANNER CHANNEL, PPU NUMBER 
*                INSERTED IN SCR AND SCANNER
*                INTERFACE IS ENABLED.
* 
*         CALLS  IPN
  
  
 ASE      SUBR               ENTRY/EXIT 
          ACN.   MC          ACTIVATE SCANNER CHANNEL 
          RJM    IPN         INSERT PPU NUMBER IN S/C REGISTER
          LDC    FCSB+ENSC   ENABLE SCANNER INTERFACE 
          RJM    SFC
          UJN    ASEX        RETURN 
 IPN      SPACE  4,10 
**        IPN - INSERT FIRST LEVEL PPU NUMBER IN S/C REGISTER.
* 
*         ENTRY  (T3) = FLPP NUMBER.
* 
*         EXIT   (A) = 0. 
* 
*         USES   T1, T2.
* 
*         CALLS  NONE.
  
  
 IPN1     LDD    T1          CHECK NEXT BIT 
          SHN    -1 
 IPN2     STD    T1 
          LPN    1
          ZJN    IPN3        IF BIT TO BE CLEARED 
          LDC    FCSB&FCCL
 IPN3     LMD    T2 
          OAN.   SC+40
          IAN.   SC+40
          AOD    T2          ADVANCE BIT NUMBER 
          LMC    FCCL+SCSL+4
          NJN    IPN1        IF NOT END OF BITS 
  
 IPN      SUBR               ENTRY/EXIT 
          LDC    FCCL+SCSL   PRESET FUNCTION AND BIT NUMBER 
          STD    T2 
          LDD    T3 
          UJN    IPN2        ENTER LOOP 
 DCL      SPACE  4,15 
**        DCL - DISPLAY CODED LINE. 
* 
*         ENTRY  (A) = X COORDINATE.
*                (YC) = Y COORDINATE. 
*                (MS) = MESSAGE ADDRESS.
* 
*         EXIT   (YC) = Y COORDINATE FOR NEXT DISPLAY LINE. 
* 
*         USES   T1.
* 
*         CALLS  CFO, DNL.
  
  
 DCL      SUBR               ENTRY/EXIT 
          STD    T1          SAVE X COORDINATE
          RJM    CFO         CHECK FOR SCREEN OVERFLOW
          FNC.   7000,CH     SELECT LEFT SCREEN, 64 CHARACTERS/LINE 
 DCLA     EQU    *-1
*         FNC.   7100,CH     (IF OVERFLOW ON RIGHT SCREEN)
          ACN.   CH 
          LDD    T1          OUTPUT X COORDINATE
          OAN.   CH 
          LDD    YC          OUTPUT Y COORDINATE
          OAN.   CH 
          LDD    MS          SET MESSAGE ADDRESS
          RJM    DNL         DISPLAY MESSAGE
          DCN.   CH+40
          LCN    YCIN        DECREMENT Y COORDINATE 
          RAD    YC 
          UJN    DCLX        RETURN 
 DNL      SPACE  4,10 
**        DNL - DISPLAY NEXT LINE.
* 
*         ENTRY  (A) = MESSAGE ADDRESS. 
* 
*         EXIT   NONE.
* 
*         USES   T1.
* 
*         CALLS  NONE.
  
  
 DNL      SUBR               ENTRY/EXIT 
          SBN    1
          STD    T1 
 DNL1     AOD    T1 
          LDI    T1 
          OAN.   CH+40
          ZJN    DNLX        IF END OF LINE EXIT
          UJN    DNL1        DISPLAY NEXT WORD
 CLE      SPACE  4,15 
**        CLE - CLASSIFY ERRORS.
* 
*         ENTRY  (SC0B) = CHANNEL 16 S/C REGISTER.
*                (SC1B) = CHANNEL 36 S/C REGISTER.
*                (NO) = 0 IF NO CHANNEL 36 S/C REGISTER.
* 
*         EXIT   (FF) = 0 IF NO FATAL ERROR.
*                     = 1 IF FATAL ERROR. 
* 
*         USES   T7.
* 
*         CALLS  NONE.
  
  
 CLE      SUBR               ENTRY/EXIT 
          LDN    0           CLEAR FATAL ERROR FLAG 
          STD    FF 
          STD    T7          INITIALIZE T7
          LDC    IANI+40B    INITIALIZE S/C CHANNEL 
          STM    CLE5 
          STM    CLE8 
          LDC    OANI+40B    INITIALIZE S/C REGISTER CHANNEL
          STM    CLE4 
          STM    CLE7 
 CLE1     LDM    SC0B+15,T7 
          LPN    17B         MASK OFF SYNDROME BITS 
          NJN    CLE2 
          LDM    SC0B+16,T7 
          NJN    CLE2 
          LDM    SC0B+17,T7 
          NJN    CLE2 
          LDM    SC0B+20,T7 
          NJN    CLE1.1 
          LJM    CLE9 
 CLE1.1   LPC    3767B       CHECK BITS 0 - 2, 4 -10
          ZJN    CLE3 
 CLE2     LJM    CLE10       FATAL ERROR EXIT 
 CLE3     LDM    SC0B+20,T7 
          LPN    10B         CHECK BIT 3
          ZJN    CLE6 
          LDM    SC0B+1,T7   CHECK BIT 183
          SHN    21-3 
          MJN    CLE2        IF FATAL ERROR 
          LDM    FCCL+SECD   CLEAR BIT 3
 CLE4     OAN.   SC+40B 
*         OAN    SC+40B+20B  IF CHANNEL 36
 CLE5     IAN.   SC+40B 
*         IAN    SC+40B+20B  IF CHANNEL 36
 CLE6     LDM    SC0B+20,T7  CHECK BIT 11 
          SHN    21-13
          PJN    CLE9        IF NO ERROR
          LDM    /CPA/OPTN   CHECK IF CYBER 176 
          SHN    -11
          LPN    3
          ZJN    CLE10       IF NOT CYBER 176 
          LDM    SC0B,T7     CHECK BIT 196
          SHN    21-4 
          MJN    CLE10
          LDM    FCCL+LSCD   CLEAR BIT 11 
 CLE7     OAN.   SC+40B 
*         OAN    SC+60B      IF CHANNEL 36
 CLE8     IAN.   SC+40B 
*         IAN    SC+60B      IF CHANNEL 36
 CLE9     LDD    NO          CHECK FOR CHANNEL 36 S/C REGISTER
          NJN    CLE11
          LDD    T7 
          NJN    CLE11       IF CHANNEL 36 ALREADY CHECKED, EXIT
          LDC    NSCB        CHANGE T7 TO INDEX CHANNEL 36 BUFFER 
          STD    T7 
          LDC    IANI+60B    CHANGE FOR CHANNEL 36
          STM    CLE5 
          STM    CLE8 
          LDC    OANI+60B    CHANGE FOR CHANNEL 36
          STM    CLE4 
          STM    CLE7 
          LJM    CLE1        CHECK CHANNEL 36 ERRORS
 CLE10    LDN    1           SET FATAL ERROR FLAG 
          STD    FF 
 CLE11    LJM    CLEX        EXIT 
  
 HPP      SPACE  4,10                                                    DIMA222
**    HPP - HANG PP-S                                                    DIMA222
*                                                                        DIMA222
*         HPP WRITES UPPER CELL OF ALL PP-S TO CLEAR PARITY.             DIMA222
*                                                                        DIMA222
*         CALLS ICN                                                      DIMA222
*                                                                        DIMA222
*         EXIT   (T1) = CHANNEL NO.                                      DIMA222
 HPP      SUBR               ENTRY/EXIT                                  DIMA222
          ACN    CH+40B                                                  DIMA222
          LDN    0                                                       DIMA222
 HPP03    STD    T1          CURRENT CHANNEL                             DIMA222
 HPP04    LDD    T1                                                      DIMA222
          SBN    12B                                                     DIMA222
          MJN    HPP06       IF IN RANGE 1-11                            DIMA222
          NJN    HPP05       IF IN RANGE 20-32                           DIMA222
          LDN    20B                                                     DIMA222
          UJN    HPP03                                                   DIMA222
 HPP05    SBN    32B-12B                                                 DIMA222
          PJN    HPPX        IF DONE,RETURN                              DIMA222
 HPP06    LDC    HPPE        FWA OF CHAN LIST                            DIMA222
          RJM    ICN         INSERT CHANNEL NO.                          DIMA222
 HPPF     ACN    40B                                                     DIMA222
          LDN    0                                                       DIMA222
 HPPG     OAN    0           CHECK FOR A PP                              DIMA222
          LDI    T1          DELAY FOR PP TO TAKE WORD                   DIMA222
          LDN    4                                                       DIMA222
 HPPH     EJM    HPPB,0                                                  DIMA222
          UJN    HPPC        THERE IS NOT A PP                           DIMA222
 HPPB     OAM    HPPD,0      CLEAR UPPER CELL OF PP                      DIMA222
 HPPC     DCN    40B                                                     DIMA222
          AOD    T1                                                      DIMA222
          UJN    HPP04       CONTINUE                                    DIMA222
 HPPD     CON    LCNI,STDI,STII,UJNI                                     DIMA222
* ADDRESS TABLE OF MODIFIED INSTRUCTIONS FOLLOWS                         DIMA222
 HPPE     CON    HPPB,HPPC,HPPF,HPPG,HPPH,0                              DIMA222
 ICN      SPACE  4,10                                                    DIMA222
**        ICN - INSERT CHANNEL NO.                                       DIMA222
*                                                                        DIMA222
*         ICN INSERTS CHANNEL NO.S IN INSTRUCTIONS GIVEN                 DIMA222
*         IN A LIST TERMINATED WITH A ZERO.                              DIMA222
*                                                                        DIMA222
*         ENTRY  (A) = FWA OF CHANNEL LIST.                              DIMA222
*                (T1) = CHANNEL NO.                                      DIMA222
*                                                                        DIMA222
*         USES   T2,T3.                                                  DIMA222
 ICN      SUBR               ENTRY/EXIT                                  DIMA222
          STD    T2                                                      DIMA222
 ICN1     LDI    T2                                                      DIMA222
          ZJN    ICNX        IF LIST COMPLETE                            DIMA222
          STD    T3                                                      DIMA222
          LDI    T3                                                      DIMA222
          SCN    37B                                                     DIMA222
          ADD    T1          ADD IN NEW CHANNEL NO.                      DIMA222
          STI    T3                                                      DIMA222
          AOD    T2                                                      DIMA222
          UJN    ICN1        CONTINUE PROCESSING                         DIMA222
 PDB      SPACE  4,15 
**        PDB - POSITION TO DISPLAY CODE WITH BEGINNING BLANK.
* 
*         ENTRY  (BA) = BUFFER ADDRESS OF NUMBER TO CONVERT.
*                (T4) = ADDRESS OF INSERT.
* 
*         EXIT   (BA) = ADDRESS OF NEXT NUMBER. 
*                (T4) = ADDRESS OF NEXT INSERT. 
* 
*         CALLS  C2D. 
  
  
 PDB      SUBR               ENTRY/EXIT 
          LDI    BA          WORD TO CONVERT
          SHN    -6 
          RJM    C2D         CONVERT TO DISPLAY 
          SHN    6
          STM    1,T4 
          LMN    1R          BLANK
          SHN    6
          STM    0,T4 
          LDI    BA 
          RJM    C2D         CONVERT TO DISPLAY 
          SHN    6
          LMN    1R          BLANK
          STM    2,T4 
          SHN    -14
          RAM    1,T4 
          LDN    3           INCREMENT TO NEXT WORD 
          RAD    T4 
          AOD    BA 
          UJN    PDBX        RETURN 
 PDC      SPACE  4,15 
**        PDC - POSITION TO DISPLAY CODE WITH NO LEADING BLANK. 
* 
*         ENTRY  (BA) = BUFFER ADDRESS OF NUMBER TO CONVERT.
*                (T4) = ADDRESS OF INSERT.
* 
*         EXIT   (BA) = ADDRESS OF NEXT NUMBER. 
*                (T4) = ADDRESS OF NEXT INSERT. 
* 
*         USES   NONE.
* 
*         CALLS  C2D. 
  
  
 PDC      SUBR               ENTRY/EXIT 
          LDI    BA          WORD TO CONVERT
          SHN    -6 
          RJM    C2D         CONVERT TO DISPLAY 
          STI    T4 
          AOD    T4 
          LDI    BA 
          RJM    C2D         CONVERT TO DISPLAY 
          STI    T4 
          AOD    T4 
          AOD    BA 
          UJN    PDCX        RETURN 
 SFC      SPACE  4,5
**        SFC - SEND FUNCTION TO S/C REGISTER.
* 
*         ENTRY  (A) = FUNCTION.
* 
*         EXIT   (A) = FUNCTION REPLY.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
 SFC      SUBR               ENTRY/EXIT 
 SFCA     OAN.   SC+40       SEND FUNCTION
*         OAN.   SC+40+20    (IF CHANNEL 36 CALL) 
 SFCB     IAN.   SC+40
*         IAN.   SC+40+20    (IF CHANNEL 36 CALL) 
          UJN    SFCX        RETURN 
          SPACE  4
*         DISPLAY MESSAGES. 
  
  
 DMSA     DATA   C*SR-0-2 YYYY YYYY YYYY YYYY YYYY YYYY.* 
 DMSC     DATA   C*DEADSTART ABORTED - FATAL ERROR.*
          SPACE  4
*         COMMON DECKS. 
  
  
*CALL COMPC2D 
          LIST   X
*CALL     COMPSCE 
          LIST   *
          SPACE  4
          USE    LITERALS 
  
*         BUFFERS.
  
 SC0B     BSSZ   NSCB        CHANNEL 16 S/C REGISTER BUFFER 
 SC1B     BSSZ   NSCB        CHANNEL 36 S/C REGISTER BUFFER 
 TEMA     EQU    *           TABLE OF ERROR MESSAGE BUFFER ADDRESSES
 EBUF     EQU    TEMA+NTEB*2+1  ERROR MESSAGE BUFFER
  
  
          ERRNG  /CTI/IPLB-EBUF-EBUFL  IF *IOQ* OVERWRITTEN 
 PRS      TITLE  SWITCH PP 10 TO CHANNEL 0. 
**        PRS - SWITCH PP 10 TO CHANNEL 0.
* 
*         EXIT   (NO) = 1 IF CHANNEL 36 S/C REGISTER EXISTS.
* 
*         USES   NONE.
* 
*         CALLS  NONE.
  
  
 PRS      SUBR               ENTRY/EXIT 
  
*         CONNECT DISPLAY CHANNEL.
  
          LDN    PRSAL-1     OUTPUT IDLE LOOP 
          OAM.   PRSA,CH
          FJM    *,CH        WAIT FOR TRANSFER TO COMPLETE               IPLR5A0
          DCN.   CH+40
          AOD    IL          FLAG IDLE LOOP OUTPUT DONE 
  
*         CHECK FOR CHANNEL 36 S/C REGISTER.
  
 PRS1     IJM.   PRS2,20     IF NOT 20 PPUS 
          LDN    1           SET CHANNEL 36 REGISTER FLAG 
          STD    NO 
 PRS2     LDM    /CPA/OPTN   SAVE /CPA/OPTN 
          STM    LNPE 
          LDC    FCSB+SCSL   DETERMINE IF MAINFRAME IS C176 
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCTC+SCSL
          OAN.   SC+40
          IAN.   SC+40
          ZJN    PRS3        IF BIT NOT SET, NOT C176 
          LDC    FCTB+SCSL
          OAN.   SC+40
          IAN.   SC+40
          NJN    PRS3        IF BIT NOT CLEARED, NOT C176 
          LDC    3000        INDICATE C176
          STM    /CPA/OPTN
 PRS3     LJM    PRSX 
  
 PRSA     BSS    0
          LOC    0
          CON    0
          IJM.   *,0
          LCN    0
          IAM.   0,CH 
          LOC    *O 
  
 PRSAL    EQU    *-PRSA 
          ORG    *-1
          END 
