*DECK PCM 
          IDENT  PCM,/CTI/LOAD
          PERIPH J
          BASE   MIXED
          SST    RDS,TH 
*CALL,VERS
          TITLE  PCM         CTI PRESET COMPUTER MEMORY - "VERS"
          COMMENT CTI PRESET COMPUTER MEMORY - "VERS" 
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
          SPACE  4
*****     PCM - PRESET COMPUTER MEMORY. 
*         R. E. DENNIS.      78/06/06.
          SPACE  4
***       *PCM* CLEARS THE MEMORY OF CYBER/6000 PROCESSORS.  ON A 
*         LEVEL 0, 1, OR 2 RECOVERY CENTRAL MEMORY AND ALL PPU MEMORY 
*         IS SET TO 0..0 AND CHECKED FOR 0..0.  THE MEMORYS ARE THEN
*         ALL SET TO 7..7 AND CHECKED FOR ALL 7..7.  ANY ERROR
*         ENCOUNTERED DURING THE CHECKING PHASE WILL BE REPORTED ON THE 
*         CONSOLE DISPLAY AS SHOWN BELOW.  ON A LEVEL 3 RECOVERY ONLY 
*         THE PPU MEMORYS ARE CHECKED.  ALL DISPLAYS ARE DYNAMIC
*         AND EACH NUMERIC REPRESENTS THE CURRENT VALUE BEING 
*         PROCESSED.
* 
* 
*         CONSOLE MESSAGES -
*                (LEFT SCREEN.) 
* 
* 
*         CHECK COMPUTER MEMORY.
* 
* 
*            S/C REGISTER 00 BIT  0314
*               (OR)
*            INTERLOCK REGISTER 00 BIT 0177 
*               (OR)
*            NULL LINE. 
* 
*            PPU  05  4317
*            CM ADDRESS 012567 P0= 000312 
*                (OR) 
*            CM NOT ACTIVE - LEVEL 3 REC. 
*                (OR) 
*            NO CPU DEFINED FOR SYSTEM. 
* 
* 
*         CHECK MEMORY COMPLETE.
* 
* 
*         IF A FATAL COMMUNICATIONS ERROR OCCURS, THE PPU NUMBER WILL 
*         NOT BE ADVANCED ON THE LEFT SCREEN AND THE PPU NUMBER OF THE
*         PPU WITH THE ERROR WILL BE DISPLAYED ON THE RIGHT SCREEN. 
* 
*         IF A CENTRAL MEMORY ERROR OCCURS IN THE AREA WHERE THE TEST 
*         PROGRAM WILL EXECUTE, IT IS CONSIDERED FATAL AND WILL 
*         HANG DEADSTART WITH THE ERROR DISPLAYED.
* 
* 
*                (RIGHT SCREEN.)
* 
* 
*             MEMORY DATA ERRORS. 
* 
*         PP            05
*         NONE. 
*         (OR)
*         FATAL COMMUNICATION ERROR.
*         (OR)
*         ADDRESS       4317
*         EXPECTED DATA 7777
*         ACTUAL DATA   5777
*         DIFFERENCE    2000
* 
*         CENTRAL MEMORY
*         NONE. 
*         (OR)
*         ADDRESS            012567 
*         EXPECTED DATA      0000 0000 0000 0000 0000 
*         ACTUAL DATA        0200 0000 0000 0000 0000 
*         DIFFERENCE         0200 0000 0000 0000 0000 
* 
* 
*         NOTE  -  THE VALUE OF ANY OF THE DATA/ADDRESS FIELDS MAY BE 
*         INCORRECT IF THE COMMUNICATIONS CHANNEL HAS A PROBLEM OR THE
*         PROGRAM IN THE PROCESSOR BEING CHECKED CANNOT EXECUTE 
*         CORRECTLY.  THE MESSAGE *NONE,* MAY ALSO BE DISPLAYED EVEN
*         IF AN ERROR HAS OCCURRED IF THE CPU/PPU PROGRAM IS INCAPABLE
*         OF EXECUTING CORRECTLY CAUSING THE STATUS WORDS TO BE 
*         INCORRECT.
* 
* 
* 
* 
*         THE REMAINING PORTION OF THE DISPLAY WILL ONLY OCCUR ON CYBER 
*         170 MACHINES. 
* 
* 
*              S/C REGISTER ERRORS. 
* 
*         NONE. 
*         (OR)
*         S/C REGISTER CHANNEL FULL - FATAL ERROR.
*         (OR)
*         (IF ANY S/C REGISTER ERRORS EXIST.) 
* 
* 
*         (ALL S/C REGISTER 0 MESSAGES HAVE ARE PRECEEDED BY A 0) 
* 
* 
*         0 00 -READ PYRAMID PARITY ERROR.
*         0 01 -CSU 0 ADDRESS PARITY ERROR. 
* 
* 
*         (ALL S/C REGISTER 1 MESSAGES HAVE ARE PRECEEDED BY A 1) 
* 
* 
*         1 00 -READ PYRAMID PARITY ERROR.
*         1 14 -PP20 PARITY ERROR.
          SPACE  4,10 
*         MACRO DEFINITIONS.
  
  
*         EXJP  -  EXCHANGE JUMP PACKAGE DEFINITION MACRO.
* 
* TAG     EXJP   P=X,A0=Y,RA=Z,...,X7=M 
* 
*         EXJP BUILDS AN EXCHANGE PACKAGE IN PPU MEMORY SUBSTITUTING
*         THE VALUES FOR THE NAMED PARAMETERS.  ALL OTHER FIELDS ARE
*         SET TO 0 EXCEPT THE EXIT MODE FIELD WHICH IS SET TO THE 
*         REQUESTED VALUE OR THE *SYSTEXT* DEFINED VALUE *EEMC*.
  
  
 EXJP     MACROE P,A0,RA,A1,B1,FL,A2,B2,EM,A3,B3,RAX,A4,B4,FLX,A5,B5,MA,
,A6,B6,A7,B7,X0,X1,X2,X3,X4,X5,X6,X7
          LOCAL  A
 A        BSS    0
          VFD    6/0
          VFD    18/P 
          VFD    18/A0
          VFD    18/0 
          VFD    6/0
          VFD    18/RA
          VFD    18/A1
          VFD    18/B1
          VFD    6/0
          VFD    18/FL
          VFD    18/A2
          VFD    18/B2
          IFC    EQ,*EM** 
          VFD    12/EEMC
          ELSE
          VFD    12/EM
          ENDIF 
          VFD    12/0 
          VFD    18/A3
          VFD    18/B3
          VFD    3/0
          VFD    21/RAX 
          VFD    18/A4
          VFD    18/B4
          VFD    3/0
          VFD    21/FLX 
          VFD    18/A5
          VFD    18/B5
          VFD    6/0
          VFD    18/MA
          VFD    18/A6
          VFD    18/B6
          VFD    24/0 
          VFD    18/A7
          VFD    18/B7
          VFD    60/X0
          VFD    60/X1
          VFD    60/X2
          VFD    60/X3
          VFD    60/X4
          VFD    60/X5
          VFD    60/X6
          VFD    60/X7
          ENDM
          SPACE  4
*         ASSEMBLY CONSTANTS. 
  
  
 SHNI     EQU    1000 
 PSNI     EQU    2400 
 IJMI     EQU    6500 
 EJMI     EQU    6700 
 IANI     EQU    7000 
 OANI     EQU    7200 
 IAMI     EQU    7100 
 OAMI     EQU    7300 
 ACNI     EQU    7400 
 DCNI     EQU    7500 
 FNCI     EQU    7700 
 NIBIT    EQU    128D        NUMBER OF INTERLOCK REGISTER BITS
          SPACE  4,10 
*         CENTRAL MEMORY EQUIVALENCES.
  
  
 IXPA     EQU    1000        IDLE EXCHANGE PACKAGE AREA 
 MTXA     EQU    1020        MEMORY CHECK EXCHANGE PACKAGE
 IDLP     EQU    1040        IDLE PROGRAM ADDRESS 
 CPR      EQU    1041        SCM RUN FLAG 
 CPA      EQU    1042        CURRENT SCM ADDRESS
 EDA      EQU    1043        EXPECTED DATA
 ADA      EQU    1044        ACTUAL DATA
 DDA      EQU    1045        LOGICAL DIFFERENCE 
 MTPA     EQU    1060        MEMORY CHECK PROGRAM ADDRESS 
          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 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPCHI 
*CALL COMSCPA 
*CALL COMSCTI 
*CALL     COMPMAC 
*CALL     COMSSCR 
          EJECT 
*         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
  
 TA       CON    0
 TD       CON    0
 TE       CON    0
 TF       CON    0
 TG       CON    0
 TH       CON    0
 PP       CON    0           PPU TRANSFER POINTER 
 EF       CON    0           ANY ERROR FLAG 
 WD       CON    0           CURRENT CHECK ADDRESS
 RF       CON    0           PP0 RUN FLAG 
 ED       CON    0           CURRENT DATA 
 AD       CON    0           ACTUAL DATA
 DD       CON    0           LOGICAL DIFFERENCE 
 SP       VFD    30/0400000000,30/0  CPU STOP PROGRAM 
 SV       VFD    60/-0       SEVENS 
  
  
*         COMPSCE REQUIRED DIRECT LOCATIONS.
  
  
          BSS    60-* 
  
          QUAL   COMPSCE
  
 C1       CON    0
 C2       CON    0
 FW       CON    0           FWA OF ERROR MESSAGE BUFFER
 LW       CON    0           LWA+1 OF ERROR MESSAGE BUFFER
 AM       CON    0           ADDRESS OF ERROR MESSAGE 
 TE       CON    0           ADDRESS OF 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
          QUAL   *
          TITLE  MAIN PROGRAM.
 PCM      SPACE 4,10
**        PCM - MAIN PROGRAM. 
  
  
*         CLEAR S/C REGISTER IF CYBER 170.
  
  
          ORG    /CTI/TRAN
 PCM      RJM    RPT         REASSIGN PP10 TO CHANNEL 0 
          IJM.   PCM1,SC     IF NOT CYBER 17X 
          LDC    PSNI        SET PROCESS *NONE.*
          STM    DRSE 
          LDC    SCRE        SET *S/C REGISTER ERRORS.* 
          STM    DRSD 
          LDC    MESB        SET MESSAGE POINTERS 
          STM    DLSB 
          LDC    MESBA
          RJM    CSR         CLEAR S/C REGISTER 
  
  
*         CLEAR INTERLOCK REGISTER IF CYBER 70. 
  
  
 PCM1     IJM.   PCM2,IC     IF NOT CYBER 7X
          LDC    MESF 
          STM    DLSB 
          LDC    MESFA
          RJM    CSR         CLEAR INTERLOCK REGISTER 
  
  
