          EJECT
*         CTEXT  CTP$DFT MAIN NON RES RTNS.
*
*         THIS DECK FORMS THE CORE OF THE MAIN NON RESIDENT ROUTINES
*         OVERLAY IN DFT. IT CONTAINS *MHE*, *WDR*, *CHW*, *IFM*, AND *WM7*.
 CHW      SPACE  4,10
**        CHW - CHECK WARNING ENTRY.
*
*         CALLS  CLW.


          ROUTINE  CHW

          LDM    WARN
          NJP    CHW2        IF EITHER WARNING STILL PENDING LEAVE
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJP    CHW3        IF VERSION 5 OR GREATER
          LDM    PWEP
          ZJN    CHW1        IF NO ENVIRONMENT POINTER
          LDM    PERR        POWER ERROR FLAG
          NJN    CHW1        CHECK SHORT WARN
          LDM    PWEP        GET OFFSET OF ENTRY
          STM    RTP2
          CALL   CLW         CLEAR ENVIRONMENT WARNING
          LDN    0
          STM    TENV
          STM    STIM        CLEAR TIMING FLAGS WHEN WARN CLEARS
          STM    TIMU
          STM    DTEW
          STM    PWEP        CLEAR ENVIRONMENT WARN
 CHW1     LDM    SWEP
          ZJN    CHW2        IF NO POINTER - DONE
          LDM    SHRR        SHORT WARN ERROR FLAG
          NJN    CHW2
          LDM    SWEP        POINTER TO SHORT WARNING ENTRY
          STM    RTP2
          CALL   CLW         CLEAR SHORT WARNING
          LDN    0
          STM    SWEP        CLEAR POWER WARNING
 CHW2     LJM    CHWX        RETURN

 CHW3     LDN    1
          STM    RTP1
          LDM    NNRB
          STM    RTP2        SAVE NUMBER OF NON REGISTER BUFFERS
 CHW4     RJM    IBW         INCREMENT BUFFER CONTROL WORD
          CRDL   CM
          RJM    CWE         CHECK WARNING ENTRY
          NJN    CHW5        IF NOT WARNING
          LDN    1
          STM    REDF        SET TO CALL READ EPM DATA
          CALL   CLW         CLEAR WARNING ENTRY
 CHW5     SOML   RTP2
          NJN    CHW4        IF NOT DONE CHECKING BUFFER
          LDN    0
          STM    PWEP
          STM    RTP1
          LDM    REDF
          ZJN    CHW6        IF NO WARNING CLEARED
          LDN    0
          STM    REDF        CLEAR FLAG TO CALL RED
          CALL   RED         READ 960 EPM DATA
 CHW6     LJM    CHWX        RETURN
 CWE      SPACE  4,10
**        CWE - CHECK FOR WARNING ENTRY.
*
*         ENTRY  (CM) - (CM+3) BUFFER CONTROL WORD.
*
*         EXIT   (A) = 1 IF NOT A WARNING ENTRY.
*                (A) = 0 IF A WARNING ENTRY


 CWE0     LDN    1           RETURN
 CWE      SUBR               ENTRY/EXIT
          LDDL   CM+1
          SHN    -BC.ANP
          SBN    EPEN
          MJN    CWE0        IF NOT A WARNING ENTRY
          LDDL   CM+1
          LPN    0#F
          SBN    4
          PJN    CWE0        IF WARNING BUT ALREADY CLEARED
          LDN    0
          UJN    CWEX        RETURN
 CNS      SPACE  4,10
**        CNS - CHECK FOR NEGATIVE SIT.
*
*         USES   T1 - T4, T7.
*
*         CALLS  GCM, ICC, IDA, PCM, RMR.
*
*         MACROS WRITMR.


          ROUTINE  CNS

          LDN    0           CLEAR FLAG
          STM    TSIT
          LDM    IOUN
          NJN    CNS1        IF RUNNING AS DFT-S
          LDN    D8TY        CHECK FOR NOS/VE BEING ACTIVE
          RJM    IIB         INCREMENT INTERFACE BLOCK
          CRDL   T1
          LDDL   T4
          SHN    21-15
          MJN    CNS2        IF 180 STANDALONE OR DUAL STATE
 CNS1     LJM    CNSX        RETURN

