IDENT IMS,/IMS/IMS PERIPH BASE MIXED SST *COMMENT IMS - INITIALIZE MASS STORAGE. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. TITLE IMS - INITIALIZE MASS STORAGE. SPACE 4 *** IMS - INITIALIZE MASS STORAGE. * S. L. BETH 73/01/31. * T. H. MACFARLAND. 74/04/25. * P. D. HAAS. 87/03/31. SPACE 4 *** IMS MAY BE CALLED TO DO THE FOLLOWING * * * FUNCTION 1 INITIALIZE PERMANENT FILES. * RELEASES ALL PF TRACKS AND REALOCATES * THE CATALOG, PERMITS AND DATA TRACKS. * * FUNCTION 2 EDIT DIRECT ACCESS FILES. * RELEASES DIRECT ACCESS FILES WHICH * HAVE CATALOGS ON THE SPECIFIED DEVICE. * * FUNCTION 3 SET/CLEAR FLAWS ON THE EQUIPMENT. * PROCESS FLAW LIST AND ENTER IN TRT. * * FUNCTION 4 CHECK SHARED DEVICE STATUS. * CHECK IF SHARED DEVICE IS UNLOADED * IN OTHER MACHINES. * * FUNCTION 5 INITIALIZE LOCAL AREAS. * RELEASE SPACE WHICH IS PRESERVED BY * INACTIVE LOCAL AREAS. * * FUNCTION 6 ALTER MST DATA. * ENTER NEW DEVICE CHARACTERISTICS IN MST. * * FUNCTION 7 CLEAR INITIALIZE REQUESTS. * CLEARS ALL INITIALIZE REQUESTS ON * THE SPECIFIED DEVICE. * * FUNCTION 10 INITIALIZE INACTIVE DAYFILES. * RELEASE SPACE ON SPECIFIED INACTIVE * DAYFILE. * * FUNCTION 11 CLEAR CMS INTERLOCK. * CLEAR DATI INTERLOCK AND BYTE 2 OF MMFL. * * FUNCTION 12 SET/CLEAR DEVICE INTERLOCK ON AN * INDEPENDENT SHARED DEVICE. * * (THE CALLING JOB MUST HAVE SYSTEM PERMISSION) * *** CALL FORMATS * * * INITIALIZE 18/IMS,6/20,18/100,18/EQ * * EDIT DA FILES 18/IMS,6/20,18/200,18/PARAM * * PARAM 12/MASK,12/EQ,36/0 * * SET FLAWS 18/IMS,6/20,18/300,18/PARAM * * PARAM 12/TYPE,12/0,12/EQ,12/0,12/LOGICAL TRACK * * TYPE 0 = END TABLE * 1 = SET FLAW * 2 = CLEAR FLAW * * CHECK STATUS 18/IMS,6/20,18/400,18/ADDRESS * * ADDRESS 12/EQ,48/0 * * INITIALIZE LOCAL 18/IMS,6/20,18/500,18/EQUIPMENT * * UPDATE MST 18/IMS,6/20,18/600,18/LIST * * CLEAR INI REQ 18/IMS,6/20,18/700,18/EQ * ** INITIALIZE DAYFILES 18/IMS,6/20,18/100N,18/EQ * * N = 0 INITIALIZE SYSTEM DAYFILE. * = 1 INITIALIZE ACCOUNT FILE. * = 2 INITIALIZE ERRLOG FILE. * = 3 INITIALIZE MAINTENANCE LOG FILE. * * CLEAR INTERLOCK 18/IMS,6/20,18/1100,18/0 * * INTERLOCK DEVICE 18/IMS,6/20,18/1200,18/ADDRESS * ADDRESS 12/EQ,47/0,1/F SPACE 4 *** ENTRY CONDITIONS. * * (IR+2) = FUNCTION CODE. * (IR+3) = PARAMETER ADDRESS IF REQUIRED * (IR+4) = PARAMETER ADDRESS IF REQUIRED SPACE 4 *** DAYFILE MESSAGES. * * * EQXXX, FILE ACTIVE - FILENAME.* * * * EQXXX, FILE BUSY - FILENAME.* * * * EQXXX, FLAWING INCOMPLETE.* * * * EQXXX, INITIALIZED - FILENAME.* * * * EQXXX, LABEL READ ERROR.* * * * EQXXX, LOCAL AREAS INITIALIZED.* * * * EQXXX, LOCAL AREA SECTOR RESET.* * * * EQXXX, NO INACTIVE DAYFILES FOUND.* * * * EQXXX, PF INITIALIZE COMPLETE.* * * * EQXXX, PROTECTED QUEUES IGNORED.* * * * EQXXX, TKYYYY - TRACK FLAWED BY IMS. * * * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).* * * * EQXXX, YY TRACKS FLAWED.* * * * ERROR ON LINK DEVICE.* * * * INCORRECT IMS REQUEST.* * * * IMS ABORTED.* * * * LABEL TRACK CONFLICT.* SPACE 4 *** ACCOUNT FILE MESSAGES. * * *ADDI, XXX, FFFFFFF, DD.* = EST ORDINAL XXX WITH FAMILY NAME * FFFFFFF AND DEVICE NUMBER DD HAS BEEN INITIALIZED. * * *ADPI, XXX, PPPPPPP, UUUUUUU.* = EST ORDINAL XXX WITH PACKNAME * PPPPPPP HAS BEEN INITIALIZED. IF PRESENT, UUUUUUU INDICATES * THAT THE PACK IS A PRIVATE PACK BELONGING TO THAT USER. SPACE 4 *** ERRLOG MESSAGES. * * * EQXXX, LOCAL AREA SECTOR ERROR.* * * * EQXXX, TKYYYY, SYSTEM SECTOR ERROR.* * * * EQXXX, TKYYYY - TRACK FLAWED BY IMS. * * * EQXXX, TKYYYY - VERIFICATION ERRORS. * * * EQXXX, YY TRACKS FLAWED.* * * * EQXXX, YY FLAWS NOT PROCESSED. (WITH LIST).* * * * IMS ABORTED.* SPACE 4 *** CONTROL POINT MESSAGES. * * EQXXX, BUSY ON MID YY.* = SHARED EST ORDINAL XXX IS NOT * UNLOADED ON MAINFRAME WITH MACHINE ID YY. * * * EQXXX, INTERLOCKED BY MID YY.* = INDEPENDENT SHARED EST * ORDINAL XXX IS INTERLOCKED FOR INITIALIZATION BY THE MAINFRAME * WITH MACHINE ID YY. * * *MSI ABORT.* = *MSI* ABORTED. IF THIS OCCURRED DURING THE * DEADSTART SEQUENCING JOB, JOB SCHEDULING WILL REMAIN DISABLED. * * *READING TRACK-XXXX* = *IMS* IS READING THE SPECIFIED TRACK. * * *WAITING - RECOVERY INTERLOCK.* = *IMS* IS WAITING FOR THE * DAT INTERLOCK TO BECOME FREE, TO ENSURE THAT *CMS* IS NOT * IN ANY OTHER MACHINE IN THE MMF COMPLEX. SPACE 4 ** ROUTINES USED. * * 0PI - PRESET DRIVER TO READ/WRITE DEADSTART SECTOR. * 0TI - SET TRACK FLAWS IN TRT. * 1CK - CHECKPOINT DEVICE. SPACE 4 *CALL COMPMAC *CALL COMSCPS *CALL COMSDSL QUAL EVENT *CALL COMSEVT QUAL * *CALL COMSHIO *CALL COMSIOQ *CALL COMSLSD *CALL COMSMMF *CALL COMSMSC *CALL COMSMSI *CALL COMSMSP *CALL COMSMST *CALL COMSPFM *CALL COMSPIM *CALL COMSSSD *CALL COMSWEI SPACE 4 **** DIRECT LOCATION ASSIGNMENTS. T9 EQU 17 SCRATCH CELL CN EQU 20 - 24 CM WORD BUFFER (5 LOCATIONS) TI EQU 25 TEMP INDEX LD EQU 26 EST ORDINAL OF LINK DEVICE MI EQU 27 MACHINE INDEX ES EQU 30 - 34 EST ENTRY (5 LOCATIONS) LT EQU 35 LABEL TRACK TA EQU 36 TEMP COUNTER TL EQU 37 TRT LENGTH FN EQU 40 - 44 CM WORD BUFFER (5 WORDS). DI EQU 45 DAT INDEX BY EQU 46 BYTE COUNT DE EQU 47 DAT ENTRY COUNT AI EQU 57 ALGORITHM INDEX WB EQU 60 - 64 CM WORD BUFFER (5 LOCATIONS) PF EQU 65 PRESERVED FILE TRACK INTERLOCK STATUS CA EQU 66 - 67 CENTRAL BUFFER (2 LOCATIONS) **** SPACE 4,10 * ASSEMBLY CONSTANTS. BUF EQU BFMS-502 ALTERNATE SECTOR BUFFER FPPA EQU BUF+5 FLAW PROCESSOR PARAMETER ADDRESS FPLA EQU FPPA+1 FLAW PROCESSOR LOAD ADDRESS VERC EQU 2 VERIFICATION ERROR RETRY COUNT SPACE 4 * EQUATES FOR FUNCTION 6 PARAMETER BUFFER PMES EQU 5*0 EST ENTRY PMPF EQU 5*1 PFGL WORD OF MST PMPU EQU 5*2 PUGL WORD OF MST PMMD EQU 5*3 MDGL WORD OF MST PMNC EQU 5*4+0 NUMBER OF CATALOG TRACKS PMEQ EQU 5*4+1 EST ORDINAL PMAI EQU 5*4+2 ALGORITHM INDEX PMCI EQU 5*4+3 CLEAR IN USE AS CHAINED DEVICE PMNE EQU 5*4+4 NEXT EST ORDINAL IN CHAIN PMAL EQU 5*5 EQUIPMENT ALLOCATION *DDLL* PMRP EQU 5*6 REPLY WORD PMMSL EQU 7 LENGTH OF PARAMETER BLOCK SPACE 4 * FUNCTION EQUATES FOR SUBROUTINE *UEC*. UPGA EQU 1 UPDATE GLOBAL AREA UPDA EQU 2 UPDATE DAT INFORMATION RDDA EQU 4 READ DAT INFORMATION TITLE MACRO DEFINITIONS. ENTRY SPACE 4,10 ** ENTRY - DEFINE OVERLAY ENTRY POINT. * * NAME ENTRY * NAME = NAME OF ENTRY ADDRESS. PURGMAC ENTRY MACRO ENTRY,NAME MACREF ENTRY QUAL IF MIC,.M NAME EQU *+1R".M"*10000B ELSE 1 NAME EQU * QUAL * ENDM FCN SPACE 4,10 ** FCN - DEFINE FUNCTION PROCESSOR. * *TBLN FCN * FCN CODE,NAME * * ENTRY *TBLN* = TABLE NAME (FIRST ENTRY ONLY). * *CODE* = FUNCTION CODE. * *NAME* = FUNCTION PROCESSING ROUTINE NAME. MACRO FCN,T,C,N IFC EQ,*N** T INDEX C*2 ELSE 2 INDEX C*2,N-N/10000B*10000B CON N/10000B ENDM OVERLAY SPACE 4,10 ** OVERLAY - DEFINE SECONDARY OVERLAY(S). * * OVERLAY (TEXT),PRS * ENTRY *TEXT* = TEXT OF SUBTITLE. * *PRS* = NAME OF OPTIONAL PRESET ROUTINE. .N SET 0 OVLB MICRO 1,, 4D OVERLAY NAME PURGMAC OVERLAY OVERLAY MACRO TEXT,PRS MACREF OVERLAY QUAL .N SET .N+1 .M MICRO .N,1, 0123456789 .O MICRO 1,3, "OVLB"".M" QUAL IMS TTL IMS/".O" - TEXT TITLE IDENT ".O",OVLA TEXT *COMMENT IMS - TEXT COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. ORG OVLA OV".M"_X LJM * ENTRY/EXIT IFC NE,*PRS**,1 RJM PRS UJN OV".M"_X OVERLAY EXIT ADDRESS ENDM TBLM SPACE 4,10 ** TBLM = GENERATE TABLE OF ALTERNATE LABEL SECTORS. * * TBLM EQ * EQ = MASS STORAGE EQUIPMENT MNEMONIC. PURGMAC TBLM TBLM MACRO EQ CON 2R_EQ,LC_EQ ENDM TITLE MAIN PROGRAM. IMS SPACE 4,10 ** IMS - MAIN PROGRAM. QUAL IMS ORG PPFW IMS RJM PRS PRESET PROGRAM LDM TFCN+1,T2 ZJN IMS1 IF PROCESSOR RESIDENT LMC 2L"OVLB" RJM EXR LOAD OVERLAY IMS1 LJM * PROCESS FUNCTION IMSA EQU *-1 TITLE RESIDENT SUBROUTINES. CLI SPACE 4,10 ** CLI - CLEAR INTERLOCKS. * * EXIT (A) = 0. * * USES T5. * * MACROS CMSTF. CLI SUBR ENTRY/EXIT LDC 0 CLIA EQU *-1 ZJN CLIX IF INTERLOCK NOT SET STD T5 CMSTF LUAI CLEAR LOCAL UTILITY INTERLOCK * LDN 0 UJN CLIX RETURN RDS SPACE 4,10 ** RDS - READ SECTOR. * * ENTRY (A) = BUFFER ADDRESS. * (T5 - T7) = MASS STORAGE DRIVER PARAMETERS. * * EXIT (A) .LT. 0 IF MEDIA ERROR. * * ERROR TO *ABT1* IF NON-MEDIA ERROR. * * CALLS RDS. RDS1 LDC 1S17 RETURN WITH ERROR STATUS RDSA EQU *-1 RDS SUBR ENTRY/EXIT RJM //RDS PJN RDSX IF NO ERROR STM RDSA LPN 77 LMN PARE ZJN RDS1 IF MEDIA ERROR UJN ABT2 ABORT WDS SPACE 4,15 ** WDS - WRITE SECTOR. * * ENTRY (A) = BUFFER ADDRESS. * (T5 - T7) = MASS STORAGE DRIVER PARAMETERS. * * EXIT (A) .LT. 0 IF MEDIA ERROR. * IF RECOVERED ERROR ON PREVIOUS SECTOR. * * ERROR TO *ABT1* IF NON-MEDIA ERROR. * * CALLS WDS. WDS1 LDC 1S17 RETURN WITH ERROR STATUS WDSA EQU *-1 WDS SUBR ENTRY/EXIT RJM //WDS PJN WDSX IF NO ERROR STM WDSA SHN 21-11 MJN WDS1 IF ERROR ON PREVIOUS SECTOR RECOVERED SHN 12 LPN 77 LMN PARE ZJN WDS1 IF MEDIA ERROR * UJN ABT2 ABORT ABT SPACE 4,10 ** ABT - ABORT OPERATION. * * ENTRY (A) = ERROR MESSAGE ADDRESS. * * CALLS CLI, DFM. * * MACROS MONITOR. ABT2 CON 0 PASS INSTRUCTION ABTB EQU ABT2 * UJN ABT1 (DEADSTART SEQUENCING JOB) ABT3 LDC MESM * IMS ABORTED.* ABT LMC ERLN ISSUE MESSAGE TO ERRLOG RJM DFM RJM CLI CLEAR INTERLOCKS MONITOR ABTM ABTA LJM PPR EXIT TO PP RESIDENT * LJM * (DEADSTART SEQUENCING) ABT1 LDD ES CHECK DEVICE TYPE SHN 21-10 PJN ABT3 IF NON-REMOVABLE LDN PCLR * UJN MSI CLEAR INITIALIZE REQUEST MSI SPACE 4,15 ** MSI - ISSUE *MSI* REQUEST. * * ENTRY (A) = REQUEST CODE. * * EXIT TO DPP. * * USES CM - CM+5. MSI STD CM+5 SET FUNCTION CODE LDN ZERL CRD CM LDD RA STORE *MSI* REQUEST SHN 6 ADN PREQ CWD CM+1 UJN DPP DROP DPP2 RJM IPF INITIALIZE PACK FLAWS DPP1 SMSTF LCKP SET EQUIPMENT CHECKPOINT DPP RJM CLI CLEAR INTERLOCKS MONITOR DPPM LJM PPR EXIT TO PP RESIDENT CKC SPACE 4,10 ** CKC - CALL *1CK* TO PROCESS CHECKPOINT. * * ENTRY (A) = *1CK* FUNCTION CODE. * (T5) = EST ORDINAL TO CHECKPOINT. * * EXIT TO *1CK*. * * CALLS CLI. * * MACROS EXECUTE. CKC STM CKCA+2 RJM CLI CLEAR INTERLOCKS LDD CP SHN -7 SET CONTROL POINT RAM CKCA+1 LDD IA SET UP CALL TO 1CK CWM CKCA,ON EXECUTE 1CK,= LJM PPR RETURN TO PP RESIDENT CKCA VFD 18/3L1CK,6/40,36/0 EQNO EQU CKCA+3 CAT SPACE 4,10 ** CAT - CALCULATE ADDRESS OF TRT. * * ENTRY (A) = ADDRESS OF *TRLL* IN MST. * * EXIT (A) = ADDRESS OF TRT. * * USES CM - CM+4. CAT SUBR ENTRY/EXIT CRD CM GET FWA OF TRT LDD CM+3 LPN 77 SHN 14 LMD CM+4 UJN CATX RETURN CCS SPACE 4,10 CDE SPACE 4,10 ** CDE - COMPARE DAT ENTRY. * * ENTRY (T2) = INDEX TO DAT SECTOR. * (FN - FN+4) = CURRENT DEVICE DESCRIPTION. * * EXIT (A) = 0 IF DUPLICATE ENTRY. CDE SUBR ENTRY/EXIT LDD FN COMPARE ENTRY LMM BFMS+2,T2 NJN CDEX IF NOT DUPLICATE LDD FN+1 LMM BFMS+2+1,T2 NJN CDEX IF NOT DUPLICATE LDD FN+2 LMM BFMS+2+2,T2 NJN CDEX IF NOT DUPLICATE LDD FN+3 LMM BFMS+2+3,T2 UJN CDEX RETURN CQF SPACE 4,20 ** CQF - CHECK FOR QUEUED FILES. * * ENTRY (T5) = EQUIPMENT. * (CN - CN+4) = TRT WORD. * (TL) = TRT ORDINAL. * (BY) = TRT BYTE NUMBER. * DRIVER LOADED. * * EXIT (A) = 0 IF QUEUED FILE, DAYFILE, MRT, DAT OR * USER EXTENDED MEMORY TRACK. * (T6) = TRACK NUMBER. * * USES T1, T3, T6. * * CALLS CST, IMG, RSS, STM. * * MACROS ENDMS. CQF5 LDN 1 SET NOT QUEUED FILE CQF SUBR ENTRY/EXIT LDD TL WORD COUNT SHN 2 LMD BY BYTE COUNT LMC 4000 STD T6 RJM IMG ISSUE READING TRACK MESSAGE RJM CST CHECK FOR SPECIAL TRACKS ZJN CQF5 IF INDIRECT CHAIN OR PERMIT CHAIN MJN CQF2 IF IQFT TRACK OR DAT TRACK LDN 0 RJM RSS READ SYSTEM SECTOR NJN CQF4 IF ERROR IN SYSTEM SECTOR ENDMS LDM FNSS+4 SHN -6 STD T1 FILE TYPE LMN LIFT CHECK FOR DAYFILES OR MRT ZJN CQF2 IF DAYFILE TRACK LDN RDATL STD T3 MAXIMUM TYPES CQF1 SOD T3 MJN CQF3 IF NOT QUEUED FILE LDM RDAT,T3 LMD T1 NJN CQF1 IF NOT QUEUED AOM CQFA CQF2 LDN 0 INDICATE QUEUED FILE, DAYFILE, MRT, OR ECS CQF3 LJM CQFX RETURN CQF4 LDC MESN ISSUE SYSTEM SECTOR ERROR MESSAGE RJM STM UJN CQF2 RETURN CQFA CON 0 QUEUE FILE COUNT FILEREC GENERATE PROTECTED TYPE TABLE (RDAT) CST SPACE 4,10 ** CST - CHECK SPECIAL TRACKS. * * ENTRY (T6) = TRACK. * (ES - ES+4) = EST ENTRY. * (LD) = LINK DEVICE EST ORDINAL. * * EXIT (A) = 0 IF MATCH ON SPECIAL PF TRACKS. * (A) .LT. 0 IF *IQFT*, DAT OR EXTENDED MEMORY TRACK. CST SUBR ENTRY/EXIT LDD ES+4 CHECK FOR PRESET NEEDED LMC 7777 CSTB EQU *-1 ZJN CST1 IF NO PRESET NEEDED LDD ES+4 STM CSTB SHN 3 ADN ACGL CRM CSTA+4,ON ADN ALGL-ACGL-1 CRM CSTA,ON CST1 LDD T6 CHECK FOR IAF TRACK LMM CSTA ZJN CSTX IF IAF TRACK LDD T6 LMM CSTA+1 ZJN CSTX IF LABEL TRACK LDD T6 LMM CSTA+2 ZJN CSTX IF PERMITS TRACK LDD T6 LMM CSTA+4+3 ZJN CST3 IF MATCH ON IQFT FILE LDD T6 CHECK FOR USER EXTENDED MEMORY TRACKS LMM CSTA+4+1 ZJN CST3 IF USER EXTENDED MEMORY CHAIN LDD T6 CHECK FOR DAT TRACK LMM CSTA+4 NJN CST2 IF NO MATCH ON DAT TRACK LDD LD CHECK FOR LINK DEVICE ZJN CST2 IF NO LINK DEVICE LMD T5 ZJN CST3 IF DAT TRACK CST2 LDN 2 INDICATE SPECIAL TRACKS NOT FOUND CST3 SBN 1 INDICATE *IQFT*, DAT OR ECS TRACK FOUND LJM CSTX RETURN CSTA BSSZ 5+4 CTB SPACE 4,15 ** CTB - CHECK TRACK BITS. * * ENTRY (A) = TRACK NUMBER. * (ES+4) = MST POINTER. * * EXIT (A) = (CM+4) = RESERVATION FLAG IN BIT 3. * = PRESERVED FILE FLAG IN BIT 13. * (T1) = TRT WORD INDEX. * (T2) = TRT WORD NUMBER. * (T6) = TRACK NUMBER. * * USES CM - CM+4. * * CALLS CAT. CTB SUBR ENTRY/EXIT STD T6 LPC 3777 SET TRT WORD NUMBER SHN 21-1 STD T2 SHN 1-21 SET TRT WORD INDEX STD T1 LMC SHNI+0 STM CTBA LDD ES+4 READ TRT WORD SHN 3 ADN TRLL RJM CAT CALCULATE FWA OF TRT ADD T2 CRD CM LDD CM+4 SET TRACK BITS CTBA SHN 0 LPC 4010 STD CM+4 UJN CTBX RETURN FBT SPACE 4,10 ** FBT - FLAW BLOCK OF TRACKS IN TRT. * * ENTRY (T3) = STARTING TRACK NUMBER (TRACK BIT NOT SET). * (TL) = ENDING TRACK NUMBER + 1 (TRACK BIT NOT SET). * (T5) = EST ORDINAL. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (A) = 0 IF TRACK FLAWED. * * USES T1, CM - CM+4. * * CALLS CAT. * * MACROS MONITOR. FBT SUBR ENTRY/EXIT FBT1 LDD T3 UNPACK TRACK SHN 21-1 SET TRT WORD INDEX STD T0 SHN 1-21 SET BYTE INDEX STD T1 LDD ES+4 READ TRT WORD SHN 3 ADN TRLL RJM CAT CALCULATE FWA OF TRT ADD T0 CRD CM LDM CM,T1 CHECK TRACK LMC 3777 ZJN FBT2 IF TRACK ALREADY FLAWED LDD T5 FLAW TRACK IN TRT STD CM+1 LDD T3 STD CM+2 LDN STFS STD CM+3 MONITOR STBM FBT2 AOD T3 ADVANCE TRACK NUMBER LMD TL NJN FBT1 IF NOT END OF TRACKS TO FLAW UJN FBTX RETURN GDS SPACE 4,15 ** GDS - GET DAT SECTOR. * * ENTRY (ES - ES+4) = EST ENTRY. * (LD) = LINK DEVICE EST ORDINAL. * * EXIT DAT SECTOR AT BFMS. * (TI) = INDEX TO DAT ENTRY. * (A) = 0 IF DEVICE NOT DEFINED IN DAT. * * USES TI, T5 - T7, CM - CM+4, FN - FN+4. * * CALLS ABT, RDS. * * MACROS ENDMS, SETMS. GDS SUBR ENTRY/EXIT LDD LD SET EQUIPMENT STD T5 SETMS IO LDD CM+4 GET DAT POINTERS SHN 3 ADN ALGL CRD CM LDD ES+4 READ DAT INDEX SHN 3 ADN MDGL CRD FN LDD CM+4 SET DAT TRACK STD T6 LDM EQNO LMD LD ZJN GDS1 IF LINK DEVICE LDD FN SET DAT SECTOR LPC 377 ZJN GDSX IF NO DAT INDEX SHN 21-4 GDS1 STD T7 SHN -14 SET DAT SECTOR INDEX STD TI SHN 2 RAD TI INDEX*5 LDC BFMS READ SECTOR RJM RDS PJN GDS3 IF NO ERRORS GDS2 LDC GDSA LJM ABT ABORT *IMS* GDS3 ENDMS LDN 1 LJM GDSX RETURN GDSA DATA C* ERROR ON LINK DEVICE.* GLA SPACE 4,15 ** GLA - GET LOCAL AREA SECTOR. * * ENTRY (IR+4) = EST ORDINAL. * * EXIT (A) = RETURN FROM *COMPRLA*. * LOCAL UTILITY INTERLOCK SET. * * EREXIT TO *ABT* IF READ ERRORS. * * CALLS RLA, SLI, SME. GLA1 STM BFMS+1 CLEAR SECTOR WORD COUNT GLA SUBR ENTRY/EXIT LDD IR+4 SET MASS STORAGE EQUIPMENT RJM SME RJM SLI SET LOCAL UTILITY INTERLOCK RJM RLA READ SECTOR OF LOCAL AREAS PJN GLAX IF NO READ ERRORS LDM BFMS ZJN GLA1 IF SECTOR NOT REFORMATTED LDC GLAA * EQXXX, LOCAL AREA SECTOR ERROR.* LJM ABT ABORT GLAA DATA C* EQXXX, LOCAL AREA SECTOR ERROR.* IMG SPACE 4,10 ** IMG - ISSUE *READING* MESSAGE. * * ENTRY (T6) = TRACK NUMBER TO ISSUE. * * EXIT MESSAGE WRITTEN TO *MS2W*. * * CALLS C2D. IMG SUBR LDD T6 RJM C2D CONVERT LOWER STM IMGA+10 LDD T6 SHN -6 RJM C2D CONVERT UPPER STM IMGA+7 LDD CP STORE CONTROL POINT MESSAGE ADN MS2W CWM IMGA,TR UJN IMGX RETURN IMGA DATA C*READING TRACK-XXXX* IPF SPACE 4,10 ** IPF - INITIALIZE PACK FLAWS. * * ENTRY (T5) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * * USES AI, T2, CM - CM+4, FN - FN+4. * * CALLS DFM, EXR, RCS, SDR, *0TI*, *0TJ*. * * MACROS EXECUTE. IPF3 LDD ES+4 SHN 3 ADN DDLL CRD CM LDD CM SET NUMBER OF UNITS LPN 7 STD T2 LDN PRFM SET TRACK FLAW REQUEST RJM SDR IPF SUBR ENTRY/EXIT IPFA LDN 0 NJN IPFX IF PACK FLAWS ALREADY PROCESSED LDD ES SHN 21-7 PJN IPFX IF NOT AN LDAM DEVICE AOM IPFA LDD ES+1 CHECK CONCURRENT CHANNEL FLAGS SHN 21-5 PJN IPF1 IF NOT A CONCURRENT CHANNEL LDD ES+2 ZJN IPF3 IF SECOND CHANNEL NOT DEFINED SHN 21-5 MJN IPF3 IF BOTH CHANNELS CONCURRENT IPF1 LDD ES+4 FETCH THE ALGORITHM INDEX SHN 3 ADN DILL CRD FN LDD T5 SET EQUIPMENT PARAMETER STM FPPA * EXECUTE FLAW PROCESSOR. LDD FN+4 SET ALGORITHM INDEX LPN 77 STD AI EXECUTE 0TI,FPLA EXECUTE FLAW PROCESSOR ZJN IPF2 IF FLAWING COMPLETE LDC MESL * EQXXX, FLAWING INCOMPLETE.* RJM DFM IPF2 RJM RCS RESERVE *CTI* SPACE LJM IPFX RETURN LDA SPACE 4,10 ** LDA - LOAD CM ADDRESS. * * ENTRY (IR+3 - IR+4) = RELATIVE ADDRESS. * * EXIT (A) = ABSOLUTE ADDRESS. LDA SUBR ENTRY/EXIT LDD IR+3 LPN 77 SHN 6 ADD RA SHN 6 ADD IR+4 UJN LDAX RETURN RCS SPACE 4,15 ** RCS - RESERVE *CTI* SPACE. * * ENTRY (T5) = EST ORDINAL. * (AI) = ALGORITHM INDEX * (ES - ES+4) = EST ENTRY. * * EXIT *CTI* SPACE FLAWED IN TRT. * * USES FL, TL, T3, T9, CM - CM+4, FN - FN+4. * * CALLS CTB, FBT, RDS, WDS, *0PI*. * * MACROS CMSTF, ENDMS, EXECUTE, MONITOR, SMSTF. RCS SUBR ENTRY/EXIT LDD T5 SET PARAMETER WORD LMC 4000 STM FPPA EXECUTE 0PI,FPLA READ DEADSTART SECTOR NJN RCS0 IF NOT A VALID DEADSTART SECTOR STM RCSA PRESET FOR *CTI* PRESENT ENDMS LDM BFMS+MSLP NJN RCS1 IF *MSL* INSTALLED LDM BFMS+CDAP NJN RCS1 IF COMMON DISK AREA INSTALLED LDM BFMS+CTIP NJN RCS1 IF *CTI* INSTALLED RCS0 LDD AI LMN AIDR NJN RCSX IF NOT CDSS II LDC 840D FIRST CYLINDER OF AREA TO BE FLAWED STM RCSA INDICATE *CTI* NOT PRESENT RCS1 SHN 1 CONVERT CYLINDER TO LOGICAL TRACK STD T3 LDD ES+4 GET DEVICE LENGTH FROM MST SHN 3 ADK TDGL CRD TL ERRNZ TL+1-FN READ DESTROYS DIRECT CELLS ADN ACGL-TDGL FETCH DEADSTART FILE STATUS CRD FN LDD AI LMN AIDA NJN RCS2 IF NOT 33502 LDD T3 COMPLETE CYLINDER TO TRACK CONVERSION SHN -1 ADC NTDA/2 STD T3 UJN RCS4 FLAW TRACKS RCS2 LMN AIDI&AIDA ZJN RCS3 IF 7X54/844-21 LMN AIDK&AIDI ZJN RCS3 IF 7154/844-21 LMN AIDX&AIDK ZJN RCS3 IF FSC 3330-1 LMN AIDR&AIDX NJN RCS4 IF NOT CDSS II LDD T3 INITIALIZE TRACK CALCULATION STD T9 LDN 0 STD T3 LDC 1062 SET FLAW LIMIT FOR CDSS II STD TL RCS2.1 LCN 3 FOR THIS PURPOSE, TRACK = CYLINDER*2/3 RAD T9 MJN RCS5 IF CONVERSION COMPLETE AOD T3 INCREMENT TRACK NUMBER UJN RCS2.1 CONTINUE DIVISION RCS3 LDD T3 COMPLETE CYLINDER CONVERSION RAD T3 RCS4 LDD T3 SBD TL PJN RCS7 IF *CTI* BEYOND LOGICAL END OF DEVICE RCS5 RJM FBT FLAW BLOCK OF TRACKS RCS7 LDC ** ZERO IF *CTI* PRESENT RCSA EQU *-1 NJP RCS9 IF *CTI* NOT PRESENT SMSTF GCTI SET *CTI* PRESENT FLAG LDD IR+2 CHECK FOR FLAW FUNCTION LMN 3 ZJN RCS8 IF X.FLAW REQUEST CMSTF GDSF LDN ZERL CLEAR DEADSTART FILE INDICATOR CRM BFMS+OSBP,ON LDC BFMS+WLSF REWRITE DEADSTART SECTOR RJM WDS LDD FN LPC MGDSF ZJN RCS8 IF NO DEADSTART FILE LDM BFMS+OSBP+5 RJM CTB ZJN RCS8 IF TRACK CHAIN RELEASED LDD T5 STD CM+1 LDD T6 DROP TRACK CHAIN STD CM+2 MONITOR DTKM RCS8 ENDMS RELEASE CHANNEL RCS9 LJM RCSX RETURN RDT SPACE 4,10 *** RDT - READ DIT TO BUFFER. * * ENTRY (A) = BUFFER ADDRESS. * (T5) = EST ORDINAL OF DEVICE. * (ES - ES+4) = EST ENTRY. * * ERROR TO *ABT2* IF ERROR READING LABEL (DIT) SECTOR. * * USES T1, T6, T7, CM - CM+4. * * CALLS RDS, SDL. * * MACROS ENDMS, MONITOR, SETMS. RDT SUBR ENTRY/EXIT STM RDTB SAVE BUFFER ADDRESS LDD ES+4 SET LABEL TRACK SHN 3 ADN ALGL CRD CM LDD CM+1 STD T6 LDN 0 STD T7 SETMS IO,(DF,NS) LDC BFMS READ LABEL RJM RDS PJN RDT1 IF NO ERROR * LDC MESM LJM ABT2 ABORT RDT1 ENDMS LDN MISD STD T1 RJM SDL CWM DISS,T1 SBN MISD CRM **,T1 READ DIT TO BUFFER RDTB EQU *-1 LJM RDTX RETURN SDL SPACE 4,10 ** SDL - SET DIT LOCATION. * * ENTRY (ES - ES+4) = EST ENTRY. * * EXIT (A) = DIT ADDRESS. * * USES T2, T3, CM - CM+4. * * CALLS CAT. SDL SUBR ENTRY/EXIT LDD ES+4 SHN 3 ADK TDGL CRD CM LDD CM+2 SET MRT LENGTH STD T2 ADN 7 SHN -3 STD T3 LDD ES+4 SHN 3 ADN TRLL RJM CAT CALCULATE FWA OF TRT ADD T2 ADD TRT LENGTH ADD T3 ADD MRT LENGTH UJN SDLX RETURN SDT SPACE 4,10 ** SDT - SEARCH DAT TABLES. * * ENTRY DAT INTERLOCK SET. * (ES - ES+4) = EST ENTRY. * (CN - CN+4) = SDGL WORD. * (LD) = LINK DEVICE. * (DI) = DAT INDEX. * (DE) = DAT ENTRY COUNT. * * EXIT (A) = 0 IF DUPLICATE ENTRY. * * USES T1 - T7, CM - CM+4, FN - FN+4, DC. * * CALLS CDE, RDS. * * MACROS ENDMS, SETMS. SDT SUBR ENTRY/EXIT LDD ES+4 READ DEVICE DESCRIPTION SHN 3 ADN PFGL CRD FN LDD FN+4 CHECK IF 1 OF N LPN 70 NJN SDTX IF NOT 1 OF N STD T7 LDD LD SET LINK DEVICE STD T5 SETMS IO LDD CM+4 GET DAT POINTER SHN 3 ADN ALGL CRD CM LDD CM+4 SET DAT TRACK STD T6 SDT1 LDC BFMS READ DAT SECTOR RJM RDS MJN SDT6 IF READ ERROR ENDMS * LDN 0 STD T1 STD T2 SDT3 RJM CDE COMPARE ENTRIES ZJN SDT7 IF DUPLICATE ENTRY SDT4 AOM SDTA BUMP DAT INDEX LDN 5*2 BUMP SEARCH INDEX RAD T2 SOD DE DECREMENT ENTRY COUNT ZJN SDT8 IF END OF ENTRIES LDN 2 BUMP WORD COUNT RAD T1 LMD HN NJN SDT3 IF NOT END OF SECTOR AOD T7 BUMP SECTOR COUNT UJN SDT1 PROCESS NEXT SECTOR SDT6 LJM GDS2 ABORT SDT7 LDD DI CHECK IF THIS DEVICE LMC ** SDTA EQU *-1 ZJN SDT4 IF THIS DEVICE AOM BUF+PMRP+4 FLAG DUPLICATE *DAT* ENTRY LDN 1 SDT8 LMN 1 LJM SDTX RETURN SLI SPACE 4,10 ** SLI - SET LOCAL UTILITY INTERLOCK. * * ENTRY (T5) = EST ORDINAL. * * ERROR TO *ABT2* IF INTERLOCK NOT SET. * * CALLS SDI. SLI1 LDD T5 SET INTERLOCK HELD STM CLIA SLI SUBR ENTRY/EXIT RJM SDI SET INTERLOCK NJN SLI1 IF INTERLOCK SET * LDC MESM LJM ABT2 ABORT SME SPACE 4,10 ** SME - SET MASS STORAGE EQUIPMENT. * * ENTRY (A) = EST ORDINAL. * * EXIT (T5) = EST ORDINAL. * (ES - ES+4) = EST ENTRY. * EQUIPMENT MNEMONIC AND NUMBER SET IN MESSAGES. * * USES T0, T1, T2, T3, T4, T5, ES - ES+4. * * CALLS C2D. * * MACROS SFA. SME SUBR ENTRY/EXIT STD T5 STM EQNO SFA EST READ EST ENTRY ADK EQDE CRD ES * SET (T0 - T2) = * EQXXX*, WHERE EQ = EQUIPMENT MNEMONIC AND * XXX = EST ORDINAL. LDD T5 CONVERT UPPER DIGIT OF EST ORDINAL SHN -6 ADN 1R0 STD T1 LDD T5 CONVERT LOWER TWO DIGITS OF EST ORDINAL RJM C2D STD T2 LDD ES+3 PROCESS DEVICE MNEMONIC LMC 1L SHN 14 STD T0 SHN -6 SCN 77 RAD T1 LDN TSMEL INITIALIZE MESSAGE MODIFICATION LOOP STD T3 SME1 SOD T3 DECREMENT MESSAGE INDEX MJN SMEX IF ALL MESSAGES MODIFIED LDM TSME,T3 SET MESSAGE ADDRESS STD T4 LDD T0 TRANSFER * EQXXX* INTO DESTINATION BUFFER STI T4 LDD T1 STM 1,T4 LDD T2 STM 2,T4 UJN SME1 LOOP FOR NEXT MESSAGE ** TSME - TABLE OF MESSAGES REQUIRING EQUIPMENT MNEMONICS AND * EST ORDINALS. TSME BSS 0 CON GLAA CON MESA CON MESB CON MESC CON MESD CON MESE CON MESG CON MESH CON MESI CON MESJ CON MESK CON MESL CON MESN CON MESO CON MESP TSMEL EQU *-TSME STB SPACE 4,15 ** STB - SET TRACK BIT. * * ENTRY (A) = *STBM* SUBFUNCTION CODE. * (T5) = EST ORDINAL. * (T6) = TRACK NUMBER. * * EXIT (A) = MONITOR RESPONSE. * * USES CM - CM+4. * * MACROS MONITOR. STB SUBR ENTRY/EXIT STD CM+3 SET SUBFUNCTION CODE LDD T6 SET TRACK STD CM+2 LDD T5 SET EST ORDINAL LMC 1S10 STD CM+1 MONITOR STBM ISSUE REQUEST LDD CM+1 UJN STBX RETURN STI SPACE 4,15 ** STI - SET TRACK INTERLOCK. * * ENTRY (T5) = EST ORDINAL. * (T6) = TRACK. * * EXIT (A) = 0 IF TRACK INTERLOCKED. * = (T6) IF TRACK NOT RESERVED. * (PF) = (T6) IF TRACK INTERLOCKED. * * ERROR TO *ABT3* IF *ORET* ERROR FLAG DETECTED. * * CALLS STB. * * MACROS DELAY, PAUSE. STI2 LDD T6 FLAG TRACK INTERLOCKED STD PF STI3 LMD T6 RETURN INTERLOCK STATUS STI SUBR ENTRY/EXIT STI1 LDN STIS ATTEMPT TRACK INTERLOCK RJM STB ZJN STI2 IF INTERLOCK SET LMN 2 ZJN STI3 IF TRACK NOT RESERVED DELAY 250D*10 PAUSE LDD CM+1 CHECK ERROR FLAG LMN ORET NJN STI1 IF NOT OPERATOR OVERRIDE * LDC MESM LJM ABT3 ABORT STM SPACE 4,10 ** STM - SET TRACK NUMBER IN MESSAGE. * * ENTRY (A) = MESSAGE ADDRESS. * (T6) = TRACK NUMBER. * * EXIT (T9) = MESSAGE ADDRESS. * * CALLS C2D, DFM. STM SUBR ENTRY/EXIT STD T9 LDD T6 CONVERT TRACK NUMBER SHN -6 RJM C2D STM 5,T9 SET CONVERSION IN MESSAGE LDD T6 RJM C2D STM 6,T9 LDC ERLN ISSUE MESSAGE TO ERRLOG LMD T9 RJM DFM UJN STMX RETURN TED SPACE 4,10 ** TED - TRANSFER DAT ENVIRONMENT DATA. * * ENTRY (A) = ECSM FUNCTION. * (T6 - T7) = LINK DEVICE ADDRESS. * * EXIT (A) = ECSM FUNCTION REPLY. * * USES CM - CM+4, BY. * * CALLS CEA. * * MACROS MONITOR. TED SUBR ENTRY/EXIT SHN 11 STD BY RJM CEA CONVERT EXTENDED MEMORY ADDRESS LDN DAET SET DAT ENTRY RAD CM+4 SHN -14 LMD BY MERGE FUNCTION RAD CM+3 LDN 0 SET WORD COUNT TO 1 STD CM+1 LDD MA SET CM ADDRESS STD CM+2 MONITOR ECSM LDD CM+1 UJN TEDX RETURN TRT SPACE 4,10 ** TRT - UPDATE TRT. * * ENTRY (ES - ES+4) = EST ENTRY. * (T5) = EQUIPMENT. * * EXIT TRT UPDATED IF DEVICE IS SHARED. * * USES CM - CM+4. * * CALLS STB. * * MACROS MONITOR. TRT SUBR ENTRY/EXIT LDD ES CHECK IF SHARED SHN 21-11 PJN TRTX IF DEVICE NOT SHARED LDN UTRS ENSURE TRT CURRENT RJM STB UJN TRTX RETURN UDA SPACE 4,15 ** UDA - UPDATE DAT ENTRY. * * ENTRY (TA) = EXTENDED MEMORY ACCESS OPTIONS. * (DI) = DAT INDEX. * (CN - CN+4) = *SDGL* WORD OF MST. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * USES T1, T2, T5, CM - CM+4, CN - CN+4. * * CALLS GDS, SDT, WDS. * * MACROS ENDMS, SETMS. UDA5 LDM EQNO RESET EST ORDINAL STD T5 UDA SUBR ENTRY/EXIT LDD TA CHECK REQUEST LPN RDDA NJN UDA1 IF READ DAT ONLY RJM SDT SEARCH DAT TABLES ZJN UDA5 IF DUPLICATE ENTRY UDA1 RJM GDS GET DAT SECTOR ZJN UDA5 IF NO DAT ENTRY OR LINK DEVICE LDD TI ADC BFMS+2 STM UDAB STD TI ADN 11 STD T2 LDI T2 SET ACCESS STATUS IN CHECKPOINT REQUEST LPC 0 UDAA EQU *-1 STM CKCA+4 SETMS IO,RW LDD TA RECHECK REQUEST LPN RDDA NJN UDA4 IF NOT DAT UPDATE LDD ES+4 SHN 3 ADN PFGL READ DAT INFORMATION CRD CM LDN 3 STD T2 UDA2 LDM CM,T2 COPY DATA TO DAT SECTOR STM **,T2 UDAB EQU *-1 SOD T2 PJN UDA2 IF NOT END OF DATA LDD CM+4 LPN 70 ZJN UDA3 IF PACK IS 1 OF N LDN 0 STI TI CLEAR DAT ENTRY STD CN STD CN+1 CLEAR EXTENDED MEMORY ADDRESS LDD ES+4 SHN 3 ADN SDGL UPDATE THE MST CWD CN LDD DI ZJN UDA4 IF DAT INDEX NOT SET UDA3 LDC BFMS+WLSF RJM WDS REWRITE DAT SECTOR UDA4 ENDMS LJM UDA5 RETURN UEC SPACE 4,15 ** UEC - UPDATE EXTENDED MEMORY MST DATA. * * ENTRY (A) = UPDATE OPTIONS. * (LD) = LINK DEVICE EST ORDINAL. * (MI) = MACHINE INDEX. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * ERROR TO *GDS2* IF ERROR ON LINK DEVICE. * * USES TA, CM - CM+4, CN - CN+4. * * CALLS UDA. * * MACROS MONITOR. UEC SUBR ENTRY/EXIT STD TA LDD LD ZJN UECX IF NOT MMF MODE LDD ES+4 SHN 3 ADN SDGL FETCH MST ADDRESS INFORMATION CRD CN LDD TA LPN RDDA+UPDA ZJN UEC1 IF NOT DAT ACCESS RJM UDA * UPDATE GLOBAL AREA. UEC1 LDD CN CHECK EXTENDED MEMORY ADDRESS ADD CN+1 ZJN UECX IF MST/TRT NOT EXTENDED MEMORY RESIDENT LDD TA LPN UPGA UEC2 ZJN UECX IF NOT GLOBAL AREA UPDATE LDD CN+1 ADN ALGL STD CM+4 FORM EXTENDED MEMORY ADDRESS SHN -14 ADD CN LMC WECS*1000 MERGE SUBFUNCTION STD CM+3 LDD ES+4 COMPUTE CM ADDRESS SHN 3 ADN ALGL STD CM+2 SHN -14 LMC 300 MERGE WORD COUNT STD CM+1 MONITOR ECSM LDD CM+1 ZJN UEC2 IF NO ERRORS LJM GDS2 ABORT SPACE 4 * COMMON DECKS. QUAL$ EQU 1 *CALL COMPRLA *CALL COMPRSS WCS$ EQU 1 CONSECUTIVE SECTORS AFTER SYSTEM SECTOR *CALL COMPWSS QUAL *CALL COMPCEA *CALL COMPC2D *CALL COMPIFR *CALL COMPSDI *CALL COMPSDR STI EQU /IMS/STI *CALL COMPTGB *CALL COMPTLB QUAL IMS SPACE 4,10 ** DAYFILE MESSAGES. MESA DATA C* EQXXX, YY TRACKS FLAWED.* MESB DATA C* EQXXX, YY FLAWS NOT PROCESSED.* MESBL EQU * FLAW MESSAGE BUFFER MESC DATA C* EQXXX, LOCAL AREAS INITIALIZED.* MESD DATA C* EQXXX, LOCAL AREA SECTOR RESET.* MESE DATA C* EQXXX, PF INITIALIZE COMPLETE.* MESF DATA C* LABEL TRACK CONFLICT.* MESG DATA C* EQXXX, NO INACTIVE DAYFILES FOUND.* MENM EQU 13 FILENAME OFFSET FOR MESSAGES MESH DATA C* EQXXX, INITIALIZED - . * MESI DATA C* EQXXX, FILE ACTIVE - . * MESJ DATA C* EQXXX, FILE BUSY - . * MESK DATA C* EQXXX, PROTECTED QUEUES IGNORED.* MESL DATA C* EQXXX, FLAWING INCOMPLETE.* MESM DATA C* IMS ABORTED.* MESN DATA C* EQXXX, TKYYYY, SYSTEM SECTOR ERROR.* MESO DATA C* EQXXX, TKYYYY - TRACK FLAWED BY IMS.* MESP DATA C* EQXXX, TKYYYY - VERIFICATION ERRORS.* SPACE 4,10 OVLA EQU *+5 OVERLAY LOAD ADDRESS TITLE RESIDENT PROCESSORS. IND SPACE 4,10 *** FUNCTION *INDF* - INITIALIZE MASS STORAGE DEVICE. * * ENTRY (IR+4) = EST ORDINAL. IND ENTRY LDD IR+4 SET DEVICE PARAMETERS RJM SMD LDD WB CHECK INITIALIZE OPTIONS SHN 21-LIAL+LIAL/12D*12D MJN IND1 IF DEADSTART INITIALIZE RJM TRT UPDATE TRT RJM RPC RELEASE PERMANENT FILE CHAINS RJM IPF INITIALIZE PACK FLAWS IND1 LDD ES+4 SHN 3 ADN ALGL READ DEVICE ALLOCATION WORD FROM MST CRD CN ADN PUGL-ALGL GET DEVICE MASKS CRD FN ADN MDGL-PUGL GET DRIVER WORD CRD CM ADN STLL-MDGL UPDATE DEVICE STATUS CWD WB LDN 0 CLEAR ID DATA TRACK STD CN LDD CM SHN 21-12 MJN IND2 IF AUXILIARY DEVICE LDD FN+4 LPC 377 NJN IND2 IF MASTER DEVICE * LDN 0 LJM IND5 PROCESS NON-MASTER DEVICE IND2 LDD FN+3 SET CONTIGUOUS CATALOG TRACKS SCN 60 LMN 40 STD FN+3 LDD FN ZJN IND3 IF NOT PRIVATE DEVICE LDN 1 SET CATALOG COUNT TO 1 STD CN+3 IND3 LDD CN+3 SET NUMBER OF CATALOG TRACKS ADN 1 STD CA RESERVE CATALOG CHAIN RJM RCC ZJN IND4 IF ALL TRACKS NOT ASSIGNED LDC NDAT RESERVE DATA TRACK RJM RPT ZJN IND4 IF TRACK NOT ASSIGNED STD CN LDC NPER RESERVE PERMITS TRACK RJM RPT NJN IND5 IF TRACK ASSIGNED IND4 LDN PTKL LJM MSI PASS ERROR TO *MSI* IND5 STD CN+2 SET PERMIT TRACK LDD ES+4 SHN 3 ADN ALGL UPDATE DEVICE LAYOUT WORD CWD CN ADN PUGL-ALGL UPDATE CATALOG CHAIN STATUS CWD FN LDN 0 CLEAR ERROR STATUS RJM SES CMSTF GDEI CLEAR ERROR IDLE STATUS CMSTF GCTO CLEAR CATALOG TRACK OVERFLOW LDM CQFA ZJN IND7 IF NO QUEUES IGNORED LDC MESK * EQXXX, PROTECTED QUEUES IGNORED.* RJM DFM IND7 LDC MESE * EQXXX, PF INITIALIZE COMPLETE.* RJM DFM LDN RDDA+UPGA READ DAT / UPDATE GLOBAL MST RJM UEC RJM IAM PROCESS ACCOUNTING MESSAGE LDN 5 LJM CKC SET CHECKPOINT REQUEST SPACE 4,10 ** SYSTEM SECTOR FILE NAMES. NDAT VFD 42/0LDATA,6/1,6/SYFT,6/0 NLAB VFD 42/0LLABEL,6/1,6/SYFT,6/0 NPER VFD 42/0LPERMIT,6/1,6/SYFT,6/0 DFT SPACE 4,20 ** DFT - DROP AND FLAW TRACK. * * ENTRY (A) = 1/0,11/FT. ALL TRACKS AFTER *FT* ARE DROPPED * AND THE EOI IS SET IN SECTOR ZERO OF *FT*. * = 1/1,11/FT. ALL TRACKS FROM *FT* TO END OF * CHAIN ARE DROPPED. * (T5) = EST ORDINAL. * (T6) = TRACK ON WHICH ERROR OCCURED. * (TA) = VERIFICATION ERROR RETRY COUNT. * * EXIT (A) = 0 IF TRACK CHAIN DROPPED. * * ERROR TO *ABT2* IF RETRY COUNT EXHAUSTED. * * USES CM - CM+4. * * CALLS DFM, SES, STM. * * MACROS MONITOR. DFT1 STD CM+3 CLEAR SECTOR NUMBER FIELD LDD T5 STD CM+1 DROP CURRENT TRACK MONITOR DTKM LDC MESO ISSUE TRACK FLAWED MESSAGE TO ERRLOG RJM STM LDD T9 ISSUE SAME MESSAGE TO SYSTEM DAYFILE RJM DFM * LDN 0 DFT SUBR ENTRY/EXIT STD CM+2 SET FIRST TRACK TO DROP LDM RDCT LPN 77 CHECK MASS STORAGE ERROR TYPE LMN PARE ZJN DFT1 IF MEDIA PROBLEM LDC MESP RJM STM ISSUE VERIFICATION ERROR MESSAGE SOD TA NJN DFTX IF VERIFICATION RETRY IN ORDER LDN STVE RJM SES SET *VE* ERROR STATUS IN MST * LDC MESM LJM ABT2 ABORT - MAINTENANCE REQUIRED IAM SPACE 4,15 ** IAM - ISSUE ACCOUNTING MESSAGE. * * ENTRY (T5) = EST ORDINAL. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT MESSAGE ISSUED TO ACCOUNTING DAYFILE. * EVENT SET FOR AUXILIARY DEVICE. * * USES T1, CM - CM+4, CN - CN+4. * * CALLS ACS, C2D, DFM. * * MACROS MONITOR. IAM SUBR ENTRY/EXIT LDC IAMB SET ADDRESS OF ASSEMBLY BUFFER STD T1 LDD T5 CONVERT UPPER TWO DIGITS OF EST ORDINAL SHN -3 RJM C2D STD CM LDD T5 CONVERT LOWER DIGIT OF EST ORDINAL LPN 7 ADN 1R0 SHN 6 STD CM+1 LDN CM ADD EST ORDINAL TO MESSAGE RJM ACS LDC =C*, * ADD SEPARATOR TO MESSAGE RJM ACS LDD ES+4 GET DEVICE DESCRIPTION SHN 3 ADN PFGL CRD CM ADN PUGL-PFGL READ USER NAME CRD CN LDD CM+3 EXTRACT DEVICE NUMBER LPN 77 NJN IAM1 IF NOT AUXILIARY DEVICE LDD CM+3 ADD CM+2 BUILD PACKNAME EVENT HASH ADD CM+1 ADD CM SAVE PACKNAME HASH STD CN+4 UJN IAM2 FORMAT MESSAGE IAM1 RJM C2D CONVERT TO DISPLAY CODE STD CN LDC 2RDI CHANGE MESSAGE PREFIX TO *ADDI* STM IAMA+1 LDD CM+3 SET END OF FAMILY NAME SCN 77 STD CM+3 IAM2 LDN CM ADD FAMILY/PACKNAME TO MESSAGE RJM ACS LDD CN ZJN IAM3 IF NO USER/DEVICE NUMBER LDC =C*, * RJM ACS LDD CN+3 SET END OF USER NAME SCN 77 STD CN+3 LDN CN ADD USER/DEVICE NUMBER TO MESSAGE RJM ACS IAM3 LDC =C*.* SET MESSAGE TERMINATOR RJM ACS LDC IAMA+ACFN ISSUE MESSAGE TO ACCOUNT FILE RJM DFM LDM IAMA+1 ISSUE EVENT LMC 2RPI NJN IAM4 IF NOT AUXILIARY DEVICE LDN ZERL CRD CM LDN /EVENT/VSNE/10000 SET EVENT STD CM+3 LDD CN+4 SET PACKNAME HASH STD CM+4 MONITOR EATM IAM4 LJM IAMX RETURN IAMA DATA 6HADPI, IAMB BSSZ 15 ASSEMBLY BUFFER RCC SPACE 4,20 ** RCC - RESERVE CATALOG CHAIN. * * ENTRY (CA) = CATALOG COUNT. * (LT) = LABEL TRACK. * (T5) = EST ORDINAL (DRIVER PRESET). * (CN - CN+4) = DEVICE LAYOUT WORD OF MST * (FN - FN+4) = PUGL WORD OF THE MST. * * EXIT (A) = 0 IF TRACKS NOT AVAILABLE. * = .LT. 0 IF ALL CATALOG TRACKS RESERVED. * (FN+3) = CONTIGUOUS TRACKS FLAG CLEARED IF NECESSARY. * * USES TA, T2, T6, T7, CA - CA+1, CM - CM+4. * * CALLS DFT, WVE. * * MACROS MONITOR. RCC SUBR ENTRY/EXIT LDD LT STD T6 FIRST TRACK = LABEL TRACK RCC1 SOD CA MJN RCCX IF ALL CATALOG TRACKS RESERVED LDN ZERL CRD CM LDD T5 SET EQUIPMENT STD CM+1 LDD T6 SET CURRENT TRACK STD CM+2 STD CA+1 MONITOR RTCM RESERVE TRACK * LDN 0 STD T7 SET SECTOR LDD CM+4 ZJN RCCX IF TRACK NOT ASSIGNED SBN 1 SBD T6 ZJN RCC2 IF CONSECUTIVE RAD T6 LDD FN+3 CLEAR CONTIGUOUS CATALOG TRACKS SCN 40 STD FN+3 RCC2 AOD T6 SET NEXT TRACK LDN VERC STD TA RCC3 LDD LT SET FIRST TRACK OF CHAIN STD T2 LDC BFMS WRITE AND VERIFY WITH EOI SECTORS RJM WVE ZJN RCC4 IF WRITE AND VERIFY GOOD LDD CA+1 LPC 3777 DROP AND FLAW TRACK RJM DFT NJN RCC3 IF RETRY DUE TO VERIFICATION ERRORS AOD CA LDD CA+1 RESTORE CURRENT TRACK STD T6 RCC4 LJM RCC1 ALLOCATE NEXT CATALOG TRACK RPC SPACE 4,15 ** RPC - RELEASE PERMANENT FILE CHAINS. * * ENTRY (T5) = EST ORDINAL. * (LT) = LABEL TRACK. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * (WB - WB+4) = *STLL* WORD OF MST. * * USES BY, TL, T5, T6, CM - CM+4, CN - CN+4. * * USES CAT, CQF. * * MACROS MONITOR, SETMS. RPC5 LDN 0 CLEAR USER COUNT STD WB+3 LDD CP CLEAR MESSAGE AT CP ADN MS2W CWD WB+3 RPC SUBR ENTRY/EXIT LDD ES+4 SHN 3 ADK TDGL CRD CN ADN TRLL-TDGL RJM CAT CALCULATE FWA OF TRT STM RPCA+1 SHN -14 RAM RPCA LDD CN+2 SET TRT LENGTH STD TL SETMS IO,(DF,NS) LDN 0 RPC1 STD BY CLEAR BYTE COUNT SOD TL MJN RPC5 IF END OF TRT RPCA ADC * CRD CN READ TRT WORD RPC2 LDD CN+4 LPC 7400 EXTRACT PRESERVED FILE FLAGS SHN 1 STD CN+4 ZJN RPC1 IF NONE SET SHN 5 PJN RPC4 IF NOT PRESERVED FILE CHAIN RJM CQF CHECK FOR QUEUED FILES ZJN RPC4 IF QUEUE, DAYFILE, MRT OR DAT TRACK LDD T5 STD CM+1 SET EST ORDINAL LDD T6 STD CM+2 TRACK NUMBER LMD LT NJN RPC3 IF NOT LABEL TRACK STD CM+3 LDD LT DROP ALL TRACKS AFTER LABEL TRACK LPC 3777 STD CM+2 RPC3 MONITOR DTKM RPC4 AOD BY ADVANCE BYTE COUNT UJN RPC2 LOOP FOR ALL BYTES RPT SPACE 4,15 ** RPT - RESERVE PRESERVED FILE TRACK. * * ENTRY (A) = ADDRESS OF SYSTEM SECTOR NAME. * * EXIT (A) = TRACK RESERVED. * * USES TA, T1, T2, T6, CM - CM+4. * * CALLS DFT, STB, WSS, WVE. * * MACROS ENDMS, MONITOR, SETMS. RPT SUBR ENTRY/EXIT STM RPTA RPT1 LDC 500 PRESET INDEX STD T1 RPT2 LDN 0 CLEAR SYSTEM SECTOR STM BFMS+1,T1 SOD T1 NJN RPT2 IF NOT END OF SECTOR LDD MA CWM *,ON RPTA EQU *-1 SBN 1 MOVE SYSTEM SECTOR NAME TO BUFFER CRM FNSS,ON LDN ZERL REQUEST TRACK CRD CM LDD T5 SET EST ORDINAL IN REQUEST STD CM+1 MONITOR RTCM LDD CM+4 SET TRACK STD T6 ZJN RPTX IF TRACK NOT ASSIGNED SETMS IO,NS RJM WSS WRITE SYSTEM SECTOR MJN RPT4 IF PARITY ERROR LDN VERC STD TA RPT3 LDD T6 SET FIRST TRACK STD T2 LDC BFMS WRITE AND VERIFY WITH EOI SECTORS RJM WVE NJN RPT4 IF WRITE / VERIFY ERRORS LDD T5 STD CM+1 SET EST ORDINAL LDD T6 LPC 3777 SET TRACK STD CM+2 LDN FSMS SET SECTOR STD CM+3 MONITOR DTKM SET EOI IN TRT LDN SPFS RJM STB SET FILE PRESERVED LDD T6 LJM RPTX RETURN * PROCESS BAD TRACK. RPT4 LDD T6 DROP AND FLAW TRACK RJM DFT NJN RPT3 IF RETRY DUE TO VERIFICATION ERRORS LJM RPT1 RESERVE ANOTHER TRACK SMD SPACE 4,15 ** SMD - SET MASS STORAGE DEVICE. * * ENTRY (A) = EST ORDINAL. * * EXIT (T5) = EST ORDINAL. * (LT) = LABEL TRACK. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * (WB - WB+4) = *STLL* WORD OF MST. * * USES CM - CM+4, CN - CN+4, FN - FN+4. * * CALLS ABT, CAT, IPF, RPT, SLI, SME, WDS, WSS. * * MACROS ENDMS, MONITOR, SETMS. SMD SUBR ENTRY/EXIT RJM SME SET MASS STORAGE EQUIPMENT RJM SLI SET LOCAL UTILITY INTERLOCK LDD ES+4 SHN 3 ADN ALGL CRD CN ADN MDGL-ALGL CRD FN ADN STLL-MDGL READ MST STATUS WORD CRD WB LDD FN SET DAT INDEX LPC 377 STD DI LDD CN+1 CHECK LABEL TRACK STD LT NJN SMDX IF DEFINED RJM IPF INITIALIZE PACK FLAWS LDC NLAB RJM RPT RESERVE LABEL TRACK STD CN+1 STD LT SAVE LABEL TRACK LDD ES+4 SHN 3 ADN ALGL CWD CN UPDATE MST LDD LT ZJN SMD4 IF LABEL TRACK NOT ASSIGNED LMC 4000 ZJN SMD3 IF LABEL ON TRACK ZERO LDN ZERL CRD CN SETMS IO,(DF,NS,SM) SMD1 LDD ES+4 SHN 3 ADN TRLL RJM CAT CALCULATE FWA OF TRT ADD CN+1 CRD FN SMD2 LDM FN,CN CHECK TRACK BYTE LMC 3777 ZJN SMD5 IF TRACK FLAWED LDD CN+2 LMD LT LPN 77 NJN SMD4 IF NOT LABEL TRACK SMD3 LJM SMDX RETURN SMD4 LDC MESF LJM ABT ABORT OPERATION * FLAG FLAWED TRACK IN SYSTEM SECTOR. SMD5 LDD CN+2 SET TRACK NUMBER LMC 4000 STD T6 LDC 3777 FLAWED TRACK INDICATOR STM FNSS RJM WSS WRITE SYSTEM SECTOR SMD6 LDC BFMS+WCSF RJM WDS WRITE FLAW DATA TO ALL SECTORS AOD T7 SBM SLM NJN SMD6 IF NOT END OF TRACK ENDMS AOD CN+2 BUMP TRACK COUNT AOD CN BUMP BYTE COUNT LMN 4 ZJN SMD7 IF END OF TRT WORD LJM SMD2 PROCESS NEXT TRACK SMD7 STD CN AOD CN+1 BUMP WORD INDEX LJM SMD1 GET NEXT TRT WORD SPACE 4,10 * COMMON DECKS. *CALL COMPACS *CALL COMPSES LIST X *CALL COMPWVE LIST * SPACE 4,10 USE LITERALS OVERFLOW OVLA,BUF TITLE PRESET. PRS SPACE 4,10 ** PRS - PRESET PROGRAM. * * EXIT (PF) = 0. * (LD) = MMF LINK DEVICE. * (MI) = MACHINE INDEX. * (DE) = DAT ENTRY COUNT. * (T2) = FUNCTION TABLE INDEX. * (CA - CA+1) = 0. * (CN - CN+4) = *MMFL* WORD. PRS SUBR ENTRY/EXIT LDD CP ADN STSW FETCH CP ERROR STATUS CRD CM LDD CM+1 NJP ABT3 IF ERROR FLAG SET * LDN 0 STD CA CLEAR DIRECT CELLS STD CA+1 STD PF * SET LINK DEVICE PARAMETERS. LDC MMFL CRD CN LDD CN+1 SET LINK EQUIPMENT LPC 777 STD LD LDD CN+4 SET MACHINE INDEX STD MI LDD CN+3 SET MACHINE MASK STM UDAA LDD IR+2 CHECK REQUEST LMN MMSF NJN PRS2 IF NOT TO MODIFY MST-S LDD LD ZJN PRS2 IF NOT MMF ENVIRONMENT SFA EST ADK EQDE FETCH LINK DEVICE EST ENTRY CRD CM LDD CM+4 GET LABEL TRACK SHN 3 ADN ALGL CRD CM LDD CM+1 SAVE LINK DEVICE LABEL TRACK STD T6 LDN ETLT STD T7 LDN RECS GET DAT ENTRY COUNT RJM TED ZJN PRS1 IF NO ERRORS LJM GDS2 ABORT PRS1 LDD MA CRD CM LDD CM+4 SET DAT ENTRY COUNT SHN -1 STD DE * CHECK ORIGIN TYPE. PRS2 LDD CP FETCH EJT ORDINAL ADN TFSW CRD CM SBN TFSW-JCIW GET SUBSYSTEM ID CRD WB SFA EJT,CM READ EJT ADN SCLE CRD CM LDD CM CHECK ORIGIN TYPE LPN 17 LMK SYOT NJN PRS4 IF NOT SYSTEM ORIGIN * SET ABORT CONDITIONS. LDD WB+2 CHECK SUBSYSTEM ID LMC DSSI NJN PRS3 IF NOT DEADSTART SEQUENCING JOB LDC * ORG *-1 LOC ABTB UJN ABT1 CHECK DEVICE TYPE LOC *O STM ABTB SET DEADSTART SEQUENCING PATH LDC ABTA STM ABTA+1 FORCE PP HANG * PROCESS FUNCTION. PRS3 LDD IR+2 SHN 1 SET FUNCTION TABLE INDEX STD T2 ERRNZ TFCNS-2 CODE DEPENDS ON VALUE SBN TFCNL PJN PRS4 IF INCORRECT REQUEST LDM TFCN,T2 STM IMSA LJM PRSX RETURN PRS4 LDC PRSB * INCORRECT IMS REQUEST.* RJM DFM LJM DPP DROP PP SPACE 4,10 EJT$ EQU 0 DEFINE *COMPGFP* ACCESS TO EJT *CALL COMPGFP PRSB DATA C* INCORRECT IMS REQUEST.* TFCN SPACE 4 ** TFCN - FUNCTION PROCESSOR TABLE. * ENTRY = 2 BYTES. * INDEXED BY FUNCTION NUMBER * 2. * *T, 12/ ADDR, 12/ OVLN * ADDR ADDRESS OF FUNCTION PROCESSOR. * OVLN LAST CHARACTER OF OVERLAY NAME. TFCN FCN FCN 0,PRS4 INCORRECT REQUEST TFCNS EQU *O-TFCN FCN INDF,IND INITIALIZE DEVICE FCN EDTF,EDT EDIT DIRECT ACCESS FILES FCN SFLF,SFL SET / CLEAR FLAWS FCN CSDF,CSD CHECK SHARED DEVICE STATUS FCN ILAF,ILA INITIALIZE LOCAL AREAS FCN MMSF,MMS MODIFY MST-S FCN CINF,CIN CLEAR INITIALIZE REQUESTS FCN IDFF,IDF INITIALIZE DAYFILES FCN CITF,CIT CLEAR *CMS* INTERLOCK FCN ISDF,ISD INTERLOCK ISD-S FCN IFMXF TFCNL EQU *-TFCN LENGTH OF TABLE SPACE 4,10 OVERFLOW OVERLAY (MODIFY MASS STORAGE TABLES.) MMS SPACE 4,20 *** FUNCTION *MMSF* - MODIFY MASS STORAGE TABLES. * * ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS. * *T, ADDR 60/ EST ENTRY *T, 60/ PFGL WORD OF MST *T, 60/ PUGL WORD OF MST *T, 60/ MDGL WORD OF MST *T, 12/ NC, 12/ EQ, 12/ AI, 12/ CI, 12/ NE *T, 12/ NP, 48/ UNIT LIST (*LDAM* DEVICES) *T, 60/ REPLY WORD * NC = NUMBER OF CATALOG TRACKS. * EQ = EST ORDINAL. * AI = *LDAM* ALGORITHM INDEX. * CI = CLEAR IN USE AS CHAINED DEVICE. * NE = NEXT EQUIPMENT IN CHAIN. MMS ENTRY LDN PMMSL READ PARAMETER BLOCK STD TI RJM LDA READ EST ENTRY CRD ES CRM BUF,TI LDM BUF+PMEQ SET EST ORDINAL STD T5 STM EQNO LDD LD ZJN MMS1 IF NOT MMF ENVIRONMENT LMD T5 NJN MMS1 IF NOT LINK DEVICE LDD ES+4 SHN 3 ADN PFGL RETAIN ORIGINAL PF DESCRIPTION CRM BUF+PMPF,TR MMS1 RJM SLI SET LOCAL UTILITY INTERLOCK LDD ES SHN 21-10 PJN MMS2 IF NOT REMOVABLE LDD ES+4 CHECK INITIALIZE OPTION SHN 3 ADN STLL CRD CM LDD CM SHN 21-LIAL+LIAL/12D*12D MJN MMS2 IF DEADSTART INITIALIZE RJM CTR CLEAR TRT * PROCESS CATALOG TRACK COUNT. MMS2 LDD ES+4 SHN 3 ADN ALGL CRD CM LDM BUF+PMNC STD CM+3 LDD ES+4 UPDATE MST WORDS SHN 3 ADN ALGL CWD CM ADN PFGL-ALGL STORE *PFGL* AND *PUGL* CWM BUF+PMPF,TR ADN DILL-PFGL-3 CRD CN LDD CN+4 CLEAR ALGORITHM INDEX SCN 77 STD CN+4 LDM BUF+PMMD SET DAT INDEX LPC 377 STD DI LDM BUF+PMAI ZJN MMS4 IF NOT CHANGING ALGORITHM INDEX RAD CN+4 LDD ES+4 UPDATE MST SHN 3 ADN DILL CWD CN LDD ES+3 SET NEW MNEMONIC STD CM+3 LDN SMNS SET MNEMONIC SUBFUNCTION STD CM+2 LDD T5 SET EST ORDINAL STD CM+1 MONITOR SEQM CHANGE EQUIPMENT MNEMONIC LDD CN+4 LPN 77 EXTRACT ALGORITHM INDEX SBN AIHT+1 SHN 0-21 CALCULATE *SCSM* SUBFUNCTION ADN DAPS ERRNZ DAPS+1-EAPS CODE DEPENDS ON VALUE STD CM+3 SBN DAPS SHN 3 APPEND CHANNEL PRESENT STATUS LMN 11 RJM CCS ZJN MMS4 IF NO ACCESS PATH CHANGE * LDD T5 * STD CM+1 MONITOR SCSM SET CHANNELS FOR ACCESS * PROCESS REMOVABLE DEVICE. MMS4 LDD ES SHN 21-10 PJN MMS6 IF NOT REMOVABLE LDM BUF+PMCI ZJN MMS5 IF SETTING DEVICE IN USE LCN 0 MMS5 LMN LDIU SET/CLEAR DEVICE IN USE RJM TLB MMS6 LDN UPGA+UPDA RJM UEC UPDATE EXTENDED MEMORY DATA * UPDATE MST. LDD ES+4 SHN 3 ADN DULL GET DEVICE USAGE WORD CRD CN ADN STLL-DULL GET STATUS WORD CRD CM ADN DDLL-STLL STORE UNIT LIST CWM BUF+PMAL,ON LDD CM+4 SET NEXT EST ORDINAL IN CHAIN LPN 7 SHN 22-3 ADM BUF+PMNE SHN 3 STD CM+4 RJM GAS SET ALTERNATE LABEL SECTOR STD CN LDD ES+4 SHN 3 ADN STLL UPDATE DEVICE STATUS CWD CM SBN STLL-DULL STORE ALTERNATE LABEL SECTOR IN MST CWD CN LDD ES SHN 21-4 PJN MMS9 IF NOT INDEPENDENT SHARED DEVICE LDD CM+1 LPN 77 LMN STLE ZJN MMS7 IF LABEL ERROR ON DEVICE LDD CM LPN MLPTU ZJN MMS9 IF *LPTU* INTERLOCK NOT SET MMS7 LDN ZERL CRD CN LDN 0 STD T1 LDC MMFL CRD CM LDD CM SET MACHINE ID IN DIT STD CN+4 MMS8 RJM SDL ADD T1 ADD OFFSET CWD CN LDN 0 CLEAR REMAINDER OF DIT STD CN+4 AOD T1 LMN MISD NJN MMS8 IF NOT END OF DIT MMS9 RJM LDA ADN PMRP/5 REWRITE REPLY WORD CWM BUF+PMRP,ON LJM DPP EXIT CCS SPACE 4,10 ** CCS - CHECK CHANNEL STATUS. * * ENTRY (A) = REQUESTED STATUS. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (A) = (CM+2). * = 0 IF REQUESTED STATUS NOT PRESENT. * = CHANNEL DESCRIPTOR IF STATUS FOUND. * * USES T2. CCS2 LDI CM+3 SET CHANNEL DESCRIPTOR CCS3 STD CM+2 CCS SUBR ENTRY/EXIT STD T2 LDN ES+1 INITIALIZE FOR SCAN STD CM+3 CCS1 LDI CM+3 CHECK CHANNEL SHN 0-10 SCN 6 REMOVE STATE FIELD LMD T2 ZJN CCS2 IF REQUESTED STATUS PRESENT AOD CM+3 LMN ES+3 NJN CCS1 IF ANOTHER CHANNEL TO CHECK * LDN 0 UJN CCS3 RETURN CTR SPACE 4,15 ** CTR - CLEAR TRT AND MST. * * ENTRY (T5) = EST ORDINAL (REMOVABLE DEVICE). * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT MST UPDATED. * TRT CLEARED. * * USES T6, CM - CM+4, CN - CN+4, WB - WB+4. * * CALLS CAT, STB. * * MACROS MONITOR. CTR SUBR ENTRY/EXIT LDD ES SHN 21-4 PJN CTR1 IF NOT INDEPENDENT SHARED DEVICE LDN PSNI STM CTRA CTR1 LDN SDIS SET DEVICE INTERLOCK RJM STB LDN ZERL CRD CM LDD ES+4 SHN 3 ADK TDGL CRD CN ADN ACGL-TDGL CLEAR DEVICE ACTIVITY WORD CWD CM ADN ALGL-ACGL CLEAR ALLOCATION WORD CWD CM ADN STLL-ALGL READ STATUS WORD CRD WB ADN TRLL-STLL RJM CAT CALCULATE FWA OF TRT STD CM+4 SHN -14 STD CM+3 LDD CN+2 SET TRT LENGTH STD CM+2 SHN 2 STD CN+4 TRACK COUNT LDC 4000 STD CN+3 CTRA UJN CTR2 CLEAR TRT/MRT/DIT * PSN (INDEPENDENT SHARED DEVICE) LDD CN+2 ADN 7 SHN -3 SET MRT LENGTH ADN MISD RAD CM+2 CLEAR TRT CTR2 LDN 0 STD CM+1 MONITOR CSTM * LDN 0 CLEAR USER COUNTS STD WB+3 STD WB+1 CLEAR ERROR STATUS LDD ES SHN 21-6 PJN CTR3 IF DEVICE AVAILABLE LDN MLPTU STD WB CLEAR STATUS FLAGS CTR3 LDD ES+4 SHN 3 ADK TDGL CWD CN ADN STLL-TDGL STORE STATUS WORD CWD WB LDN CDIS CLEAR DEVICE INTERLOCK RJM STB LDD CN FLAW ODD TRACKS OFF END OF TRT STD T6 CTR4 LPN 3 NJN CTR5 IF ODD TRACK COUNT LJM CTRX RETURN CTR5 LDN STFS SET TRACK FLAWED RJM STB AOD T6 UJN CTR4 CHECK NEXT TRACK GAS SPACE 4,10 ** GAS - GET ALTERNATE LABEL SECTOR. * * ENTRY (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * * EXIT (A) = ALTERNATE LABEL SECTOR. * * USES T1. GAS1 LDN 2 ADVANCE TABLE ADDRESS RAD T1 GAS2 LDI T1 ZJN GASX IF END OF TABLE LMD ES+3 NJN GAS1 IF NOT MATCHING DEVICE MNEMONIC LDM 1,T1 GAS SUBR ENTRY/EXIT LDC TALS STD T1 UJN GAS2 ENTER SEARCH LOOP TALS BSS 0 LIST G TBL "MSEQ" LIST * PURGMAC TBLM CON 0 END OF TABLE SPACE 4,10 OVERFLOW OVLA,BUF OVERLAY (EDIT TRT / INITIALIZE LOCAL AREAS.) EDT SPACE 4,10 *** FUNCTION *EDTF* - EDIT DEVICE TRT. * * ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) 0F PARAMETERS. * *T, ADDR 12/ MASK, 12/ ESTO, 36/ 0 EDT ENTRY RJM LDA READ PARAMETER WORD CRD CN LDC BUF-1 INITIALIZE BUFFER INDEX STD TI EDT1 AOD TI ADVANCE BUFFER INDEX LDD CN LPC 1 UNPACK MASK BITS EDTA EQU *-1 STI TI SET IN MASK TABLE LDM EDTA RAM EDTA SHIFT BIT SHN -10 ZJN EDT1 IF NOT END OF MASK * SET UP TRT SEARCH FOR SELECTED FILES. LDD CN+1 SET MASS STORAGE EQUIPMENT RJM SME RJM TRT UPDATE TRT LDD ES+4 SHN 3 ADK TDGL GET TRACK COUNT FROM MST CRD CN SETMS IO,(DF,NS,RW) LDD CN SET NUMBER OF TRACKS STD CN+2 UJN EDT5 ENTER LOOP EDT2 LDC MESN ISSUE SYSTEM SECTOR ERROR MESSAGE RJM STM EDT3 LDD PF ZJN EDT5 IF TRACK NOT INTERLOCKED LDN CTIS RJM STB CLEAR TRACK INTERLOCK * LDN 0 EDT4 STD PF CLEAR TRACK INTERLOCKED STATUS * SCAN TRT FOR PRESERVED FILES. EDT5 SOD CN+2 PJN EDT7 IF NOT END OF TRACKS EDT6 LJM DPP1 SET CHECKPOINT AND DROP EDT7 LMC 4000 SET TRACK BIT RJM CTB CHECK TRACK IN TRT SHN -4 ZJN EDT5 IF PRESERVED FILE BIT NOT SET RJM CST CHECK SPECIAL TRACKS ZJN EDT5 IF SPECIAL PF TRACK MJN EDT5 IF DAT OR IQFT TRACK LDN 0 READ SYSTEM SECTOR RJM RSS NJN EDT2 IF SYSTEM SECTOR ERROR LDM FNSS+4 SHN -6 LMN PMFT ZJN EDT9 IF DIRECT ACCESS FILE LMN FAFT&PMFT NJP EDT10 IF NOT FAST ATTACH FILE EDT9 LDM CTSS+FCUI+1 LPN 7 SET USER INDEX STD TI LDM BUF,TI ZJN EDT10 IF MASK DOES NOT MATCH RJM RRS * IF FILE HAS ACTIVE USERS, SET *PURGE* BIT IN SYSTEM SECTOR. LDM CASS CHECK FOR ACTIVE USERS LPN 32 ADM UCSS+1 ADM UCSS+2 ADM UCSS+3 ADM UCSS+4 ADM FISS ZJN EDT11 IF NO USERS LDM CASS SCN 40 LMN 40 SET PURGE BIT STM CASS RJM WSS UPDATE SYSTEM SECTOR EDT10 ENDMS LJM EDT3 PROCESS NEXT TRACK * FILES WHICH MATCH WITH THE MASK BELONG TO MASTER DEVICE * WHICH HAS BEEN INITIALIZED AND MUST BE DROPPED. EDT11 ENDMS LDD T5 RELEASE TRACKS STD CM+1 LDD T6 STD CM+2 MONITOR DTKM * LDN 0 LJM EDT4 CLEAR TRACK INTERLOCKED STATUS ILA SPACE 4,10 *** FUNCTION *ILAF* - INITIALIZE INACTIVE LOCAL AREAS. * * ENTRY (IR+4) = EST ORDINAL. ILA ENTRY LDC MMFL GET MACHINE ID CODE CRM BUF,ON LDD LD SET LINK EQUIPMENT STD T5 ZJN ILA2 IF NOT MMF ENVIRONMENT LDN 5*MXMF STM PLAA SETMS IO LDD CM+4 GET LINK DEVICE LABEL TRACK SHN 3 ADN ALGL CRD CM LDD CM+1 STD T6 LDN ETLT SET SECTOR ADDRESS STD T7 LDC BUF-2 READ MACHINE ID CODES RJM RDS PJN ILA1 IF NO READ ERRORS LJM GDS2 ABORT ILA1 ENDMS RELEASE CHANNEL * GET LOCAL AREA SECTOR. ILA2 LDD IR+4 SET MASS STORAGE EQUIPMENT RJM SME LDD ES CHECK DEVICE USAGE SHN 21-4 PJN ILA3 IF NOT INDEPENDENT SHARED DEVICE LDC BUF-4 READ DIT TO BUFFER RJM RDT LDC MISD*5 SET TABLE LENGTH STM PLAA ILA3 LDD ES+4 SHN 3 ADN STLL GET STATUS WORD FROM MST CRD CM LDD CM+1 CHECK ERROR FIELD LPN 77 LMN STLE ZJN ILA4 IF LABEL ERROR RJM GLA GET LOCAL AREA SECTOR ZJN ILA4 IF NO SLA OR THIS MACHINE NOT PRESENT LDN 0 STD TI CLEAR INDEX LOCATIONS STD TA * INITIALIZE INACTIVE LOCAL AREAS. LDM BFMS+1 CHECK SECTOR WORD COUNT ZJN ILA4 IF EMPTY SECTOR ADC -101 MJN ILA5 IF LEGAL WORD COUNT ILA4 CMSTF GLAP CLEAR SECTOR OF LOCAL AREAS FLAG LDC MESD * EQXXX, LOCAL AREA SECTOR RESET.* UJN ILA7 COMPLETE PROCESSING ILA5 RJM PLA PROCESS LOCAL AREA LDN 2*5 RAD TI ADVANCE SLA INDEX LDN 2 RAD TA ADVANCE SECTOR INDEX SBM BFMS+1 MJN ILA5 IF NOT END OF SECTOR DATA * REFORMAT SECTOR AND UPDATE DEVICE. RJM RFS REFORMAT SECTOR ZJN ILA6 IF EMPTY SECTOR SETMS IO,(DF,NS,RW) LDC BFMS+WLSF REWRITE SECTOR RJM WDS ENDMS ILA6 LDC MESC * EQXXX, LOCAL AREAS INITIALIZED.* ILA7 RJM DFM SMSTF LCKP SET EQUIPMENT CHECKPOINT LDN 2 LJM CKC SET CHECKPOINT REQUEST PLA SPACE 4,10 ** PLA - PROCESS LOCAL AREAS. * * ENTRY (TI) = INDEX TO LOCAL AREA. * (BUF) = LIST OF ACTIVE MACHINE ID CODES. * * EXIT TRACKS DROPPED FOR INACTIVE AREAS. * * USES T1, T2, CM - CM+4. * * MACROS MONITOR. PLA SUBR ENTRY/EXIT LDN 0 STD T2 PLA1 LDM BUF,T2 COMPARE ID CODES LMM BFMS+2,TI ZJN PLAX IF ACTIVE AREA LDN 5 RAD T2 ADVANCE INDEX LMC 5 PLAA EQU *-1 * LMC 5*MXMF (MMF ENVIRONMENT) NJN PLA1 IF NOT END OF ID CODES * DROP INACTIVE DAYFILE TRACKS. LDN 5 SET DAYFILE INDEX STD T2 LDC BFMS+2 ADD TI STM PLAB SET LOCAL AREA ADDRESS STM PLAC STD T1 PLA2 LDM **,T2 CHECK FOR DAYFILE TRACK PLAB EQU *-1 ZJN PLA3 IF TRACK NOT RESERVED STD CM+2 LDD T5 SET EQUIPMENT STD CM+1 MONITOR DTKM PLA3 AOD T2 BUMP INDEX LMN EXDF+5 NJN PLA2 IF NOT END OF DAYFILES STD T2 PLA4 LDN 0 CLEAR LOCAL AREA STM **,T2 PLAC EQU *-1 AOD T2 LMN 2*5 NJN PLA4 IF NOT END OF CLEAR LJM PLAX RETURN RFS SPACE 4,10 ** RFS - REFORMAT SECTOR. * * ENTRY (BFMS) = REMAINING LOCAL AREAS. * * EXIT (A) = 0 IF SECTOR EMPTY. * * USES T1 - T3, TI. * * MACROS CMSTF. RFS SUBR ENTRY/EXIT LDN 0 STD T1 CLEAR INDICES STD T2 STD TI CLEAR SECTOR WORD COUNT STD T3 RFS1 LDM BFMS+2,T2 ZJN RFS4 IF EMPTY LOCAL AREA LDD T2 LMD T3 ZJN RFS3 IF LOCAL AREA SECTOR MOVE NOT REQUIRED RFS2 LDM BFMS+2,T2 STM BFMS+2,T3 MOVE DATA AOD T3 LDN 0 CLEAR ENTRY STM BFMS+2,T2 AOD T2 ADVANCE INDICES AOD T1 LMN 2*5 NJN RFS2 IF NOT END OF MOVE STD T1 RFS3 LDN 2 ADVANCE SECTOR WORD COUNT RAD TI UJN RFS5 CONTINUE REFORMAT RFS4 LDN 2*5 ADVANCE SEARCH INDEX RAD T2 RFS5 LCN 2 DECREMENT WORD COUNT RAM BFMS+1 NJN RFS1 IF NOT END OF SECTOR LDD TI SET SECTOR WORD COUNT STM BFMS+1 NJN RFS6 IF NOT EMPTY SECTOR * CLEAR LOCAL AREA SECTOR BIT. CMSTF GLAP RFS6 LJM RFSX RETURN RRS SPACE 4,15 ** RRS - REREAD SYSTEM SECTOR IF TRACK INTERLOCK NOT SET. * * ENTRY (PF) = TRACK INTERLOCK STATUS. * * EXIT TO CALLER IF TRACK INTERLOCKED ON ENTRY. * * EXIT (A) = (T6) IF TRACK NO LONGER RESERVED. * = RESPONSE FROM *RSS*. * TO PREVIOUS *RSS* CALLER. * * CALLS RSS, STI. * * MACROS ENDMS. RRS SUBR ENTRY/EXIT LDD PF NJN RRSX IF FIRST TRACK INTERLOCKED ENDMS LDM RSS CHANGE RETURN TO LAST *RSS* CALLER STM RRS RJM STI SET TRACK INTERLOCK NJN RRSX IF TRACK NO LONGER RESERVED * LDN 0 REREAD SYSTEM SECTOR RJM RSS UJN RRSX RETURN SPACE 4,10 OVERFLOW OVLA,BUF OVERLAY (SHARED MASS STORAGE FUNCTIONS.),INT CSD SPACE 4,15 *** FUNCTION *CSDF* - CHECK SHARED DEVICE STATUS. * * ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS. * (T5) = EST ORDINAL. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * (WB - WB+4) = PARAMETER WORD AT ADDR. * *T, ADDR 12/ ESTO, 48/ 0 * * EXIT WHEN DEVICE UNLOADED ON OTHER MACHINES - * *T, ADDR 12/ 7777, 48/ 0 CSD ENTRY LDD LD ZJP CSD7 IF INDEPENDENT SHARED DEVICE RJM CRI CHECK RECOVERY INTERLOCK RJM GDS GET DAT TRACK ZJN CSD2 IF NOT DEFINED IN DAT LDM BFMS+2+4,TI GET MST SECTOR STD T6 LDN 0 SET SECTOR STD T7 LDM BFMS+2+5+4,TI GET DAT STATUS STD WB SETMS IO,(DF,NS) LDC BFMS READ MST FROM LINK DEVICE RJM RDS MJP GDS2 IF READ ERROR ENDMS STD T2 INITIALIZE MACHINE INDEX * CHECK UNLOAD STATUS IN OTHER MACHINES. LDC BFMS+2+STLL*5 STD TI CSD1 AOD T2 INCREMENT DEVICE INDEX LMN MXMF+1 CSD2 ZJN CSD5 IF END OF LOCAL AREAS LDI TI LPN MLDUL NJN CSD4 IF UNLOADED LDD T2 LMD MI ZJN CSD3 IF THIS MACHINE LDD WB CSDA SHN 21-0 MJN CSD6 IF DEVICE ACTIVE ON ANOTHER MACHINE UJN CSD4 ADVANCE SEARCH CSD3 LDI TI CHECK THIS MACHINE STATUS SHN 21-LIAL+LIAL/12D*12D MJN CSD4 IF DEADSTART INITIALIZE LDM 1,TI LPN 77 CHECK ERROR CONDITION LMN STLE ZJN CSD4 IF LABEL ERROR LDM 3,TI NJN CSD6 IF ACTIVE USERS ON DEVICE CSD4 LDN LLLL*5 RAD TI ADVANCE SEARCH INDEX SOM CSDA UJN CSD1 LOOP CSD5 LCN 0 STD WB RJM LDA SET ADDRESS OF PARAMETER BLOCK CWD WB LJM DPP EXIT CSD6 LDM 2,TI SET MACHINE ID IN MESSAGE STM CSDD LDC CSDC SET MESSAGE ADDRESS LJM RCL RECALL *IMS* CSD7 LDD ES+4 CHECK ERROR STATUS SHN 3 ADN STLL CRD CM LDD CM+1 LPN 77 LMN STLE ZJN CSD5 IF LABEL ERROR LDD CM SHN 21-LIAL+LIAL/12D*12D MJN CSD10 IF DEADSTART INITIALIZE LDC BFMS READ DIT TO BUFFER RJM RDT LDC MMFL GET MACHINE ID CRD T7 LDC BFMS+2 SET SEARCH INDEX STD TI CSD8 LDM 2,TI ZJN CSD9 IF SLOT NOT ASSIGNED LDM 1,TI LPN 2 NJN CSD9 IF NON-REMOVABLE DEVICE UNLOADED LDM 2,TI LMD T7 NJN CSD11 IF NOT THIS MACHINE CSD9 LDN 5 RAD TI LMC BFMS+2+5*MISD NJN CSD8 IF NOT END OF SEARCH CSD10 LJM CSD5 SET RESPONSE CSD11 LJM CSD6 SET BUSY RESPONSE CSDC DATA H* EQXXX, BUSY ON MID * CSDD DATA C*XX.* ISD SPACE 4,15 *** FUNCTION *ISDF* - INTERLOCK INDEPENDENT SHARED DEVICE. * * ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS. * (T5) = EST ORDINAL. * (ES - ES+4) = *EQDE* WORD OF EST ENTRY. * (WB - WB+4) = PARAMETER WORD AT ADDR. * *T, ADDR 12/ ESTO, 47/ 0, 1/ F * F = 0 TO CLEAR INTERLOCK. * = 1 TO SET INTERLOCK. * * EXIT * *T, ADDR 12/ 7777, 48/ 0 ISD11 LDC ISDD ISSUE MESSAGE TO DAYFILE RJM DFM LJM DPP EXIT ISD ENTRY LDD ES+4 FETCH LABEL TRACK WORD FROM MST SHN 3 ADN ALGL CRD CN LDC MMFL GET MACHINE ID CRD FN LDD CN+1 SET LABEL TRACK STD T6 LDN 0 STD T7 SETMS IO,(DE,DF,NS,RW) LDC BFMS READ LABEL SECTOR RJM RDS MJN ISD11 IF READ ERROR LDC DISS STD TI ISD1 LDM 3,TI CHECK INITIALIZE INTERLOCK LPN 1 ZJN ISD2 IF INTERLOCK NOT SET LJM ISD7 PROCESS INTERLOCK SET ISD2 LDM 4,TI LMD FN NJN ISD3 IF NOT THIS MACHINE LDD TI SAVE ADDRESS FOR THIS MACHINE ADN 3 STM ISDA ISD3 LDN 5 INCREMENT ADDRESS RAD TI LMC DISS+5*MISD NJN ISD1 IF NOT END OF SEARCH LDD WB+4 CHECK FUNCTION ZJN ISD5 IF CLEARING INTERLOCK AOM ** SET INTERLOCK ISDA EQU *-1 ISD4 RJM CDC COMPUTE LABEL CHECKSUM STM CKSS LDC BFMS+WLSF REWRITE LABEL SECTOR RJM WDS ISD5 ENDMS LCN 0 SET RESPONSE STD WB RJM LDA CWD WB LDD WB+4 ZJN ISD6 IF CLEARING INTERLOCK SMSTF LPTU SET TRT IN CM FLAG ISD6 LJM DPP EXIT ISD7 LDM 4,TI LMD FN NJN ISD8 IF NOT THIS MACHINE LDD WB+4 NJN ISD5 IF SETTING THE INTERLOCK SOM 3,TI UJP ISD4 REWRITE SECTOR ISD8 LDD ES+4 FETCH MST ERROR STATUS SHN 3 ADN STLL CRD CM LDD CM+1 CHECK ERROR STATUS LPN 77 LMN STLE ZJN ISD9 IF LABEL ERROR LDD CM SHN 21-LIAL+LIAL/12D*12D PJN ISD10 IF NOT DEADSTART INITIALIZE ISD9 LJM ISD5 SET INTERLOCK COMPLETE ISD10 LDM 4,TI SET MACHINE ID IN MESSAGE STM ISDC ENDMS LDC ISDB DISPLAY MESSAGE LJM RCL RECALL *IMS* ISDB DATA H* EQXXX, INTERLOCKED BY MID * ISDC DATA C*XX.* ISDD DATA C* EQXXX, LABEL READ ERROR.* CRI TITLE SUBROUTINES. ** CRI - CHECK RECOVERY INTERLOCK. * * EXIT TO *RCL* IF INTERLOCK NOT SET. * * USES CN - CN+4. * * CALLS IFR, RCL. CRI1 LDC 4000 SET INTERLOCK FLAG RAD CN+2 LDC MMFL STORE DAT INTERLOCK STATUS CWD CN CRI2 AOM RCLB FLAG DAT INTERLOCK SET CRI SUBR ENTRY/EXIT LDC MMFL CRD CN LDD CN+2 CHECK DAT INTERLOCKED SHN 21-13 MJN CRI2 IF INTERLOCKED BY THIS MACHINE LDN DATI GET DAT INTERLOCK RJM IFR ZJN CRI1 IF INTERLOCK SET LDC CRIA RECALL WAITING FOR INTERLOCK UJN RCL RECALL *IMS* CRIA DATA C*$WAITING - RECOVERY INTERLOCK.* RCL SPACE 4,10 ** RCL - RECALL *IMS*. * * ENTRY (A) = MESSAGE ADDRESS. * (IR - IR+4) = *IMS* CALL. RCL STM RCLA WRITE MESSAGE TO CP LDD CP ADN MS2W CWM **,TR RCLA EQU *-1 RCLB LDN 0 * LDN 1 (DAT INTERLOCK SET) ZJN RCL1 IF DAT NOT INTERLOCKED LCN DATI RJM IFR LDC MMFL CLEAR DAT INTERLOCK FLAG CRD CM LDC 4000 RAD CM+2 LDC MMFL CWD CM RCL1 LDN ZERL CRD CM LDD MA RECALL REQUEST CWM IR,ON CWD CM MONITOR RECM LJM PPR EXIT SPACE 4,10 ** COMMON DECKS. *CALL COMPCLC SPACE 4 OVERFLOW OVLA,BFMS INT SPACE 4,10 ** INT - INITIALIZE OVERLAY. * * ENTRY (IR - IR+4) = *IMS* CALL. * * EXIT (ES - RS+4) = EST ENTRY. * (WB - WB+4) = PARAMETER WORD FOR *IMS* CALL. * (T5) = EST ORDINAL FROM THE PARAMETER WORD. * * CALLS C2D, LDA. * * MACROS SFA. INT SUBR ENTRY/EXIT RJM LDA READ PARAMETER WORD CRD WB SFA EST,WB GET EST ENTRY ADK EQDE CRD ES LDD WB SET EST ORDINAL STD T5 STM EQNO RJM C2D STM CSDC+2 STM ISDB+2 STM ISDD+2 LDD WB SHN -6 ADC 2RQ0 STM CSDC+1 STM ISDB+1 STM ISDD+1 UJP INTX RETURN OVERLAY (MISCELLANEOUS FUNCTIONS.) SFL SPACE 4,10 *** FUNCTION *SFLF* - SET FLAWS. * * ENTRY (IR+3 - IR+4) = ADDRESS (ADDR) OF PARAMETERS. * *T, ADDR 12/ TYPE, 12/ 0, 12/ ESTO, 12/ 0, 12/ TRACK * * TYPE 0 = END OF TABLE. * 1 = SET FLAW. * 2 = CLEAR FLAW. SFL ENTRY LDN PNFE PARAMETER BLOCK WORD COUNT STD TI RJM LDA READ FLAW LIST CRM BUF,TI LDN 0 SET END OF BUFFER STM BUF+PNFE*5 LDM BUF+2 SET MASS STORAGE EQUIPMENT RJM SME LDD ES+4 SHN 3 ADK TDGL FETCH TRT LENGTH FROM MST CRD CN RJM TRT UPDATE TRT LDN 0 STD CA CLEAR FLAW REQUESTS PROCESSED STD T4 STD CA+1 CLEAR FLAWS NOT PROCESSED STD TI LDC MESBL-1 SET MESSAGE BUFFER ADDRESS FOR FLAWS STD TA LDN 5+1 NUMBER OF TRACKS + 1 PRINTED PER LINE STD T3 UJN SFL4 ENTER LOOP * ENTER FLAW NOT PROCESSED IN MESSAGE. SFL1 SOD T3 NJN SFL2 IF NOT YET A FULL LINE STI TA COMPLETE PREVIOUS LINE AOD T4 INCREMENT LINE COUNT LDN 5 NUMBER OF TRACKS PRINTED PER LINE STD T3 SFL2 AOD CA+1 COUNT FLAWS NOT PROCESSED AOD TA LDD T6 PLACE TRACK IN MESSAGE SHN -6 RJM C2D STI TA AOD TA LDD T6 RJM C2D STI TA AOD TA LDC 2R, STI TA * INCREMENT TO NEXT FLAW REQUEST. SFL3 AOD CA INCREMENT REQUEST COUNTER LDN 5 RAD TI ADVANCE TO NEXT REQUEST * CHECK FLAW REQUEST. SFL4 LDM BUF+4,TI CHECK TRACK BIT RJM CTB LDM BUF,TI ZJN SFL9 IF END OF LIST LDD T2 SBD CN+2 PJN SFL8 IF OUT OF TRT LDM CM,T1 CHECK LINKAGE BYTE LMC 3777 NJN SFL7 IF TRACK NOT PREVIOUSLY FLAWED LDM BUF,TI CHECK REQUEST TYPE SBN 1 SFL5 ZJN SFL3 IF SET REQUEST LDN CTFS&STFS SFL6 LMK STFS SET FLAW REQUEST RJM STB ZJN SFL5 IF NO REJECT UJN SFL8 SET FLAW NOT PROCESSED SFL7 LDM BUF,TI LMN 2 ZJN SFL5 IF CLEAR REQUEST LDD CM+4 ZJN SFL6 IF TRACK NOT RESERVED SFL8 LJM SFL1 SET FLAW NOT PROCESSED SFL9 LDD CA COMPUTE FLAWS PROCESSED SBD CA+1 RJM C2D CONVERT TO DISPLAY CODE STM MESA+4 LDC MESA * EQXXX, YY TRACKS FLAWED.* RJM DFM LDC ERLN+MESA ISSUE MESSAGE TO ERRLOG RJM DFM LDD CA+1 ZJN SFL11 IF ALL FLAWS PROCESSED RJM C2D STM MESB+4 INSERT COUNT IN MESSAGE LDC MESB RJM DFM * EQXXX, YY FLAWS NOT PROCESSED.* LDC ERLN+MESB RJM DFM LDN 0 STI TA COMPLETE LAST PARTIAL LINE LDC MESBL-3*5 STD T3 SFL10 LDN 3*5 ADVANCE TO NEXT LINE RAD T3 RJM DFM ISSUE A BUFFER OF FLAWS MESSAGE LDD T3 LMC ERLN ISSUE MESSAGE TO ERRLOG RJM DFM SOD T4 PJN SFL10 IF MORE BUFFERS TO ISSUE SFL11 LJM DPP2 INITIALIZE PACK FLAWS IDF SPACE 4,15 *** FUNCTION *IDFF* - INITIALIZE INACTIVE DAYFILES. * * ENTRY (IR+3) = 6/ N, 6/ 0 * (IR+4) = EST ORDINAL. * * N = 0 TO INITIALIZE SYSTEM DAYFILE. * = 1 TO INITIALIZE ACCOUNT FILE. * = 2 TO INITIALIZE ERRLOG FILE. * = 3 TO INITIALIZE MAINTENANCE LOG FILE. * * EXIT INACTIVE DAYFILE TRACK CHAINS RELEASED. IDF ENTRY RJM GLA GET LOCAL AREA SECTOR ZJN IDF1 IF NO DAYFILES ON DEVICE STM IDFA LDD IR+3 PICKUP FILE POINTER SHN -6 STD TI ADN 1 SET POINTER FOR CHECKPOINT REQUEST STM CKCA+4 LDM IDFA,TI IDFA EQU *-1 NJN IDF2 IF FILE ON THIS EQUIPMENT IDF1 LDC MESG * EQXXX, NO INACTIVE DAYFILES FOUND.* LJM IDF8 CLEAR INTERLOCK AND EXIT * SET DAYFILE EQUIPMENTS FOR ACTIVE FILES. IDF2 STD T6 SET FIRST TRACK LDN DFPP CRD FN DAYFILE POINTER (FN) LDD TI SHN 1 ADD TI SHN 6 ADD FN SET FWA OF DAYFILE POINTERS SHN 14 ADD FN+1 ADN 2 CRD CN READ DAYFILE FST LDD CN LPN 77 LMD T5 NJN IDF4 IF NOT ACTIVE DAYFILE LDC MESI * EQXXX, FILE ACTIVE - (NAME)* UJN IDF7 CLEAR INTERLOCK AND ISSUE MESSAGE IDF4 RJM DTS CHECK IF INTERLOCKED PJN IDF5 IF FILE FREE LDC MESJ * EQXXX, FILE BUSY - (NAME)* UJN IDF7 CLEAR INTERLOCK AND ISSUE MESSAGE * RELEASE FILE FROM SYSTEM. IDF5 RJM STI INTERLOCK FILE LMD T6 ZJN IDF6 IF TRACK NOT RESERVED STD CM+2 LDD T5 RELEASE FILE STD CM+1 MONITOR DTKM * LDN 0 INDICATE LOCAL AREA UPDATE IDF6 STM IDFD UJN IDF10 ISSUE MESSAGES IDF7 STD CM SET MESSAGE ADDRESS ADN MENM STM IDFC SET FILE TYPE ADDRESS LDM DFTY,TI STM IDFB SET FILE NAME LDD MA CWM **,ON IDFB EQU *-1 FILE NAME ADDRESS SBN 1 CRM **,ON READ FILE NAME INTO MESSAGE IDFC EQU *-1 LDD CM ISSUE DAYFILE MESSAGE ADC NMSN IDF8 RJM DFM LDC * CHECK FOR LOCAL AREA UPDATE IDFD EQU *-1 ZJN IDF9 IF LOCAL AREA UPDATE REQUIRED LJM DPP DROP PP IDF9 LDN 4 LJM CKC CHECKPOINT LOCAL AREA * ISSUE NORMAL COMPLETION MESSAGES. IDF10 LDM DFTY,TI SET FILE NAME ADDRESS STM IDFE LDD MA MOVE FILE NAME TO MESSAGE CWM **,ON IDFE EQU *-1 (FILE NAME ADDRESS) SBN 1 CRM MESH+MENM,ON LDC MESH+NMSN ISSUE DAYFILES ONLY MESSAGE UJN IDF8 * DAYFILE NAME POINTERS. DFTY CON DFDF CON DFAF CON DFEL CON DFML * DAYFILE NAMES. DFDF DATA 10HDAYFILE. DFAF DATA 10HACCOUNT. DFEL DATA 10HERRLOG. DFML DATA 10HMAINLOG. CIN SPACE 4,10 *** FUNCTION *CINF* - CLEAR INITIALIZE REQUEST. * * ENTRY (IR+4) = EST ORDINAL. CIN ENTRY LDD IR+4 STD T5 SFA EST READ EST ENTRY ADK EQDE CRD ES LDD ES+4 GET MST STATUS WORD SHN 3 ADN STLL CRD WB LDD WB CLEAR INITIALIZE FLAGS STD T1 LPN MLCKP+MRASD+MLUNL+MLDUL STD WB LDD WB+1 LPN 77 STD WB+1 CIN1 LDD ES+4 STORE DEVICE STATUS WORD SHN 3 ADN STLL CWD WB CMSTF LIAL FORCE MST UPDATE ON LINK DEVICE LDD T1 LPC MLIAL+MLIHD+MLIFD+MLIPF ZJN CIT3 IF NOT PF/FULL INITIALIZE SOD CN+2 MJN CIT3 IF NOT MMF ENVIRONMENT LPN 77 NJN CIT2 IF NOT LAST INITIALIZE REQUEST * UJN CIT CIT SPACE 4,10 *** FUNCTION *CITF* - CLEAR *CMS* INTERLOCK. * * ENTRY (IR+4) = *MSI* ABORT FLAG. CIT ENTRY LDD IR+4 NJN CIT4 IF *MSI* ABORT CIT1 LDD CN+2 CHECK DAT INTERLOCKED SHN 0-13 ZJN CIT3 IF INTERLOCK NOT SET LCN DATI CLEAR DATI INTERLOCK RJM IFR STD CN+2 CLEAR INITIALIZE COUNT CIT2 LDC MMFL CWD CN CIT3 LJM DPP DROP PP CIT4 LDM ABTB NJN CIT5 IF NOT DEADSTART SEQUENCING LDD MA STORE *UADM* PARAMETERS CWM CITA,ON LDN 1 SET WORD COUNT / NO DROP PP STD CM+1 STD CM+2 DISABLE JOB SCHEDULER MONITOR UADM CIT5 LDN NCPL READ NUMBER OF CONTROL POINTS CRD CM AOD CM+1 SET SYSTEM CONTROL POINT SHN 7 ADN MS2W STORE CONTROL POINT MESSAGE CWM CITB,TR LJM CIT1 CHECK DAT INTERLOCKED CITA CON LIOS INCREMENT BY ONE CON INWL WORD ADDRESS CON 13DS6+1 BIT POSITION + FIELD WIDTH CON 0,0 CITB DATA C*MSI ABORT.* SPACE 4,10 * COMMON DECKS. *CALL COMPDTS SPACE 4,10 OVERFLOW OVLA,BUF SPACE 4 TTL IMS - INITIALIZE MASS STORAGE. END