*         CHECK CM/PPU MEMORY.
  
  
 PCM2     RJM    CPU         START CPU
          RJM    CPP         CHECK PRESENCE OF AVAILABLE PPS
          LDC    MESC 
          STM    DLSC 
          RJM    CPM         CHECK PERIPHERAL PROCESSOR MEMORY
          IJM.   PCM3,SC     IF NOT CYBER 17X 
          RJM    SED         CHECK FOR S/C REGISTER ERRORS
  
  
 PCM3     LDC    MESG        SEND COMPLETE MESSAGE
          STM    DLSF 
 PCM4     RJM    DPS         DISPLAY *CHECK MEMORY COMPLETE.* 
          RJM    RDS         CLEAR PPUS TO DEAD START STATUS
          LDM    /CPA/OPTN
          SHN    -11
          LPN    3
          ZJN    PCM5        IF NOT CYBER 176 
          LDC    FCCL+DSCU   DEADSTART CPU
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCCL+EXBB         CLEAR EXCHANGE BIAS                   IOQR5A0
          OAN.   SC+40                                                   IOQR5A0
          IAN.   SC+40                                                   IOQR5A0
 PCM5     LDC    PCMA        CALL *EBL* 
          LJM    /CTI/CDEP
  
 PCMA     CON    /CTI/EBLLOAD   CDIB
          CON    /CTI/EBLLOAD   CDTA
          CON    0           CDRW 
          DATA   L*EBL*      CDNC 
          TITLE  SUBROUTINES. 
 MCI      SPACE  4,10 
**        MCI - MODIFY CHANNEL INSTRUCTIONS.
* 
*         ENTRY  (A) .EQ. CURRENT CHANNEL.
* 
*         EXIT   CHANNEL INSTRUCTIONS MODIFIED. 
* 
*         USES   T5, T6.
  
  
 MCI      SUBR               ENTRY/EXIT 
          LPN    37 
          ADN    40          SET SKIP ON ERROR
          STD    T5 
          LDM    MCIA        MODIFY LOGICAL DIFFERENCE
          SCN    77 
          LMD    T5 
          STM    MCIA 
          STM    MCIC 
          LDC    PCHS 
          STD    T5 
          LDI    T5 
 MCI1     STD    T6          SAVE INSTRUCTION ADDRESS 
          LDI    T6          MODIFY INSTRUCTION 
          SCN    77 
 MCIA     LMN    0
          STI    T6 
          AOD    T5 
          LDI    T5 
          NJN    MCI1        IF *PCM* RESIDENT I/O NOT MODIFIED 
 MCIB     LDC    ICHS 
*         UJN    MCIX        IF ALL PPU IDLE LOOPS SET RETURN 
  
          STD    T5 
          LDI    T5 
 MCI2     ADC    IDLE        RELOCATE ADDRESS 
          STD    T6          SAVE INSTRUCTION ADDRESS 
          LDI    T6          MODIFY INSTRUCTION 
          SCN    77 
 MCIC     LMN    0
          STI    T6 
          AOD    T5 
          LDI    T5 
          NJN    MCI2        IF MODIFICATION NOT COMPLETE 
          LJM    MCIX        RETURN 
  
 MCID     EQU    *
          LOC    MCIB 
          UJN    MCIX        RETURN 
          LOC    *O 
 CPM      SPACE  4,10 
**        CPM - CHECK PPU MEMORY. 
* 
*         NOTE - THE DISPLAYS ARE UPDATED AFTER EACH 100 WORD BLOCK OF
*         PPU 0 MEMORY PROCESSED BY THIS ROUTINE. 
* 
*         EXIT   PPU0 IS TESTED AND ALL OTHER CHECKING PROGRAMS 
*                COMPLETE.
* 
*         USES   RF, WD, ED, AD, DD.
* 
*         CALLS  UDS. 
  
  
 CPM      SUBR               ENTRY/EXIT 
 CPM1     LDC    END
          STD    WD 
 CPM2     LDD    WD 
          LPN    77 
          NJN    CPM3        IF NOT MULTIPLE OF 100 
          RJM    UDS         UPDATE DISPLAYS
          NJN    CPMX        IF S/C REGISTER ERROR RETURN 
  
 CPM3     LDD    ED 
          STI    WD 
          AOD    WD 
          LMC    /CTI/IPLB
          NJN    CPM2        IF PASS NOT COMPLETE 
          LDC    END         RESET POINTERS 
          STD    WD 
 CPM4     LDD    WD 
          LPN    77 
          NJN    CPM5        IF NOT MULTIPLE OF 100 
          RJM    UDS
          NJN    CPMX        IF S/C REGISTER ERROR RETURN 
  
 CPM5     LDI    WD 
          STD    AD 
          LMD    ED 
          STD    DD 
          NJN    CPM6        IF ERROR 
          AOD    WD 
          LMC    /CTI/IPLB
          NJN    CPM4        IF NOT COMPLETE
          LDD    ED 
          LMC    7777 
          STD    ED 
          ZJN    CPM6        IF 0*S AND 1*S COMPLETE
          LJM    CPM1 
  
 CPM6     LDN    10 
          STD    RF 
          STM    TPCI 
          RJM    UDS         UPDATE DISPLAYS
          LJM    CPMX        RETURN 
 UDS      SPACE  4,10 
**        UDS - UPDATE STATUS DISPLAYS. 
* 
*         CALLS DPS, CPC. 
  
  
 UDS      SUBR               ENTRY/EXIT 
          RJM    DPS         UPDATE DISPLAY 
          LDM    TPCI 
          ZJN    UDSX        IF PPU 0 NOT FORCED COMPLETE RETURN
  
 UDS1     RJM    CPC         CHECK FOR PROCESSORS COMPLETE
          LDN    1
          UJN    UDSX        RETURN 
          SPACE  4,10 
**        CEM - CHECK EXECUTED CENTRAL MEMORY.
* 
*         EXIT   CENTRAL MEMORY IS TESTED FOR THE TEST PROGRAM ONLY.
* 
*         USES   T3 - T7. 
* 
*         CALLS  VCM. 
* 
*         NOTE - ERRORS WILL HANG THE PROGRAM WITH THE ERROR DISPLAYED. 
  
  
*         LOOP TO READ/VERIFY CM. 
  
 CEM3     LDD    T4          GET CM ADDRESS 
          CRM    GSDB+17,T6 
          RJM    VCM         VERIFY ONE CM WORD 
          AOD    T4 
          AOD    T3 
          LMD    T7 
          NJN    CEM3        IF MORE CM TO READ 
          STD    T3 
          LDM    GSDB+12
          LMC    7777 
          NJN    CEM1        IF BOTH PATTERNS NOT TESTED
  
 CEM      SUBR               ENTRY/EXIT 
          LDC    IXPA        SET UP STARTING CM ADDRESS 
          STD    T5 
          LDN    1           CM WRITE/READ LENGTH 
          STD    T6 
          LDC    MTPA-IXPA+/SCM/MTPL+100  LENGTH TO TEST
          SCN    77 
          STD    T7 
          LDN    0           FIRST PATTERN TO TEST
          STD    T3 
  
*         LOOP TO WRITE/READ/VERIFY ONE PATTERN.
  
CEM1      STM    GSDB+12     SAVE EXPECTED PATTERN
          STM    GSDB+13
          STM    GSDB+14
          STM    GSDB+15
          STM    GSDB+16
          LDD    T5          SET STARTING ADDRESS 
          STD    T4 
  
*         LOOP TO WRITE CM. 
  
 CEM2     LDD    T4          GET CM ADDRESS 
          CWM    GSDB+12,T6 
          AOD    T4 
          AOD    T3 
          LMD    T7 
          NJN    CEM2        IF MORE CM TO WRITE
          STD    T3 
          LDD    T5          SET STARTING ADDRESS 
          STD    T4 
          LJM    CEM3 
 CPC      SPACE  4,10 
**        CPC - CHECK FOR ALL PROCESSORS COMPLETE.
* 
*         ENTRY  IF PPU 0 MEMORY CHECK COMPLETE.
*                (TPCI) = TABLE OF COMPLETED PPS. 
*                (TPPA) = TABLE OF AVAILABLE PPS. 
* 
*         USES   TA, TG, PP.
* 
*         CALLS  DPS, FCE, ABT. 
* 
*         NOTE  -  PPU 0 WILL BE COMPLETE IF ALL CHECKING IS COMPLETE 
*         OR A NON - FATAL S/C REGISTER ERROR HAS OCCURRED ON A CYBER 
*         170 MACHINE.
  
  
 CPC      SUBR               ENTRY/EXIT 
 CPC1     LDN    0           CLEAR OVERFLOW COUNT 
          STD    TG 
 CPC2     LDN    0
          STD    TA 
 CPC3     LDM    TPCI,TA
          ZJN    CPC5        IF NOT COMPLETE
 CPC4     AOD    TA 
          LMN    TPCIL
          NJN    CPC3        IF TABLE CHECK NOT COMPLETE
          UJN    CPCX        RETURN 
  
 CPC5     LDM    TPPA,TA     PPU POSSIBLY NOT AVAILABLE 
          ZJN    CPC4        IF PPU NOT AVAILABLE 
          RJM    DPS         UPDATE DISPLAY 
          AOD    TG 
          SHN    21-14
          PJN    CPC2        IF NO OVERFLOW 
 CPCA     LDN    0           FIRST OVERFLOW 
*CPCA     LDN    1           (SECOND OVERFLOW)
          NJN    CPC6        IF SECOND OVERFLOW 
          AOM    CPCA        SET FIRST OVERFLOW OCCURRED FLAG 
          UJN    CPC1        LOOP UNTIL SECOND OVERFLOW 
  
 CPC6     LDD    TA 
          LMN    20D
          ZJN    CPC7        IF CPU 
          LDD    TA          RESET CURRENT PPU
          STD    PP 
          RJM    FCE         SET FATAL CHANNEL ERRORS 
*         UJN    *           NO RETURN FROM *FCE* 
  
 CPC7     LDC    FCEM        SET *PROCESSOR NOT RESPONDING.*
          STM    DRSC 
          RJM    ABT         ABORT
  
  
*         TPPA - TABLE OF AVAILABLE PPUS. 
  
  
 TPPA     BSSZ   20D         PPUS AVAILABLE 
          CON    0           CPU AVAILABLE
  
  
*         TPCI - TABLE OF COMPLETED PPUS. 
  
  
 TPCI     BSSZ   21D
 TPCIL    EQU    *-TPCI 
 CSE      SPACE  4,10 