*         INITIALIZE FOR PROCESSING ALL CPU-S.

 CNS2     LDN    ECMR        *READMR  RDATA,CMCC,ECMR*
          STDL   RN
          LDM    CMCC
          RJM    RMR         READ MAINTENANCE REGISTER
          LDM    RDATA,PO    SAVE PORT INFORMATION
          STM    CNSB
          LDN    2           NUMBER OF CPU-S TO PROCESS
          STM    CNSD
          LDC    PSIT        *SIT* REGISTER NUMBER
          STDL   RN

*         CHECK IF NEXT CPU IS TO BE PROCESSED.

 CNS3     SOML   CNSD
          MJN    CNS1        IF ALL CPU-S HAVE BEEN CHECKED
          STM    CPUO        SAVE CPU ORDINAL BEING EXAMINED
          STD    T7
          SHN    2
          RAD    T7
          ERRNZ  CPNR-5      CODE ASSUMES VALUE
          LDML   TCPU+CPUM,T7
          ZJN    CNS3        IF CPU NOT PRESENT
          LDC    SHNI+4+3
          SBM    TCPU+CPUP,T7
          STM    CNSA
          LDN    1
 CNSA     SHN    **
          STM    CNSC
          LDC    **
 CNSB     EQU    *-1
          LPC    **
 CNSC     EQU    *-1
          NJN    CNS3        IF PORT DISABLED

*         READ AND COMPARE *SIT* WITH LIMIT VALUE.
*         IF *SIT* BECOMES MORE NEGATIVE THAN APPROXIMATELY
*         2 SECONDS, THEN IT WILL NEED TO BE RESET.

          LDM    TCPU+CPUC,T7
          RJM    RMR         READ MAINTENANCE REGISTER
          LDM    RDATA+6
          SHN    -6
          STD    T1
          LDM    RDATA+4
          SHN    10
          LMM    RDATA+5
          SHN    2
          LMD    T1
          MJN    CNS5        IF *SIT* IS NEGATIVE
 CNS4     LJM    CNS3        PROCESS NEXT CPU

 CNS5     ADC    2000000D/16384D+1
          PJN    CNS4        IF *SIT* > -2 SECONDS

*         RESET *SIT*.
*         THE *SIT* WILL BE SET TO APPROXIMATELY 50000 MICROSECONDS.

          RJM    PAC         PUT VALUE TO *MRVAL*
          LDN    0
          STM    RDATA+4
          STM    RDATA+5
          STM    RDATA+7
          LDC    50000D/0#100
          STM    RDATA+6
          LDM    TCPU+CPUC,T7
          STD    EC
          WRITMR RDATA

*         COUNT THIS OCCURRENCE.

          AOML   NSIT
          LDN    VER5
          RJM    VCK         CHECK VERSION
          PJN    CNS7        IF VERSION 5 OR GREATER
          LDC    CMSN*10000+CM+3
          RJM    ICC         INCREMENT CM BASED COUNTER
 CNS6     UJP    CNSX        RETURN

 CNS7     LDML   NSIT
          STML   CNSE+3
          LDN    0
          STD    ET
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDN    BC
          RJM    CLR         CLEAR SCRATCH BUFFER CONTROL WORD
          LDC    2*0#1000+DANSC
          STDL   BC+BCDA     SAVE THE DFT ANALYSIS CODE IN THE BCW
          SETFLG (BC.FL)
          LDN    NRSP
          RJM    IDA         POINTER TO NON REGISTER STATUS BUFFER
          CRDL   CM
          LRD    CM+1
          LDD    CM
          ADC    RR+1+5
          CWML   MRVAL,ON     WRITE SIT VALUE TO NON REGISTER STATUS BUFFER
          LDN    NRSBL
          STM    LLOG
          LDN    1
          STM    RTP1
          CALL   LOG         LOG THE OCCURRANCE
          UJP    CNSX

 CNSD     BSS    1           NUMBER OF CPU-S TO PROCESS
 CNSE     BSS    4
 IFM      SPACE  4,10
**        IFM - ISSUE FATAL ERROR MESSAGE.
*
*         CALLS  *ERRH*.


          ROUTINE IFM
          LDN    BC
          RJM    CLR

*         DFT ANALYSIS - FATAL CPU ERROR.

          SETDAN (EPUN,DAFC)
          LDK    DAFC        *(218) FATAL CPU N ERROR*
          STML   RTP1
          CALL   ERRH        ISSUE MESSAGE AND RETURN TO MAIN
 MHE      SPACE  4,10
