1CK 
          IDENT  1CK,CKP
          PERIPH
          BASE   MIXED
          SST 
*COMMENT  1CK - SYSTEM CHECKPOINT.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1992. 
          TITLE  1CK - SYSTEM CHECKPOINT. 
          SPACE  4,10 
***       1CK - SYSTEM CHECKPOINT.
* 
*         G. R. MANSFIELD.   70/12/10.
*         J. L. WARDELL.     72/08/20.
*         P. D. HAAS.        74/09/16.
*         R. E. TATE.        75/04/12.
*         S. L. BETH.        75/05/15.
          SPACE  4,10 
***              *1CK* IS CALLED TO CHECKPOINT MASS STORAGE DEVICES.
* 
* 
*         FUNCTION 0         DEADSTART CHECKPOINT.
*                            ALLOCATES SPACE FOR SYSTEM TABLES
*                            AND COPIES THEM TO DISK, CHECKPOINTS 
*                            TRT ON SYSTEM DEVICES AND LOCAL AREAS
*                            ON DEVICES WITH ACTIVE DAYFILES. 
* 
*         FUNCTION 1         SYSTEM CHECKPOINT. 
*                            IDLES THE SYSTEM AND CHECKPOINTS SYSTEM
*                            TABLES AND TRTS ON ALL SYSTEM DEVICES. 
* 
*         FUNCTION 2         CHECKPOINT DEVICE. 
*                            CHECKPOINT TRT TO ALL DEVICES WITH 
*                            CHECKPOINT REQUESTS SET. 
* 
*         FUNCTION 3         ALTERNATE LIBRARY CHECKPOINT.
*                            SAME AS FUNCTION 1 BUT THE SYSTEM
*                            IS NOT IDLED.
* 
*         FUNCTION 4         CHECKPOINT LOCAL AREA. 
*                            THE LOCAL AREA ON THE SPECIFIED
*                            DEVICE IS COPIED TO THE LOCAL AREA 
*                            SECTOR. THE TRT IS ALSO CHECKPOINTED.
* 
*         FUNCTION 5         CHECKPOINT INITIALIZED DEVICE. 
*                            SAME AS FUNCTION 2 EXCEPT THAT ONLY
*                            THE DEVICE SPECIFIED IN CALL FROM
*                            *IMS* IS PROCESSED.
* 
*         FUNCTION 6         RECOVERY ABORT CHECKPOINT. 
*                            PROCESSES OUTSTANDING CHECKPOINT REQUESTS
*                            VIA FUNCTION 2 WHEN IT IS IMPOSSIBLE TO
*                            COMPLETE A CM (LEVEL 3) RECOVERY.
* 
*         FUNCTION 7         RECOVERY ABORT CHECKPOINT. 
*                            SAME AS FUNCTION 6 EXCEPT BUFFERED DEVICES 
*                            ARE NOT CHECKPOINTED.
* 
*         FUNCTION 10        IDLE SYSTEM CHECKPOINT.
*                            SAME AS FUNCTION 1 EXCEPT *1MB* WILL BE
*                            CALLED INTO THIS PP AT COMPLETION. 
* 
*         FUNCTION 11        FATAL IOU ERROR CHECKPOINT.
*                            SAME AS FUNCTION 2 EXCEPT *1MB* WILL BE
*                            CALLED INTO THIS PP AT COMPLETION. 
* 
*         FUNCTION 12        REWRITE LABEL TRACK. 
*                            SAME AS FUNCTION 2 EXCEPT THAT ONLY THE
*                            DEVICE SPECIFIED IN THE CALL FROM *1MV* IS 
*                            PROCESSED. 
*                            *1MV* CALLS *1CK* VIA AN *EXECUTE* MACRO 
*                            TO INITIATE THIS FUNCTION.  IT WILL BE 
*                            CALLED BACK INTO THIS PP AT COMPLETION.
* 
*         FUNCTION 13        LONG POWER WARNING CHECKPOINT. 
*                            SAME AS FUNCTION 1 EXCEPT THAT ONLY 834
*                            AND 836 DEVICES WILL BE CHECKPOINTED, AND
*                            *1MB* WILL BE CALLED INTO THIS PP AT THE 
*                            COMPLETION OF THE CHECKPOINT.
          SPACE  4,10 
***       ENTRY CONDITIONS. 
* 
* 
*         (IR+2) = FUNCTION CODE. 
*         (IR+3) = EST ORDINAL (FUNCTIONS 4, 5 AND 12.) 
*                = *1MB* FUNCTION CODE (FUNCTIONS 10, 11 AND 13). 
*         (IR+4) = NUMBER OF DAYFILE POINTER TO UPDATE (FUNCTION 4).
*                = PREVIOUS ACCESS STATUS (MMF) (FUNCTION 5). 
          SPACE  4,10 
***       DAYFILE MESSAGES. 
* 
*         *ALL EQ-S CHECKPOINTED.*           (CONSOLE LINE 1) 
*         *RECOVERY ABORTED.*                (CONSOLE LINE 2) 
*                ALL DEVICES WERE SUCCESSFULLY CHECKPOINTED 
*                AND RECOVERY WAS ABORTED.
* 
*         * CHECKPOINT ABORTED.* = ERROR FLAG WAS SET.
* 
*         *CHECKPOINT COMPLETE.* = NORMAL COMPLETION. 
* 
*         *EQXXX, CHECKPOINT ABORTED.* = UNRECOVERED ERROR WRITING
*                SYSTEM SECTOR ON EST ORDINAL XXX.
* 
*         *EQXXX, LOCAL AREA OVERFLOW.* = LOCAL AREA SECTOR WAS FULL
*                (40B MACHINE ID-S ALREADY PRESENT).
* 
*         *EQXXX, LOCAL AREA SECTOR ERROR.* = UNRECOVERED READ ERROR ON 
*                SECTOR OF LOCAL AREAS. 
* 
*         *EQXXX, TRACK LIMIT.* = NO TRACKS WERE AVAILABLE ON EST 
*                ORDINAL XXX. 
* 
*         *NON-BUFFERED EQ-S CHECKPOINTED.*  (CONSOLE LINE 1) 
*         *RECOVERY ABORTED.*                (CONSOLE LINE 2) 
*                NON-BUFFERED DEVICES WERE SUCCESSFULLY 
*                CHECKPOINTED AND RECOVERY WAS ABORTED. 
* 
*         * SYSTEM CHECKPOINT ABORT.* = MESSAGE ISSUED TO SUBSYSTEMS
*                WHICH ARE ABORTED DURING A SYSTEM CHECKPOINT.
          SPACE  4,10 
***       OPERATOR MESSAGES.
* 
*         NONE. 
          SPACE  4,10 
**        ROUTINES USED.
* 
* 
*         0TD - TERMINATE DAYFILES. 
*         5ME - FORMAT ERROR MESSAGES.
          SPACE  4,10 
*CALL     COMPMAC 
*CALL     COMSCPS 
*CALL     COMSDFS 
*CALL     COMSDSL 
*CALL     COMSDST 
*CALL     COMSEVT 
*CALL     COMSHIO 
*CALL     COMSLSD 
*CALL     COMSMMF 
*CALL     COMSMSC 
*CALL     COMSMSP 
*CALL     COMSMST 
*CALL     COMSPIM 
          QUAL   SCD
*CALL     COMSSCD 
          QUAL   *
*CALL     COMSSSD 
*CALL     COMSWEI 
*CALL     COMSZOL 
          SPACE  4,10 
**        MACRO  DEFINITIONS. 
 MTBL     SPACE  4,10 
**        MTBL - GENERATE TABLE OF PARALLEL MST ADDRESSES.
* 
*                N = TABLE NAME.
*                A = NOS MST ADDRESS. 
*                B = K21 MST ADDRESS. 
*                C = REPEAT COUNT.
  
  
          NOREF  .I,.X,.Y 
  
          MACRO  MTBL,N,A,B,C 
          IFC    NE,*N**,1
 N        BSS    0
 )3       IFC    NE,*C**
 .I       SET    C
 )3       ELSE   1
 .I       SET    1
 .X       SET    NMSS+5*A 
 .Y       SET    MTSS+5*/K21/B
 )D       DUP    .I 
          CON    .X,.Y
 .X       SET    .X+1 
 .Y       SET    .Y+1 
 )D       ENDD
          ENDM
 SUBSYST  SPACE  4,10 
**        SUBSYST - GENERATE SUBSYSTEM TABLE. 
* 
*         SUBSYST  NAME,ID,PR,PP,AUTO,DEF,DCP,CP,PROC,ABT 
* 
*         ENTRY  *ABT* = *NA*, IF SUBSYSTEM NOT TO BE ABORTED 
*                              BY CHECKPOINT. 
* 
*         TABLE OF SUBSYSTEM ID-S OF SUBSYSTEMS NOT TO BE ABORTED.
* 
*T        12/ SSID
  
  
          PURGMAC  SUBSYST
  
 SUBSYST  MACRO  NM,ID,PT,PP,AU,DF,DC,CP,PR,AB
 .A       IFC    EQ,$AB$NA$ 
 .SUB     RMT 
          CON    ID 
 .SUB     RMT 
 .A       ENDIF 
 SUBSYST  ENDM
          SPACE  4,10 
****      DIRECT LOCATION ASSIGNMENTS.
  
  
 T8       EQU    16          TEMPORARY STORAGE
 T9       EQU    17 
 RI       EQU    T8 - T9     RANDOM INDEX 
 CN       EQU    20 - 24     CM WORD BUFFER (5 LOCATIONS) 
 NC       EQU    25          NUMBER OF CONTROL POINTS 
 NT       EQU    26          NEXT TRACK POINTER 
 EI       EQU    27          EQUIPMENT INDEX
 ES       EQU    30 - 34     EST ENTRY (5 LOCATIONS)
 DT       EQU    ES+3        DEVICE TYPE
 MS       EQU    ES+4        MST ADDRESS / 10B
 LT       EQU    35          LABEL TRACK
 DI       EQU    36          DAYFILE INDEX
 UI       EQU    37          UTILITY ACTIVE INTERLOCK FLAG
 FS       EQU    40 - 44     CM WORD BUFFER (5 LOCATIONS) 
 LS       EQU    45          LAST SECTOR FLAG 
 PA       EQU    46          PROCESSOR ADDRESS
 TS       EQU    47          LABEL TRACK INTERLOCK STATUS 
 FA       EQU    57          FST ADDRESS
 LO       EQU    60          LAST MASS STORAGE ORDINAL + 1
 ST       EQU    62          SYSTEM TABLE TRACK 
 CA       EQU    63 - 67     CENTRAL ADDRESS (2 LOCATIONS)
 EC       EQU    CA+2        MANAGED TABLE ENTRY COUNT
 LM       EQU    CA+3 - CA+4 LIMIT ADDRESS (2 LOCATIONS)
****
          TITLE  MAIN PROGRAM.
 CKP      SPACE  4,10 
**        CKP - MAIN PROGRAM. 
  
  
          ORG    PPFW 
 CKP      LJM    PRS         PRESET PROGRAM 
  
  
 DPP      LJM    PRS5        PRESET *1MV* SPECIAL CALL
          ERRNZ  CKP+2-DPP   FUNCTION 12 DEPENDS ON VALUE 
 DPPA     EQU    *-1         (EXIT PROCESSING ADDRESS)
  
 DPP1     MONITOR  DPPM      DROP PP
          LJM    PPR         EXIT TO PP RESIDENT
 DSC      SPACE  4
***       FUNCTION 0. 
*         DEAD START CHECK POINT. 
  
  
 DSC      EXECUTE 3CK 
 SYC      SPACE  4,10 
***       FUNCTIONS 1, 3, 10, 13. 
*         SYSTEM CHECK POINT. 
*         ALTERNATE LIBRARY CHECKPOINT. 
*         IDLE SYSTEM CHECKPOINT. 
*         LONG POWER WARNING CHECKPOINT.
  
  
 SYC      EQU    DSC
 PFC      SPACE  4
***       FUNCTION 2. 
*         CHECK POINT PERMANENT FILE DEVICES. 
  
  
 PFC2     LDD    T5          SET EST ORDINAL
          STD    CM+1 
          STD    IR+3 
          LDN    VEIS        VALIDATE EQUIPMENT 
          STD    CM+3 
          MONITOR VMSM
          LDD    CM+1 
          NJN    PFC1        IF VALIDATION ERRORS 
 PFC3     RJM    CDB         CHECK FOR DISK BUFFERED
          ZJN    PFC4        IF DEVICE IS NOT TO BE CHECKPOINTED
          AOM    UERR        SET *RETURN ON NOT READY* FLAG 
          ERRNZ  EPNR-1      CODE DEPENDS ON VALUE
          RJM    WTT         WRITE MASS STORAGE TABLES
 PFC4     RJM    FIB         FLUSH I/O BUFFERS
          RJM    CIL         CLEAR INTERLOCKS 
  
 PFC      RJM    SMD         SELECT MASS STORAGE DEVICE 
          NJN    PFC2        IF NOT END OF MS ENTRIES 
*         NJN    PFC3        (MASS STORAGE VALIDATION DISABLED) 
 PFCA     EQU    *-1
          LJM    DPP         DROP PP
 PFCB     EQU    *-1
*         LJM    /3CK/RAC1   (RECOVERY ABORT CHECKPOINT)
  
 PFC1     STD    IR+2        STORE ERROR CODES
          LDN    STVE        SET ERROR STATUS IN MST
          RJM    SES
          EXECUTE 5ME        PROCESS ERRLOG MESSAGES
          UJN    PFC4        CLEAR INTERLOCKS 
          SPACE  4
***       FUNCTION 4. 
*         UPDATE LOCAL AREA SECTOR. 
* 
*         (IR+3) = EQUIPMENT. 
  
  
 ULA      EQU    DSC
          SPACE  4
***       FUNCTION 5. 
*         CHECKPOINT INITIALIZED DEVICE.
* 
*         ENTRY  (IR+3) = EST ORDINAL.
  
  
 IDC      EXECUTE  3CL
 RAC      SPACE  4,10 
***       FUNCTION 6 AND 7. 
*         RECOVERY ABORT CHECKPOINT.
  
  
 RAC      EQU    IDC
 FIC      SPACE  4,10 
***       FUNCTION 11.
*         FATAL IOU ERROR CHECKPOINT. 
  
  
 FIC      EQU    DSC
 RLT      SPACE  4,10 
***       FUNCTION 12.
*         REWRITE LABEL TRACK.
  
  
 RLT      EQU    IDC
          TITLE  SUBROUTINES. 
 ABT      SPACE  4,10 