**        CSE - CHECK FOR SCR ERRORS. 
* 
*         EXIT   (CSEA) = UPDATED SINGLE BIT ERROR COUNT. 
*                (CSEB) = 0 - NO SCR ERRORS OTHER THAN SINGLE BIT.
*                         1 - ERRORS OTHER THAN SINGLE BIT FOUND. 
* 
*         CALLS  CHN, CPD, SCE, SCS.
  
  
 CSE      SUBR               ENTRY/EXIT 
          IJM.   CSEX,SC     IF NOT CYBER 170 
          LDN    SC          SET REGISTER 0 
          RJM    CHN
          RJM    SCS         TEST SCR STATUS
          LDC    FCSB+DSBL   INHIBIT SINGLE BIT ERROR LOGGING 
          OAN.   SC+40
          IAN.   SC+40
 CSE1     LDC    FCTE        TEST FOR SCR ERRORS
          OAN.   SC+40
          IAN.   SC+40
          NJN    CSE2        IF SCR ERRORS
          LJM    CSE8        ENABLE SINGLE BIT ERROR LOGGING
  
 CSE2     LDC    FCTB+SECD   TEST FOR SECDED ERROR
          OAN.   SC+40
          IAN.   SC+40
          NJN    CSE3        IF SECDED ERROR
          LJM    CSE6 
 CSE3     LDC    FCRD+CDSW   TEST FOR DOUBLE BIT ERROR
          OAN.   SC+40
          IAN.   SC+40
          SHN    SDSC/12D*12D-SDSC+21 
          MJN    CSE6        IF DOUBLE BIT ERROR
          AOM    CSEA        UPDATE SINGLE BIT SECDED ERROR COUNT 
          SHN    -14
          ZJN    CSE4        IF NO OVERFLOW OF COUNTER
          LCN    0           CORRECT OVERFLOW (COUNT REMAINS AT 7777) 
          STM    CSEA 
 CSE4     LDC    FCCL+SECD   CLEAR SECDED ERROR BIT 
          OAN.   SC+40
          IAN.   SC+40
          LDM    /CPA/OPTN   CHECK IF CYBER 176 
          SHN    -11
          LPN    3
          ZJN    CSE5        IF NOT 176 
          LDC    FCSB+CCRT   SET CM RANK II CLEAR 
          OAN.   SC+40
          IAN.   SC+40
          LDC    FCCL+CCRT   CLEAR CM RANK II CLEAR 
          OAN.   SC+40
          IAN.   SC+40
 CSE5     LJM    CSE1        CHECK FOR OTHER ERRORS 
  
 CSE6     LDM    SCE                                                     DIMA218
          LMC    CSE8        CHECK FOR SCE LOADED                        DIMA218
          ZJN    CSE7                                                    DIMA218
          LDN    1                                                       DIMA218
          STM    CSEC+2      SET REWIND FLAG                             DIMA218
          STM    CSEB        SET NON-SINGLE BIT ERROR FLAG               DIMA218
          LDC    CSEC        LOAD *SCE* 
          LJM    /CTI/CDEP
 CSE7     LDN    1           SET REWIND FOR :CMC* LOADING 
          STM    CPUB 
          LDC    /CTI/IPLB-BUFR        SET LWA FOR ERROR MESSAGES 
          STD    /COMPSCE/LW
          LDC    TEMA        SET ADDRESS OF MESSAGE ADDRESS TABLE 
          STD    /COMPSCE/TE
          LDC    BUFR        PROCESS SCR ERRORS 
          RJM    SCE
 CSE8     LDC    FCCL+DSBL   ENABLE SINGLE BIT ERROR LOGGING
          OAN.   SC+40
          IAN.   SC+40
          LJM    CSEX        EXIT 
  
 CSEA     CON    0           SINGLE BIT ERROR COUNTER 
 CSEB     CON    0           NON-SINGLE BIT ERROR FLAG
  
 CSEC     CON    OVL         CDIB 
          CON    CSE7        CDTA 
          CON    0           CDRW 
          DATA   L*SCE*      CDNC 
          EJECT 
 CSR      SPACE  4,10 
**        CSR - CLEAR STATUS CONTROL REGISTER OR INTERLOCK REGISTER.
* 
*         ENTRY  (A) .EQ. ADDRESS OF MESSAGE TO BE UPDATED. 
* 
*         EXIT   (STATUS CONTROL REGISTER) .EQ. 0.
*                (INTERLOCK REGISTER) .EQ. 0. 
* 
*         USES   T3, T4, T6, TF.
* 
*         CALLS  C2D, CPD, DPS, SCS, CHN, ICS.
* 
*         NOTE  -  THIS ROUTINE SHOULD NOT BE ENTERED UNLESS IT WAS 
*         PREVIOUSLY DETERMINED THAT THE MACHINE IS A CYBER 70/170. 
  
  
 CSR      SUBR               ENTRY/EXIT 
          STD    T3          SAVE MESSAGE ADDRESS 
          IJM.   CSR1,SC     IF NOT CYBER 17X 
          LDC    NBIT+1 
          UJN    CSR3        PROCEED FOR CYBER 17X
  
 CSR1     LDN    IC          MODIFY CHANNELS
          RJM    CHN
          RJM    ICS         CHECK CHANNEL STATUS 
          LDC    FCSB+NIBIT/2  SET BIT 64 
          OAN.   IC+40
          IAN.   IC+40
          RJM    ICS
          LDC    FCTB+NIBIT/2  CHECK BIT 64 
          OAN.   IC+40
          IAN.   IC+40
          ZJN    CSR2        IF NOT 128 BIT INTERLOCK REGISTER
          LDC    NIBIT/2     64 BITS +
 CSR2     ADC    NIBIT/2     64 BITS
 CSR3     STM    CSRD 
 CSR4     LDN    0
          STD    T4          BIT POSITION 
          STD    TF 
          STD    T6          REGISTER COUNTER 
          RJM    C2D
          STI    T3 
          LDN    4
          RAD    T3 
 CSR5     LDD    T3          CONVERT BIT POSITION 
          RJM    CPD
          RJM    DPS         DISPLAY STATUS 
          IJM.   CSR6,SC     IF NO S/C REGISTER 
          RJM    SCS         S/C REGISTER STATUS
          UJN    CSR7        CONTINUE 
  
 CSR6     RJM    ICS         INTERLOCK REGISTER STATUS
 CSR7     LDC    FCCL        FORCE CLEAR OF BIT 
          ADD    T4 
 CSRB     OAN.   SC+40
*         OAN.   SC + 20 + 40 
*         OAN.   IC + 40     IF CYBER 7X
 CSRC     IAN.   SC+40       2**5 SET ALLOWS FALL THROUGH 
*         IAN.   SC + 20 + 40 
*         IAN.   IC + 40     IF CYBER 7X
          AOD    T4 
          STD    TF 
          LMC    NBIT 
 CSRD     EQU    *-1
          NJN    CSR5        IF ANOTHER BIT TO CLEAR
          AJM.   CSRX,IC     IF CYBER 7X
          LDM    /CPA/PPP1
          NJN    CSR8        IF LESS THAN 11 PP SYSTEM
          LDD    T6 
          NJN    CSR8        IF BOTH REGISTERS CLEARED
          LDN    SC+20
          RJM    CHN         MODIFY CHANNELS
          LDN    0           BIT POSITION 
          STD    T4 
          STD    TF 
          LCN    4           MESSAGE POINTER
          RAD    T3 
          AOD    T6          REGISTER COUNTER 
          RJM    C2D
          STI    T3 
          LDN    4           RESET MESSAGE POINTER
          RAD    T3 
          LJM    CSR5        CLEAR NEXT REGISTER
  
 CSR8     LJM    CSRX        RETURN 
 CHN      SPACE  4,10 
**        CHN - CHANGE SC OR IC REGISTER CHANNELS.
* 
*         ENTRY  (A) .EQ. NEW CHANNEL.
* 
*         EXIT   REGISTER CHANNEL INSTRUCTIONS MODIFIED.
  
  
 CHN      SUBR               ENTRY/EXIT 
          LMC    OANI+40
          STM    CSRB 
          LMC    IANI&OANI
          STM    CSRC 
          LPN    77 
          LMC    EJMI 
          STM    SCSA 
          UJN    CHNX        RETURN 
 SED      SPACE  4,10 
**        SED - S/C REGISTER ERROR DETECTION. 
* 
*         EXIT   EXIT TO LOAD *DHE* IF NON-SINGLE BIT ERROR.
* 
*         USES   T1, T3.
* 
*         CALLS  DPS, KBI, RDS, SCS.
  
  
 SED      SUBR               ENTRY/EXIT 
          RJM    CSE         CHECK FOR SCR ERRORS 
          LDM    CSEB        GET NON-SINGLE BIT ERROR FLAG
          ZJN    SEDX        IF ONLY SINGLE BIT ERRORS FOUND
          RJM    RDS         RESTORE PPU,S TO DEADSTART CONDITIONS
          LDN    2           TELL *DHE* TO CALL *EBL* 
          STM    /CTI/DHEP
          LDC    SEDA        CALL *DHE* 
          LJM    /CTI/CDEP
  
 SEDA     CON    /CTI/LOAD   CDIB 
          CON    /CTI/TRAN   CDTA 
          CON    1           CDRW 
          DATA   L*DHE*      CDNC 
 SCS      SPACE  4,10 
**        SCS - S/C REGISTER STATUS PROCESSOR.
* 
*         EXIT   S/C REGISTER CHANNEL IS EMPTY. 
* 
*         CALLS  DLS, DRS.
  
  
 SCS      SUBR               ENTRY/EXIT 
 SCSA     EJM.   SCSX,SC     IF CHANNEL EMPTY RETURN
          LDC    SCFE        SET *S/C REGISTER CHANNEL FULL - FATAL E*
          STM    DRSAL-1
 SCS1     RJM    DLS         DISPLAY LEFT SCREEN
          RJM    DRS         DISPLAY RIGHT SCREEN 
          UJN    SCS1        HANG WITH DISPLAY ACTIVE 
 ICS      SPACE  4,10 
**        ICS  -  INTERLOCK REGISTER STATUS PROCESSOR.
* 
*         EXIT   INTERLOCK REGISTER CHANNEL EMPTY.
* 
*         CALLS  DLS. 
  
  
 ICS      SUBR               ENTRY/EXIT 
          EJM.   ICSX,IC     IF CHANNEL EMPTY 
          LDC    ICFE        SET *INTERLOCK CHANNEL FULL.*
          STM    DLSB 
 ICS1     RJM    DLS
          UJN    ICS1        HANG 
 RPT      SPACE  4,10 