**        MHE - MONITOR HARDWARE ENVIRONMENT.
*
*         CALLS  CES, CMP, DDA, GNE, IDA, PIR, PSS, RMR, SET, SPB,
*                /DSIGHE/RHT, *APE*, *AI2*, *AI4*,*AIE*,
*                *AME*, *CHW*, *PEW*.


          ROUTINE MHE
          CALL   CES         CHECK ERROR CONTROL RECORD STATUS
          LDN    1
          STM    NERR        RESET ERROR FLAG
          LCN    1
          STM    CPUH        INITIALIZE CPU HALTED ORDINAL

*         CLEAR THE SHORT WARNING AND ENVIRONMENT WARNING
*         ERROR OCCURRED FLAGS.

          LDN    0
          STM    SHRR        CLEAR SHORT WARN ERROR
          STM    STON        RESET STUCK ON ERROR CONDITION MET
          STM    PERR        CLEAR ENVIRONMENT WARN ERROR
          STM    CPUO        RESET CPU ORDINAL
          STM    IOUO        RESET IOU ORDINAL
          STM    WARN        RESET WARNING FLAG
          STM    RTP1        RESET TEMP STORAGE CELL

*         GET SUMMARY STATUS REGISTER.

          LDML   IOSS
          STDL   SS
          CALL   PSS         PROCESS SUMMARY STATUS REGISTERS
          LDDL   SS
          STML   IOSS

          LDM    IOUN
          NJP    MHE200      IF IN IOU1, RETURN
          LDDL   T3          SAVE IOU1 SUMMARY STATUS
          STML   MHEC
          LDD    SS          CHECK COMPOSITE SUMMARY STATUS
          ZJP    MHE160      IF NO ERRORS IN MAINFRAME CHECK LAST ENTRY

*         CHECK FOR ERRORS IN EACH CPU, IOU, AND MEMORY.

          LDN    0
          STD    EI          RESET ELEMENT INDEX
          RJM    /DSIGHE/RHT RESET HARDWARE ELEMENT TABLE
 MHE10    RJM    GNE         GET HARDWARE ELEMENT
          MJP    MHE180      IF NO MORE ELEMENTS
          STD    ET          SAVE ELEMENT ID
          SBN    PROCID+1
          MJN    MHE20       IF CPU/IOU/MEM
          AOD    EI          ADVANCE TO NEXT ELEMENT
          UJN    MHE10       CONTINUE

 MHE20    LDN    0           RESET REGISTER LIST INDEX
          STM    REGI
          LDM    HBUF+CPRE+EM
          SHN    -4
          STD    MD          SAVE MODEL
          LDD    ET
          NJN    MHE30       IF NOT IOU TYPE
          LDM    IOUO
          ZJN    MHE30       IF IOU0
          LDML   MHEC        IOU1 SUMMARY STATUS
          LJM    MHE40       SAVE SUMMARY STATUS

 MHE30    LDD    ET
          SBN    PROCID
          NJN    MHE36       IF NOT A CPU
          LDM    HBUF+CPRSTAT
          LPN    4
          NJN    MHE35       IF CPU IS LOGICALLY OFF
          LDDL   EC          SAVE REGISTER
          STDL   W0
          LDN    ECMR        *READMR RDATA,CMCC,ECMR*
          STDL   RN
          LDML   CMCC
          RJM    RMR         READ MAINTENANCE REGISTER
          LDDL   W0          RESTORE *EC* DIRECT CELL
          STDL   EC
          RJM    CMP
          ZJN    MHE36       IF CPU NOT DISABLED
 MHE35    AOM    CPUO
          LJM    MHE145      CONTINUE PROCESSING

 MHE36    LDN    SSMR
          STD    RN
          LDM    HBUF+HDRPC  GENERIC PORT CODE
          LPC    7417
          RJM    RMR         READ SUMMARY STATUS
 MHE40    STM    SUMS        SAVE SUMMARY STATUS
          SHN    21-SSLW     CHECK ENVIRONMENT WARN
          PJP    MHE80       IF NO ENVIRONMENT ERROR

