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