**        RPT - REASSIGN PP10 TO CHANNEL 0. 
* 
*         ENTRY  PP10 ON CHANNEL 10.
* 
*         EXIT   PP10 ON CHANNEL 0. 
  
  
 RPT      SUBR               ENTRY/EXIT 
          ACN.   0           MOVE DISPLAY PP TO CHANNEL 0 
          LDN    3
          OAM.   RPTA,CH
          DCN.   CH+40
          UJN    RPTX        RETURN 
  
 RPTA     CON    0
          LCN    0
          IAM.   0,0
 RDS      SPACE  4,10 
**        RDS - RESET DEAD START STATUS.
* 
*         EXIT   PP10 IS RETURNED TO CHANNEL 10 AND ALL OTHER PPUS ARE
*                ON THEIR RESPECTIVE CHANNELS.
* 
*         USES   PP.
* 
*         CALLS  MCI, WOT, WDA. 
  
  
 RDS      SUBR               ENTRY/EXIT 
          FNC.   0,CH        CLEAR DISPLAY CONTROLLER 
          LDC    1000 
          SBN    1
          NJN    *-1         LOOP 
          DCN.   CH+40
          LDN    1
          STD    PP 
 RDS1     LDM    TPPA,PP     RESET CHANNELS 
          ZJN    RDS2        IF PPU NOT DEFINED 
          RJM    MCI
          RJM    WDA         WAIT FOR CHANNEL DEACTIVE
          ACN    ** 
          RJM    WOT         WAIT FOR CHANNEL EMPTY 
          LDM    REPT+1      SET DEAD START STATE 
          OAN    ** 
          RJM    WOT         WAIT FOR CHANNEL EMPTY 
 RDS2     AOD    PP 
          LMN    20D
          NJN    RDS1        IF ALL PPUS NOT RESET
          LDM    TPPA+CH
          ZJN    RDSX        IF PP10 *OFF*
          ACN.   CH          MOVE PP10 TO CHANNEL 10
          LDN    3
          OAM.   RDSA,0 
          DCN.   0+40        CHANNEL 0 DEACTIVE 
          LJM    RDSX        RETURN 
  
 RDSA     CON    0
          LCN    0
          IAM.   0,CH 
          EJECT 
          TITLE  DISPLAY ROUTINES.
 DPS      SPACE  4,10 
**        DPS - DISPLAY PROGRAM STATUS
* 
*         ENTRY  (PP) .EQ. PPU STATUS TO BE DISPLAYED.
* 
*         EXIT   (PP) .EQ. NEXT PPU STATUS TO BE DSPLAYED.
* 
*         USES   NONE.
* 
*         CALLS  GPI, GSD, CSE, DLS, DRS, ABT.
  
 DPS      SUBR               ENTRY/EXIT 
          RJM    GPI         GENERATE PPU DISPLAY 
          RJM    GSD         GENERATE CM DISPLAY
          RJM    CSE         CHECK FOR SCR ERRORS 
          LDM    CSEB        LOAD NON SINGLE BIT ERROR FLAG 
          STD    EF          STORE IN ERROR FLAG
          RJM    DLS         DISPLAY LEFT SCREEN
          RJM    DRS         DISPLAY RIGHT SCREEN 
          IJM.   DPS1,SC     IF NO S/C REGISTER 
          LDC    FCTE        TEST ERRORS
          OAN.   SC+40B 
          IAN.   SC+40B 
          ZJN    DPS1        IF NO S/C REGISTER BITS SET
          STM    TPCI        FORCE PP0 COMPLETE 
 DPS1     LDD    EF 
          NJN    DPS4        IF ANY ERROR 
 DPS2     AOD    PP 
          LMN    20D
          NJN    DPS3        IF NOT ALL PPUS DISPLAYED
          STD    PP 
          UJN    DPSX        RETURN 
  
 DPS3     LDM    TPPA,PP
          ZJN    DPS2        IF PPU NOT AVAILABLE 
          LJM    DPSX        RETURN 
  
 DPS4     RJM    ABT         ABORT
 GPI      SPACE  4,10 
**        GPI - GENERATE PPU INFORMATION. 
* 
*         ENTRY  (PP) .EQ. CURRENT PPU NUMBER.
* 
*         EXIT   PPU STATUS MESSAGE IS UPDATED. 
*                (EF) .EQ. XXX1 IF A PP ERROR HAS OCCURRED. 
*                TPCI+PP .NE. 0 IF PPU COMPLETE.
* 
*         USES   T7, TD, TF, EF.
* 
*         CALLS  MCI, C2D, RID, CPD.
  
  
*         PROCESS OTHER ACTIVE PPU ERRORS.
  
  
 GPI6     RJM    MCI         MODIFY CHANNEL INSTRUCTIONS
          RJM    RID         READ INPUT STATUS DATA 
          LDM    GPIA+1      SET RUN FLAG 
          STM    TPCI,PP
          LDD    PP          SETUP DISPLAYS 
          SBN    10D
          MJN    GPI7        IF NOT UPPER PPUS
          ADN    6
 GPI7     ADN    10D
          RJM    C2D         CONVERT PPU NUMBER 
          STM    MESCA
          STM    RMSAA
          LDM    GPIA        CONVERT ADDRESS
          STD    TF 
          LDC    MESCB
          RJM    CPD
          LDN    GPIAL-1
          STD    T7 
          LDM    GPIA,T7
          NJN    GPI8        IF ERROR 
          LJM    GPI12       IF NO ERROR
  
 GPI8     STD    TF 
          LDM    GPIB,T7     CONVERT ERROR DATA 
          ZJN    GPI9        IF NOT RELEVANT DATA 
          RJM    CPD
 GPI9     SOD    T7 
          MJN    GPI10       IF CONVERSION COMPLETE 
          LDM    GPIA,T7
          UJN    GPI8 
  
 GPI10    LDN    GPICL-1     SET MESSAGES 
          STD    T7 
 GPI11    LDM    GPIC,T7     SET MESSAGE ADDRESSES
          STI    TD 
          AOD    TD 
          SOD    T7 
          NJN    GPI11       IF ALL MESSAGE ADDRESSES NOT SET 
          LDD    EF          SET PPU ERROR
          LPC    7776 
          LMN    1
          STD    EF 
          UJN    GPIX        RETURN 
  
*         RESET ERROR DISPLAYS. 
  
  
 GPI12    LDN    4           RESET RIGHT SCREEN MESSAGES
          STD    T7 
 GPI13    LDC    MESA 
          STI    TD 
          AOD    TD 
          SOD    T7 
          NJN    GPI13       IF DATA NOT RESET
  
 GPI      SUBR               ENTRY/EXIT 
          LDC    DRSB        SET MESSAGE ADDRESS
          STD    TD 
          LDD    PP 
          ZJN    GPI1        IF PPU 0 
          LDM    TPPA,PP
          ZJN    GPIX        IF PP NOT AVAILABLE
          LJM    GPI6 
  
  
*         PROCESS PPU 0 ERROR DISLAY. 
  
  
 GPI1     LDC    2R00 
          STM    MESCA
          STM    RMSAA
          LDD    WD          CONVERT ADDRESS
          STD    TF 
          LDC    MESCB
          RJM    CPD
          LDN    GPIAL-1
          STD    T7 
          LDM    WD,T7
          NJN    GPI3        IF DATA ERROR HAS OCCURRED 
 GPI2     LJM    GPI12       RESET DISPLAY POINTERS 
  
 GPI3     STD    TF 
          LDM    GPIB,T7     CONVERT DATA 
          ZJN    GPI4        IF DATA NOT RELEVANT 
          RJM    CPD
 GPI4     SOD    T7 
          PJN    GPI5        IF CONVERSION COMPLETE 
          LJM    GPI10
  
 GPI5     LDM    WD,T7
          UJN    GPI3 
  
  
*         PPU STATUS BUFFER.
  
  
 GPIA     DATA   0           WD 
          DATA   0           RNF
          DATA   0           ED 
          DATA   0           AD 
          DATA   0           DD 
 GPIAL    EQU    *-GPIA 
  
  
*         PPU STATUS DATA MESSAGE POINTERS. 
  
  
 GPIB     CON    RMSBA       ADDRESS
          CON    0           RUN FLAG 
          CON    RMSCA       ED 
          CON    RMSDA       AD 
          CON    RMSEA       DD 
 GPIBL    EQU    *-GPIB 
  
  
*         PPU STATUS MESSAGE POINTERS.
  
  
 GPIC     CON    0
          CON    RMSE        DIFFERENCE 
          CON    RMSD        ACTUAL DATA
          CON    RMSC        EXPECTED DATA
          CON    RMSB        ADDRESS
 GPICL    EQU    *-GPIC 
 RID      SPACE  4,10 
**        RID - READ INPUT STATUS DATA FROM PPU.
* 
*         ENTRY  CHANNELS MODIFIED. 
* 
*         EXIT   DATA READ FROM CHANNEL TO GPIA.
* 
*         USES   TF.
* 
*         CALLS  WDA, WOT, WIN. 
  
  
 RID      SUBR               ENTRY/EXIT 
          RJM    WDA         WAIT FOR CHANNEL DEACTIVE
          ACN    ** 
          RJM    WOT         WAIT FOR CHANNEL EMPTY 
          LDM    REPT        SEND STATUS REQUEST
          OAN    ** 
          RJM    WOT         WAIT FOR CHANNEL EMPTY 
          LDN    0
          STD    TF 
 RID1     RJM    WIN         WAIT FOR INPUT DATA
          IAN    ** 
          STM    GPIA,TF
          AOD    TF 
          LMN    GPIAL
          NJN    RID1        IF ALL DATA NOT INPUT
          UJN    RIDX        RETURN 
  
  
  
*         REPT - RESIDENT ENTRY POINT TABLE.
  
 REPT     BSS    0
  
          LOC    0
          CON    /IDLE/STR   STATUS REQUEST FUNCTION
          CON    /IDLE/RDS   RESET DEAD START STATUS
          LOC    *O 
 REPTL    EQU    *-REPT 
 WDA      SPACE  4,10 
**        WDA - WAIT FOR CHANNEL DEACTIVE.
* 
*         ENTRY  CHANNELS MODIFIED. 
* 
*         EXIT   IF CHANNEL DEACTIVE. 
* 
*         USES   T4.
* 
*         CALLS  FCE. 
  
  
 WDA      SUBR               ENTRY/EXIT 
          LDN    77 
          STD    T4 
 WDA1     SOD    T4 
          IJM    WDAX,**     IF CHANNEL INACTIVE RETURN 
          NJN    WDA1        IF DELAY NOT COMPLETE
          RJM    FCE         PROCESS FATAL COMMUNICATION ERROR
          UJN    WDAX        RETURN 
 WOT      SPACE  4,10 