*         IF CYBER 810 OR 830 CHECK IF BATTERY IS ACTIVE IN STATUS REG.
*         IF SO, THIS IS A LONG POWER WARNING.

          LDD    MD          CHECK MODEL
          LMN    0#14
          ZJN    MHE50       IF CYBER 810
          LMN    0#13&0#14
          NJN    MHE60       IF NOT CYBER 830
 MHE50    LDC    ISTR
          STDL   RN
          LDML   I0CC
          RJM    RMR         *READMR RDATA,I0CC,ISTR*
          LDN    0
          STM    BATT        RESET BATTERY ACTIVE
          LDM    RDATA+3
          SHN    21-0
          PJN    MHE60       IF BATTERY BACKUP NOT ACTIVE
          LDN    1
          STM    BATT        SET RUNNING ON BATTERY FLAG
          UJN    MHE70       CONTINUE

 MHE60    LDM    TENV        GET TIMING ENVIRONMENT WARNING
          ZJN    MHE90       IF NOT DOING ANY TIMING
          LDM    TIMU        GET TIME UP FLAG
          ZJN    MHE80       IF DELAY NOT UP YET
 MHE70    LDN    1
          STM    PERR        SET PEW ERROR
          LDN    0
          STM    DTEW        SET FLAG INDICATING DONE TIMING ENV. WARNING
 MHE75    CALL   PEW         CALL ENVIRONMENT PROCESSOR

*         CHECK STATUS OF CURRENT ELEMENT.

 MHE80    LDM    MHEA,ET     INDEX TO JUMP TABLE
          STD    T1
          LJM    0,T1        EXECUTE PROCESSOR

 MHE90    LDM    PWEP        GET CURRENT ENV ENTRY
          ZJN    MHE100      IF NO CURRENT ENTRY
          LDN    1
          STM    WARN        KEEP CURRENT ENTRY DONT START TIMING
          LDN    VER5
          RJM    VCK
          MJN    MHE80
          UJN    MHE75       CONTINUE

 MHE100   LDN    1
          STM    TENV        SET TIMING FLAG
          STM    DTEW        SET FLAG INDICATING NOT DONE TIMING WARN.
          LDD    MD          GET MODEL
          SHN    -4
          STD    T1
          LDN    3           WAIT THREE SECONDS ON ENVIRONMENT WARNING
          STM    STIM        SET WANTED DELAY
          UJN    MHE80       CONTINUE

*         PROCESS CPU ERRORS.

 MHEP     BSS    0
          LDN    0
          STM    RTP1

 MHE110   LDM    SUMS        PROCESSOR
          LPBC   (SSCE,SSUE,SSSW,SSPH)
          NJN    MHE120      IF ERROR PENDING
          AOM    CPUO
          LJM    MHE145      CONTINUE PROCESSING

 MHE120   CALL   APE         CALL ANALYSE PROCESSOR ERRORS
          UJN    MHE135

*         PROCESS IOU ERRORS.

 MHEI     BSS    0
          LDN    0
          STM    RTP1
          LDM    SUMS
          LPBC   (SSBA,SSUE,SSCE)
          NJP    MHE130      IF ERROR
*         LDN    0
          STML   EIEF        CLEAR EXPECTED ERROR FLAG
          UJN    MHE145      GET ANOTHER ELEMENT

 MHE130   CALL   PIR         PROCESS IOU REGISTERS
          CALL   AIE         ANALYZE IOU ERRORS
 MHE135   UJN    MHE140

*         PROCESS MEMORY ERRORS.

 MHEM     BSS    0
          LDN    0
          STM    RTP1
          LDM    SUMS
          LPBC   (SSUE,SSCE)
          ZJN    MHE145      IF NO ERROR TO PROCESS
          CALL   AME         ANALYZE MEMORY ERROR