**        ABT - ABORT THE OPERATION.
* 
*         ENTRY  (T5) = EST ORDINAL.
  
  
 ABT      LDC    ABTB 
          RJM    DFM
          RJM    CIL         CLEAR INTERLOCKS 
          SMSTF  LCKP        RESET CHECKPOINT REQUEST 
          LJM    DPP
  
 ABTA     DATA   H*EQXXX,*
 ABTB     DATA   C* CHECKPOINT ABORTED.*
 CBP      SPACE  4,15 
**        CBP - CLEAR *BAT* PERMISSIONS UNCONDITIONALLY.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   *BAT* PERMISSIONS FOR THIS MAINFRAME CLEARED.
* 
*         USES   CM - CM+4. 
* 
*         MACROS  MONITOR.
  
  
 CBP      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
 CBPA     LDN    **          SET MACHINE INDEX
          STD    CM+2 
          LDD    T5          SET EST ORDINAL
          STD    CM+4 
          LDN    CBWS        CLEAR *BAT* PERMISSIONS UNCONDITIONALLY
          STD    CM+1 
          MONITOR  MTEM 
          UJN    CBPX        RETURN 
 CDB      SPACE  4,10 
**        CDB - CHECK IF DEVICE IS BUFFERED.
* 
*         ENTRY  (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF DEVICE IS NOT TO BE CHECKPOINTED.
  
  
 CDB1     LDN    1           INDICATE DEVICE MAY BE CHECKPOINTED
  
 CDB      SUBR               ENTRY/EXIT 
          LDD    ES          CHECK IF BUFFERED DEVICE 
          LPN    40 
          ZJN    CDB1        IF NOT A BUFFERED DEVICE 
          LDD    IR+2 
          LMN    7           ZERO IF BUFFERED DEVICES NOT TO BE FLUSHED 
          UJN    CDBX        RETURN 
 CIL      SPACE  4,15 
**        CIL - CLEAR INTERLOCKS. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (LT) = LABEL TRACK.
*                (TS) = LABEL TRACK INTERLOCK STATUS. 
*                     = 4000, IF CHECKPOINT ABORT PROCESSING. 
*                (UI) = UTILITY ACTIVE INTERLOCK STATUS.
* 
*         EXIT   (A) = (TS) = (UI) = 0 (INTERLOCKS CLEARED).
*                (TS) = 4000, IF CHECKPOINT ABORT PROCESSING. 
* 
*         CALLS  CTI. 
  
  
 CIL2     LDN    0
  
 CIL      SUBR               ENTRY/EXIT 
          LDD    UI 
          ZJN    CIL1        IF UTILITY ACTIVE INTERLOCK NOT SET
          CMSTF  LUAI        CLEAR UTILITY ACTIVE INTERLOCK 
*         LDN    0           CLEAR INTERLOCK STATUS 
          STD    UI 
 CIL1     LDD    TS 
          ZJN    CILX        IF LABEL TRACK NOT INTERLOCKED 
          SHN    21-13
          MJN    CIL2        IF CHECKPOINT ABORT PROCESSING 
          LDD    LT          CLEAR TRACK INTERLOCK
          RJM    CTI
*         LDN    0           CLEAR INTERLOCK STATUS 
          STD    TS 
          UJN    CILX        RETURN 
 DDB      SPACE  4,15 
**        DDB - DROP DISK BUFFERS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF ALL DISK BUFFERS RELEASED. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 DDB      SUBR               ENTRY/EXIT 
          LDN    ZERL        CLEAR ASSEMBLY AREA
          CRD    CM 
          LDD    T5          SET EST ORDINAL
          STD    CM+3 
          LDC    BMDD*100    DROP ALL BUFFERS ON DEVICE 
          STD    CM+4 
          MONITOR  BFMM 
          LDD    CM+4        GET *BFMM* STATUS
          UJN    DDBX        RETURN 
 FIB      SPACE  4,15 
**        FIB - FLUSH I/O BUFFERS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   ONE OR MORE OF THE FOLLOWING WILL BE PERFORMED,
*                  BASED ON THE *1CK* FUNCTION. 
*                - DISK BUFFERS FLUSHED.
*                - DISK BUFFERS RELEASED. 
*                - *BAT*/*BST* PERMISSIONS RELEASED.
*                - *BAT* PERMISSIONS UNCONDITIONALLY CLEARED. 
* 
*         USES   T1, T2, CM - CM+4. 
* 
*         MACROS DELAY, MONITOR, PAUSE. 
  
  
 FIB      SUBR               ENTRY/EXIT 
          LDD    TH          SET MAXIMUM RETRY COUNT
          STD    T1 
          LDD    ES          CHECK IF BUFFERED DEVICE 
          LPN    40 
          ZJN    FIBX        IF NOT A BUFFERED DEVICE 
          LJM    **          PROCESS DEVICE BASED ON *1CK* FUNCTION 
 FIBA     EQU    *-1         (PROCESSING ADDRESS) 
  
*         FUNCTIONS 0, 2, 3, 5, 10 AND 11.
  
 FIB1     RJM    FWB         FLUSH WRITE BUFFERS
          UJN    FIBX        RETURN 
  
*         FUNCTIONS 1 AND 6.
  
 FIB2     LDD    ES 
          SHN    21-11
          MJN    FIB3        IF SHARED BUFFERED DEVICE
          RJM    FWB         FLUSH WRITE BUFFERS
          RJM    DDB         DROP DISK BUFFERS
          UJN    FIB4        CHECK STATUS 
  
 FIB3     RJM    RBP         RELEASE *BAT*/*BST* PERMISSIONS
 FIB4     ZJN    FIB5        IF SUCCESSFUL
          DELAY  200B        DELAY 16 MILLISECONDS
          SOD    T1 
          NJN    FIB2        IF RETRY COUNT NOT EXHAUSTED 
 FIB5     UJP    FIBX        RETURN 
  
*         FUNCTION 7. 
  
 FIB6     LDD    ES 
          SHN    21-11
          PJN    FIB7        IF NOT SHARED BUFFERED DEVICE
          RJM    CBP         CLEAR *BAT* PERMISSIONS UNCONDITIONALLY
 FIB7     LJM    FIBX        RETURN 
 FWB      SPACE  4,15 
**        FWB - FLUSH WRITE BUFFERS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   WRITE BUFFERS FLUSHED. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 FWB      SUBR               ENTRY/EXIT 
          LDN    ZERL        CLEAR ASSEMBLY AREA
          CRD    CM 
          LDD    T5          SET EST ORDINAL
          STD    CM+3 
          LDC    BMFW*100    FLUSH ALL WRITE BUFFERS
          STD    CM+4 
          MONITOR  BFMM 
          UJN    FWBX        RETURN 
 RBP      SPACE  4,15 
**        RBP - RELEASE *BAT* AND *BST* PERMISSIONS.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = 0, IF ALL PERMISSIONS RELEASED.
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 RBP      SUBR               ENTRY/EXIT 
          LDN    ZERL 
          CRD    CM 
          LDD    T5          SET EST ORDINAL
          STD    CM+4 
          LDN    RBPS        RELEASE *BAT*/*BST* ACCESS PERMISSIONS 
          STD    CM+1 
          MONITOR  MTEM 
          LDD    CM+4        GET *MTEM* STATUS
          UJN    RBPX        RETURN 
 SDP      SPACE  4,15 
**        SDP - SET DEVICE PARAMETERS.
* 
*         ENTRY  (IR+3) = EST ORDINAL.
* 
*         EXIT   (A) = 0 IF DEVICE IS ACCESSIBLE. 
*                (LT) = (T6) = LABEL TRACK. 
*                (ES - ES+4) = EST ENTRY. 
*                DRIVER LOADED/PRESET.
* 
*         USES   CM - CM+4. 
* 
*         MACROS SETMS, SFA.
  
  
 SDP      SUBR               ENTRY/EXIT 
          LDD    IR+3        SET EST ORDINAL
          STD    T5 
          SFA    EST         READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          LDD    ES+4        GET DEVICE ALLOCATION WORD FROM MST
          SHN    3
          ADN    ALGL 
          CRD    CM 
          LDD    CM+1        SET LABEL TRACK
          STD    LT 
          STD    T6 
          SETMS  IO,(ND,NS,RW),WBUF 
          UJN    SDPX        RETURN 
 SMD      SPACE  4,20 
**        SMD - SELECT MASS STORAGE DEVICE. 
* 
*         ENTRY  (EI) = LAST EQUIPMENT PROCESSED. 
* 
*         EXIT   (A) = 0 IF END OF MASS STORAGE DEVICES.
*                (T5) = (EI) = EST ORDINAL. 
*                (T6) = (LT) = LABEL TRACK
*                (UI) = UTILITY ACTIVE INTERLOCK STATUS.
*                (ES - ES+4) = EST ENTRY. 
*                (FS - FS+4) = *STLL* WORD OF MST.
*                DRIVER PRESET. 
* 
*         USES   EI, LT, UI, T5, T6, CM - CM+4, CN - CN+4, ES - ES+4, 
*                FS - FS+4. 
* 
*         CALLS  SES. 
* 
*         MACROS SETMS, SFA, SMSTF. 
  
  
 SMD      SUBR               ENTRY/EXIT 
 SMD1     AOD    EI          ADVANCE EST INDEX
          STD    T5 
          LMD    LO 
          ZJN    SMDX        IF END OF MASS STORAGE EST 
          SFA    EST,T5      READ EST ENTRY 
          ADK    EQDE 
          CRD    ES 
          LDD    ES          CHECK EQUIPMENT
          SHN    21-13
          PJN    SMD1        IF NOT MASS STORAGE
          SHN    13-21
          LPC    103
          SBN    3
          PJN    SMD1        IF DEVICE UNAVAILABLE OR DOWN
          LDD    IR+2        CHECK FUNCTION CODE
          LMN    13 
          NJN    SMD2        IF NOT A LONG POWER WARNING CHECKPOINT 
          LDD    ES+3 
          LMC    2RDD 
          ZJN    SMD2        IF 834 (DD) DEVICE 
          LMN    2RDG&2RDD
 SMD1.1   NJN    SMD1        IF NOT 836 (DG) DEVICE 
 SMD2     LDD    ES+4 
          SHN    3
          ADN    ACGL 
          CRD    CM 
          ADN    ALGL-ACGL
          CRD    CN 
          ADN    STLL-ALGL
          CRD    FS 
 SMDA     LDD    FS          LOOK AT CHECKPOINT REQUESTED 
*         UJN    SMD4        (CHECKPOINT REQUESTED FLAG IMMATERIAL) 
          LPN    MLIRP+MLCKP
          LMN    MLCKP
 SMD3     NJN    SMD1.1      IF INITIALIZE / NO CHECKPOINT PENDING
 SMD4     LDD    CM+4 
          LPC    MGDEI+MGRDR
          NJN    SMD3        IF ERROR IDLE OR REDEFINITION REQUESTED
          LDD    FS+1 
          LPN    77 
          ZJN    SMD5        IF NO ERROR FLAG 
          LDD    ES 
          LPN    2
          NJN    SMD3        IF DEVICE OFF OR DOWN
*         LDN    0           CLEAR ERROR STATUS IN *STLL* 
          RJM    SES
 SMDB     EQU    *
 SMD5     SMSTF  LUAI        SET UTILITY ACTIVE INTERLOCK 
*         UJN    SMD6        (UTILITY INTERLOCK NOT REQUIRED) 
          LDD    CM+1 
          NJN    SMD3        IF LOCAL UTILITY ACTIVE
          AOD    UI 
 SMD6     SETMS  IO,(ND,NR,NS,RW),WBUF
          LDD    CN+1 
          STD    LT          SET LABEL TRACK
          STD    T6 
          LJM    SMDX        RETURN 
 WLS      SPACE  4,15 
**        WLS - WRITE LABEL SECTORS.
* 
*         ENTRY  LABEL SECTOR CONTENTS IN (BFMS)
*                (ES - ES+4) = EST ENTRY
*                (T6) = LABEL TRACK 
* 
*         EXIT   LABEL SECTOR WRITTEN TO ALL UNITS OF DEVICE. 
* 
* 
*         USES   T7, CA - CA+1, CM - CM+4.
* 
*         CALLS  WMS. 
  
  
 WLS      SUBR               ENTRY EXIT 
          LDD    ES+4        READ MDGL FROM MST 
          SHN    3
          ADN    MDGL 
          CRD    CM 
          LDD    CM+1        SET UNIT SECTOR LIMIT
          LPC    3777 
          STD    CA+1 
          SBM    SLM
          ZJN    WLSX        IF SINGLE UNIT DEVICE
          LDC    3777        SET SYSTEM SECTOR CONTROL BYTE 
          STM    BFMS 
          LDN    77          SET WORD COUNT 
          STM    BFMS+1 
          LDN    0
          STD    T7 
 WLS1     LDD    CA+1 
          RAD    T7          SET SECTOR 
          SBM    SLM
          PJN    WLSX        IF END OF UNITS
          LDN    10          ADVANCE RELATIVE UNIT
          RAM    N4SS+5*PFGL+4
          LDC    BFMS+WLSF   WRITE LABEL SECTOR 
          RJM    WMS
          UJN    WLS1        LOOP FOR NEXT UNIT 
 WMS      SPACE  4,10 
**        WMS - WRITE MASS STORAGE. 
* 
*         ENTRY  (A) = BUFFER ADDRESS.
* 
*         EXIT   TO *WSE* IF WRITE ERRORS.
* 
*         CALLS  WDS. 
  
  
 WMS      SUBR               ENTRY/EXIT 
          RJM    WDS         WRITE MASS STORAGE 
          PJN    WMSX        IF NO ERRORS 
          LJM    WSE         PROCESS WRITE ERROR
 WNS      SPACE  4,15 
**        WNS - WRITE NEXT SECTOR.
* 
*         ENTRY  SECTOR DATA STORED IN (BUF+2 - BUF+N)
*                (T4 - T7) = MASS STORAGE PARAMETERS. 
*                (NT) = TRACK BUFFER POINTER. 
* 
*         EXIT   (T6, T7) UPDATED.
*                TO *WSE* IF NEXT TRACK UNAVAILABLE.
* 
*         USES   T1, T6, T7, NT, CM - CM+4. 
* 
*         CALLS  FTB, WMS.
* 
*         MACROS MONITOR. 
  
  
 WNS3     LDC    BUF+WCSF    WRITE SECTOR 
          RJM    WMS
          AOD    T7          ADVANCE SECTOR 
          LMM    SLM
          NJN    WNSX        IF NOT END OF TRACK
          STD    T7 
          LDM    BUF         SET NEXT TRACK 
          STD    T6 
  
 WNS      SUBR               ENTRY/EXIT 
          LDD    T7          SET NEXT SECTOR
          ADN    1
 WNS1     STM    BUF
          LMM    SLM
          NJN    WNS3        IF NOT END OF TRACK
 WNS2     AOD    NT          INCREMENT TRACK BUFFER POINTER 
          LDI    NT 
          LMC    7777 
          ZJN    WSE         IF END OF TRACK CHAIN
          LDI    NT 
          NJN    WNS1        IF TRACK AVAILABLE 
          RJM    /3CK/FTB    FILL TRACK BUFFER
          UJN    WNS2        CONTINUE 
 WSE      SPACE  4,15 
**        WSE - WRITE ERROR PROCESSOR.
* 
*         ENTRY  (T4) = CHANNEL.
*                (NC) = SYSTEM CONTROL POINT NUMBER.
*                (T5) = EST ORDINAL.
*                (WSEA) = ADDRESS OF POST ERROR PROCESSOR.
*                WRITE ERROR PROCESSING ENABLED.
* 
*         CALLS  CIL, C2D, DFM, SES.
* 
*         MACROS ENDMS. 
  
  
 WSE      BSS    0           ENTRY
          ENDMS 
          RJM    CIL         CLEAR INTERLOCKS 
          LDD    T5          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STM    ABTA+1 
          LDD    T5          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    ABTA+2 
          LDD    NC          DISPLAY MESSAGE AT SYSTEM CP 
          SHN    7
          ADN    MS2W 
          CWM    ABTA,TR
          LDN    STCA        SET ERROR STATUS IN MST
          RJM    SES
          LDC    ABTA+ERLN   *EQXXX, CHECKPOINT ABORTED.* 
          RJM    DFM
          LDN    ZERL        INITIATE *CMS* 
          CRD    CM 
          ADN    RDSL-ZERL
          CWD    CM 
          LJM    DPP         EXIT TO POST ERROR PROCESSING
 WSEA     EQU    *-1         (POST PROCESSOR ADDRESS) 
 WTB      SPACE  4,15 
**        WTB - WRITE TABLE.
* 
*         ENTRY  (A) = 1/TRT FLAG, 17/WORD COUNT. 
*                (CA - CA+1) = TABLE ADDRESS. 
*                (T4 - T7) = MASS STORAGE PARAMETERS. 
* 
*         EXIT   (T6 - T7) UPDATED. 
* 
*         USES   LS, LM - LM+1. 
* 
*         CALLS  WNS. 
  
  
 WTB      SUBR               ENTRY/EXIT 
          STD    LM+1        SET WORD COUNT 
          SHN    -6          SET SECTOR COUNT 
          STD    LM 
          LPC    4000        GET TRT FLAG 
          RAD    LM 
          SHN    -14
          STD    LS 
          LDD    HN          SET FULL WORD COUNT
          STM    BUF+1
          LDD    LM          CHECK SECTOR COUNT 
 WTB1     MJN    WTBX        RETURN IF LAST SECTOR WRITTEN
          NJN    WTB2        IF NOT LAST SECTOR 
          LDD    LM+1        SET SHORT COUNT
          LPN    77 
          STM    BUF+1
          AOD    LS          SET LAST SECTOR FLAG 
 WTB2     LDD    CA          READ DATA BLOCK
          SHN    14 
          ADD    CA+1 
          CRM    BUF+2,HN 
          LDD    LS          CHECK FOR LAST SECTOR OF TRT 
          SHN    -1 
          ZJN    WTB3        IF NOT LAST SECTOR OF TRT
          LDD    MA 
          CWM    N4SS+5*SDGL,ON 
          SBN    1           MOVE *SDGL* COUNTER TO LAST WORD OF SECTOR 
          CRM    BUF+2+5*77,ON
 WTB3     RJM    WNS         WRITE NEXT SECTOR
          LDD    HN          ADVANCE CENTRAL ADDRESS
          RAD    CA+1 
          SHN    -14
          RAD    CA 
          SOD    LM          DECREMENT SECTOR COUNT 
          UJP    WTB1        LOOP 
 WTT      SPACE  4,10 
**        WTT - WRITE TRT.
* 
*         ENTRY  (LT) = LABEL TRACK.
*                (ES - ES+4) = EST ENTRY. 
* 
*         USES   T1, T6, T7, CA - CA+1, CM - CM+4.
* 
*         CALLS  STI, RLS, WEI, WSE, WTB. 
* 
*         MACROS CMSTF, MONITOR.
  
  
 WTT7     CMSTF  LCKP        CLEAR CHECKPOINT REQUEST 
  
 WTT      SUBR               ENTRY/EXIT 
          LDD    LT 
          STD    T6 
          LDD    TS 
          NJN    WTT2        IF LABEL TRACK INTERLOCKED 
          RJM    STI         SET TRACK INTERLOCK
          ZJN    WTT1        IF ERROR FLAG NOT SET
          LJM    ABT         ABORT OPERATION
  
 WTT1     AOD    TS          SET LABEL TRACK INTERLOCK STATUS 
 WTT2     LDK    LSLT        SET LABEL SECTOR 
          STD    T7 
          ADK    0-LSLT 
 WTT3     RAD    T7 
          RJM    RLS         RECREATE LABEL SECTOR
          LDD    ES 
          SHN    21-4 
          PJN    WTT4        IF NOT ISHARED 
          LDM    N4SS+STLL*5
          LPN    MLPTU
          ZJN    WTT7        IF *LPTU* FLAG NOT SET 
 WTT4     LDC    400         SET SYSTEM LEVEL 
          RAM    N4SS+5*MDGL
          LDC    BFMS+WCSF   WRITE LABEL SECTOR 
          RJM    WMS
          AOD    T7          WRITE TRT
          LDM    N4SS+5*TDGL+2
          LMC    400000      SET TRT FLAG 
          RJM    WTB
          RJM    WEI         WRITE EOI
          LDM    N4SS+5*DULL GET FIRST SECTOR OF SECOND COPY
          SBD    T7 
          PJN    WTT3        IF SECOND COPY HAS NOT BEEN WRITTEN
          ENDMS 
          LDM    N4SS+STLL*5
          LPN    MLPTU
          ZJN    WTT5        IF *LPTU* FLAG NOT SET 
          LDD    IR+2 
          LMN    5
          NJN    WTT5        IF NOT INITIALIZE CHECKPOINT 
          CMSTF  LPTU        CLEAR FLAG 
 WTT5     LDM    N4SS+5*MDGL
          SHN    21-12
          MJN    WTT6        IF AUXILIARY DEVICE
          LDM    N4SS+5*PUGL+4  GET DEVICE MASK 
          LPC    377
          NJN    WTT6        IF MASTER DEVICE 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    T6          SET EOI STATUS 
          LPC    3777 
          STD    CM+2 
          LDD    T7 
          STD    CM+3 
          MONITOR DTKM
 WTT6     LJM    WTT7        CLEAR CHECKPOINT REQUEST 
          SPACE  4
**        COMMON DECKS. 
  
  
 RLS$     EQU    1           ASSEMBLE *RLS* 
*CALL     COMPCLC 
*CALL     COMPCTI 
*CALL     COMPC2D 
*CALL     COMPSES 
*CALL     COMPSTI 
*CALL     COMPTGB 
*CALL     COMPTLB 
          QUAL   WMS
 QUAL$    EQU    1
 WDS      EQU    WMS
*CALL     COMPWEI 
 WCS$     EQU    1           CONSECUTIVE SECTORS AFTER SYSTEM SECTOR
*CALL     COMPWSS 
          QUAL   *
 WEI      EQU    /WMS/WEI 
 WSS      EQU    /WMS/WSS 
 LITERAL  SPACE  4
          USE    LITERALS 
  
 OVLA     EQU    *+5         OVERLAY LOAD ADDRESS 
          TITLE  PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET PROGRAM. 
  
  
 PRS5     LDD    IA          PRESET *1MV* CALL
          CRD    CM 
          LDN    12          REWRITE LABEL TRACK FUNCTION 
          STD    IR+2        SET THE FUNCTION CODE
          LDD    CM+2 
          STD    IR+3        SET EST ORDINAL
  
 PRS      LDC    DPP1        RESTORE *DPP* JUMP 
          STM    DPPA 
          LDN    ESTP        SET LAST MASS STORAGE ORDINAL
          CRD    LO-3 
          LDN    0           CLEAR FST ADDRESS
          STD    FA 
          STD    TS          CLEAR LABEL TRACK INTERLOCK STATUS 
          STD    UI 
          LDN    NOPE-1      INITIALIZE EST ORDINAL FOR SEARCH
          STD    EI 
          LDK    MMFL 
          CRD    CM 
          LDD    CM+4        SET MACHINE INDEX
          LPN    77 
          RAM    CBPA 
          LDN    SSTL        CHECK SYSTEM STATUS
          CRD    CM 
          LDD    CM 
          LPN    14 
          ZJN    PRS1        IF MS VALIDATION ENABLED 
          LDC    *
          ORG    *-1
          LOC    PFCA 
          NJN    PFC3        IF NOT END OF MS ENTRIES 
          LOC    *O 
          STM    PFCA 
 PRS1     LDN    NCPL        SET NUMBER OF CONTROL POINTS 
          CRD    CM 
          AOD    CM+1 
          STD    NC 
          SHN    7
          LMD    CP 
          ZJN    PRS2        IF SYSTEM CP 
          LDD    IR+2 
          SBN    2
          MJN    PRS4        IF FUNCTION 0 OR 1 
          SBN    10-2 
          ZJN    PRS4        IF FUNCTION 10 
          LDD    CP 
          ADN    JCIW 
          CRD    CM 
          LDD    CM+2 
          ZJN    PRS4        IF NOT SUBSYSTEM / SSJ JOB 
 PRS2     LDD    IR+2 
          SHN    2
          STD    T1 
          SBN    TFCNL
          PJN    PRS4        IF INVALID FUNCTION
          LDM    TFCN+1,T1   SET PROCESSOR ADDRESS
          STD    PA 
          LDM    TFCN+2,T1   SET ERROR RETURN 
          STM    WSEA 
          LDM    TFCN+3,T1   SET *FIB* PROCESSING ADDRESS 
          STM    FIBA 
          LDM    TFCN,T1
          STM    PRSA 
          LJM    PRS4        EXIT TO PROCESSOR
 PRSA     EQU    *-1
  
 PRS4     LDN    0           SET NO ERROR FLAG
          STD    CM+2 
          LDC    *           ADDRESS WHERE ERROR DETECTED 
          STD    CM+1 
          MONITOR  CHGM      CONDITIONALLY HANG PP
          LJM    DPP         DROP PP
 TFCN     SPACE  4,10 
**        TFCN - FUNCTION PROCESSOR TABLE.
* 
*         ENTRY = 4 WORDS.
* 
*T        12/  PP,12/  PA,12/  PE,12/ FA
*         PP     PREPROCESSOR ADDRESS 
*         PA     PROCESSOR ADDRESS
*         PE     POST ERROR PROCESSING ADDRESS
*         FA     SUBROUTINE *FIB* PROCESSING ADDRESS. 
  
  
 TFCN     BSS    0
          LOC    0
  
          CON    DSC,/3CK/DSC,/3CK/DSC1,FIB1
          CON    SYC,/3CK/SCK,/3CK/SCK2,FIB2
          CON    PFC,PFC,PFC,FIB1 
          CON    SYC,/3CK/SCK2,/3CK/SCK2,FIB1 
          CON    ULA,/3CK/ULA,DPP,FIBX
          CON    IDC,/3CL/IDC,/3CL/IDC1,FIB1
          CON    RAC,/3CL/RAC,PFC,FIB2
          CON    RAC,/3CL/RAC,PFC,FIB6
          CON    SYC,/3CK/SCK,/3CK/SCK2,FIB1
          CON    FIC,/3CK/FIC,PFC,FIB1
          CON    RLT,/3CL/RLT,/3CL/RLT1,FIBX
          CON    SYC,/3CK/SCK,/3CK/SCK2,FIBX
 TFCNL    BSS    0
          LOC    *O 
          SPACE  4,10 
*         CHECK FOR OVERFLOW. 
  
  
          OVERFLOW  PPFW,EPFW 
          TTL    1CK/3CK - CHECKPOINT FUNCTION PROCESSORS.
          TITLE 
          QUAL   3CK
          IDENT  3CK,OVLA 
*COMMENT  1CK - CHECKPOINT FUNCTION PROCESSORS. 
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1995. 
          SPACE  4,10 
***       3CK - CHECKPOINT FUNCTION PROCESSORS. 
          SPACE  4,10 
          ORG    OVLA 
          SPACE  4,10 
*         COMMON DECKS. 
  
  
 SUB$     EQU    1           ASSEMBLE *SUBSYST* MACRO 
 QUAL$    EQU    1           AVOID COMMON DECK QUALIFICATION
*CALL     COMSSSD 
          SPACE  4,10 
  
 ENT      SUBR               ENTRY
          RJM    PRS         PRESET 
          LJM    0,PA        PROCESS SELECTED FUNCTION
          TITLE  MAIN ROUTINES. 
 DSC      SPACE  4,10 
**        FUNCTION 0. 
*         DEAD START CHECKPOINT.
  
  
 DSC      BSS    0           ENTRY
          RJM    CCS         COMPUTE CHECKPOINT FILE SIZE 
 DSC1     RJM    SMD         SELECT MASS STORAGE DEVICE 
          ZJN    DSC5        IF NO DEVICES REMAIN 
          LDD    ES 
          SHN    21-2 
          PJN    DSC2        IF NOT CHECKPOINT DEVICE 
          RJM    ACF         ALLOCATE CHECKPOINT FILE 
          RJM    WST         WRITE SYSTEM TABLES
          UJN    DSC4        CHECKPOINT DEVICE
  
 DSC2     RJM    CAD         CHECK ACTIVE DAYFILES
          ZJN    DSC3        IF NO ACTIVE DAYFILES ON DEVICE
          RJM    WLA         WRITE LOCAL AREA 
          UJN    DSC4        CHECKPOINT DEVICE
  
 DSC3     LDD    FS 
          LPN    MLCKP
          ZJN    DSC1        IF CHECKPOINT NOT REQUESTED
          ERRNZ  EPNR-1      CODE DEPENDS ON VALUE
          AOM    UERR        SET *RETURN ON NOT READY* FLAG 
 DSC4     RJM    WTT         WRITE TRT
          RJM    FIB         FLUSH I/O BUFFERS
          RJM    CIL         CLEAR INTERLOCKS 
          UJN    DSC1        SELECT NEXT DEVICE 
  
 DSC5     LDN    JSCL        READ SCHEDULER CONTROL 
          CRD    CM 
          LDD    CM          CLEAR SCHEDULER ACTIVE 
          LPC    3777 
          STD    CM 
          LDN    JSCL        STORE SCHEDULER CONTROL
          CWD    CM 
          LDD    MA 
          CWM    DSCA,ON
          LDN    0           CLEAR DROP PP OPTION 
          STD    CM+1 
          MONITOR  RPPM      CALL *1PP* 
          LJM    DPP         DROP PP
  
  
 DSCA     VFD    18/3L1PP,42/0
 SCK      SPACE  4,10 
**        FUNCTIONS 1, 3, 10 AND 13.
*         SYSTEM CHECK POINT. 
*         ALTERNATE LIBRARY CHECKPOINT. 
*         IDLE SYSTEM CHECKPOINT. 
*         LONG POWER WARNING CHECKPOINT.
  
  
 SCK      BSS    0           ENTRY
          LDN    4
          STD    T1 
          LDD    NC          WRITE MESSAGE AT SYSTEM CONTROL POINT
          SHN    7
          ADN    MS1W 
          CWM    SCKC,T1
          LDN    0           SET CHECKPOINT IN PROGRESS 
          RJM    SCD
          RJM    CBD         CHECK BUFFERED DISKS 
          RJM    ASW         ABORT SUBSYSTEMS REQUIRING JOB FLOW
          LDN    1
          STD    CM+1        SET NUMBER OF OPTIONS
          STD    CM+2        DO NOT DROP PPU
          LDD    MA 
          CWM    SCKA,ON
          MONITOR UADM       DISABLE JOB SCHEDULING 
 SCK1     PAUSE  NE 
          LDN    JSCL        CHECK SCHEDULER ACTIVE 
          CRD    CM 
          LDD    CM 
          SHN    21-13
          MJN    SCK1        IF SCHEDULER ACTIVE
          LDN    1           SET *CPD* DROP FLAG
          STD    CM+1 
          STD    CM+2 
          LDD    MA 
          CWM    SCKB,ON
          MONITOR  UADM 
*         LDN    0
          RJM    ROJ         ROLLOUT NON-SUBSYSTEM JOBS 
*         LDN    0
          RJM    DRJ         DISPOSE OF REMAINING JOBS
          RJM    WFJ         WAIT FOR JOBS TO ROLL OR TERMINATE 
          RJM    FDB         FLUSH DAYFILE BUFFERS
  
*         CHECKPOINT MASS STORAGE DEVICES.
  
 SCK2     RJM    SMD         SELECT NEXT DEVICE 
          ZJN    SCK3        IF END OF MASS STORAGE DEVICES 
          RJM    WTT         WRITE TRT
          RJM    FIB         FLUSH I/O BUFFERS
          RJM    CIL         CLEAR INTERLOCK
          UJN    SCK2        CHECKPOINT NEXT DEVICE 
  
 SCK3     LDN    NOPE-1 
          STD    EI 
          LDC    SCK4        SET I/O ERROR EXIT 
          STM    WSEA 
 SCK4     RJM    SMD         SELECT NEXT DEVICE 
          ZJN    SCK6        IF END OF MASS STORAGE DEVICES 
  
*         WRITE CHECKPOINT FILE ON EACH CHECKPOINT DEVICE.
  
          LDD    ES 
          SHN    21-2 
          PJN    SCK4        IF NOT CHECKPOINT DEVICE 
          RJM    ACF         CLEAR *VALID CHECKPOINT FILE* FLAG IN MST
  
*         WRITE CHECKPOINT FILE.  ROUTINE *WST* SETS
*         *VALID CHECKPOINT FILE* FLAG IN MST TO PERMIT 
*         LEVEL 3 RECOVERY FROM THAT DEVICE.
  
          RJM    WST         WRITE SYSTEM TABLES
          RJM    CBD         ENSURE BUFFERS FLUSHED 
          RJM    CIL         CLEAR INTERLOCKS 
          UJN    SCK4        PROCESS NEXT CHECKPOINT DEVICE 
  
 SCK6     LDD    IR+2 
          LMN    3
 SCK7     ZJN    SCK9        IF ALTERNATE LIBRARY CHECKPOINT
          LDN    SSTL 
          CRD    CM 
          LDD    CM          CHECK SYSTEM STATUS WORD 
          LPN    1
          NJN    SCK9        IF SPINDOWN DISABLED 
          LDN    20          SPIN DOWN ISMD DEVICES 
          RJM    SUD
 SCK9     LDC    SCKD        *CHECKPOINT COMPLETE.* 
          RJM    DFM
          LDN    1           SET CHECKPOINT COMPLETE
          RJM    SCD
          LDD    NC 
          SHN    7
          ADN    MS1W 
          CWM    SCKD,TR     *CHECKPOINT COMPLETE.* 
          LJM    DPP
  
 SCK8     LDD    IA          RELOAD *1MB* 
          CWM    SCKE,ON
          LJM    PPR         EXIT TO PP RESIDENT
  
  
 SCKA     CON    LIOS        INCREMENT BY ONE 
          CON    INWL        WORD ADDRESS 
          CON    13D*100+1   BIT POSITION AND FIELD WIDTH 
          CON    0
          CON    0
  
 SCKB     CON    LIOS 
          CON    INWL 
          CON    2*100+1
          CON    0
          CON    0
  
 SCKC     DATA   C*PROCESSING SYSTEM CHECKPOINT.* 
 SCKD     DATA   C*CHECKPOINT COMPLETE.*
 SCKE     VFD    18/3L1MP,6/0,12/0,24/0 
          SPACE  4
**        FUNCTION 4. 
*         UPDATE LOCAL AREA SECTOR. 
* 
*         ENTRY  (IR+3) = EQUIPMENT.
*                (IR+4) = NUMBER OF DAYFILE POINTER TO UPDATE.
  
  
 ULA      RJM    SDP         SET DEVICE PARAMETERS
          NJN    ULA1        IF DEVICE INACCESSIBLE 
          LDD    IR+4 
          LPN    7
          RAM    WLAB 
          RJM    WLA         WRITE LOCAL AREA 
          RJM    WTT         WRITE TRT
          RJM    CIL         CLEAR INTERLOCKS 
 ULA1     LJM    DPP         EXIT 
 FIC      SPACE  4,10 
**        FUNCTION 11.
*         FATAL IOU ERROR CHECKPOINT. 
  
  
 FIC      LDC    SCK8        SET RETURN FROM *PFC*
          STM    PFCB 
          LDC    LDDI+FS     ENABLE CHECKPOINT FLAG REQUIRED
          STM    SMDA 
          LJM    PFC         PROCESS OUTSTANDING CHECKPOINT REQUESTS
          TITLE  SUBROUTINES. 
          LDM    MSD
          LPC    100
 ERR      SPACE  4,15 
**        ERR - PROCESS ERRORS. 
* 
*         ENTRY  (A) = ADDRESS OF MESSAGE.
*                ((A)) = *EQXXX, DETAILS.*. 
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   TO *DPP*.
* 
*         USES   T7.
* 
*         CALLS  DFM, CIL.
  
  
 ERR      STD    T7          SAVE MESSAGE ADDRESS 
          LDD    T5          CONVERT UPPER TWO DIGITS OF EST ORDINAL
          SHN    -3 
          RJM    C2D
          STM    1,T7 
          LDD    T5          CONVERT LOWER DIGIT OF EST ORDINAL 
          LPN    7
          SHN    6
          ADC    2R0, 
          STM    2,T7 
          LDD    ES+3        SET EQUIPMENT TYPE 
          LPC    3777 
          STI    T7 
          LDD    T7          ISSUE MESSAGE
          RJM    DFM
          LDD    T7          ISSUE MESSAGE TO ERRLOG
          LMC    ERLN 
          RJM    DFM
          RJM    CIL         CLEAR INTERLOCKS 
          LJM    DPP
 ACF      SPACE  4,15 
**        ACF - ALLOCATE CHECKPOINT FILE. 
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = *EQDE* WORD OF EST ENTRY.
* 
*         EXIT   (ST) = CHECKPOINT FILE POINTER.
*                TO *WSE* IF TRACK LIMIT REACHED. 
* 
*         USES   ST, CM - CM+4, CN - CN+4.
* 
*         MACROS MONITOR. 
  
  
 ACF      SUBR               ENTRY/EXIT 
          LDD    ES+4 
          SHN    3
          ADN    DULL 
          CRD    CN 
          LDD    CN+3 
          NJN    ACF1        IF CHECKPOINT FILE ALREADY ASSIGNED
          STD    CM+2 
          LDC    **          SET SECTOR COUNT 
 ACFA     EQU    *-1
          STD    CM+4 
          SHN    -14
          STD    CM+3 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          MONITOR  RTCM 
          LDD    CM+4 
          NJN    ACF1        IF TRACK ASSIGNED
          LJM    WSE         PROCESS CHECKPOINT ABORT 
  
*         CLEAR *VALID CHECKPOINT FILE* FLAG IN MST.
  
 ACF1     STD    ST 
          LPC    3777 
          STD    CM+2 
          LDD    T5          SET EST ORDINAL
          STD    CM+1 
          LDK    USTS        SET SUBFUNCTION
          STD    CM+3 
          MONITOR  SMDM 
          LJM    ACFX        RETURN 
 CAD      SPACE  4,10 
**        CAD - CHECK ACTIVE DAYFILES.
* 
*         ENTRY  (T5) = EST ORDINAL.
* 
*         EXIT   (A) = (T3) = NUMBER OF ACTIVE DAYFILES ON DEVICE.
*                (CADA) = FIRST TRACKS OF DAYFILES. 
* 
*         USES   CM - CM+4, CN - CN+4.
  
  
 CAD1     LDN    3           ADVANCE ADDRESS TO NEXT DAYFILE
          RAD    CN+1 
          SHN    -14
 CAD2     RAD    CN 
          SHN    14 
          LMD    CN+1 
          ADN    2           READ DAYFILE STATUS WORD 
          CRD    CM 
          LDD    T5          CHECK EQUIPMENT
          LMD    CM 
          NJN    CAD3        IF DAYFILE NOT ON CURRENT DEVICE 
          LDD    CM+1        SET FIRST TRACK OF DAYFILE 
          STM    CADA,CN+3
          AOD    T3          ADVANCE COUNT OF ACTIVE DAYFILES FOUND 
 CAD3     AOD    CN+3 
          LMN    EXDF 
          NJN    CAD1        IF NOT END OF EXCESS DAYFILES
          LDD    T3 
  
 CAD      SUBR               ENTRY/EXIT 
          LDN    DFPP        READ DAYFILE POINTER WORD
          CRD    CN 
          LDN    ZERL        CLEAR DAYFILE LIST 
          CRM    CADA,ON
          LDN    0           CLEAR ACTIVE DAYFILE COUNT 
          STD    T3 
          STD    CN+3 
          UJN    CAD2        CHECK SYSTEM DAYFILE 
  
 CADA     BSS    5           ACTIVE DAYFILE LIST
 CBD      SPACE  4,10 
**        CBD - CHECK BUFFERED DISKS. 
* 
*         EXIT   BUFFERED DISKS FLUSHED IF PRESENT. 
* 
*         USES   CM - CM+4. 
* 
*         MACROS MONITOR. 
  
  
 CBD      SUBR               ENTRY/EXIT 
          LDK    BIOL 
          CRD    CM 
          LDD    CM+1 
          ADD    CM+2 
          ZJN    CBDX        IF NO BUFFERED I/O 
          LDN    ZERL 
          CRD    CM 
          LDC    BMFW*100    FLUSH ALL WRITE BUFFERS
          STD    CM+4 
          MONITOR  BFMM 
          UJN    CBDX        RETURN 
 CUA      SPACE  4,15 
**        CUA - CALCULATE UEM ADDRESS.
* 
*         ENTRY  (T8) = TRACK.
*                (CA, CA+1) = UEM BASE ADDRESS. 
* 
*         EXIT   (A) = BITS 5 - 0 OF ABSOLUTE UEM ADDRESS.
*                (CA+2 - CA+3) = BITS 27 - 6 OF ABSOLUTE UEM ADDRESS
*                                (TO BE USED IN *R* REGISTER).
*                (CA+4) = BITS 5 - 0 OF ABSOLUTE UEM ADDRESS
*                         (TO BE USED IN *A* REGISTER). 
* 
*         USES   CA+2 - CA+4. 
  
  
 CUA      SUBR               ENTRY/EXIT 
          LDD    T8          CALCULATE TRACK * 2020 
          SHN    6           * 100
          ADD    T8          * 101
          STD    CA+3 
 CUAA     SHN    -10
*         SHN    -10+EMSC    -10 + EXTENDED MEMORY SHIFT COUNT
          STD    CA+2        * 2020 HIGH BITS 
          LDD    CA+3 
 CUAB     SHN    4           (A) = * 2020 LOW BITS
*         SHN    4+EMSC      4 + EXTENDED MEMORY SHIFT COUNT
          LPC    7777 
          ADD    CA+1        ADD UEM BASE ADDRESS 
          STD    CA+4        LOW LOW BITS FOR *A* REGISTER
          SHN    -14
          ADD    CA 
          RAD    CA+2        HIGH BYTE ABSOLUTE UEM ADDRESS 
          SHN    6           SHIFT RESULT FOR *R* REGISTER
          STD    CA+3 
          SHN    6
          STD    CA+2 
          LDD    CA+4 
          SHN    14 
          RAD    CA+3 
          SHN    -14
          STD    CA+4        SET LOW 6 BITS FOR *A* REGISTER
          UJN    CUAX        RETURN 
 FDB      SPACE  4,15 
**        FDB - FLUSH DAYFILE BUFFERS.
* 
*         EXIT   SYSTEM DAYFILE BUFFERS FLUSHED TO DISK.
* 
*         USES   CM+1, DI.
* 
*         CALLS  DFM, *0TD*.
* 
*         MACROS EXECUTE. 
  
  
 FDB1     EXECUTE  0TD,OVL0  TERMINATE DAYFILE
          AOD    DI          ADVANCE DAYFILE INDEX
 FDB2     STM    OVL0-1      SET POINTER ADDRESS FOR *0TD*
          LMN    EXDF+1 
          NJN    FDB1        IF NOT END OF SYSTEM DAYFILES
  
 FDB      SUBR               ENTRY/EXIT 
          LDN    FDBAL       SET MESSAGE LENGTH 
          STD    CM+1 
          LDC    BMLN+FDBA   ISSUE CHECKPOINT MESSAGE TO THE *BML*
          RJM    DFM
          LDN    1           INITIALIZE DAYFILE INDEX 
          STD    DI 
          UJN    FDB2        FLUSH MASTER DAYFILE BUFFER
  
 FDBA     CON    DM0406,DS0112  *BML* SYSTEM CHECKPOINT MESSAGE 
          BSSZ   FDBA+6-*    ZERO FILL MESSAGE
 FDBAL    EQU    *-FDBA      LENGTH OF MESSAGE
 FTB      SPACE  4,10 
**        FTB - FILL TRACK BUFFER.
* 
*         ENTRY  (T6) = LAST TRACK USED.
* 
*         EXIT   (NT) = *TBUF*. 
* 
*         USES   NT, T0, T1, CM - CM+4. 
  
  
 FTB      SUBR               ENTRY/EXIT 
          LDC    TBUF        SET TRACK BUFFER POINTER 
          STD    NT 
          STD    T0 
          LDD    T6 
          SHN    6
 FTB1     SHN    -6          STORE TRACK IN BUFFER
          STI    T0 
          SHN    -2          READ TRT WORD TO GET NEXT TRACK
          ADC    TRTS 
 FTBA     EQU    *-2
          CRD    CM 
          LDI    T0          SET BYTE INDEX 
          LPN    3
          STD    T1 
          AOD    T0          ADVANCE BUFFER POINTER 
          LMC    TBUF+TBUFL-1 
          ZJN    FTB2        IF TRACK BUFFER FULL 
          LDM    CM,T1
          SHN    6
          MJN    FTB1        IF NOT EOI 
          LCN    0           INHIBIT REFILLING BUFFER 
 FTB2     STI    T0          MARK END OF BUFFER 
          UJN    FTBX        RETURN 
 GLS      SPACE  4,15 
**        GLS - GET LOCAL AREA SECTOR.
* 
*         ENTRY  (T5) = EQUIPMENT.
*                (ES - ES+4) = EST ENTRY. 
* 
*         EXIT   (A) = READ ERROR INDICATION. 
*                (BFMS) = LOCAL AREA SECTOR.
* 
*         USES   CM - CM+4. 
* 
*         CALLS  RDS. 
* 
*         MACROS SETMS, SMSTF.
  
  
 GLS2     SETMS  IO,(ND,NS)  READ SECTOR OF LOCAL AREAS 
          LDC    BFMS 
          RJM    RDS
          MJN    GLSX        IF READ ERROR
          LDM    BFMS 
          NJN    GLSX        IF FORMATTED SECTOR OF LOCAL AREAS 
          ENDMS 
          SMSTF  GDEI        SET ERROR IDLE 
          LCN    0
  
 GLS      SUBR               ENTRY/EXIT 
          LDD    ES+4        CHECK IF SECTOR EXISTS 
          SHN    3
          ADN    ACGL 
          CRD    CM 
          LDD    CM+4 
          LPC    MGLAP
          NJN    GLS2        IF SECTOR EXISTS 
          LDC    501
          STD    CM 
 GLS1     LDN    0           CLEAR SECTOR BUFFER
          STM    BFMS,CM
          SOD    CM 
          NJN    GLS1        IF NOT START OF BUFFER 
          LDN    LMLT        SET SYSTEM LEVEL IN LINKAGE
          STM    BFMS 
          SMSTF  GLAP        FLAG SECTOR OF LOCAL AREAS PRESENT 
*         LDN    0
          UJN    GLSX 
 GSC      SPACE  4,10 
**        GSC - GET SECTOR COUNT. 
* 
*         ENTRY  (T8) = UEM TRACK POINTER.
*                (FS+1) = LAST TRACK + 1 OF USER EXTENDED MEMORY. 
*                (FS+2) = UEM SECTOR LIMIT. 
*                (FS+3) = TRT LENGTH. 
* 
*         EXIT   (A) = NUMBER OF SECTORS IN USE IN TRACK. 
* 
*         USES   T2, T8, CM - CM+4. 
  
  
 GSC      SUBR               ENTRY/EXIT 
 GSC1     AOD    T8 
          LMD    FS 
          NJN    GSC2        IF NOT FIRST TRACK OF USER EXTENDED MEMORY 
          LDD    FS+1 
          STD    T8          SKIP TO END OF USER EXTENDED MEMORY
 GSC2     LDD    T8 
          SHN    -2          COMPUTE TRT WORD OFFSET
          STD    T2 
          LMD    FS+3 
          ZJN    GSCX        IF END OF TRT
          LDC    TRTS        READ TRT WORD
 GSCA     EQU    *-2
          ADD    T2 
          CRD    CM 
          LDD    T8          COMPUTE BYTE NUMBER
          LPN    3
          STD    T2 
          ADC    SHNI+16     SET TRACK RESERVATION CHECK
          STM    GSCB 
          LDD    CM+4 
          SHN    ** 
 GSCB     EQU    *-1
 GSC3     PJN    GSC1        IF TRACK NOT RESERVED
          LDM    CM,T2
  
*         TEST FOR LABEL TRACK WHICH CONTAINS A 0 AT DEADSTART TIME.
*         NOTE:  EOI TRACKS WILL ALSO BE PICKED UP - A 1 IN *SLM* 
*         CHANCE FOR EACH FILE, WHERE *SLM* IS THE UEM SECTOR LIMIT.
  
          ZJN    GSC5        IF LABEL TRACK 
          LMC    3777 
          ZJN    GSC3        IF TRACK FLAWED
          LMC    3777 
          SHN    21-13
          MJN    GSC5        IF ENTIRE TRACK IN USE 
          SHN    14 
          ADN    1
 GSC4     LJM    GSCX        RETURN 
  
 GSC5     LDD    FS+2 
          UJN    GSC4        RETURN SECTOR COUNT FOR FULL TRACK 
 SCD      SPACE  4,10 
**        SCD - SET CHECKPOINT BITS.
* 
*         ENTRY  (A) = OPERATION TO PERFORM.
*                    = 0, SET CHECKPOINT IN PROGRESS. 
*                    = 1, SET CHECKPOINT COMPLETED. 
* 
*         USES   T1, CM - CM+4, CN - CN+4.
* 
*         MACROS MONITOR. 
  
  
 SCD4     LDD    CM          SET CHECKPOINT IN PROGRESS 
          SCN    4
          LMN    4
 SCD5     STD    CM          STORE CHECKPOINT FLAGS 
          LDD    CN+3 
          SHN    14 
          ADD    CN+4 
          ADN    D7ST 
          CWD    CM          WRITE UPDATED STATUS WORD
  
 SCD      SUBR               ENTRY/EXIT 
          STD    T1          SAVE OPERATION 
          ZJN    SCD1        IF SET CHECKPOINT IN PROGRESS
          LDN    LDOS        SET DECREMENT BY ONE 
          STM    SCDA 
 SCD1     LDN    1           SET NUMBER OF OPTIONS
          STD    CM+1 
          STD    CM+2        DO NOT DROP PPU
          LDD    MA 
          CWM    SCDA,ON
          MONITOR  UADM      SET GLOBAL CHECKPOINT IN PROGRESS FLAG 
          LDK    EIBP 
          CRD    CN 
          LDD    CN+3 
          SHN    14 
          ADD    CN+4 
 SCD2     ZJN    SCDX        IF NO *EICB* 
          ADN    D7ST 
          CRD    CM 
          LDD    T1 
          NJN    SCD3        IF SET CHECKPOINT COMPLETE 
          LJM    SCD4        SET CHECKPOINT IN PROGRESS 
  
 SCD3     LDD    CM 
          LPN    4
          ZJN    SCD2        IF CHECKPOINT IN PROGRESS FLAG NOT SET 
          LDD    CM 
          SCN    10 
          LMN    10 
          LJM    SCD5        SET CHECKPOINT COMPLETE
  
 SCDA     CON    LIOS        INCREMENT BY ONE 
          CON    INWL        WORD ADDRESS 
          CON    4*100+1     BIT POSITION AND FIELD WIDTH 
          CON    0
          CON    0
 TUT      SPACE  4,10 
**        TUT - TRANSFER UEM TRACK TO DISK. 
* 
*         ENTRY  (A) = NUMBER OF SECTORS TO TRANSFER. 
*                (T8) = UEM TRACK NUMBER. 
*                (FS+2) = UEM SECTOR LIMIT. 
* 
*         USES   CA+2, CA+3, T9.
* 
*         CALLS  CUA, WNS.
* 
*         NOTES  IF THE UEM TRACK SIZE IS 100B OR 200B SECTORS, THE 1ST 
*                SECTOR WILL CONTAIN ONLY THE TRACK DESCRIPTION, AND
*                ALL LINKAGE WORDS WILL FOLLOW IN THE NEXT 1 OR 2 
*                SECTORS, PROCESSED AS IF DATA SECTORS. 
  
  
 TUT      SUBR               ENTRY/EXIT 
          STD    T9          SET SECTOR COUNT 
          LDD    FS+2        ADD LINKAGE WORDS TO SECTOR COUNT
          SHN    -6 
          RAD    T9 
          STM    BUF+3
          LDD    T8          SET TRACK NUMBER 
          STM    BUF+2
          RJM    CUA         CALCULATE FWA OF UEM TRACK 
          LDD    FS+2 
          LPN    77 
          STM    BUF+1       SET SINGLE SECTOR LINKAGE WORD COUNT 
          ZJN    TUT1        IF TOO MANY WORDS FOR ONE SECTOR 
          RAD    CA+4        ADVANCE UEM ADDRESS FOR PARTIAL SECTOR 
          SBD    FS+2 
          ADC    400000      SET 2**17
          LRD    CA+2 
          CRM    BUF+4,FS+2  READ LINKAGE WORDS 
 TUT1     RJM    WNS         WRITE 1ST (OR ONLY) LINKAGE SECTOR 
          LDD    HN          SET WORD COUNT FOR REMAINING SECTORS 
          STM    BUF+1
 TUT2     LDD    CA+4 
          ADC    400000 
          LRD    CA+2        READ DATA SECTOR 
          CRM    BUF+2,HN 
          RJM    WNS         WRITE NEXT SECTOR
          AOD    CA+3        ADVANCE UEM ADDRESS
          SHN    -14
          RAD    CA+2 
          SOD    T9          DECREMENT SECTOR COUNT 
          NJN    TUT2        IF NOT FINISHED WITH TRACK 
          UJP    TUTX        RETURN 
 UCP      SPACE  4,10 
**        UCP - CHECKPOINT UEM. 
* 
*         ENTRY  (T4 - T7) = DISK PARAMETERS FOR CURRENT CHECKPOINT 
*                            DEVICE.
* 
*         USES   T8, T9, CA, CA+1, CM - CM+7, CN - CN+4, FS - FS+3. 
* 
*         CALLS  GSC, TUT, WEI, WLA.
* 
*         MACROS ENDMS, SFA.
  
  
 UCP4     RJM    TUT         TRANSFER UEM TRACK TO DISK 
 UCP5     RJM    GSC         GET SECTOR COUNT OF NEXT TRACK 
          NJN    UCP4        IF NOT END OF UEM
  
 UCP      SUBR               ENTRY/EXIT 
          LDK    UEML        SET UEM BASE ADDRESS 
          CRD    CM 
          LDD    CM 
          SHN    21-2 
          STD    CA 
          SHN    -6 
          SCN    7
          STD    CA+1 
          LDC    0           SET UEM MST ADDRESS
 UCPA     EQU    *-1
          SHN    3
          ADK    MDGL 
          CRD    CM+3 
          SBN    MDGL-ACGL
          CRD    CM 
          ADK    TDGL-ACGL
          CRD    CM+2 
          ADK    TRLL-TDGL
          CRD    CN 
          LDD    CM+3+4      SET SECTOR LIMIT 
          STD    FS+2 
          LDD    CM+2+2      SET TRT LENGTH 
          STD    FS+3 
          LDD    CN+3        SET TRT FWA
          LPN    77 
          LMC    LDCI 
          STM    GSCA 
          LDD    CN+4 
          STM    GSCA+1 
          LCN    0
          STD    T8          INITIALIZE UEM FIRST TRACK 
          STD    FS          PRESET USER AREA FIRST TRACK 
          LDD    CM+1        SET FIRST TRACK OF USER AREA 
          ZJN    UCP3        IF NO USER AREA
          LPC    3777        SET FIRST TRACK OF USER AREA 
          STD    FS+1 
          ADN    1           CAUSE USER AREA FIRST TRACK TO BE WRITTEN
          STD    FS 
          LDK    ECRL 
          CRD    CN 
          LDD    CN+1 
 UCPB     SHN    5
*         SHN    5-EMSC+UESC
          STD    CN+1 
          SHN    -14
          STD    CN 
 UCP2     AOD    FS+1        ADVANCE TRACK POINTER
          LDC    -101 
          RAD    CN+1 
          PJN    UCP2        IF NOT UNDERFLOW 
          AOD    CN+1 
          SOD    CN 
          PJN    UCP2        IF NOT END OF CONVERSION 
 UCP3     LJM    UCP5        TRANSFER UEM DATA TO DISK
 WLA      SPACE  4,15 
**        WLA - WRITE LOCAL AREAS.
* 
*         ENTRY  (T4) = CHANNEL.
*                (T5) = EQUIPMENT.
*                (ES - ES+4) = EST ENTRY. 
*                (LT) = LABEL TRACK.
* 
*         EXIT   (A) = 0. 
*                (TS) = LABEL TRACK INTERLOCKED STATUS. 
* 
*         USES   T1, T2, T6, T7, CM - CM+7. 
* 
*         CALLS  ABT, CAD, ERR, GLS, STI, UMS.
* 
*         MACROS ENDMS, SETMS.
  
  
 WLA11    LJM    ABT         ABORT OPERATION
  
 WLA      SUBR               ENTRY/EXIT 
          LDD    LT 
          STD    T6 
          LDD    TS 
          NJN    WLA1        IF LABEL TRACK INTERLOCKED 
          RJM    STI         SET TRACK INTERLOCK
          NJN    WLA11       IF ERROR FLAG SET
          AOD    TS          SET LABEL TRACK INTERLOCK STATUS 
 WLA1     LDN    LMLT        SET LOCAL AREA SECTOR
          STD    T7 
          RJM    GLS         GET LOCAL AREA SECTOR
          PJN    WLA4        IF NO ERROR
 WLA2     ENDMS 
          LDC    WLAE        *EQXXX, LOCAL AREA SECTOR ERROR.*
 WLAA     EQU    *-1
*         LDC    WLAF        (*EQXXX, LOCAL AREA OVERFLOW.*)
          LJM    ERR         ISSUE THE ERROR MESSAGE
  
*         MAKE A NEW ENTRY IN THE SECTOR. 
  
 WLA3     LDN    2           BUMP SECTOR WORD COUNT 
          RAM    BFMS+1 
          SBD    HN 
          MJN    WLA6        IF ROOM FOR A NEW ENTRY
          LDC    WLAF        *EQXXX, LOCAL AREA OVERFLOW.*
          STM    WLAA 
          UJN    WLA2        PROCESS ERROR
  
*         SEARCH FOR MATCH ON MACHINE ID. 
  
 WLA4     LCN    2*5-1       INITIALIZE SEARCH INDEX
          STD    T2 
          LCN    2-1
          STD    T1 
          LDC    MMFL        GET MACHINE ID 
          CRD    CM 
 WLA5     LDN    2*5         BUMP SEARCH INDEX
          RAD    T2 
          LDN    2
          RAD    T1 
          LDD    T1 
          SBM    BFMS+1      SUBTRACT SECTOR WORD COUNT 
          PJN    WLA3        IF END OF SECTOR DATA
          LDM    BFMS+2,T2   COMPARE ID CODE
          LMD    CM 
          NJN    WLA5        IF NO MATCH
  
*         UPDATE LOCAL AREA DATA. 
  
          LDM    BFMS+2+2,T2
          NJN    WLA6        IF POST LEVEL 509 ENTRY
          STM    BFMS+2+10,T2 
 WLA6     LDD    T2 
          ADC    BFMS+2+5 
          STM    WLAC 
          STM    WLAD 
          LDD    CM          SET MACHINE ID 
          STM    BFMS+2,T2
          LDN    LMLT        SET SYSTEM LEVEL IN ENTRY
          STM    BFMS+2+2,T2
          LDD    ES+4        READ DULL WORD 
          SHN    3
          ADN    DULL 
          CRD    CM+3 
          ADN    STLL-DULL
          CRD    CM 
          LDD    CM+3        SET USER COUNT 
          STM    BFMS+2+4,T2
          LDD    CM+6        SET SYSTEM TABLE TRACK 
          LPC    3777 
*         UJN    *+2         (FUNCTIONS 0 AND 1)
 WLAG     EQU    *-2
          STM    BFMS+2+1,T2
          LDD    CM+7        SET FAMILY COUNT 
          STM    BFMS+2+3,T2
          LDC    0           UEM SECTOR OFFSET
 WLAH     EQU    *-1
          STM    BFMS+2+11,T2 
          RJM    CAD         CHECK ACTIVE DAYFILES
 WLAB     LDN    0
          ZJN    WLA7        IF NO DAYFILE POINTER UPDATE 
          SBN    1
          STD    T1 
          LDN    0           CLEAR DAYFILE POINTER
          STM    *,T1 
 WLAC     EQU    *-1
 WLA7     STD    T2 
          LDD    T3 
          ZJN    WLA10       IF NO ACTIVE DAYFILES ON DEVICE
  
*         MOVE ACTIVE DAYFILE TRACKS TO SECTOR OF LOCAL AREAS.
  
 WLA8     LDM    CADA,T2
          ZJN    WLA9        IF DAYFILE NOT PRESENT 
          STM    *,T2 
 WLAD     EQU    *-1
 WLA9     AOD    T2          ADVANCE DAYFILE INDEX
          LMN    EXDF 
          NJN    WLA8        IF NOT END OF EXCESS DAYFILES
 WLA10    SETMS  IO,(ND,NS,RW),WBUF 
          LDC    BFMS+WLSF   REWRITE SECTOR 
          RJM    WMS
          ENDMS 
*         LDN    0
          STM    WLAH 
          LJM    WLAX        RETURN 
  
 WLAE     DATA   C*EQXXX, LOCAL AREA SECTOR ERROR.* 
 WLAF     DATA   C*EQXXX, LOCAL AREA OVERFLOW.* 
 WST      SPACE  4,20 
**        WST - WRITE SYSTEM TABLES.
* 
*         ENTRY  (T5) = EST ORDINAL.
*                (ES - ES+4) = EST ENTRY. 
*                (ST) = CHECKPOINT FILE FIRST TRACK.
*                (LT) = LABEL TRACK.
*                (FS - FS+4) = STLL WORD. 
* 
*         USES   T6, CA - CA+4, CM - CM+4, CN - CN+4. 
* 
*         CALLS  FTB, WSS, WTB. 
* 
*         MACROS CFI, ENDMS, MONITOR, SETMS.
  
  
 WST      SUBR               ENTRY/EXIT 
          LDD    ST 
          STD    T6 
          LDD    ES+4        GET TRT ADDRESS
          SHN    3
          ADK    TRLL 
          CRD    CM 
          LDD    CM+3        SET TRT ADDRESS FOR *FDB*
          LPN    77 
          SHN    14 
          LMD    CM+4 
          SBD    TH          COMPENSATE FOR UPPER BIT OF TRACK
          STM    FTBA+1 
          STM    SRAA+1 
          SHN    -14
          LMC    ADCI 
          STM    FTBA 
          STM    SRAA 
          RJM    FTB         FILL TRACK BUFFER
          SETMS  IO,(ND,NS),WBUF
          LDD    MA          ENTER NAME 
          CWM    WSTB,ON
          SBN    1
          CRM    FNSS,ON
          RJM    WSS         WRITE SYSTEM SECTOR
          LDN    0           WRITE POINTER AREA 
          STD    CA 
          STD    CA+1 
          LDC    BQRL 
          RJM    WTB
  
*         WRITE EQUIPMENT STATUS TABLE. 
  
          LDN    ESTP        SET EST ADDRESS
          CRD    CA 
          CFI    EST,EC,EC   SET EST LENGTH 
          RJM    WTB         WRITE TABLE
  
*         WRITE CHANNEL INTERLOCK TABLES. 
  
          LDC    CHTP        SET CHANNEL TABLE ADDRESS
          CRD    CM 
          LDD    CM+2 
          STD    CA 
          LDD    CM+3 
          STD    CA+1 
          LDN    CTALL*2     TABLE LENGTH 
          RJM    WTB         WRITE TABLE
  
*         WRITE EVENT TABLE.
  
          LDK    EVTP        FETCH EVENT TABLE POINTER
          CRD    CM 
          LDD    CM          SET TABLE ADDRESS
          STD    CA 
          LDD    CM+1 
          STD    CA+1 
          LDN    EVTLL       WRITE EVENT TABLE
          RJM    WTB
  
*         WRITE SUBSYSTEM CONTROL TABLES. 
  
          LDC    SSCP        FETCH SUBSYSTEM CONTROL TABLE POINTER
          CRD    CM 
          LDD    CM+2        SET ADDRESS OF TABLES
          STD    CA 
          LDD    CM+3 
          STD    CA+1 
          LDN    SSCTL*2     WRITE SSCT AND SSAT
          RJM    WTB
  
*         WRITE SERVICE CLASS AND JOB CONTROL TABLES. 
  
          LDK    JBCP        FETCH CONTROL TABLE POINTER
          CRD    CA 
          LDK    JCBE*/SCD/MXJC  WRITE CONTROL TABLES 
          RJM    WTB
  
*         WRITE SABB TABLE. 
  
          LDK    SABL 
          CRD    CA 
          LDD    CA+2 
          RJM    WTB
  
*         WRITE STATISTICAL DATA AREA.
  
          LDC    SDAP        SET STATISTICAL AREA ADDRESS 
          CRD    CA 
          LDN    SDAL        WRITE STATISTICAL DATA AREA
          RJM    WTB
  
*         WRITE MANAGED TABLES. 
  
          LDN    QFTP        FETCH QFT POINTER
          CRD    CA 
          CFI    QFT,EC,EC   SET QFT LENGTH 
          STD    CN+1 
          SHN    -14
          STD    CN 
          LDC    CLTP        READ CLT POINTER 
          CRD    CM 
          CFI    CLT,CM+2    APPEND COMMON LIBRARIES TABLE LENGTH 
          RAD    CN+1 
          SHN    -14
          RAD    CN 
          LDC    LIDP        FETCH LID TABLE POINTER
          CRD    CM 
          LDD    CM+2        APPEND LID TABLE LENGTH
          RAD    CN+1 
          SHN    -14
          RAD    CN 
          LDN    EJTP        FETCH EJT POINTER
          CRD    CA 
          CFI    EJT,EC,EC   APPEND EJT LENGTH
          RAD    CN+1 
          SHN    -14
          RAD    CN 
          LDN    FNTP        FETCH FNT POINTER
          CRD    CM 
          ADN    FOTP-FNTP   READ FOT POINTER 
          CRD    CA 
          CFI    FNT,CM+2,CM+2  ADD FNT LENGTH
          SHN    6
          ADD    CN 
          SHN    14 
          ADD    CN+1 
          ADD    EC          ADD FOT LENGTH 
          RJM    WTB
  
*         WRITE LIBRARIES AND DIRECTORIES.
  
          LDC    RPLP        FETCH RPL POINTER
          CRD    CA 
          LDN    CMRL        READ CMR LENGTH
          CRD    CM 
          LDD    CM+4 
          SHN    14 
          SBD    CA 
          SHN    14 
          SBD    CA+1 
          RJM    WTB
  
*         WRITE BUFFERED DEVICE POINTER TABLE.
  
          LDC    BIOL        FETCH BUFFERED I/O STATUS
          CRD    CM 
          LDD    CM+1        SET ADDRESS OF TABLES
          STD    CA 
          SHN    14 
          LMD    CM+2 
          STD    CA+1 
          ZJN    WST1        IF NO BUFFERED I/O 
          LDN    BDTL 
          RJM    WTB         WRITE TABLE
 WST1     ENDMS 
          LDD    T5          SET EQUIPMENT
          STD    CM+1 
          LDD    ST          SET SYSTEM TABLE TRACK 
          STD    CM+2 
          LDN    USTS        UPDATE SYSTEM TABLE TRACK
          STD    CM+3 
          MONITOR  SMDM 
 WSTA     UJN    WST2        AVOID UEM CHECKPOINT 
*         LDD    ST          (UEM PRESENT AND FUNCTION 0 OR 1)
          RJM    SRA         COMPUTE UEM SECTOR OFFSET
          LDD    RI+1 
          STM    WLAH 
          RJM    UCP         WRITE UEM TO CHECKPOINT FILE 
 WST2     RJM    WEI         WRITE EOI
          ENDMS 
          RJM    WLA         WRITE SECTOR OF LOCAL AREAS
          LJM    WSTX        RETURN 
  
  
 WSTB     VFD    42/0LSYSTAB,6/1,6/SYFT,6/0 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
 IFP$     EQU    1           ASSEMBLE *COMPGFP* INITIALIZATION REMOTELY 
 EJT$     EQU    1           ASSEMBLE EJT ACCESS ROUTINE
*CALL     COMPGFP 
*CALL     COMPSRA 
*CALL     COMPSUD 
          SPACE  4
*         BUFFER ASSIGNMENTS. 
  
  
          USE    LITERALS 
          QUAL
 BUF      BSS    0
 WBUF     EQU    BUF+502     WRITE ERROR PROCESSING BUFFER
          ERRNG  BFMS-WBUF-502  BUFFER OVERFLOW 
 TBUF     EQU    WBUF+502    TRACK BUFFER 
 TBUFL    EQU    BFMS-TBUF   TRACK BUFFER LENGTH
          ERRNG  TBUFL-20    INADEQUATE TRACK BUFFER
 OVL0     EQU    BUF+1       ZERO LEVEL OVERLAY LOAD ADDRESS
          QUAL   *
 3CK      TITLE  OVERLAYED SUBROUTINES. 
 ASW      SPACE  4,15 
**        ASW - ABORT SUBSYSTEMS WHERE JOB SCHEDULING IS REQUIRED FOR 
*         CLEANUP OF CONNECTED JOBS.
* 
*         ENTRY  (NC) = NUMBER OF CONTROL POINTS. 
* 
*         EXIT   (A) = 0. 
* 
*         USES   T1, T7, CM - CM+4, ES - ES+4.
* 
*         CALLS  CCP, CET, CSC, DEL, DFM, FJO.
* 
*         MACROS MONITOR. 
  
  
 ASW5     LDN    ASWX-ASW5
          RAM    ASWD 
          LDM    ASWF 
          STM    ASWE 
          LDK    RTCL        GET STARTING TIME
          CRD    ES 
          UJN    ASW1        SCAN CONTROL POINTS
  
 ASW6     RJM    CSC         CHANGE TO SYSTEM CP
          RJM    DEL         DELAY FOR 50 MS
 ASW7     RJM    CET         COMPUTE ELAPSED TIME 
          MJN    ASW1        IF NOT TIMEOUT 
  
 ASW      SUBR               ENTRY/EXIT 
 ASW1     LDN    0           INITIALIZE CP NUMBER 
          STD    T7 
 ASW2     RJM    FJO         FIND JOB 
          ZJN    ASW5        IF SCAN COMPLETE 
*         ZJN    ASWX        (AFTER FIRST CP SCAN)
 ASWD     EQU    *-1
          LCN    1
          STD    T1 
 ASW3     LDN    2
          RAD    T1 
          LDM    ASWB,T1
          ZJN    ASW2        IF END OF LIST 
          LMD    CN+2 
          NJN    ASW3        IF NOT SELECTED SUBSYSTEM
          RJM    CCP         CHANGE CONTROL POINT ASSIGNMENT
          ZJN    ASW2        IF JOB GONE
          LDM    ASWB+1,T1
*         UJN    ASW6        (AFTER FIRST CP SCAN)
 ASWE     EQU    *-2
          ZJN    ASW4        IF NO SENSE SWITCHES TO CHANGE 
          SCN    77 
          STM    ASWA        SET SWITCH MASK
          LDM    ASWB+1,T1
          SHN    6
          STM    ASWB+1,T1   ISOLATE SWITCHES TO SET
          LDD    T7          SET SENSE SWITCHES 
          SHN    7
          ADN    SNSW 
          CRD    CM 
          LDD    CM+4 
          LPC    **          PRESERVE SELECTED SWITCHES 
 ASWA     EQU    *-1
          LMM    ASWB+1,T1   SET SELECTED SWITHES 
          STD    CM+4 
          LDD    T7 
          SHN    7
          ADN    SNSW 
          CWD    CM 
 ASW4     LDN    ODET        ABORT SUBSYSTEM
          STD    CM+1 
          MONITOR  CEFM 
          LDC    ASWC        * SYSTEM CHECKPOINT ABORT.*
          RJM    DFM
          RJM    CSC         CHANGE TO SYSTEM CP
          LJM    ASW2        FIND NEXT JOB
  
**        TABLE OF SENSE SWITCHES TO CLEAR/SET ON SUBSYSTEMS. 
* 
*T ASWB   12/ ID, 6/ MSK, 6/ SET
* 
*         ID = SUBSYSTEM ID.
*         MSK = SENSE SWITCH MASK - SEE NOTE. 
*         SET = SENSE SWITCHES TO SET.
* 
*         NOTE - *MSK* MUST INCLUDE SWITCHES WHICH WILL BE SET AS WELL
*         AS SWITCHES TO BE CLEARED. OTHERWISE, *SET* WILL CAUSE
*         SWITCHES TO BE TOGGLED. 
  
 ASWB     BSS    0
          VFD    12/IFSI     IAF
          VFD    6/56        CLEAR SWITCHES 5 AND 1 
          VFD    6/1         SET SWITCH 1 
          CON    0           END OF LIST
  
 ASWC     DATA   C* SYSTEM CHECKPOINT ABORT.* 
  
 ASWF     BSS    0
          LOC    ASWE 
          UJN    ASW6        CONTINUE 
          LOC    *O 
 CCA      SPACE  4,10 
**        CCA - COMPUTE CPA/PCPA ADDRESS. 
* 
*         ENTRY  (A) = CP/PCP NUMBER. 
*                (NC) = NUMBER OF CONTROL POINTS. 
* 
*         EXIT   (A) = CPA/PCPA ADDRESS.
  
  
 CCA1     ADD    NC 
          SHN    7
  
 CCA      SUBR               ENTRY/EXIT 
          SBD    NC 
          MJN    CCA1        IF CONTROL POINT 
          ZJN    CCA1        IF SYSTEM CONTROL POINT
          SHN    7
 CCAA     ADC    **          (PCP AREAS BASE ADDRESS) 
          UJN    CCAX        RETURN 
 CCP      SPACE  4,10 
**        CCP - CHANGE CONTROL POINT ASSIGNMENT.
* 
*         ENTRY  (T7) = CONTROL POINT NUMBER. 
* 
*         EXIT   (A) = EJT ORDINAL IF CHANGE MADE.
*                    = 0 IF JOB GONE. 
* 
*         USES   CM - CM+4, CN - CN+4.
* 
*         CALLS  DEL. 
* 
*         MACROS MONITOR. 
  
  
 CCP2     LDD    CN 
  
 CCP      SUBR               ENTRY/EXIT 
 CCP1     LDD    T7 
          STD    CM+1 
          MONITOR  CCAM 
          LDD    T7 
          SHN    7
          ADK    TFSW 
          CRD    CN 
          LDD    CN 
          ZJN    CCPX        IF JOB GONE
          LDD    CM+1 
          ZJN    CCP2        IF CHANGE MADE 
          RJM    DEL         DELAY FOR 5O MS
          UJN    CCP1        RETRY
 CCS      SPACE  4,20 
**        CCS - COMPUTE CHECKPOINT FILE SIZE. 
* 
*         COMPUTE CHECKPOINT FILE SIZE BASED ON THE 
*         FOLLOWING FORMULA - 
* 
*           SECTORS = (CMR + TOTAL UEM - USER UEM 
*                + 1/2 (RPL + RCL + PLD))/100B
* 
*         ERROR  TO *DPP* IF CHECKPOINT FILE TOO LARGE. 
* 
*         USES   T8, T9, CM - CM+4, CN - CN+4, ES - ES+4, T0 - T0+4.
* 
*         CALLS  DFM. 
  
  
 CCS      SUBR               ENTRY/EXIT 
          LDK    RPLP        GET RPL FWA
          CRD    CM 
          ADK    PSTP-RPLP   GET LWA+1 OF PLD 
          CRD    CN 
          LDD    CN+2        COMPUTE 1/2 * (RPL + RCL + PLD)/100B 
          SBD    CM 
          SHN    14 
          ADD    CN+3 
          SBD    CM+1 
          SHN    -6-1        1/2 * (RPL + RCL + PLD)/100B 
          STD    T9 
          SHN    -14
          STD    T8 
  
*         ADD (TOTAL UEM - USER UEM)/100B.
  
          LDM    UCPA        MST ADDRESS FOR UEM
          ZJN    CCS1        IF NO EST ENTRY FOR UEM
          SHN    3           GET TOTAL UEM SIZE 
          ADK    TDGL 
          CRD    ES 
          LDK    ECRL        GET USER UEM SIZE
          CRD    T0 
          AOD    ES          UEM TRACKS 
          SHN    6
          ADD    ES          TRACKS * 101 
 CCSB     ADN    **          ROUND UP 
*         ADN    3           (TRACK SHIFT COUNT = 0)
*         ADN    1           (TRACK SHIFT COUNT = 1)
*         ADN    0           (TRACK SHIFT COUNT .GE. 2) 
 CCSC     SHN    **          TOTAL NUMBER OF SECTORS IN UEM 
*         SHN    EMSC-2 
 CCSD     SHN    **-3+22     CONVERT TO *USER EM* SIZED BLOCKS
*         SHN    -UESC-3+22 
          SBD    T0+1        SUBTRACT NUMBER OF *USER EM* BLOCKS
 CCSE     SHN    **+3        CONVERT TO SECTORS 
*         SHN    UESC+3 
          RAD    T9 
          SHN    -14
          RAD    T8 
  
*         ADD CMR SIZE/100B.
  
 CCS1     LDK    CMRL 
          CRD    CM 
          LDD    CM+4 
          RAD    T9 
          STM    ACFA 
          SHN    -14
          RAD    T8 
          SCN    77 
          ZJN    CCS2        IF SECTOR COUNT NOT TOO LARGE
          LDC    ABTB        * CHECKPOINT ABORTED.* 
          RJM    DFM
          LJM    DPP         DROP PP
  
 CCS2     LDD    T8          SET HIGH BYTE OF SECTOR COUNT
          RAM    ACFA-1 
          LJM    CCSX        RETURN 
 CET      SPACE  4,10 
**        CET - COMPUTE ELAPSED TIME. 
* 
*         ENTRY  (ES - ES+4) = *RTCL*.
* 
*         EXIT   (A) .GE. 0  IF TIMEOUT.
* 
*         USES   CM - CM+4. 
  
  
 CET      SUBR               ENTRY/EXIT 
          LDK    RTCL 
          CRD    CM 
          LDD    CM+1 
          SBD    ES+1 
          PJN    CET1        IF NO ROLLOVER 
          ADC    10000
 CET1     SBK    MXTT 
          UJN    CETX        RETURN 
 CSC      SPACE  4,10 
**        CSC - CHANGE TO SYSTEM CONTROL POINT. 
* 
*         ENTRY  (NC) = SYSTEM CONTROL POINT NUMBER.
* 
*         EXIT   (A) = 0. 
* 
*         USES   CM+1.
* 
*         MACROS MONITOR. 
  
  
 CSC      SUBR               ENTRY/EXIT 
          LDD    NC 
          STD    CM+1 
          MONITOR  CCAM 
          UJN    CSCX        RETURN 
 CSS      SPACE  4,10 
**        CSS - CHECK FOR SPECIAL SUBSYSTEM.
* 
*         ENTRY  (CN+2) = BYTE 2 OF WORD *JCIW*.
* 
*         EXIT   (A) .NE. 0 IF SPECIAL SUBSYSTEM. 
*                    .EQ. 0 OTHERWISE.
* 
*         USES   T1.
  
  
 CSS      SUBR               ENTRY/EXIT 
          LCN    1
          STD    T1 
 CSS1     AOD    T1          INCREMENT INDEX
          LDM    CSSA,T1
          ZJN    CSSX        IF END OF SPECIAL SUBSYSTEMS 
          LMD    CN+2 
          NJN    CSS1        IF NOT THIS SPECIAL SUBSYSTEM
          LDN    1
          UJN    CSSX        RETURN WITH SPECIAL SUBSYSTEM
  
 CSSA     BSS    0
          LIST   D
 .SUB     HERE
          LIST   *
          CON    0           END OF TABLE 
 DEL      SPACE  4,10 
**        DEL - DELAY.
  
  
 DEL      SUBR               ENTRY/EXIT 
          DELAY  64D*8D      DELAY 64 MILLISECONDS
          UJN    DELX        RETURN 
 DRJ      SPACE  4,15 
**        DRJ - DISPOSE OF REMAINING JOBS.
* 
*         THIS ROUTINE ABORTS JOBS STILL AT CONTROL POINT THAT ARE
*         NOT IN THE PROCESS OF ROLLING.  ONLY THOSE SUBSYSTEMS THAT
*         MAY BE NEEDED FOR JOB TERMINATION ARE LEFT UNAFFECTED.
* 
*         ENTRY  (A) = 0. 
* 
*         USES   T7, CM - CM+7. 
* 
*         CALLS  CSS, DFM, FJO. 
* 
*         MACROS MONITOR, SFA.
  
  
 DRJ      SUBR               ENTRY/EXIT 
*         LDN    0
          STD    T7 
 DRJ1     RJM    FJO         FIND JOB 
          ZJN    DRJX        IF NO MORE JOBS
          RJM    CSS         CHECK FOR SPECIAL SUBSYSTEM
          NJN    DRJ1        IF SPECIAL SUBSYSTEM 
          LDC    4000+SSET   ABORT JOB
          STD    CM+1 
          LDD    CA          STORE EJT ORDINAL IN *CEFM* REQUEST
          STD    CM+2 
          SFA    EJT         STORE JSN IN *CEFM* REQUEST
          ADK    JSNE 
          CRD    CM+3 
          MONITOR CEFM
          UJN    DRJ1        CHECK NEXT JOB 
 FJO      SPACE  4,20 
**        FJO - FIND JOB. 
* 
*         THIS ROUTINE LOOKS FOR JOBS ASSIGNED TO CONTROL POINTS OR 
*         PSEUDO-CONTROL POINTS.  IT WILL RETURN TO THE CALLER ONLY 
*         UPON FINDING AN ACTIVE CP/PCP OR REACHING THE END OF ITS
*         SCAN. 
* 
*         ENTRY  (T7) = STARTING CP/PCP NUMBER - 1. 
* 
*         EXIT   (A) .NE. 0 IF ACTIVE CP/PCP FOUND. 
*                    = 0 IF END OF SCAN REACHED AND NO ACTIVE CP/PCP
*                      FOUND. 
*                (NC) = NUMBER OF CONTROL POINTS. 
*                (T7) = CP/PCP NUMBER IF ACTIVE ONE FOUND.
*                (CA - CA+4) = WORD *TFSW* OF CPA/PCPA. 
*                (CN - CN+4) = WORD *JCIW* OF CPA/PCPA. 
*                (FS - FS+4) = WORD *STSW* OF CPA/PCPA. 
* 
*         USES   T7, CA - CA+4, CN - CN+4, FS - FS+4. 
* 
*         CALLS  CCA. 
  
  
 FJO      SUBR               ENTRY/EXIT 
 FJO1     AOD    T7          ADVANCE CP/PCP NUMBER
          LMD    NC 
          ZJN    FJO1        IF SYSTEM CONTROL POINT
          LMD    NC 
          LMC    ** 
 FJOB     EQU    *-1         (SCAN LIMIT) 
          ZJN    FJOX        IF END OF SCAN 
 FJO2     LDD    T7          SET CP/PCP ADDRESS 
          RJM    CCA
          ADK    STSW 
          CRD    FS 
          ADN    JCIW-STSW
          CRD    CN 
          ADN    TFSW-JCIW
          CRD    CA 
          LDD    CA 
          ZJN    FJO1        IF NO JOB
          LDD    FS+1 
          LMK    PEET 
          ZJN    FJO1        IF CM PARITY ERROR 
          LDN    0
*         LDN    1           (WAIT MODE)
 FJOA     EQU    *-1
          NJN    FJOX        IF WAIT MODE 
          LDD    FS+1 
          LMN    SSET 
          ZJN    FJO1        IF *SSET* ALREADY SET
          LDD    FS+2 
          LPN    1
          NJN    FJO1        IF ROLLOUT REQUESTED 
          LDN    1           INDICATE ACTIVE CP/PCP FOUND 
          UJP    FJOX        RETURN 
 ROJ      SPACE  4,15 
**        ROJ - ROLLOUT NON-SUBSYSTEM JOBS. 
* 
*         ENTRY  (A) = 0. 
* 
*         EXIT   (A) = 0. 
* 
*         USES   T1, T7, CM+1, CM+2.
* 
*         CALLS  DEL, FJO.
* 
*         MACROS MONITOR. 
  
  
 ROJ      SUBR               ENTRY/EXIT 
*         LDN    0
          STD    T7 
 ROJ1     RJM    FJO         FIND JOB 
          ZJN    ROJX        IF END OF SCAN 
          LDD    CN+2 
          SBK    LSSI+1 
          PJN    ROJ1        IF NOT TO BE ROLLED
          LDN    10D         SET *ROCM* RETRY COUNT 
          STD    T1 
 ROJ2     LDC    ROSR+4000   SELECT JOB SCHEDULER, ALTERNATE CP/PCP 
          STD    CM+1 
          LDD    T7          SET CP/PCP NUMBER
          STD    CM+2 
          MONITOR  ROCM 
          LDD    CM+1 
          ZJN    ROJ1        IF *ROCM* ACCEPTED 
          SOD    T1 
          MJN    ROJ1        IF RETRY LIMIT REACHED 
          RJM    DEL         DELAY 50 MS
          UJN    ROJ2        RETRY
 WFJ      SPACE  4,20 
**        WFJ - WAIT FOR JOBS TO ROLLOUT OR TERMINATE.
* 
*         THIS ROUTINE ALLOWS ALL JOBS *MXTT* 
*         SECONDS TO TERMINATE.  ANY JOB STILL AT A 
*         CONTROL POINT AND NOT ROLLING AFTER *MXTT*
*         SECONDS HAVE ELAPSED WILL BE ROLLED.  THIS
*         ROUTINE WILL NOT BE EXITED UNTIL ALL
*         CONTROL POINTS ARE CLEAR (JOBS WITH 
*         *PEET* ERROR FLAG SET MAY BE LEFT AT CONTROL
*         POINT). 
* 
*         EXIT   (A) = 0. 
* 
*         USES   T7, CM - CM+4, ES - ES+4.
* 
*         CALLS  CET, CSS, DEL, FJO.
* 
*         MACROS DELAY, MONITOR.
  
  
 WFJ      SUBR               ENTRY/EXIT 
          LDK    RTCL        SET TIMEOUT
          CRD    ES 
          AOM    FJOA        INDICATE WAIT MODE 
 WFJ1     LDN    0
          STD    T7 
 WFJ2     RJM    FJO         FIND JOB 
          NJN    WFJ3        IF JOB FOUND 
          UJN    WFJX        RETURN 
*         UJN    *+1         (TIMEOUT)
 WFJA     EQU    *-1
          ERRPL  WFJ6-WFJB-40  RANGE ERROR
          LDC    UJNI+WFJ6-WFJB 
          STM    WFJB 
          LDN    77-WFJA+WFJX-1 
          ERRNG  40-WFJA+WFJX  RANGE ERROR
          RAM    WFJA 
          UJN    WFJ1        WAIT FOR CLEAR CONTROL POINTS
  
 WFJ3     RJM    CSS         CHECK FOR SELECTED SUBSYSTEM 
*         UJN    WFJ6        (TIMEOUT/ONLY SELECTED SUBSYSTEMS REMAIN)
 WFJB     EQU    *-2
          ZJN    WFJ4        IF NOT SELECTED SUBSYSTEM
          LDC    UJNI+1 
          STM    WFJA 
          UJN    WFJ2        CHECK NEXT JOB 
  
*         CALCULATE ELAPSED TIME. 
  
 WFJ4     RJM    CET         COMPUTE ELAPSED TIME 
          MJN    WFJ7        IF NOT TIMEOUT YET 
          LDC    UJNI+1 
          STM    WFJA 
 WFJ6     LDD    FS+2 
          LPN    1
          ADD    FS+1 
          NJN    WFJ7        IF ROLLOUT REQUESTED OR ERROR FLAG SET 
          LDC    ROSR+4000   SELECT SCHEDULER ROLLOUT, ALTERNATE CP/PCP 
          STD    CM+1 
          LDD    T7          SET CP/PCP NUMBER
          STD    CM+2 
          MONITOR ROCM
 WFJ7     RJM    DEL         DELAY 50 MS
          LJM    WFJ1        FIND JOB 
          TITLE  PRESET.
 PRS      SPACE  4,10 
**        PRS - PRESET. 
* 
*         USES   T1, T2, CM - CM+4, ES - ES+4, T3 - T3+4. 
* 
*         CALLS  IFP. 
* 
*         MACROS SFA. 
  
  
 PRS      SUBR               ENTRY/EXIT 
          RJM    IFP         INITIALIZE *COMPGFP* 
          LDK    PCPP        SET FWA OF PCPA-S
          CRD    CM 
          LDD    CM+3 
          SHN    14 
          LMD    CM+4 
          SBK    200B 
          STM    CCAA+1 
          SHN    -14
          RAM    CCAA 
          LDD    CM+2 
          ERRNZ  MCTP-PCPP   CODE DEPENDS ON VALUE
          STM    FJOB        STORE TOTAL OF CP-S + PCP-S + 2
          ISTORE SMDA,(UJN SMD4)  CHECKPOINT REQUESTED FLAG IMMATERIAL
          ISTORE SMDB,(UJN SMD6)  SKIP UTILITY INTERLOCK
          LDD    NC          SET CONTROL POINT NUMBER IN *1MB* CALL 
          RAM    SCKE+1 
          LDD    IR+3        SET *1MB* FUNCTION CODE
          STM    SCKE+2 
          LDK    MEFL        GET TRACK SHIFT COUNT AND USER EM SHIFT
          CRD    CM 
          LDD    CM+2        TRACK SHIFT COUNT (EMSC) 
          SHN    -5 
          LPN    3
          STD    T1 
          RAM    CUAB 
          LDD    T1 
          RAM    CUAA 
          LDD    T1 
          SBN    2           SET ROUND UP 
          PJN    PRS1        IF NO ROUND UP NEEDED
          STD    T0 
          SHN    1
          LPN    3           3 IF EMSC=0, 1 IF EMSC=1 
          RAM    CCSB 
          LDD    T0 
          LPN    77 
 PRS1     RAM    CCSC 
          LDD    CM+2        USER SHIFT COUNT (UESC)
          SHN    -11
          STD    T2 
          SBD    T1 
          RAM    UCPB 
          LDD    T2 
          RAM    CCSE 
          LDN    0
          SBD    T2 
          RAM    CCSD 
          LDD    IR+2        CHECK FUNCTION CODE
          SBN    2
          MJN    PRS3        IF FUNCTION 0 OR 1 
          SBN    10-2 
          ZJN    PRS2        IF FUNCTION 10 
          SBN    13-10
          NJP    PRSX        IF NOT FUNCTION 13 
 PRS2     LDC    SCK8        SET EXIT PROCESSING ADDRESS
          STM    DPPA 
 PRS3     LDC    UJNI+2      ENABLE SETTING *VALID CHECKPOINT FILE* 
          STM    WLAG 
          LDN    ESTP        SEARCH FOR UEM EQUIPMENT 
          CRD    T3 
          LDN    NOPE-1 
          STD    T5 
 PRS4     AOD    T5 
          LMD    T6 
          ZJN    PRS5        IF NO UEM EQUIPMENT
          SFA    EST,T5 
          ADK    EQDE 
          CRD    ES 
          LDD    ES 
          SHN    21-13
          PJN    PRS4        IF NOT MASS STORAGE
          LDD    ES+4        CHECK MEMORY TYPE
          SHN    3
          ADN    DILL 
          CRD    CM 
          LDD    CM+3 
          SHN    -6 
          LPN    7
          LMN    4
          NJN    PRS4        IF NOT UEM MEMORY TYPE 
          LDC    LDDI+ST     ENABLE UEM CHECKPOINT
          STM    WSTA 
          LDD    ES+4        SET UEM MST ADDRESS
          STM    UCPA 
 PRS5     LJM    PRSX        RETURN 
          SPACE  4,10 
 IFP      HERE               REMOTE *IFP* ASSEMBLY
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
  
          ERRNG  EPFW-OVL0-ZTDL  *0TD* OVERFLOW 
          ERRNG  EPFW-OVL0-ZSDL  *0SD* OVERFLOW 
  
  
          OVERFLOW  OVLA,EPFW 
          TTL    1CK/3CL - ADDITIONAL CHECKPOINT FUNCTIONS. 
          TITLE 
          QUAL   3CL
          IDENT  3CL,OVLA 
*COMMENT  1CK - ADDITIONAL CHECKPOINT FUNCTIONS.
          COMMENT  COPYRIGHT CONTROL DATA SYSTEMS INC.  1995. 
          SPACE  4,10 
***       3CL - ADDITIONAL CHECKPOINT FUNCTIONS.
          SPACE  4,10 
          ORG    OVLA 
          SPACE  4,10 
 ENT      SUBR               ENTRY
          LJM    0,PA        PROCESS SELECTED FUNCTION
          TITLE  MAIN ROUTINES. 
 IDC      SPACE  4,10 
**        FUNCTION 5. 
*         INITIALIZED DEVICE CHECKPOINT.
* 
*         ENTRY  (IR+3) = EST ORDINAL.
*                (IR+4) = PREVIOUS ACCESS STATUS (MMF). 
  
  
 IDC      BSS    0           ENTRY
          RJM    SDP         SET DEVICE PARAMETERS
          NJP    DPP         IF DEVICE IS INACCESSIBLE
          RJM    WTT         WRITE TRT
          SETMS  IO,(ND,NS),WBUF
          RJM    WLS         WRITE LABEL SECTORS
          RJM    IDI         INITIALIZE DEVICE INFORMATION SECTOR 
          RJM    FIB         FLUSH I/O BUFFERS
          RJM    CIL         CLEAR INTERLOCKS 
          CMSTF  LIPF        CLEAR PF INITIALIZATION FLAG 
          CMSTF  LIAL        CLEAR FULL INITIALIZE FLAG 
          CMSTF  LIHD        CLEAR HALF TRACK INITIALIZE FLAG 
          CMSTF  LIFD        CLEAR FULL TRACK INITIALIZE FLAG 
          RJM    SDA         SET DEVICE AVAILABLE 
          LDD    ES+4        READ FAMILY NAME 
          SHN    3
          ADN    PFGL 
          CRD    CA 
          ADN    MDGL-PFGL   GET PF STATUS OF DEVICE
          CRD    CM 
          LDD    CM 
          LPC    2000 
          NJN    IDC1        IF AUXILIARY DEVICE
          RJM    GFO         ENTER FAMILY NAME IN FOT 
          SCN    1
          ZJN    IDC1        IF ENTRY FOUND/CREATED 
          LDN    STFF        SET ERROR FLAG = *FOT FULL*
          RJM    SES
 IDC1     LDC    MMFL        READ MMF STATUS WORD 
          CRD    CN 
          SOD    CN+2        DECREMENT INITIALIZED DEVICE COUNT 
          MJN    IDC3        IF NOT MMF SYSTEM
          LMC    4000 
          NJN    IDC2        IF NOT END OF DEVICE INITIALIZATION
          STD    CN+2 
          LCN    DATI        CLEAR FLAG REGISTER INTERLOCK
          RJM    IFR
 IDC2     LDC    MMFL        STORE MMF STATUS WORD
          CWD    CN 
          LDD    IR+4 
          ZJN    IDC3        IF NO PREVIOUS ACCESS IN DAT 
          LDD    ES          CHECK DEVICE STATUS
          SHN    21-11
          PJN    IDC4        IF NON-SHARED DEVICE 
          LDD    ES+4        READ MST ACTIVITY WORD 
          SHN    3
          ADN    SDGL 
          CRD    CM 
          LDD    CM          CHECK ECS POINTER
          ADD    CM+1 
 IDC3     NJN    IDC4        IF MST/TRT ECS RESIDENT
          LDD    IR+3 
          STD    CM+1 
          LDN    SB0S 
          STD    CM+2 
          LDD    HN          SET DEVICE UNAVAILABLE 
          STD    CM+4 
          LMC    -0 
          STD    CM+3 
          MONITOR  SEQM 
 IDC4     LJM    DPP         DROP PP
 RAC      SPACE  4,10 
**        FUNCTIONS 6 AND 7.
*         RECOVERY ABORT CHECKPOINT.
  
  
 RAC      BSS    0           ENTRY
          LDC    4000        FLAG CHECKPOINT ABORT PROCESSING 
          STD    TS 
          LDC    RAC1        SET RETURN FROM *PFC*
          STM    PFCB 
          LJM    PFC         CHECKPOINT ALL DEVICES 
  
 RAC1     LDN    MS2W-MS1W
          STD    T1 
          LDD    IR+2 
          LMN    7
          NJN    RAC2        IF BUFFERED DEVICES CHECKPOINTED 
          LDC    =C*NON-BUFFERED EQ-S CHECKPOINTED.*
          STM    RACA 
 RAC2     LDC    DSCP*CPAS+MS1W 
          CWM    =C*ALL EQ-S CHECKPOINTED.*,T1
 RACA     EQU    *-1
          CWM    RACB,TR     *RECOVERY ABORTED.*
          UJN    *           HANG DEADSTART 
  
 RACB     DATA   C*RECOVERY ABORTED.* 
 RLT      SPACE  4,10 
***       FUNCTION 12.
*         REPAIR LABEL TRACK. 
* 
*         ENTRY  (IR+3) = EST ORDINAL.
  
  
 RLT      BSS    0           ENTRY
          RJM    SDP         SET DEVICE PARAMETERS
          SETMS  IO,(AD,DF,ND,RW),WBUF
          RJM    WTT         WRITE TRT
          SETMS  IO,(AD,DF,ND),WBUF 
          RJM    WLS         WRITE LABEL SECTORS
          ENDMS 
  
 RLT1     RJM    CIL         CLEAR INTERLOCKS 
          LDD    IA          SET REPAIR-ATTEMPTED FLAG FOR *1MV*
          CRD    IR 
          LDD    IR+3 
          SCN    40 
          LMN    40 
          STD    IR+3 
          LDD    IA 
          CWD    IR 
          LJM    PPR         RETURN TO *1MV*
          TITLE  SUBROUTINES. 
 IDI      SPACE  4,10 
**        IDI - INITIALIZE DEVICE INFORMATION SECTOR. 
* 
*         ENTRY  (T4) = CHANNEL.
*                (T5) = EQUIPMENT.
*                (T6) = LABEL TRACK.
*                LABEL TRACK INTERLOCKED. 
* 
*         USES   T1, T7.
* 
*         CALLS  WMS. 
* 
*         MACROS ENDMS, SETMS.
  
  
 IDI      SUBR               ENTRY/EXIT 
          LDC    100*5       CLEAR SECTOR 
          STD    T1 
 IDI1     LDN    0
          STM    BFMS+2-1,T1
          SOD    T1 
          NJN    IDI1        IF NOT COMPLETE
          LDN    DILT        SET SECTOR 
          STD    T7 
          ADN    1           SET CONTROL BYTES
          STM    BFMS 
          LDD    HN 
          STM    BFMS+1 
          SETMS  IO,(ND,NS,RW)
          LDC    BFMS+WLSF   WRITE SECTOR 
          RJM    WMS
          ENDMS 
          UJN    IDIX        RETURN 
          SPACE  4,10 
**        COMMON DECKS. 
  
  
*CALL     COMPIFR 
*CALL     COMPSDA 
          QUAL   UFT
 QUAL$    EQU    0           DONT REQUALIFY COMMON DECK 
 GFO$     EQU    0           DEFINE FOT ACCESS ROUTINE
 FN       EQU    CA          CM WORD BUFFER (5 LOCATIONS) 
*CALL     COMPUFT 
          QUAL   *
 GFO      EQU    /UFT/GFO 
          SPACE  4,10 
*         OVERFLOW CHECKS.
  
          ERRNG  BUF-*       OVERFLOW INTO COMMON BUFFER AREA 
  
          OVERFLOW  OVLA,EPFW 
          SPACE  4
          TTL    1CK - SYSTEM CHECKPOINT. 
          END 