**        WOT - WAIT FOR NEXT OUTPUT (CHANNEL EMPTY). 
* 
*         ENTRY  CHANNELS MODIFIED. 
* 
*         EXIT   IF CHANNEL IS EMPTY. 
* 
*         USES   T4.
* 
*         CALLS  FCE. 
  
  
 WOT      SUBR               ENTRY/EXIT 
          LDN    77 
          STD    T4 
 WOT1     SOD    T4 
 WOTA     EJM    WOTX,**     IF CHANNEL EMPTY RETURN
          NJN    WOT1        IF DELAY NOT COMPLETE
          RJM    FCE         PROCESS FATAL CHANNEL ERROR
          UJN    WOTX        RETURN 
 WIN      SPACE  4,10 
**        WIN - WAIT FOR INPUT DATA.
* 
*         ENTRY  CHANNEL MODIFIED.
* 
*         EXIT   IF CHANNEL FULL. 
* 
*         USES   T4.
* 
*         CALLS  FCE. 
  
  
 WIN      SUBR               ENTRY/EXIT 
          LDN    77 
          STD    T4 
 WIN1     SOD    T4 
          FJM    WINX,**     IF CHANNEL FULL RETURN 
          NJN    WIN1        IF DELAY NOT COMPLETE
          RJM    FCE         PROCESS FATAL CHANNEL ERROR
          UJN    WINX        RETURN 
 CPP      SPACE  4,10 
**        CPP - CHECK FOR PRESENCE OF AVAILABLE PPS.
* 
*         EXIT   (TPPA) - (TPPA + 17) = 
*                77XX - IF PPU EXISTS (XX = PHYSICAL CHANNEL) 
*                AND IS LOGICALLY *ON*. 
*                0 - IF PPU DOESN*T EXIST, OR IS *OFF*. 
*                (PP) = 0.
* 
*         USES   PP, T1, T2.
* 
*         CALLS  MCI, WPI.
  
  
 CPP      SUBR               ENTRY/EXIT 
          LDN    1           SET CHANNEL
          STD    PP 
 CPP1     LDD    PP          CONVERT PP NUMBER TO CHANNEL NUMBER
          SBN    10D
          MJN    CPP2        IF CHASSIS 1 PPS 
          ADN    6           INITIAL CHANNEL FOR CHASSIS 2 PPS
 CPP2     ADN    10D
          STD    T2 
          LPN    17 
          LMC    SHNI+77
          STM    CPPA 
          STM    CPPB 
          LDD    T2 
          SHN    -4          SET TABLE CHASSIS INDEX
          STD    T1 
          LDM    /CPA/PPP0,T1 
 CPPA     SHN    ** 
          LPN    1
          NJN    CPP5        IF PP NOT PHYSICALLY PRESENT 
          LDD    T2          CHANGE PP10 CHANNEL TO 0 
          SBN    10 
          NJN    CPP3        IF NOT PP10
          STD    T2 
 CPP3     LDM    /CPA/LPP0,T1 
 CPPB     SHN    ** 
          LPN    1           SET INDEX TO *IDLT* FOR *WPI*
          STD    TF 
          NJN    CPP4        IF PP *OFF*
          LCN    77          SET PP AVAILABLE 
          LMD    T2 
          STM    TPPA,PP
 CPP4     LDD    T2          MODIFY CHANNEL INSTRS
          RJM    MCI
          RJM    WPI         WRITE PP TEST OR IDLE PROGRAM
 CPP5     AOD    PP 
          LMN    20D
          ZJN    CPP6        IF ALL PPS CHECKED 
          LJM    CPP1        LOOP 
  
 CPP6     STD    PP 
          LDM    MCID        MODIFY ONLY RESIDENT CHANNEL INSTRUCTIONS
          STM    MCIB 
          LJM    CPPX        RETURN 
 CPU      SPACE  4,10 
**        CPU - START CPU UNLESS LEVEL 3 RECOVERY.
* 
*         ENTRY  (/CPA/DSPNLZ+13) = D/S PANEL WORD 13.
*                (/CPA/OPTN) = HDT OPTION WORD. 
* 
*         EXIT   (DLSD) = DISPLAY MESSAGE ADDRESS.
*                CENTRAL MEMORY CHECK PROGRAM EXECUTED. 
* 
*         USES   NONE.
* 
*         CALLS  SCM. 
  
  
 CPU      SUBR               ENTRY/EXIT 
          LDC    CPUA        LOAD *CMC* 
          LJM    /CTI/CDEP
 CPU1     RJM    SCM         START CM CHECK PROGRAM 
          LJM    CPUX        RETURN 
  
 CPUA     CON    OVL         CDIB 
          CON    CPU1        CDTA 
 CPUB     CON    0           CDRW 
          DATA   L*CMC*      CDNC 
 WPI      SPACE  4,10 
**        WPI - WRITE PPU IDLE LOOP.
* 
*         ENTRY  CHANNELS MODIFIED. 
*                (TF) = INDEX TO TABLE *IDLT*.
* 
*         EXIT   PPU IS LOADED WITH IDLE LOOP.
* 
*         USES   T1, T2.
* 
*         CALLS  WOT. 
  
  
 WPI      SUBR               ENTRY/EXIT 
          RJM    WOT         WAIT FOR CHANNEL EMPTY 
          LDM    IDLT,TF     OBTAIN ADDRESS OF IDLE LOOP
          STD    T1 
          LDM    IDLT+2,TF   OBTAIN LWA+1 OF IDLE LOOP
          STD    T2 
 WPI1     LDI    T1          OUTPUT IDLE LOOP 
 WPIA     OAN    ** 
          RJM    WOT
          AOD    T1 
          LMD    T2 
          NJN    WPI1        IF COMPLETE LOOP NOT OUTPUT
 WPIB     DCN    ** 
          UJN    WPIX        RETURN 
  
  
**        IDLT - TABLE OF IDLE PROGRAM ADDRESSES. 
  
 IDLT     BSS    0
          CON    IDLE        IDLE PROGRAM FOR MEMORY TEST 
          CON    OFFL        IDLE PROGRAM FOR *OFF* PPU-S 
          CON    IDLEL       LWA+1 FOR *IDLE* 
          CON    OFFLL       LWA+1 FOR *OFFL* 
  
  
*         PCHS - TABLE OF RESIDENT PPU CHANNEL INSTRUCTIONS.
  
  
 PCHS     CHTB               *PCM* RESIDENT CHANNEL INSTRUCTIONS
 PCHSL    EQU    *-PCHS 
 FCE      SPACE  4,10 
**        FCE - PROCESS FATAL CHANNEL ERRORS. 
* 
*         ENTRY  (PP) = PP NUMBER.
* 
*         EXIT   NONE AS FATAL ERROR HAS OCCURRED.
*                DISPLAY REMAINS ACTIVE.
* 
*         USES   /COMPSCE/LW
* 
*         CALLS  C2D, CSE, DLS, DRS, GSD, ABT.
* 
*         NOTE  -  ONCE *FCE* IS ENTERED NO EXIT IS MADE BACK TO THE
*         CALLING ROUTINE AS A FATAL ERROR OCCURRED.
  
  
 FCE      SUBR               ENTRY/EXIT 
          LDD    PP          SET PPU NUMBER 
          SBN    10D         CONVERT PPU NUMBER 
          MJN    FCE1        IF FIRST 10 PPUS 
          ADN    6
 FCE1     ADN    10D
          RJM    C2D
          STM    RMSAA
          LDC    FCEM        SET *PROCESSOR NOT RESPONDING.*
          STM    DRSB 
          RJM    ABT         ABORT
 ABT      SPACE  4,10 
**        ABT - ABORT DEADSTART.
* 
*         ENTRY  NONE.
* 
*         EXIT   DOES NOT EXIT. 
* 
*         USES   NONE.
* 
*         CALLS  CSE, GSD, DLS, DRS.
  
  
 ABT      SUBR               ENTRY ONLY 
          LDC    FEDA        SET *FATAL ERROR - DEADSTART ABORTED.* 
          STM    DLSF 
 ABT1     RJM    CSE         CHECK FOR SCR ERRORS 
          RJM    GSD         GENERATE CM DISPLAY
          RJM    DLS         DISPLAY LEFT SCREEN
          RJM    DRS         DISPLAY RIGHT SCREEN 
          UJN    ABT1        IF UPDATE DISPLAY
          SPACE  4,10 
**        GEM - GENERATE ERROR MESSAGE. 
* 
*         ENTRY  (TD) = BASE ADDRESS IN RIGHT SCREEN TABLE *DRSA*.
* 
*         EXIT   ERROR MESSAGES ARE SET UP FOR RIGHT SCREEN.
* 
*         USES   T1, EF, TD, TE, TF.
* 
*         CALLS  CDW, COA.
  
  
 GEM      SUBR               ENTRY/EXIT 
          LDC    RMSGA       SET ADDRESS
          STD    TF 
          LDM    GSDB+10
          SHN    14 
          ADM    GSDB+11
          RJM    COA         CONVERT CM ADDRESS 
          LDC    GSDB+12     CONVERT DATA 
          STD    TE 
          LDN    0
          STD    T1 
 GEM1     LDM    GSDC,T1     CONVERT MESSAGE DATA 
          ZJN    GEM2        IF DATA NOT RELEVENT 
          RJM    CDW
 GEM2     LDM    GSDD,T1     SET MESSAGE ADDRESS
          STI    TD 
          AOD    TD 
          AOD    T1 
          LMN    GSDCL
          NJN    GEM1        IF ALL FIELDS NOT CONVERTED
          LDD    EF 
          SCN    2
          LMN    2
          STD    EF 
          LJM    GEMX        RETURN 
 GSD      SPACE  4,10 
**        GSD - GENERATE CM DISPLAYS. 
* 
*         EXIT   (EF) .EQ. XXX2 IF A CPU ERROR HAS OCCURRED.
* 
*         USES   T1, TD, TF.
* 
*         CALLS  CDW, COA, GEM. 
  
  
 GSD      SUBR               ENTRY/EXIT 
          LDM    TPPA+20D 
          ZJN    GSDX        IF CPU NOT ACTIVE RETURN 
          LDC    DRSC        SET MESSAGE ADDRESS
          STD    TD 
          LDN    5           READ DATA FROM SCM 
          STD    T1 
          LDC    CPR
          CRM    GSDB,T1
          LDM    GSDB+4      RUN FLAG 
          STM    TPCI+20D 
          LDC    MESDA       CONVERT CENTRAL ADDRESS
          STD    TF 
          LDM    GSDB+10
          SHN    14 
          ADM    GSDB+11
          RJM    COA
          LDN    MESDC-MESDB+1
          RAD    TF 
 GSDA     RPN    0           CONVERT *P* FOR ACTIVE CPU 