*         RESUME COMMON PROCESSING.

 MHE140   CALL   DDA         DO DFT ACTIONS
          LDD    ET
          SBN    PROCID
          NJN    MHE145      IF NOT A CPU
          AOM    CPUO
 MHE145   LDD    ET
          SBN    IOUID
          NJN    MHE150      IF NOT AN IOU
          AOM    IOUO
 MHE150   AOD    EI
          LJM    MHE10       CHECK NEXT PROCESSOR

 MHE160   LDM    TENV        TIMING AN ENVIRONMENT WARNING CONDITION
          ZJN    MHE170      IF NOT TIMING ANYTHING
          LDM    NERR        ERRORS OCCURRED FLAG
          ZJN    MHE170      IF ERRORS
          LDN    0
          STM    TENV        NO ERRORS SO NO LONGER NEED TO TIME
          STM    STIM        CLEAR TIMING FLAGS IF NO ENVIRONMENT WARNING
          STM    TIMU
          STM    DTEW
 MHE170   LDM    FREE        LAST MR BUFFER ENTRY WORKED ON
          ZJP    MHE180
          STD    T7
          LDN    CM
          RJM    SET         SET LOCK WORD
          LDDL   CM+BCFLG
          LMBC   (BC.FI)     CLEAR INTERLOCK
          STDL   CM+BCFLG
          LRD    DP+1
          RJM    SPB         SET PP BOUNDS
          LDD    T7
          RJM    IBW         INCREMENT BUFFER CONTROL WORD
          RDCL   CM          CLEAR INTERLOCK ON ENTRY
          LDN    0
          STM    DSIF        CLEAR THE DFT SET THE I/L BIT FLAG

*         IF C180 ERROR OR NOSVE LOGGING OR VALID C180 ERROR SET
*         C180 ERROR IN DFT HEADER.

          CHECK  E8

*         IF C170 ERROR OR NOS/NOSBE LOGS OR VALID C170 ERROR SET
*         C170 ERROR IN DFT HEADER.

          CHECK  E7

          LDN    0
          STM    VOSD        CLEAR VALID OS DATA ACCUMULATOR
          STM    FREE
 MHE180   LDM    WARN        FORMALLY RECOGNIZED SHORT/LONG WARNING
          ADM    NERR        OR IN NO ERROR ON PASS FLAG
          ADM    STON        ADD IN ANY STUCK ON ERROR
          ZJN    MHE190      IF NO POWER/ENVIRONMENT WARNING
          LDM    FREE
          NJP    MHE160      IF MORE HARDWARE ERRORS TO PROCESS
 MHE190   CALL   CHW         CHECK WARNING ENTRY
 MHE200   LDN    0
          STD    EI
          LJM    MHEX        RETURN

 MHEA     CON    MHEI        IOU
          CON    MHEM        MEM
          CON    MHEP        CPU

 MHEC     BSS    1           IOU1 SUMMARY STATUS
 WDR      SPACE  4,10
**        WDR - WAIT FOR DFT REQUEST.
*
*         CALLS  IDA, LRP, SPB, SRS, VCK, *DDA*, *ERR*.
*
*         NOTES  AN ASSUMPTION MADE BY THIS ROUTINE IS THAT THE
*                REQUESTS FOR DFT-S WILL OCCUR SERIALLY.  THIS
*                IS A VALID ASSUMPTION SINCE THE CP CODE WAITS FOR
*                THE COMPLETION OF A DFT REQUEST BEFORE PROCEEDING.


          ROUTINE WDR

          LDML   DI4CW       CHECK DUAL I4 PACKET OUTSTANDING
          NJP    WDRX        IF DUAL I4 PACKETS OUTSTANDING
          LDN    7
          STD    T1
 WDR10    LDN    0
          STM    CALB,T1     CLEAR PREVIOUS REQUEST
          SOD    T1
          PJN    WDR10       IF NOT DONE
          LDN    NVEP
          RJM    IDA
          CRDL   W0          GET POINTER TO NOS/VE
          LDD    W3          GET LENGTH OF NOS/VE COMMUNICATION AREA
          ZJN    WDR25       IF NOS/VE POINTER NOT DEFINED
          LRD    W1
          LDN    0           INITIALIZE INDEX
          STD    T5
 WDR20    LDDL   W0
          ADD    T5
          ADC    RR
          CRDL   JT          GET JOB TASK
          LDM    IOUN
          NJN    WDR30       IF NOT IOU0
          LDDL   JT+3
          NJN    WDR30       IF TASK REQUEST
          AOD    T5
          SBD    W3          COMPARE WITH LENGTH
          NJN    WDR20       IF MORE VE REQUESTS
 WDR25    LJM    WDR60       VE REQUESTS EXHAUSTED

 WDR30    LDN    0
          STD    JT+3        ACCEPT REQUEST
          RJM    SPB         SET PP BOUNDARY
          LDDL   W0
          ADD    T5
          ADC    RR
          CWDL   JT
          RJM    LRP         LOAD REQUEST POINTER
          CRDL   W4
          RJM    SPB         SET PP BOUNDARY
          LDDL   W4          GET TASK
          STDL   JT+3        SAVE REQUEST
          SBN    JTBLL
          PJP    ERR         IF ILLEGAL REQUEST
          LDML   JTBL,JT+3
          STML   DFTA
          SHN    21-17
          PJN    WDR40       IF NO IOU FIELD ON REQUEST
          LDM    JTBL,JT+3   REMOVE IOU FIELD BIT
          STM    DFTA
          LDDL   W5
          SHN    -10
          STD    T1
          LMM    IOUN
          ZJN    WDR40       IF REQUEST IS FOR THIS DFT
          RJM    PRO         PASS REQUEST TO OTHER IOU
          UJN    WDR60       CHECK VERSION

 WDR40    CALL   DDA         DO DFT ACTIONS
          LDML   DI4CW       CHECK DUAL I4 PACKET OUTSTANDING
          NJP    WDRX        IF REQUEST TO START DFT IN SECONDARY
          LDC    0#100
          STM    JOBF        SET 180 STATUS OK
          RJM    SRS         RESPOND TO VE REQUEST
 WDR60    LDN    VER2        VERSION FEATURE IS IMPLEMENTED
          RJM    VCK         VERSION CHECK
          MJN    WDR70       IF OS NOT AT CORRECT VERSION
          LDN    OSRP
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   W0          GET 170 OS REQUEST POINTER
          LDD    W3
          ZJN    WDR70       IF POINTER NOT SET
          LRD    W1
          LDD    W0
          ADC    RR
          CRDL   JT          GET 170 JOB TASK
          LDD    JT+3
          NJN    WDR80       IF ACTIVE REQUEST
 WDR70    LJM    WDRX        RETURN

 WDR80    SBN    1
          NJN    WDR70       IF IGNORE ENTRY
          LDN    1
          STM    R170        TAG THIS REQUEST AS A 170 ONE
          RJM    LRP         LOAD REQUEST POINTER
          CRDL   CM          GET TASKID WORD OF REQUEST
          RJM    SPB         SET PP BOUNDS ON REQ POINTER
          LDD    CM
          LPC    0#FF        ISOLATE TASKID
          STD    CM          SAVE FOR READ
          SBN    JT170L
          PJP    ERR         IF ILLEGAL TASK
          LDM    JT170,CM
          STM    DFTA
          CALL   DDA         DO DFT ACTIONS
          LDC    0#100
          STM    JOBF        SET COMPLETE STATUS
          RJM    SRS         SET REQUEST STATUS
          LJM    WDRX        RETURN
 JTBL     SPACE  4,10
**        JTBL - JOB TABLE ADDRESS TABLE.
*
*         TABLE ENTRY FORMAT -
*                1/I, 1/OF, 2/0, 12/ATL.
*         WHERE -
*                I = 1, IF IOU FIELD IS PRESENT.
*                OF = 1, IF REQUEST PROCESSOR RESIDES IN THE OVERFLOW OVERLAY
*                        OF DFT ACTIONS.
*                ATL = ADDRESS OF TASK LIST FOR REQUEST.


 JTBL     BSS    0
          QUAL
          LOC    0
          CON    0
 H1P      CON    H1PG        TERMINATE 170 CPU
 HVP      CON    HVPG        TERMINATE ALL CPUS
 DVP      CON    DVPG        DEADSTART VIRTUAL PROCESSOR
 SVP      CON    OFLO*40000+SVPG  STOP VIRTUAL PROCESSOR
 LDP      CON    LDPG        LOAD DRIVER PP
 FHI      CON    FCHI        FETCH HARDWARE INFO
 CPR      CON    CPRG        CHANGE PROCESSOR REGISTER
 FCD      CON    FCDP        LOAD CIP DATA TO MEMORY
 ADS      CON    ADSP        ACCESS DEADSTART SECTOR
 RWC      CON    RWCP        ACCESS COMMON DISK AREA
 WCD      CON    PUDT        WRITE WALL CLOCK CHIP
 S1P      CON    S1PG        START 170 PROCESSOR
 PUF      CON    PUFP        HARDWARE IDLE PP
 REP      CON    REPP        RESUME PP
 UFC      CON    PUFC        UPDATE FREE RUNNING COUNTER
 SDT      CON    PTHR        SET DFT THRESHOLDS
 GCS      CON    0#8000+GCSP GET NIO CHANNEL STATUS
 DVR      CON    DVRG        DEADSTART VIRTUAL PROCESSOR (REVISED FOR LVL 92)
 CPO      CON    CPOG        CHANGE PROCESSOR REGISTER (REVISED FOR LVL 92)
 ADR      CON    0#8000+ADRP ACCESS DEADSTART SECTOR (REVISED FOR LVL 92)
 ACA      CON    ACAP        ACCESS COMMON DISK AREA (REVISED FOR LVL 92)
 PUR      CON    0#8000+PURP PP UTILITY FUNCTION (REVISED FOR LVL 92)
 GMR      CON    0#8000+GMRP RETRIEVE MAINTENANCE REGISTERS
 LDS      CON    LDSP        LOAD DFT IN SECONDARY IOU
 IAP      CON    0#8000+IAPP IDLE ALL PP-S IN IOU1
 AHE      CON    AHEP        ACCESS HARDWARE ELEMENT DESCRIPTOR
 RPL      CON    RPLP        REQUEST PROGRAM LENGTH
 RDL      CON    OFLO*40000+RDLP  REQUEST DATA LENGTH
 MVP      CON    OFLO*40000+MVPP  MANAGE VIRTUAL PROCESSOR
 CES      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 GED      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 ASM      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 CDT      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 RDT      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 F43      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 SSA      CON    OFLO*40000+PIRP  PROCESS INVALID REQUEST
 RIS      CON    OFLO*40000+RISC  RETURN IOU STATUS CONTENTS
 RSP      CON    OFLO*40000+RSCI  RESTART SCI PP
          QUAL   *
          LOC    *O
 JTBLL    EQU    *-JTBL
 JT170    SPACE  4,10