*         RPN    1           IF CPU 1 ACTIVE
  
          RJM    COA
          LDN    24 
          STD    T1 
 GSD1     LDM    GSDB,T1     CHECK FOR CENTRAL DATA ERROR 
          ZJN    GSD2        IF NO ERROR HAS OCCURED
          RJM    GEM         GENERATE ERROR MESSAGE 
          UJN    GSD3 
  
 GSD2     AOD    T1 
          LMN    GSDBL
          NJN    GSD1        IF CHECKING NOT COMPLETE 
 GSD3     LJM    GSDX 
  
  
*         CPU STATUS BUFFER.
  
  
 GSDB     BSS    5*5         5 CM WORD BUFFER 
 GSDBL    EQU    *-GSDB 
  
  
*         CPU STATUS DATA POINTERS. 
  
  
 GSDC     CON    0
          CON    RMSHA       EXPECTED DATA
          CON    RMSIA       ACTUAL DATA
          CON    RMSJA       DIFFERENCE 
 GSDCL    EQU    *-GSDC 
  
  
*         CPU STATUS MESSAGE POINTERS.
  
  
 GSDD     CON    RMSG        ADDRESS
          CON    RMSH        EXPECTED DATA
          CON    RMSI        ACTUAL DATA
          CON    RMSJ        DIFFERENCE 
 GSDDL    EQU    *-GSDD 
 COA      SPACE  4,10 
**        COA - CONVERT 18 BIT ADDRESS TO DISPLAY.
* 
*         ENTRY  (A) .EQ. 18 BIT ADDRESS FIELD. 
*                (TF) .EQ. ADDRESS OF MESSAGE FIELD.
* 
*         EXIT   ((TF)) - ((TF)) + 2 .EQ. DISPLAY CODE EQUIVALENT.
* 
*         USES   TF, TH.
* 
*         CALLS  C2D. 
  
  
 COA      SUBR               ENTRY/EXIT 
          STD    TH          SAVE LOWER 12 BITS 
          SHN    -14
          RJM    C2D
          STI    TF 
          AOD    TF 
          LDD    TH          CONVERT MIDDLE 6 BITS
          SHN    -6 
          RJM    C2D
          STI    TF 
          AOD    TF 
          LDD    TH          CONVERT LOWER 6 BITS 
          RJM    C2D
          STI    TF 
          UJN    COAX        RETURN 
 CPD      SPACE  4,10 
**        CPD - CONVERT PPU DATA. 
* 
*         ENTRY  (A) .EQ. ADDRESS OF MESSAGE. 
*                (TF) .EQ. DATA FIELD TO BE CONVERTED.
* 
*         EXIT   ((A)) - ((A)) + 2 .EQ. DISPLAY CODE EQUIVALENT OF
*                (TF).
* 
*         USES   TF, TH.
* 
*         CALLS  C2D. 
  
  
 CPD      SUBR               ENTRY/EXIT 
          STD    TH          SAVE MESSAGE ADDRESS 
          LDD    TF          CONVERT FIRST DATA WORD
          SHN    -6 
          RJM    C2D
          STI    TH 
          AOD    TH 
          LDD    TF          CONVERT SECOND DATA WORD 
          RJM    C2D
          STI    TH 
          AOD    TH 
          UJN    CPDX        RETURN 
 CDW      SPACE  4,10 
**        CDW - CONVERT CM DATA WORD. 
* 
*         ENTRY  (A) .EQ. ADDRESS OF MESSAGE. 
*                (TE) .EQ. ADDRESS OF FIELD TO BE CONVERTED.
* 
*         EXIT   ((A)) - ((A)) + 17 .EQ. DISPLAY CODE EQUIVALENCE OF
*                (TE) - (TE) + 5. 
* 
*         USES   T2, TE, TF, TH.
* 
*         CALLS  CPD. 
  
  
 CDW      SUBR               ENTRY/EXIT 
          STD    TH          SAVE MESSAGE ADDRESS 
          LDN    5
          STD    T2 
 CDW1     LDI    TE          CONVERT 4 OCTAL DIGITS 
          STD    TF 
          LDD    TH 
          RJM    CPD
          LDC    2R          INSERT BLANK FIELD 
          STI    TH 
          AOD    TH 
          AOD    TE 
          SOD    T2 
          NJN    CDW1        IF CM WORD NOT CONVERTED 
          UJN    CDWX        RETURN 
          SPACE  4,10 
**        VCM - VERIFY CENTRAL MEMORY.
* 
*         NOTE - NO EXIT IS TAKEN IF A CM ERROR OCCURS. 
*                IF THIS IS CHANGED, T1-T7 USAGE MUST BE CHECKED
*                PLUS MESSAGES DISPLAYED ON THE RIGHT SCREEN. 
* 
*         ENTRY  (T4) = CM ADDRESS TO VERIFY. 
* 
*         USES   T1, T2.
* 
*         CALLS  GEM, DLS, DRS. 
  
  
 VCM      SUBR               ENTRY/EXIT 
          LDD    T4          SAVE CM ADDRESS
          STM    GSDB+11
          SHN    -14
          STM    GSDB+10
          LDN    0
          STD    T2          CLEAR ERROR FLAG 
          STD    T1          CLEAR COUNTER
 VCM1     LDM    GSDB+12,T1  GET EXPECTED 
          LMM    GSDB+17,T1  COMPARE WITH ACTUAL
          STM    GSDB+24,T1  SAVE DIFFERENCE
          ZJN    VCM2        IF NO ERROR
          AOD    T2          SET ERROR FLAG 
 VCM2     AOD    T1 
          LMN    5
          NJN    VCM1        IF CM WORD NOT FINISHED
          LDD    T2 
          ZJN    VCMX        IF NO ERRORS  RETURN 
          RJM    CSE         CHECK SCR ERRORS 
          LDC    EIEA        SET *ERROR IN EXECUTABLE AREA.*
          STM    DLSE 
          LDC    FEDA        SET *FATAL ERROR - DEADSTART ABORTED.* 
          STM    DLSF 
          LDC    DRSC        SET BASE ADDRESS FOR RIGHT SCREEN
          STD    TD 
          RJM    GEM         GENERATE ERROR MESSAGE 
 VCM3     RJM    DLS         DISPLAY LEFT SCREEN
          RJM    DRS         DISPLAY RIGHT SCREEN 
          UJN    VCM3        HANG DEADSTART 
          TITLE  DISPLAY SUBROUTINES. 
 DLS      SPACE  4,10 
**        DLS - DISPLAY LEFT SCREEN.
* 
*         ENTRY  (DLSA) - (DLSF) .EQ. ADDRESS OF RESPECTIVE 
*                MESSAGE. 
* 
*         USES   T5, TF.
* 
*         CALLS  DNL. 
  
  
 DLS2     DCN.   CH+40
 DLS      SUBR               ENTRY/EXIT 
          FNC.   7001,CH     MEDIUM CHARACTERS, LEFT SCREEN 
          ACN.   CH 
          LDC    7600 
          STD    TF 
          LDC    DLSA-1 
          STD    T5 
 DLS1     AOD    T5 
          LMC    DLSAL
          ZJN    DLS2        IF END OF LEFT SCREEN DISPLAY RETURN 
          LCN    24          MOVE DISPLAY COORDINATES 
          RAD    TF 
          OAN.   CH+40
          LDC    6000 
          OAN.   CH+40
          LDI    T5 
          RJM    DNL         DISPLAY NEXT LINE
          UJN    DLS1 
  
  
*         TABLE OF LEFT SCREEN LINE POINTERS. 
  
  
 DLSA     CON    TITLE
          CON    MESA 
          CON    MESA 
 DLSB     VFD    12/MESA
 DLSC     VFD    12/MESA
 DLSD     VFD    12/MESA
          VFD    12/MESA
          CON    MESA 
 DLSE     VFD    12/MESA
          CON    MESA 
          CON    MESA 
 DLSF     VFD    12/MESA
 DLSAL    EQU    *
 DRS      SPACE  4,10 