**        JT170 - JOB TABLE ADDRESS TABLE FOR NOS, NOS/BE.


 JT170    BSS    0           170 OS REQUEST TABLE
          QUAL
          LOC    0
          CON    0
 UDT      CON    PUDT        170 OS UPDATE TIME REQUEST
 THR      CON    PTHR        170 OS SET THRESHOLDS REQUEST
 UFV      CON    PUFC        170 OS UPDATE FREE RUNNING COUNTER
          QUAL   *
          LOC    *O
 JT170L   EQU    *-JT170
 WM7      SPACE  4,10
**        WM7 - WRITE MODE 77.
*
*         USES   T1, T2, CM - CM+3.
*
*         CALLS  IIB, SPB.


          ROUTINE WM7

          LDM    CPUO
          NJN    WM71        IF DUAL CPU AND CPU=1
          LDN    D7TY
          RJM    IIB
          CRDL   CM
          LDDL   CM+3
          SHN    -14
          ZJN    WM71        IF 180 STANDALONE
          LDN    0
          STDL   T1
          STDL   T2
          CRDL   CM          READ WORD 0
          LDC    0#FC0       77 CODE AT 60 BIT BOUNDARY
          LMDL   CM
          STDL   CM          SAVE IN WORD 0
          LRD    T1
          RJM    SPB         SET PP BOUNDS
          LDN    0
          CWDL   CM          WRITE EXIT MODE 77
 WM71     LJM    WM7X        RETURN
 CES      SPACE  4,10
**        CES - CHECK ERROR CONTROL RECORD STATUS.
*
*         USES   CM - CM+3.
*
*         CALLS  IDA, SPB, UER, VCK.


          ROUTINE CES

          LDN    VER4        DO NOT ACCESS ECR IF LESS THAN VERSION 4
          RJM    VCK         CHECK VERSION
          MJN    CES5        IF VERSION 3 OR LESS, THEN RETURN
          LRD    DP+1
          RJM    SPB         SET OS BOUNDS
          LDN    ECRP
          RJM    IDA         INCREMENT DFT ADDRESS
          CRDL   CM          GET POINTER TO ERROR CONTROL RECORD
          LDDL   CM
          LRD    CM+1
          ADC    RR
          CRDL   CM          GET ERROR CONTROL RECORD HEADER
          LDDL   CM+1
          LPN    2
          ZJN    CES5        IF NO UPDATE OF ERROR CONTROL RECORD REQUIRED
          CALL   UER         UPDATE ERROR CONTROL RECORD
 CES5     UJP    CESX

*         END    CTP$DFT_MAIN_NON_RES_RTNS