**        DRS - DISPLAY RIGHT SCREEN. 
* 
*         ENTRY  ((DRSA) - (DRSA + DRSAL) .EQ. ADDRESS OF RESPECTIVE
*                MESSAGE. 
* 
*         EXIT   RIGHT SCREEN DATA DISPLAYED. 
* 
*         USES   T1, T5, TF.
* 
*         CALLS  DNL. 
  
  
 DRS5     LDC    TEMA-1 
          STD    T5 
 DRS6     LCN    12          MOVE DISPLAY 
          RAD    TF 
          OAN.   CH+40
          ADC    -7016
          MJN    DRS7        IF SCREEN FILLED 
          LDC    6000 
          OAN.   CH+40
          AOD    T5 
          LDI    T5 
          ZJN    DRS8        IF ALL MESSAGES DISPLAYED
          RJM    DNL
          UJN    DRS6 
  
 DRS7     LDC    7012        DISPLAY *MORE S/C REGISTER ERRORS.*
          OAN.   CH+40
          LDC    6000 
          OAN.   CH+40
          LDC    MSCE 
          RJM    DNL
  
 DRS8     UJN    DRS9 
 DRSE     EQU    *-1
*         PSN                IF CYBER 170 
  
          LDM    TEMA 
          NJN    DRS9        IF S/C REGISTER ERRORS 
          LDC    NONM        SET *NONE.*
          RJM    DNL
  
 DRS9     DCN.   CH+40
  
 DRS      SUBR               ENTRY/EXIT 
          LDM    DRSB 
          LMC    MESA 
          NJN    DRS1        IF PP DATA ERROR 
          LDC    NONM        SET *NONE.*
          STM    DRSB 
 DRS1     LDM    DRSC 
          LMC    MESA 
          NJN    DRS2        IF CM DATA ERROR 
          LDC    NONM        SET *NONE.*
          STM    DRSC 
 DRS2     FNC.   7100,CH     RIGHT SCREEN, SMALL CHARACTERS 
          ACN.   CH 
          LDC    7700 
          STD    TF 
          LDC    DRSA-1 
          STD    T5 
 DRS3     AOD    T5          FIND NEXT WORD 
          LMC    DRSAL
          NJN    DRS4        IF ERROR DATA NOT COMPLETE 
          LJM    DRS5 
  
 DRS4     LCN    12          MODIFY DISPLAY COORDINATES 
          RAD    TF 
          OAN.   CH+40
          LDC    6000 
          OAN.   CH+40
          LDI    T5          DISPLAY NEXT LINE
          RJM    DNL
          UJN    DRS3 
  
  
*         TABLE OF RIGHT SCREEN LINE POINTERS.
  
  
 DRSA     VFD    12/TITL
          VFD    12/MESA
          VFD    12/RMSA
 DRSB     VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/RMSF
 DRSC     VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
          VFD    12/MESA
 DRSD     VFD    12/MESA
          VFD    12/MESA
 DRSAL    EQU    *
 DNL      SPACE  4,10 
**        DNL - DISPLAY NEXT LINE.
* 
*         ENTRY  (A) = MESSAGE ADDRESS. 
* 
*         USES   T1.
  
  
 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
  
  
*         COMMON DECK.
  
*CALL     COMPC2D 
          EJECT 
          TITLE CONSOLE MESSAGES. 
**        CONSOLE MESSAGES. 
  
  
 TITLE    DATA   C* CHECK COMPUTER MEMORY.* 
  
  
 MESA     DATA   C*  *
  
  
 MESB     DATA   L*S/C REGISTER  *
 MESBA    DATA   L*00*
          DATA   L* BIT  *
 MESBB    DATA   0
          DATA   0
          CON    0
  
  
 MESC     DATA   L*PP*
 MESCA    DATA   L*00*
          DATA   L*  *
 MESCB    DATA   0
          DATA   0
          CON    0
  
  
 MESD     DATA   L*CM ADDRESS  *
 MESDA    DATA   0
          DATA   0
          DATA   0
          DATA   L* P*
 MESDB    DATA   L*0=  *
 MESDC    DATA   0
          DATA   0
          DATA   0
          CON    0
  
  
 CPNA     DATA   C*CM NOT ACTIVE - LEVEL 3 REC.*
  
  
 EIEA     DATA   C*ERROR IN EXECUTABLE AREA.* 
  
  
 FEDA     DATA   C*FATAL ERROR - DEADSTART ABORTED.*
  
  
 MESF     DATA   L*INTERLOCK REGISTER  *
 MESFA    DATA   L*00*
          DATA   L* BIT  *
 MESFB    DATA   0
          DATA   0
          CON    0
  
  
 ICFE     DATA   C*INTERLOCK REG. CHANNEL FULL.*
  
  
 MESG     DATA   C* CHECK MEMORY COMPLETE.* 
  
  
**        CONSOLE MESSAGES (RIGHT SCREEN).
  
  
 TITL     DATA   C*      MEMORY DATA ERRORS.* 
  
  
 NONM     DATA   C*NONE.* 
  
  
 RMSA     DATA   L*PP*
 RMSAA    DATA   0
          CON    0
  
  
 RMSB     DATA   L*ADDRESS       *
 RMSBA    DATA   0
          DATA   0
          CON    0
  
  
 RMSC     DATA   L*EXPECTED DATA *
 RMSCA    DATA   0
          DATA   0
          CON    0
  
  
 RMSD     DATA   L*ACTUAL DATA   *
 RMSDA    DATA   0
          DATA   0
          CON    0
  
  
 RMSE     DATA   L*DIFFERENCE    *
 RMSEA    DATA   0
          DATA   0
          CON    0
  
  
 RMSF     DATA   C*CENTRAL MEMORY*
  
  
 RMSG     DATA   L*ADDRESS       *
 RMSGA    DATA   0
          DATA   0
          DATA   0
          CON    0
  
  
 RMSH     DATA   L*EXPECTED DATA *
 RMSHA    BSS    15D
          CON    0
  
  
 RMSI     DATA   L*ACTUAL DATA  * 
 RMSIA    BSS    15D
          CON    0
  
  
 RMSJ     DATA   L*DIFFERENCE    *
 RMSJA    BSS    15D
          CON    0
  
  
 FCEM     DATA   C*PROCESSOR NOT RESPONDING.* 
  
  
 SCRE     DATA   C*      S/C REGISTER ERRORS.*
  
  
 SCFE     DATA   C*S/C REGISTER CHANNEL FULL.- FATAL ERROR.*
  
  
 MSCE     DATA   C*      MORE S/C REGISTER ERRORS.* 
  
  
 TEMA     CON    0           TABLE OF ERROR MESSAGE ADDRESSES 
          BSS    NTEB*2 
  
  
 OVL      BSS    0           OVERLAY LOAD ADDRESS 
          EJECT 
          IDENT  CMC,OVL
          ORG    OVL
          COMMENT CTI PCM OVERLAY 
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
          TITLE  INITIALIZATION SUBROUTINES.
 SCM      SPACE  4,10 
**        SCM - START CM CHECK PROGRAM. 
* 
*         ENTRY  (SPW = 7776) .EQ. WORD 14 OF D.S. PANEL. 
* 
*         EXIT   (000000) - (777777) .EQ. 7777....7777. 
* 
*         USES   T3, T4, T6.
* 
*         CALLS  CEM. 
  
  
 SCM7     LDC    CPNA        SET *CM NOT ACTIVE - LEVEL 3 REC.* 
 SCM8     STM    DLSD 
  
 SCM      SUBR               ENTRY/EXIT 
          LDM    /CPA/OPTN
          SHN    21-0 
          PJN    SCM1        IF CPU 0 ON
          AOM    GSDA        SET CPU 1
          AOM    SCMA 
          STM    SCMB 
          LDC    100         SET *P1=*
          RAM    MESDB
 SCM1     LDM    /CPA/DSPNLZ+13 
          SHN    -11
          LPN    7
          SBN    3
          PJN    SCM7        IF MEMORY TO BE RECOVERED
  
          RJM    CEM         CHECK EXECUTED CENTRAL MEMORY
          LDN    1           SET CPU AVAILABLE
          STM    TPPA+20D 
          LDM    /CPA/CMSZ   SET MEMORY SIZE
          ZJN    SCM2        IF NOT 262K CM 
          LCN    0           SET 262K CM = 777777B. 
          UJN    SCM3        PROCEED
  
 SCM2     LDM    /CPA/CMSZ+1
          SHN    6
          SBN    1
 SCM3     STD    T4 
          STM    /SCM/IXPA+/SCM/FL    SET LOWER FL
          STM    /SCM/MTXA+/SCM/FL
          SHN    -14
          STD    T3 
          STM    /SCM/IXPA+/SCM/FL-1   SET UPPER FL 
          STM    /SCM/MTXA+/SCM/FL-1
          SHN    14 
          LMD    T4 
          SHN    -6 
          STM    /SCM/IXPA+/SCM/A0     SET UPPER A0 
          STM    /SCM/MTXA+/SCM/A0
          LDD    T4                    SET LOWER A0 
          SHN    6
          STM    /SCM/IXPA+/SCM/A0+1
          STM    /SCM/MTXA+/SCM/A0+1
          LDD    T3          WRITE LAST CM WORD 
          SHN    14 
          LMD    T4 
          CWD    SV 
          LDN    0           WRITE CPU HAND-OFF STATE PROGRAM 
          CWD    SP 
          LDC    /SCM/IXPAL/5  WRITE IDLE EXCHANGE PACKAGE
          STD    T6 
          LDC    IXPA 
          CWM    /SCM/IXPA,T6 
          LDC    /SCM/IDLPL  WRITE CENTRAL IDLE PROGRAM 
          STD    T3 
          LDC    IDLP 
          CWM    /SCM/IDLP,T3 
          LDM    /CPA/OPTN   CHECK MACHINE TYPE 
          SHN    -11
          LPN    3
          NJN    SCM5        IF CPU IS A 176
          LDC    IXPA        START CPU
  
 SCMA     EXN    0
*         EXN    1           IF CPU 0 OFF AND CPU 1 ON
  
          LDC    /SCM/MTPL   WRITE CHECK PROGRAM
          STD    T3 
          LDC    MTPA 
          CWM    /SCM/MTP,T3
          LDC    /SCM/MTXAL/5  REWRITE IDLE EXCHANGE WITH TEST EXCHANGE 
          RAD    T6 
          LDC    IXPA 
          CWM    /SCM/IXPA,T6 
          LDC    MTXA        START CHECK PROGRAM
  
 SCMB     EXN    0
*         EXN    1           IF CPU 0 OFF AND CPU 1 ON
  
 SCM4     LDC    MESD        SET *CM ADDRESS 000000 P0= 000000.*
          LJM    SCM8        RETURN 
  
*         PROCESS 176 CPU.
  
 SCM5     LDC    FCCL+DSCU   DEADSTART THE CPU
          OAN.   SC+40
          IAN.   SC+40
          LDN    60          SET MONITOR MODE FOR CYBER 176 
          STM    /SCM/MTXA+5*3
          LDN    /SCM/MTXAL/5  WRITE EXCHANGE PACKAGE 
          STD    T6 
          LDC    IXPA 
          CWM    /SCM/MTXA,T6 
          LDM    /SCM/IDLP+1  CHANGE CPU HANG TO IDLE 176 CPU            DIMA218
          STM    /SCM/IDLE1+1                                            DIMA218
          STM    /SCM/IDLE2+1                                            DIMA218
          STM    /SCM/IDLE3+1                                            DIMA218
          LDM    /SCM/IDLP+2  CHANGE CPU HANG TO IDLE 176 CPU            DIMA218
          STM    /SCM/IDLE1+2                                            DIMA218
          STM    /SCM/IDLE2+2                                            DIMA218
          STM    /SCM/IDLE3+2                                            DIMA218
          LDN    /SCM/MTPL   COPY PROGRAM TO CM 
          STD    T6 
          LDC    MTPA 
          CWM    /SCM/MTP,T6
          LDC    FCSB+EXBB   SET EXCHANGE BIAS
          OAN.   SC+40
          IAN.   SC+40
 SCM6     LDC    FCCL+EXBB+1 CLEAR OTHER BITS 
 SCMC     EQU    *-1
          OAN.   SC+40
          IAN.   SC+40
          AOM    SCMC        BUMP BIT ADDRESS 
          LMC    FCCL+EXBB+4
          NJN    SCM6        IF ALL BITS NOT CLEAR
          LDC    FCSB+DSCU   START THE PROGRAM
          OAN.   SC+40
          IAN.   SC+40
          LJM    SCM4        RETURN 
  
  
*         CENTRAL MEMORY CHECK EXCHANGE PACKAGES. 
  
  
          QUAL   SCM
 A0       EQU    2           PPU RELATIVE ADDRESS OF A0 IN XP 
 FL       EQU    13          PPU RELATIVE ADDRESS OF FL IN XP 
  
  
*         IDLE EXCHANGE PACKAGE.
  
  
 IXPA     EXJP   P=001040,A0=377777,B1=1,FL=377777,EM=0 
 IXPAL    EQU    *-IXPA 
  
  
*         CENTRAL MEMORY CHECK EXCHANGE PACKAGE.
  
  
 MTXA     EXJP   P=1060,A0=377777,B1=1,FL=377777,EM=0 
 MTXAL    EQU    *-MTXA 
  
  
**        CENTRAL MEMORY CHECK PROGRAM. 
  
  
* 001040
*         EQ     *
 IDLP     VFD    60/04000010406100046000
* 001041
*RNF      DATA   0
          VFD    60/0 
* 001042
*CPA      DATA   0
          VFD    60/0 
* 001043
*ED       DATA   0
          VFD    60/0 
* 001044
*AD       DATA   0
          VFD    60/0 
* 001045
*DD       DATA   0
          VFD    60/0 
 IDLPLL   EQU    *-IDLP 
 IDLPL    EQU    IDLPLL/5 
 MTP      BSS    0
* 001060
*         SA1    ED          EXPECTED DATA
*         SB2    A0          FIELD LENGTH 
*         BX6    X1 
          VFD    60/51100010436420010611
* 001061
*LOOP     SB3    IXPA 
*         SA7    CPA
          VFD    60/61300010005170001042
* 001062
*LOOP1    SB4    B1          FIRST WORD ADDRESS 
*         SX7    B4 
*         SA7    A7 
          VFD    60/66410767405477046000
* 001063
*LOOP2    SA6    B4          SET DATA 
*         SB4    B4+B1
*         SX7    B4 
*         SA7    A7          SET CURRENT ADDRESS
          VFD    60/56640664417674054770
* 001064
*         NE     B4,B3,LOOP2 IF LOW CORE NOT COMPLETE 
*         SB4    END
          VFD    60/05430010636140001113
* 001065
*         SX7    B4 
*         SA7    A7 
*         SB6    3
          VFD    60/76740547706160000003
* 001066
*LOOP3    SA6    B4 
*         SB4    B4+B1
*         SX7    B4 
*         SA7    A7 
          VFD    60/56640664417674054770
* 001067
*LOOP4    NE     B4,B2,LOOP3 IF UPPER CORE NOT COMPLETE 
*         SB4    B1 
*         SX7    B4 
          VFD    60/05240010666641076740
* 001070
*         SA7    A7 
          VFD    60/54770460006100046000
* 001071
*LOOP5    SA1    B4          READ DATA
*         BX7    X1-X6
*         SA7    A7+B6       SET DIFFERENCE 
          VFD    60/56140137165477646000
* 001072
*         ZR     X7,LOOP6    IF DATA CORRECT
*         BX7    X1 
*         SA7    A7-B1       SET ACTUAL DATA
          VFD    60/03070010751071155771
* 001073
*         SX7    B1 
*         SA7    A7-B6       SET COMPLETE 
          VFD    60/76710557766100046000
* 001074
*         EQ     0           HANG CPU 
 IDLE1    VFD    60/04000000004600046000                                 DIMA218
* 001075
*LOOP6    SB4    B4+B1       INCREMENT ADDRESS
*         SX7    B4 
*         SA7    A7-B6
          VFD    60/66441767405577646000
* 001076
*         NE     B3,B4,LOOP5  IF LOW CORE NOT COMPLETE
*         SB4    END
          VFD    60/05340010716140001113
* 001077
*         SX7    B4 
*         SA7    A7 
          VFD    60/76740547706100046000
* 001100
*LOOP7    SA1    B4          READ DATA
*         BX7    X1-X6
*         SA7    A7+B6
          VFD    60/56140137165477646000
* 001101
*         ZR     X7,LOOP8    IF DATA CORRECT
*         BX7    X1 
*         SA7    A7-B1       SET ACTUAL DATA
          VFD    60/03070011041071155771
* 001102
*         SX7    B1 
*         SA7    A7-B6       SET COMPLETE 
          VFD    60/76710557766100046000
* 001103
*         EQ     0           HANG CPU 
 IDLE2    VFD    60/04000000004600046000                                 DIMA218
* 001104
*LOOP8    SB4    B4+B1
*         SX7    B4 
*         SA7    A7-B6
          VFD    60/66441767405577646000
* 001105
*         NE     B4,B2,LOOP7 IF UPPER NOT COMPLETE
*         SB5    B5+B1
*         SX3    B5 
          VFD    60/05240011006655176350
* 001106
*         LX3    59 
*         NG     X3,LOOP4    IF RESTORE NOT CHECKED 
*         LX3    59 
          VFD    60/20373033300106720373
* 001107
*         PL     X3,LOOP9    IF CHECK COMPLETE
*         BX6    -X6
*         SA6    A7+B1
          VFD    60/03230011111466654671
* 001110
*         EQ     LOOP        CHECK COMPLEMENT 
          VFD    60/04000010614600046000
* 001111
*LOOP9    SX7    B1 
*         SA7    A7-B1       SET COMPLETE 
          VFD    60/76710557716100046000
* 001112
*         EQ     0           HANG CPU 
 IDLE3    VFD    60/04000000004600046000                                 DIMA218
* 001113
 MTPLL    EQU    *-MTP
 MTPL     EQU    MTPLL/5
          QUAL   *
          EJECT 
          TITLE  PP RESIDENT IDLE LOOP. 
 IDLE     SPACE  4,10 
*         IDLE  -  PPU RESIDENT CHECK PROGRAM.
  
  
 IDLE     BSS    0
          QUAL   IDLE 
  
  
*         DIRECT LOCATION ASSIGNMENTS.
  
  
          LOC    0
  
 T0       CON    IDL2-1 
 T1       CON    0
 T2       CON    0
 T3       CON    0
 T4       CON    0
 T5       CON    0
 T6       CON    0
 T7       CON    0
 RF       CON    0           PPU ACTIVE FLAG
 WD       CON    0           CURRENT TEST ADDRESS 
 ED       CON    0           EXPECTED DATA
 AD       CON    0           ACTUAL DATA
 DD       CON    0           LOGICAL DIFFERENCE OF ED AND AD
          BSSZ   100-*
 IDL      SPACE  4,10 
**        IDL  -  MEMORY CHECK IDLE LOOP. 
  
  
 IDL1     IJM    IDLX,**     IF NO NEW DATA 
  
          EJM    IDLX,**     IF DATA NOT AVAILABLE
  
          IAN    ** 
          ZJN    IDLX        IF INVALID DATA
  
          STM    IDLA 
 IDL2     RJM    CPM         EXECUTE FUNCTION 
 IDLA     EQU    *-1
  
 IDLX     LJM    IDL1        CHECK FOR NEW REQUEST
 IDL      EQU    *-1
  
          UJN    IDL1 
  
  
**        XIDL - EXIT TO IDLE LOOP. 
  
  
 XIDL     LDC    IDL1        PREVENT RETURN TO CALLING ROUTINE
          STM    IDL
          STD    RF          SET RUN COMPLETE 
          UJN    IDLX 
  
  
**        STR  -  STATUS REQUEST. 
  
 STR      SUBR               ENTRY/EXIT 
          LDN    5           DELAY
          SBN    1
          NJN    *-1         DELAY
          LDD    WD 
          OAN    ** 
          LDD    RF 
          OAN    ** 
          LDD    ED 
          OAN    ** 
          LDD    AD 
          OAN    ** 
          LDD    DD 
          OAN    ** 
          FJM    *,**        IF DATA NOT ACCEPTED 
          DCN    ** 
          UJN    STRX        RETURN 
  
  
**        RDS - RESET DEAD START STATUS.
  
  
 RDS      SUBR               ENTRY/EXIT 
          LCN    0
 RDSA     IAM    0,** 
  
  
**        CPM - CHECK PP MEMORY.
  
  
 CPM      SUBR               ENTRY/EXIT 
 CPM1     LDD    ED          INVERT DATA
          LMC    7777 
          STD    ED 
          LDN    DD+1 
          STD    WD 
 CPM2     RJM    IDL         CHECK FOR REQUEST
          LDD    ED          PRESET DATA
          STI    WD 
          AOD    WD 
          LMC    IDL1 
          NJN    CPM2        IF NOT COMPLETE
          LDC    END
          STD    WD 
 CPM3     RJM    IDL         CHECK FOR REQUEST
          LDD    ED 
          STI    WD 
          AOD    WD 
          LMC    10000
          NJN    CPM3        IF NOT COMPLETE
          LDN    DD+1        RESET DIRECT LOCATIONS 
          STD    WD 
 CPM4     RJM    IDL         CHECK FOR NEW REQUEST
          LDI    WD          CHECK DATA IN MEMORY 
          STD    AD 
          LMD    ED 
          STD    DD 
          NJN    CPM5        IF DATA ERROR
          AOD    WD 
          LMC    IDL1 
          NJN    CPM4        IF NOT COMPLETE
          UJN    CPM6 
  
 CPM5     LJM    XIDL        END OF ATTEMPT TO VALIDATE MEMORY
  
 CPM6     LDC    END
          STD    WD 
 CPM7     RJM    IDL         CHECK FOR NEW REQUEST
          LDI    WD          CHECK MEMORY DATA
          STD    AD 
          LMD    ED 
          STD    DD 
          NJN    CPM5        IF DATA ERROR
          AOD    WD 
          LMC    10000
          NJN    CPM7        IF NOT COMPLETE
          LDD    ED 
          LMC    7777 
          NJN    CPM8        IF NOT COMPLETE
          UJN    CPM5 
  
 CPM8     LJM    CPM1 
  
  
*         FWA OF DATA CHECK AREA. 
  
  
 END      BSS    0
          LOC    *O 
          QUAL   *
 IDLEL    EQU    *
  
  
*         OFFL - PP OFF LOOP. 
  
  
 OFFL     BSS    0
          LOC    0
          CON    0
          UJN    *
          LOC    *O 
 OFFLL    EQU    *
  
  
*         PPU IDLE LOOP CHANNEL RELOCATION TABLE. 
  
  
 ICHS     BSS    0
          QUAL   IDLE 
          CHTB               PP RESIDENT CHANNEL INSTRUCTIONS 
          QUAL   *
 ICHSL    EQU    *-ICHS 
  
          TTL    PCM/SCE - STATUS/CONTROL REGISTER ERROR PROCESSOR. 
          TITLE 
          IDENT  SCE,OVL
          ORG    OVL
          LIST   X
*CALL,VERS
          TITLE  PCM           SCE - "VERS" 
          COMMENT PCM OVERLAY 
          COMMENT CTI PCM OVERLAY 
          COMMENT COPYRIGHT CONTROL DATA CORPORATION, 1979
*CALL,CDCCRN
*CALL COMPSCE 
  
  
 BUFR     CON    0           ERROR MESSAGES                              DIMA222
  
  
 END      EQU    TEMA+1      FWA TO CLEAR IN PP0
  
          END 
