IDENT PFLOAD1,PFLRL,PFL,01,00 TITLE PFLOAD - PERMANENT FILE LOAD. ABS SST SYSCOM B1 SPACE 4,10 *COMMENT PFLOAD - PERMANENT FILE LOAD. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992. SPACE 4,10 *** PFLOAD - PERMANENT FILE LOAD. * D. A. HIVELEY 70/12/22. * S. T. WORSTELL 73/02/15. SPACE 4,10 *** *PFLOAD* IS A PERMANENT FILE UTILITY PROGRAM WHICH LOADS * FILES FROM AN ARCHIVE FILE ONTO A PERMANENT FILE DEVICE. * *PFLOAD* MAY BE CALLED BY THE PERMANENT FILE SUPERVISOR * OR BY A COMMAND. * * SEE *COMSPFS* FOR A DESCRIPTION OF THE PARAMETERS VALID FOR * *PFLOAD*. * * *PFLOAD* CAN PERFORM SEVERAL TYPES OF PERMANENT FILE LOADS. * AN INCREMENTAL LOAD IS PERFORMED BY READING THE CATALOG * IMAGE RECORD (CIR) FROM THE MOST RECENT SELECTIVE * *PFDUMP* (FIRST REEL OF INCREMENTAL LOAD PROCESS) AND * PLACING IT ON A RANDOM FILE. * EACH ITEM IN THE CIR REPRESENTS A FILE AT THE TIME OF THE * SELECTIVE DUMP. * WHEN READING AN ARCHIVE FILE, IF A MATCH IS FOUND ON THE * CIR, THE FILE IS A CANDIDATE FOR LOADING AND THE ENTRY IN * THE CIR IS CLEARED. ELSE, THE FILE IS SKIPPED BECAUSE IT * HAS BEEN EITHER PURGED OR PREVIOUSLY LOADED. * * DIRECT ACCESS FILES ARE LOADED TO THE DEVICE ON WHICH THEY * RESIDED WHEN DUMPED UNLESS THE DEVICE NO LONGER EXISTS OR * THE FILE IS NOT ALLOWED ON THE DEVICE (I.E. USER INDEX .LT. * *AUIMX* AND USER INDEX DOES NOT MATCH THE SECONDARY DEVICE * MASK). IF THE FILE CAN NOT BE LOADED ON THE ORIGINAL * DEVICE, IT WILL BE LOADED ON THE DESTINATION DEVICE IF * SPECIFIED (*DD* PARAMETER) AND IF THE FILE IS ALLOWED ON * THAT DEVICE. IF THE FILE CAN NOT BE LOADED ON EITHER DEVICE, * AN *ALTERNATE DEVICE NOT FOUND.* MESSAGE WILL BE ISSUED AND * THE FILE WILL BE SKIPPED. A DIRECT ACCESS FILE IS CONSIDERED * TO HAVE RESIDED ON THE MASTER DEVICE BEING LOADED IF IT * ORIGINALLY RESIDED ON ITS OWN MASTER DEVICE. IF THE *OP=L* * OPTION IS SPECIFIED, EACH DIRECT ACCESS FILE WILL BE LOADED * TO THE DEVICE WITH THE MOST SPACE AVAILABLE OF THOSE WHERE * THE DEVICE MASK ALLOWS IT TO RESIDE, REGARDLESS OF PREVIOUS * RESIDENCE OR *DD* SPECIFICATION. * * ARCHIVE FILE ERRORS MAY BE ENCOUNTERED WHEN PROCESSING A * FILE. THIS COULD BE CAUSED BY AN ERROR WHEN WRITING THE * ARCHIVE FILE (*PFDUMP*) OR READING THE ARCHIVE FILE. SUCH * THINGS AS DROPPED RECORDS, PARITY ERRORS COULD CAUSE THIS. * IF ARCHIVE FILE ERRORS ARE ENCOUNTERED THEY ARE PROCESSED BY * SETTING THE LENGTH IN THE CATALOG FOR FILES THAT ARE TOO * SHORT AND TRUNCATING EXTRA PRUS TO MATCH LENGTH SPECIFIED IN * THE CATALOG FOR FILES TOO LONG. SPACE 4,10 *** SECURITY CONSIDERATIONS. * * ON A SECURE SYSTEM, THE DEVICE SELECTED FOR A FILE TO RESIDE * ON MUST HAVE SECURITY ACCESS LEVEL LIMITS ALLOWING THE FILE-S * ACCESS LEVEL FROM THE PFC ENTRY TO RESIDE THERE. IF NO * DEVICE CAN BE FOUND, THE FILE IS SKIPPED AND A MESSAGE * ISSUED. SPACE 4,10 *** MESSAGE LEGEND. * * THE FOLLOWING LEGEND DEFINES PARAMETERS THAT ARE USED IN MANY * OF THE *PFLOAD* ERROR MESSAGES. THE DESCRIPTIVE CHARACTER * STRINGS DEFINED HERE ARE REPLACED BY THEIR ACTUAL VALUE WHEN * A PARTICULAR MESSAGE IS ISSUED. THE _ CHARACTER DOES NOT * APPEAR IN ACTUAL MESSAGES BUT IS USED IN THE DOCUMENTATION AS * A DELIMITER TO AVOID AMBIGUITIES. * * DD = DEVICE NUMBER. * EEE = EST ORDINAL. * MMMMMM = FILE COUNT. * NNNNNNN = PERMANENT FILE NAME. * UUUUUU = USER INDEX. * XXXXXXXX = COUNT OF PRU-S TRUNCATED. SPACE 4,20 *** OPERATOR MESSAGES. * * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS * APPEARING IN THESE MESSAGES. * * *LOADING NNNNNNN UUUUUU* * LOAD OF THE INDICATED FILE IS IN PROGRESS. * * *SKIPPING NNNNNNN UUUUUU* * THE INDICATED FILE IS BEING SKIPPED BECAUSE IT WAS NOT * SELECTED FOR LOAD. * * *CREATING CATALOG IMAGE RECORD* * THE CATALOG IMAGE RECORD FROM THE ARCHIVE FILE IS * BEING COPIED TO A SCRATCH FILE. * * *CLEARING UTILITY INTERLOCK* * *PFLOAD* IS WAITING FOR *PFU* TO CLEAR THE PERMANENT * FILE UTILITY INTERLOCK ON A DEVICE. * * *SETTING UTILITY INTERLOCK* * *PFLOAD* IS WAITING FOR *PFU* TO SET THE PERMANENT * FILE UTILITY INTERLOCK ON A DEVICE. SPACE 4,10 *** INFORMATIVE DAYFILE MESSAGES. * * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS * APPEARING IN THESE MESSAGES. * * * ERROR IN ARCHIVE FILE LABEL.* * THE FORMAT OF THE ARCHIVE FILE LABEL IS INCORRECT. * * * MMMMMM FILES LOADED WITH ERRORS.* * THE NUMBER OF FILES WHICH WERE LOADED BUT WHICH HAD * ERRORS IN THE FILE DATA OR PERMITS. THE PFC ENTRIES * OF SUCH FILES WILL INDICATED THE ERRORS THAT * OCCURRED. * * * MMMMMM FILES SKIPPED WITH ERRORS. * THE NUMBER OF SELECTED FILES WHICH COULD NOT BE * LOADED. * * * MMMMMM FILES LOADED. * * * READ ERRORS ENCOUNTERED ON ARCHIVE FILE.* * UNRECOVED ERRORS OCCURRED WHEN READING THE ARCHIVE * FILE. IT IS POSSIBLE THAT SOME FILES THAT SHOULD HAVE * BEEN LOADED WERE NOT FOUND. * THE NUMBER OF FILES LOADED FROM THE ARCHIVE FILE. SPACE 4,10 *** NON-FATAL ERROR DAYFILE MESSAGES. * * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS * APPEARING IN THESE MESSAGES. * * * ALTERNATE DEVICE NOT FOUND, FN=NNNNNNN, UI=UUUUUU.* * THE DEVICE NUMBER IN THE PFC ENTRY OF A DIRECT ACCESS * FILE WAS NOT FOUND IN THE SYSTEM, AND THE *DD* OR * *OP=L* OPTIONS WERE NOT SPECIFIED. THE FILE IS NOT * LOADED. * * * ARCHIVE FILE BLOCK ERROR, FN=NNNNNNN, UI=UUUUUU.* * A PFC, PERMIT, OR DATA BLOCK WAS DETECTED WITH AN * INCORRECT SUB-TYPE, AN INCORRECT LENGTH FOR THE BLOCK * TYPE, OR INCORRECT CONTENTS FOR THE BLOCK TYPE. ALSO * ISSUED WHEN PERMIT OR DATA BLOCKS WERE PRESENT OR * MISSING WHEN THEY SHOULD NOT BE BASED ON INFORMATION * IN THE PFC BLOCK OR WHEN A BLOCK OF UNKNOWN TYPE IS * ENCOUNTERED. THE FILE IS NOT LOADED. * * * ARCHIVE FILE READ ERROR, FN=NNNNNNN, UI=UUUUUU.* * A READ ERROR OCCURRED ON THE ARCHIVE FILE WHILE * PROCESSING THE INDICATED FILE. THE FILE IS NOT * LOADED. * * * DATA WRITE ERROR, FN=NNNNNNN, UI=UUUUUU.* * A MASS STORAGE ERROR OCCURRED WHILE WRITING THE * INDICATED FILE. IF DIRECT ACCESS, THE MASS STORAGE * SPACE FOR THE FILE IS DROPPED, CAUSING THE FAILING * TRACK TO BE FLAWED. IF INDIRECT ACCESS, THE FAILING * PORTION OF THE INDIRECT ACCESS FILE CHAIN IS CATALOGED * UNDER THE *FLAWPF* USER INDEX (377775) TO PREVENT * REALLOCATION. THE FILE IS NOT LOADED. * * * ERROR ON FILE PURGE, FN=NNNNNNN, UI=UUUUUU.* * THE FILE WAS FOUND IN THE SYSTEM AFTER AN ATTEMPTED * PURGE WHEN OP=R WAS SECIFIED. THIS INDICATES EITHER * THAT *PFM* ENCOUNTERED AN ERROR OR THAT A USER * RECREATED THE FILE AFTER THE PURGE BUT BEFORE *PFLOAD* * RESET THE UTILITY INTERLOCK ON THE MASTER DEVICE. * THE FILE IS NOT LOADED. * * * FILE LOAD SUPPRESSED BY ERROR OPTION, FN=NNNNNNN, * UI=UUUUUU.* * AN ERROR OCCURRED WHEN THE FILE WAS DUMPED AND THE * *PFLOAD* *EO* OPTION WAS SPECIFIED. THE FILE IS NOT * LOADED. * * * FILE TRUNCATED, FN=NNNNNNN, UI=UUUUUU.* * THE FILE ON THE ARCHIVE FILE IS TOO SHORT EITHER WITH * ERROR PADDED EOFS OR A READ ERROR. THE FILE IS * TRUNCATED AND THE LENGTH IN THE CATALOG IS UPDATED TO * REFLECT THE SMALLER SIZE. * * * INCORRECT FILE NAME/USER INDEX, OOOOOOOOOOOOOOOOOOOO.* * A FILE WITH AN INCORRECT NAME AND/OR USER INDEX WAS * ENCOUNTERED. THE FILE NAME (48 BITS) FOLLOWED BY THE * USER INDEX (18 BITS) ARE SHOWN IN OCTAL. THE ARCHIVE * FILE IS POSITIONED TO THE NEXT RECORD. * * * NO DEVICE FOR FILE ACCESS LEVEL, FN=NNNNNNN, UI=UUUUUU.* * NONE OF THE DEVICES WHERE THE FILE IS ELIGIBLE TO * RESIDE HAS SECURITY ACCESS LEVEL LIMITS THAT WILL * ALLOW THE INDICATED FILE TO RESIDE THERE. THE FILE IS * NOT LOADED. * * * NO SPACE FOR FILE, FN=NNNNNNN, UI=UUUUUU.* * THE LENGTH OF THE NAMED DIRECT ACCESS FILE WAS GREATER * THAN THE AMOUNT OF SPACE AVAILABLE ON THE DEVICE THAT * HAS BEEN SELECTED. IF *OP=L* HAS BEEN SPECIFIED, THIS * IS THE DEVICE WITH MAXIMUM SPACE OF THOSE WHERE THE * FILE IS ELIGIBLE TO RESIDE. THE FILE IS NOT LOADED. SPACE 4,10 *** FATAL ERROR DAYFILE MESSAGES. * * SEE *MESSAGE LEGEND* ABOVE FOR A DESCRIPTION OF PARAMETERS * APPEARING IN THESE MESSAGES. * * THESE ERRORS RESULT IN *PFLOAD* BEING ABORTED. * * * ARCHIVE FILE LABEL MISSING ON INCREMENTAL LOAD.* * NO ARCHIVE FILE LABEL WAS FOUND ON THE FIRST ARCHIVE * FILE OF AN INCREMENTAL LOAD SEQUENCE. * * * CATALOG IMAGE FORMAT ERROR.* * A CATALOG IMAGE RECORD WAS FOUND ON THE ARCHIVE FILE * BUT IT WAS IN A FORMAT NOT RECOGNIZED BY *PFLOAD*. IT * IS NOT POSSIBLE TO USE THE BAD ARCHIVE FILE AS THE * FIRST FILE OF AN INCREMENTAL LOAD. THE BAD ARCHIVE * FILE CAN BE USED IN A NORMAL LOAD, HOWEVER, BY USING * THE OMIT OPTION (OP=O) TO SKIP THE CATALOG IMAGE * RECORD. * * * CATALOG READ ERROR, FN=NNNNNNN, UI=UUUUUU.* * THE INDICATED FILE WAS CATALOGED IN A SECTOR AFFECTED * BY A MASS STORAGE ERROR. * * * CATALOG WRITE ERROR, FN=FFFFFFF, UI=UUUUUU.* * THE CATALOG INFORMATION FOR THE INDICATED FILE COULD * NOT BE WRITTEN BECAUSE OF A MASS STORAGE WRITE ERROR. * ERROR IDLE STATUS IS SET FOR THE MASTER DEVICE IF DATA * ON THE CATALOG FILE HAS BEEN CORRUPTED. * * * DESTINATION DEVICE NOT FOUND.* * THE DEVICE SPECIFIED ON THE *DD* PARAMETER WAS NOT * FOUND. * * * ERROR IDLE DETECTED, EQ_EEE.* * AN ERROR IDLE CONDITION HAS BEEN DETECTED ON THE * INDICATED EQUIPMENT. * * * EXTRACT OPTION REQUIRES CIR.* * THE EXTRACT OPTION WAS SPECIFIED FOR THE LOAD BUT THE * ARCHIVE FILE DID NOT CONTAIN A CATALOG IMAGE RECORD. * * * NO FILES SELECTED.* * THE FILE SELECTION PARAMETERS SPECIFIED FOR THE LOAD * WERE SUCH THAT NO DEVICES IN THE SYSTEM COULD CONTAIN * THE SPECIFIED FILES. THIS MAY BE CAUSED BY * CONFLICTING SELECTION PARAMETERS. * * * PERMIT WRITE ERROR, FN=NNNNNNN, UI=UUUUUU.* * THE PERMIT INFORMATION FOR THE INDICATED FILE COULD * NOT BE WRITTEN BECAUSE OF A MASS STORAGE ERROR. ERROR * IDLE STATUS IS SET FOR THE MASTER DEVICE IF DATA ON * THE PERMITS FILE HAS BEEN CORRUPTED. * * * SELECTED FILES NOT ON ARCHIVE FILE.* * THE FILES SELECTED FOR LOADING ARE NOT CONTAINED ON * THE ARCHIVE FILE. THIS WAS DETERMINED FROM * INFORMATION CONTAINED IN THE ARCHIVE FILE DUMP LABEL. * * * SELECTED MASTER OR TRUE DEVICE NOT FOUND.* * THE DEVICE SPECIFIED WITH THE *DN* OR *TD* PARAMETER * WAS NOT FOUND. * * * TRACK LIMIT, EQ_EEE.* * A TRACK LIMIT HAS OCCURRED ON THE INDICATED EQUIPMENT. SPACE 4,10 *** OPERATOR MESSAGES WHICH REQUIRE ACTION. * * THE FOLLOWING MESSAGES REQUIRE K-DISPLAY INPUT FOR * INCREMENTAL LOAD OPERATIONS. * * * READ ERROR IN CATALOG IMAGE DM CT.* * AN ERROR WAS ENCOUNTERED WHILE READING CATALOG IMAGE * INFORMATION FOR CATALOG TRACK *CT* FOR THE MASTER * DEVICE WITH MASK *DM*. OPERATOR ENTRY OF *K.GO.* WILL * CAUSE THE AFFECTED CATALOG TRACK TO BE SKIPPED BUT * OTHER CATALOG TRACKS TO BE PROCESSED. ENTRY OF * ANYTHING ELSE WILL CAUSE *PFLOAD* TO ABORT. * * *END OF LOAD FILE - SEE RIGHT SCREEN.* * * THE END OF AN INCREMENTAL LOAD FILE HAS BEEN * ENCOUNTERED. THE *K* DISPLAY RIGHT SCREEN DISPLAYS * THE OPTIONS AVAILABLE TO THE OPERATOR. THESE INCLUDE * TERMINATION OF THE LOAD, LISTING THE REMAINING FILES * FROM THE CATALOG IMAGE RECORD, OR SPECIFICATION OF THE * VSN OF THE NEXT TAPE IN THE INCREMENTAL LOAD SEQUENCE. COMMON SPACE 4,10 ** COMMON DECKS. *CALL COMCCMD *CALL COMCDCM *CALL COMCMAC QUAL COMSACC *CALL COMSACC QUAL * *CALL COMSCPS *CALL COMSDSP *CALL COMSLFD *CALL COMSLFM *CALL COMSMLS *CALL COMSMST QUAL MTX *CALL COMSMTX QUAL * *CALL COMSPFM LIST X *CALL COMSPFS LIST * *CALL COMSPFU *CALL COMSPRD *CALL COMSRPV *CALL COMSSFM *CALL COMSVER TITLE PROGRAM CONSTANTS. * PROGRAM CONSTANTS. NDEV EQU 10B MAXIMUM NUMBER OF MASTER DEVICES ON *CIR* NWCD EQU 201B NUMBER WORDS/CIR DIRECTORY * BUFFER LENGTHS. MBUFL EQU 30061B MAIN BUFFER LENGTH MXCBS EQU 20 MAXIMUM CATALOG BUFFER SECTOR COUNT CBUFL EQU 101B*MXCBS+1 CATALOG BUFFER LENGTH PBUFL EQU 101B*20+1 PERMIT BUFFER LENGTH DBUFL EQU 6001B DATA BUFFER LENGTH OUTBL EQU 1001B OUTPUT BUFFER LENGTH TLBFL EQU /COMSPFS/AFLBL TAPE LABEL BUFFER LENGTH FLBFL EQU 100B/NWCE*2000 FILE LIST BUFFER LENGTH FLCBL EQU 1001B FILE LIST CIRCULAR BUFFER LENGTH CWBFL EQU 1 CONTROL WORD BUFFER LENGTH MSFBL EQU 10001B *COMCMSF* SORT FILES BUFFER LENGTH PFLBL EQU 1001B PROCESSED FILES FILE BUFFER LENGTH SABFL EQU 1000B SUMMARY FILE ASSEMBLY BUFFER LENGTH SRTBL EQU 20000B SORT BUFFER LENGTH SSBFL EQU 100B SYSTEM SECTOR BUFFER LENGTH SUMBL EQU 1001B SUMMARY FILE BUFFER LENGTH TDBFL EQU 511 TEMPORARY DATA BUFFER LENGTH CIBFL EQU 3001B CATALOG IMAGE BUFFER LENGTH CIRTL EQU NWCD*NDEV+1 *CIR* CATALOG TRACK DIRECTORY LENGTH LBUFL EQU 1001B LIST CIR ENTRIES OUTPUT BUFFER LENGTH PFMBL EQU NWCE+1 *PFM* CATLIST BUFFER LENGTH DSPBL EQU 7 *DSP* PARAMETER BLOCK LENGTH ODEBL EQU 20B OPTICAL DISK EXTENSION BUFFER LENGTH * MISCELLANEOUS CONSTANTS. CWSW EQU 5 CONTROL WORD STATUS WORD IN FET FEDT EQU 1 FILE DATA ERROR CODE FEPM EQU 2 FILE PERMIT ERROR CODE DLSS EQU 4 DATA LINKAGE SYSTEM SECTOR CODE DLEI EQU 2 DATA LINKAGE EOI CODE DLEF EQU 1 DATA LINKAGE EOF CODE NCES EQU 100B/NWCE NUMBER OF CATALOG ENTRIES PER SECTOR * *COMSPFS* EQUIVALENCES. CPAR EQU /COMSPFS/CPL IDSA EQU /COMSPFS/PADR LBWD EQU /COMSPFS/LBWD * *SETPFP*/*GETPFP* FLAG CONSTANTS. FMPR EQU 10B FAMILY NAME PARAMETER FLAG PKPR EQU 4 PACKNAME PARAMETER FLAG UNPR EQU 2 USER NAME PARAMETER FLAG UIPR EQU 1 USER INDEX PARAMETER FLAG TITLE RESERVED LOCATIONS. ORG /COMSPFS/OVLB * RESERVED LOCATIONS. PFLRL BSS 0 ACEA DATA 77000B END OF ARCHIVE FILE CONTROL WORD AFLI VFD 60/0LPFDUMP ARCHIVE FILE LABEL IDENTIFIER ANCE CON 0 ADDRESS OF NEW CATALOG ENTRIES AREF CON 0 ARCHIVE FILE READ ERROR FLAG BFCA CON 0 BAD FILE CATALOG ADDRESS CBFO CON 1 CATALOG BUFFER ORDINAL CCTR CON 0 CURRENT CATALOG TRACK CEWF CON 0 CATALOG ENTRIES WRITTEN FLAG CIFC CON 0 *CIR* REMAINING FILE COUNT CSWC CON 0 CATALOG SECTOR WORD COUNT DDMA CON 0 DESTINATION DEVICE *MSTT* ADDRESS EOLF CON 0 END OF LOAD FLAG FLOF CON 0 FILE LIST OVERFLOW FLAG FLPT CON 0 FILE LIST POINTER INCF CON 0 INCREMENTAL LOAD FLAG IPFF CON 0 INCOMPLETE PERMANENT FILE FLAG MAEQ CON 0 MASTER DEVICE EST ORDINAL MMSK CON 0 CURRENT MASTER MASK NCTR CON 0 NUMBER OF CATALOG TRACKS PAFL CON 0 *PFU* ACTIVE FLAG PFCO CON 0 PFC ONLY FLAG RCWF CON 0 CONTROL WORD RE-USE FLAG RICT CON 0 RANDOM INDEX COUNTER SKER CON 0 SKIP TO EOR FLAG UDAT CON 0 UTILITY CONTROL DATE UPDATE FLAG TFST BSSZ NCES*MXCBS FILE STATUS TABLE TITLE MESSAGE CONSTANTS. * DISPLAYED MESSAGE CONSTANTS. MSGA DATA 10HLOADING MSGC DATA 40C PFLOAD DEVICE FAM/PACK MSGE DATA 10HSKIPPING MSGH DATA 40HEND OF LOAD FILE - SEE RIGHT SCREEN. MSGJ DATA 30C SETTING UTILITY INTERLOCK. MSGK DATA 30C CLEARING UTILITY INTERLOCK. MSGP DATA 40CENTERED VSN TOO LONG. MSGQ DATA 40CNO VSN ENTERED. MSGT DATA 40HINCORRECT OPTION. MSGV DATA 40CARCHIVE LABEL BAD, SELECT NEW VSN. MSGW DATA C*$REQUEST K DISPLAY.* BLNK DATA 40H SPACE 4,10 * ERROR MESSAGES. ERAB DATA C* ARCHIVE FILE BLOCK ERROR, FN=???????, UI=!!!!!!.* ERAL DATA C* ERROR IN ARCHIVE FILE LABEL.* ERAN DATA C* ALTERNATE DEVICE NOT FOUND, FN=???????, UI=!!!!!!.* ERAR DATA C* ARCHIVE FILE READ ERROR, FN=???????, UI=!!!!!!.* ERCR DATA C* CATALOG READ ERROR, FN=???????, UI=!!!!!!.* ERCW DATA C* CATALOG WRITE ERROR, FN=???????, UI=!!!!!!.* ERDW DATA C* DATA WRITE ERROR, FN=???????, UI=!!!!!!.* EREO DATA C* FILE LOAD SUPPRESSED BY ERROR OPTION, FN=???????, UI ,=!!!!!!.* ERER DATA C* MISSING EOR, FN=???????, UI=!!!!!!.* ERFT DATA C* FILE TRUNCATED, FN=???????, UI=!!!!!!.* ERID DATA C* ERROR IDLE DETECTED, FN=???????, UI=!!!!!!.* ERIN DATA C* INCORRECT NAME/INDEX, FN=???????, UI=!!!!!!.* ERIS DATA C* ERROR IDLE SET, FN=???????, UI=!!!!!!.* ERND DATA C* NO DEVICE FOR FILE ACCESS LEVEL, FN=???????, UI=!!!! ,!!.* ERNE DATA C* NO EOI FOR FILE, FN=???????, UI=!!!!!!.* ERNS DATA C* NO SPACE FOR FILE, FN=???????, UI=!!!!!!.* ERPE DATA C* ERROR ON FILE PURGE, FN=???????, UI=!!!!!!.* ERPW DATA C* PERMIT WRITE ERROR, FN=???????, UI=!!!!!!.* ERTL DATA C* TRACK LIMIT, FN=???????, UI=!!!!!!.* SPACE 4,10 * FILE COUNT MESSAGES. LDMS DATA C* ?????? FILE! LOADED.* SEMS DATA C* ?????? FILE! SKIPPED WITH ERRORS.* LEMS DATA C* ?????? FILE! LOADED WITH DATA ERRORS.* SPACE 4,10 * INFORMATIVE MESSAGES. AEMS DATA C* READ ERRORS ENCOUNTERED ON ARCHIVE FILE.* TITLE FETS. * FETS. CATS BSS 0 CATALOG TRACKS ZZZZZG1 FILEB CBUF,CBUFL,FET=10D PETS BSS 0 PERMIT ENTRIES ZZZZZG2 FILEB PBUF,PBUFL,FET=10D DATA BSS 0 FILE DATA ZZZZZG3 FILEB DBUF,DBUFL,FET=10D T BSS 0 ARCHIVE FILE TAPE FILEB MBUF,MBUFL,EPR,FET=14D ORG TAPE+8 VFD 1/0,1/1,58/0 ORG TAPE+14 ODEB BSSZ ODEBL OPTICAL DISK EXTENSION BUFFER CIRF BSS 0 CATALOG IMAGE RECORD ZZZZZG4 RFILEB CIBF,CIBFL,FET=10D FO BSS 0 FILE LIST OVERFLOW ZZZZZG5 FILEB FLCB,FLCBL,FET=10D P BSS 0 PURGE, CATLIST FET FOR OP=R PURG FILEB PFMB,PFMBL,EPR,FET=13 LCIR BSS 0 OUTPUT ZZZZZG6 FILEB LBUF,LBUFL,FET=10D UIFT FILEB 0,0,(FET=10) FET TO CONTROL UTILITY INTERLOCK UIFL BSSZ 1 UTILITY INTERLOCK FLAG ** NOTE - THE STATUS PORTION OF THE *CATS*, *PETS*, AND *DATA* * FETS ARE USED IN THE FOLLOWING MANNER. * *T, 42/ FILENAME,14/0,1/ C,1/ R,1/ W,1/ F * * C = COMPLETION OF LOAD (*DATA*). * R = FORCED READ - FILL BUFFER (*CATS*). * W = FORCED WRITE - EMPTY BUFFER (ALL FILES). * F = *PFU* FINISHED. TITLE MAIN LOOP. * MAIN LOOP. PFL RJ PRS PRESET PROGRAM * CHECK FOR END OF LOAD. PFL1 RJ CEL CHECK FOR END OF LOAD ZR X6,PFL2 IF NOT END OF LOAD RJ EOL PROCESS END OF LOAD EQ END TERMINATE PFL2 RJ PCB PROCESS CATALOG BLOCK ZR X6,PFL1 IF FILE NOT TO BE LOADED * CHECK FOR PERMIT ENTRIES. RJ RCW READ CONTROL WORD SX1 X1+2 ZR X1,PFL1 IF READ ERROR SX5 X3-2 BLOCK CODE SA4 TCBF+FCRI CATALOG PERMIT RANDOM INDEX LX4 24 MX0 36 BX4 -X0*X4 NZ X5,PFL5 IF NO PERMITS ON ARCHIVE FILE NZ X4,PFL4 IF PERMIT RANDOM INDEX PRESENT PFL3 SA1 TCBF+FCUI SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* RJ SFE SEND ERROR MESSAGE RJ SER SKIP TO END OF RECORD EQ PFL1 FILE NOT TO BE LOADED * PROCESS PERMITS. PFL4 RJ PPB PROCESS PERMIT BLOCK ZR X6,PFL1 IF FILE NOT TO BE LOADED EQ PFL6 PROCESS DATA PFL5 ZR X4,PFL7 IF NO PERMITS IN CATALOG EQ PFL3 PROCESS ARCHIVE FILE ERROR * PROCESS DATA. PFL6 RJ RCW READ CONTROL WORD PFL7 SA1 PFCO *PFC ONLY* FLAG NG X3,PFL10 IF PHYSICAL EOR ON ARCHIVE MEDIUM BX5 X3 SX3 X3-3 BX4 X1+X3 NG X4,PFL8 IF NO DATA BLOCK PRESENT ZR X4,PFL11 IF DATA PRESENT AND *PFC ONLY* ZR X3,PFL10 IF DATA PRESENT PFL8 NZ X1,PFL11 IF NO DATA AND NOT *PFC ONLY* PFL9 RJ WCE WRITE CATALOG ENTRY EQ PFL1 CHECK FOR END OF LOAD PFL10 ZR X1,PFL9 IF PFC ONLY RJ PDB PROCESS DATA BLOCK NZ X6,PFL9 IF FILE TO BE LOADED EQ PFL1 CHECK FOR END OF LOAD PFL11 NG X5,PFL12 IF ARCHIVE MEDIUM AT EOR/EOF/EOI RJ SER SKIP TO EOR PFL12 SA1 TCBF+FCUI SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* RJ SFE SEND ERROR MESSAGE EQ PFL1 CHECK FOR END OF LOAD TITLE SUBROUTINES. APR SPACE 4,15 ** APR - ABORT PROCESSOR. * * EXIT ANY INCOMPLETE PERMANENT FILE DELETED. * COMPLETE PERMANENT FILES FLUSHED TO MASS STORAGE. * UTILITY PROCESSOR DROPPED. * UTILITY INTERLOCK CLEAR. * PERMANENT FILE PARAMETERS RESTORED. * *PFLOAD* SYSTEM FILES RETURNED. * * CALLS CIN, DUP, FPF. * * MACROS RETURN, SETPFP. APR SUBR ENTRY/EXIT RJ FPF FLUSH PERMANENT FILES RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK SETPFP GPAR RESTORE PERMANENT FILE PARAMETERS RETURN CATS RETURN *PFLOAD* SYSTEM FILES RETURN PETS RETURN DATA RETURN CIRF RETURN FO EQ APRX RETURN ADF SPACE 4,20 ** ADF - ASSIGN DIRECT ACCESS FILE DEVICE. * * ENTRY PFC ENTRY IN *TCBF*. * * EXIT (B2) = 0 IF DEVICE ASSIGNED. * (B2) = ERROR MESSAGE ADDRESS IF NO DEVICE ASSIGNED. * (X7) = *MSTT* ADDRESS OF DEVICE IF DEVICE ASSIGNED. * (X7) = *MSTT* ADDRESS OF DEVICE IF NO SPACE FOR FILE * ERROR AND FILE MUST RESIDE ON ON THAT DEVICE. * (X7) = 0 IF NO SPACE FOR FILE ERROR AND DEVICE * SELECTION BY LOAD LEVELING. * * USES X - 1, 2, 3, 4, 5, 6, 7. * A - 1, 2, 3, 4, 5. * B - 2, 6. * * CALLS CAL, RAS, SFD, SRD. ADF9 SB2 B0+ SET NO ERROR ADF SUBR ENTRY/EXIT * CHECK AUXILIARY DEVICE LOAD. SA2 CPAR+/COMSPFS/CPPN SA4 TCBF+FCUI GET USER INDEX SA1 CPAR+/COMSPFS/CPOP GET UTILITY OPTIONS ZR X2,ADF1 IF NOT AUXILIARY DEVICE LOAD SA5 MSTT+1 GET DEVICE PARAMETERS EQ ADF4 CHECK ACCESS LEVEL AND SPACE AVAILABLE * CHECK LOAD LEVELING OPTION AND SUBFAMILY USER INDEX. ADF1 SA3 TCBF+FCDN GET DEVICE NUMBER FROM CATALOG MX6 -3 BX6 -X6*X4 LAST DIGIT OF USER INDEX BX4 X4-X6 SB6 X6+8-59 SET DAPF MASK SHIFT COUNT SX4 X4-SBUI SX2 B0+ SET MASTER DEVICE ZR X4,ADF2 IF SUBFAMILY USER INDEX LX3 -36 LX1 59-54 MX6 -6 NG X1,ADF5 IF *OP=L* SPECIFIED BX2 -X6*X3 DEVICE NUMBER FROM PFC * SEARCH FOR DEVICE IN CURRENT SYSTEM. ADF2 RJ SFD SEARCH FOR DEVICE ZR X1,ADF3 IF DEVICE NOT FOUND SA5 A1+B1 GET DEVICE PARAMETERS AX6 X5,B6 ZR X4,ADF4 IF SUBFAMILY USER INDEX, IGNORE DAPF MASK NG X6,ADF4 IF USER INDEX ALLOWED ON DEVICE * CHECK DESTINATION DEVICE IF DEVICE FROM PFC NOT FOUND. ADF3 SA1 DDMA GET DESTINATION DEVICE *MSTT* ADDRESS ZR X1,ADF7 IF DESTINATION DEVICE NOT SPECIFIED SA5 X1+B1 GET DEVICE PARAMETERS AX6 X5,B6 PL X6,ADF7 IF USER INDEX NOT ALLOWED ON DEVICE * CHECK ACCESS LEVELS AND SPACE ON DEVICE. ADF4 RJ CAL CHECK ACCESS LEVELS NG X6,ADF8 IF ACCESS LEVEL ERROR SX3 B0 SET NO SPACE INCREMENT RJ RAS RETURN AVAILABLE SPACE SX7 A5-B1 SET DEVICE POINTER NZ X1,ADF9 IF SPACE FOR FILE ON DEVICE EQ ADF6 PROCESS NO SPACE FOR FILE * PROCESS LOAD LEVELING OPTION. ADF5 RJ SRD SELECT RESIDENCY DEVICE SX7 B2 SET DEVICE POINTER GT B2,B1,ADF9 IF DEVICE FOUND SX7 B0 CLEAR DEVICE POINTER FOR NO SPACE ERROR NG B2,ADF7 IF NO DEVICE FOR USER INDEX ZR B2,ADF8 IF NO DEVICE FOR ACCESS LEVEL * PROCESS FILE ASSIGNMENT ERRORS. ADF6 SB2 ERNS * NO SPACE FOR FILE ...* EQ ADFX RETURN ADF7 SB2 ERAN * ALTERNATE DEVICE NOT FOUND ...* EQ ADFX RETURN ADF8 SB2 ERND * NO DEVICE FOR FILE ...* EQ ADFX RETURN AUP SPACE 4,20 ** AUP - ACTIVATE UTILITY PROCESSOR. * * (PAFL) = 0 IF *PFU* NOT ACTIVE. * = 1 IF *PFU* ALREADY ACTIVE. * (MAEQ) = MASTER EQUIPMENT. * (CPDN) = DEVICE NUMBER. * (TCBF+FCUI) = USER INDEX TO ACTIVATE *PFU* ON. * * EXIT (PAFL) = 1. * (RICT) = RANDOM INDEX OF *PETS* EOI. * *PFU* ACTIVATED IF NOT ALREADY ACTIVE. * *CATS* AND *PETS* FILES SET UP FOR PROCESSING. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 3, 6, 7. * * CALLS RCT. * * MACROS CALLPFU, RECALL. AUP SUBR ENTRY/EXIT SA2 PAFL *PFU* ACTIVITY FLAG SA3 MAEQ NZ X2,AUPX IF *PFU* ALREADY ACTIVE SA2 CPAR+/COMSPFS/CPDN LX3 23-11 SET MASTER EQUIPMENT BX6 X3 SA1 FAPM SET FET ADDRESS PARAMETER SA6 DATA+FTDW LX2 54 SET DEVICE NUMBER BX7 X2+X1 SA7 CATS+FTPM SA1 CATS CLEAR FET STATUS FIELDS SA2 PETS MX3 42 BX6 X3*X1 SX1 B1 SET *CATS* FET COMPLETE BX7 X6+X1 SA7 A1 BX6 X3*X2 SA1 DATA SA6 A2 BX7 X3*X1 SA7 A1 BX6 X6-X6 CLEAR SECTOR COUNTS SA6 CATS+FTSC SA6 PETS+FTSC SA6 DATA+FTSC SA6 DATA+FTDL CLEAR DATA FILE STATE WORD CALLPFU CATS,CTLM ACTIVATE *PFU* LOAD PROCESSOR RECALL DATA WAIT FOR *PFU* TO INITIALIZE RJ RCT READ CATALOG TRACK SA1 PETS+FTSC SET PETS RANDOM INDEX MX2 24 BX6 X2*X1 LX6 -36 SA6 RICT EQ AUPX RETURN FAPM VFD 6/0,18/DATA,18/PETS,18/PAFL FET ADDRESS PARAMETER BFL SPACE 4,30 ** BFL - BUILD FILE LIST. * * ENTRY (A0) = ADDRESS OF CATALOG SECTOR. * (X0) = WORD COUNT OF CATALOG SECTOR. * (CSWC) = WORD COUNT OF CATALOG SECTOR. * (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * * EXIT (A0) = LWA+1 OF CATALOG SECTOR. * (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * FILE NAME AND USER INDEX FOR EACH CATALOG ENTRY IS * ADDED TO THE FILE LIST. * OVERFLOW PORTIONS OF THE FILE LIST ARE WRITTEN TO A * SCRATCH FILE. * SCRATCH FILE BUFFER IS FLUSHED IF FILE LIST OVERFLOW * HAS OCCURRED AND THE CATALOG SECTOR IS SHORT. * * USES X - 0, 1, 2, 5, 6, 7. * A - 0, 1, 5, 6, 7. * * MACROS WRITE, WRITEW. BFL SUBR ENTRY/EXIT BFL1 SX0 X0-NWCE NG X0,BFL3 IF NO MORE CATALOG ENTRIES SA5 A0+FCFN+FCUI*0 GET FILE NAME AND USER INDEX SA1 FLPT MX6 -18 BX6 -X6*X5 CHECK USER INDEX ZR X6,BFL2.2 IF CATALOG HOLE SX6 X6-IFUI SX2 X1-FLBF-FLBFL ZR X6,BFL2.2 IF INDIRECT ACCESS FLAW NG X2,BFL2 IF FILE LIST NOT FULL SX6 B1+ SET FILE LIST OVERFLOW SA6 FLOF WRITEW FO,FLBF+FLBFL-100B,100B WRITE LAST SECTOR OF BUFFER SA1 FLPT BACK BUFFER POINTER UP ONE SECTOR SX1 X1-100B BFL2 SX6 X1+B1 ADVANCE BUFFER POINTER BX7 X5 SA6 A1 UPDATE BUFFER POINTER SA7 X1 ENTER FILE IN LIST BFL2.2 SA0 A0+NWCE ADVANCE CATALOG SECTOR ADDRESS EQ BFL1 PROCESS NEXT CATALOG ENTRY BFL3 SX2 A0+NWCE SET POINTER TO END OF SECTOR IX0 X0+X2 SA0 X0 SA1 CSWC SX2 X1-100B ZR X2,BFLX IF NOT SHORT SECTOR SA1 FLOF ZR X1,BFLX IF NO FILE LIST OVERFLOW WRITE FO FLUSH SCRATCH FILE BUFFER EQ BFLX RETURN CAL SPACE 4,15 ** CAL - CHECK ACCESS LEVELS. * * ENTRY (TCBF) = CATALOG ENTRY OF FILE. * (X5) = SECOND WORD OF *MSTT* ENTRY. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY. * * EXIT (X6) .LT. 0 IF THE ACCESS LEVEL OF THE FILE IS NOT * WITHIN THE DEVICE ACCESS LEVEL LIMITS OF THE * DEVICE. * (X5) = SECOND WORD OF *MSTT* TABLE ENTRY. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY. * * USES X - 0, 1, 5, 6, 7. * A - 1. CAL SUBR ENTRY/EXIT SA1 SYSS CHECK SECURITY MODE SX6 B0+ SET NO ERROR ZR X1,CALX IF NOT SECURE SYSTEM SA1 TCBF+FCAL GET ACCESS LEVEL OF FILE MX0 -3 LX5 -30 BX6 -X0*X5 DEVICE ACCESS LEVEL UPPER LIMIT LX5 -3 LX1 -36 BX7 -X0*X5 DEVICE ACCESS LEVEL LOWER LIMIT BX1 -X0*X1 FILE ACCESS LEVEL LX5 33 RESTORE *MSTT* WORD IX6 X6-X1 NG X6,CALX IF ACCESS LEVEL TOO HIGH FOR DEVICE IX6 X1-X7 ERROR IF ACCESS LEVEL TOO LOW FOR DEVICE EQ CALX RETURN CDE SPACE 4,20 ** CDE - CHECK DEVICE ENVIRONMENT. * * ENTRY PFC ENTRY IN *TCBF*. * * EXIT (B2) = 0 IF NO ERROR. * (B2) = ERROR MESSAGE ADDRESS IF FILE CANNOT BE LOADED. * (X7) = PFC ENTRY *FCDN* WORD SET WITH DEVICE NUMBER IF * NO ERROR. * (X7) = *MSTT* ADDRESS OF REQUIRED DEVICE IF NO SPACE * FOR FILE ERROR AND LOAD LEVELING NOT USED. * (X7) = 0 IF NO SPACE FOR FILE ERROR AND LOAD LEVELING * USED IN DEVICE SELECTION. * * USES X - 1, 2, 5, 6, 7. * A - 1, 2, 5, 6. * B - 2. * * CALLS ADF, CAL, SFD. CDE SUBR ENTRY/EXIT * CHECK MASTER DEVICE ACCESS LEVELS. SX2 B0 SET MASTER DEVICE SEARCH RJ SFD SEARCH FOR DEVICE SA5 A1+B1 RJ CAL CHECK ACCESS LEVEL SB2 ERND * NO DEVICE FOR FILE ...* NG X6,CDEX IF MASTER DEVICE ACCESS LEVEL CONFLICT SA1 TCBF+FCBS CHECK FILE TYPE SA2 PFCO LX1 59-11 SX6 B0 SET TO CLEAR DEVICE NUMBER PL X1,CDE1 IF INDIRECT ACCESS FILE ZR X2,CDE1 IF *PFC ONLY* FILE RJ ADF ASSIGN DIRECT ACCESS FILE DEVICE NZ B2,CDEX IF ERROR IN DEVICE ASSIGNMENT * CHECK MASTER DEVICE ASSIGNMENT. SA1 X7+ GET DEVICE NUMBER FROM *MSTT* SA2 CPAR+/COMSPFS/CPDN MASTER DEVICE NUMBER MX6 -6 BX6 -X6*X1 DEVICE NUMBER BX2 X6-X2 NZ X2,CDE1 IF SELECTED DEVICE IS NOT MASTER SX6 B0 CLEAR DEVICE NUMBER * SET DEVICE NUMBER IN *FCDN* WORD. CDE1 SA1 TCBF+FCDN MX7 -6 LX7 36 LX6 36 BX7 X7*X1 SB2 B0 SET NO ERROR BX7 X7+X6 MERGE DEVICE NUMBER EQ CDEX RETURN CEL SPACE 4,20 ** CEL - CHECK FOR END OF LOAD. * * ENTRY (SKER) = 0 IF SKIP TO EOR NOT REQUIRED. * = NON-ZERO IF SKIP TO EOR REQUIRED. * * EXIT (X6) = 0 IF NOT END OF LOAD. * = NON-ZERO IF END OF LOAD. * (CWBF) = CATALOG CONTROL WORD IF NOT END OF LOAD. * ARCHIVE FILE TRANSITIONS PERFORMED AS NECESSARY. * ARCHIVE LABEL PROCESSED IF PRESENT. * * USES X - 1, 2, 5, 6, 7. * A - 1, 2, 6. * B - 2. * * CALLS ART, CIN, DUP, IFL, PAL, RCW, SCI, SER. * * MACROS READCW, RECALL, SKIPFF. CEL SUBR ENTRY/EXIT * PROCESS FILE SKIP FLAG. SA1 SKER ZR X1,CEL1 IF FILE SKIP FLAG NOT SET BX6 X6-X6 CLEAR FILE SKIP FLAG SA6 A1 RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK RJ SER SKIP TO END OF RECORD * CHECK IF ALL SELECTED FILES HAVE BEEN LOADED. CEL1 SA1 AFDM GET ARCHIVE FILE DEVICE MASK SA2 FLSM GET REMAINING FILE SELECTIONS MASK SA3 CPAR+/COMSPFS/CPDI SA4 MASK GET ACTIVE DEVICES MASK BX1 X1*X2 NZ X3,CEL1.1 IF DESTINATION USER INDEX SPECIFIED BX1 X1*X4 CEL1.1 ZR X1,CEL10 IF LAST ARCHIVE FILE AND NO FILES SELECTED SA1 /COMSPFS/FISP SA2 /COMSPFS/NFIS ZR X1,CEL2 IF NO USER INDEX/FILE NAME SELECTIONS ZR X2,CEL10 IF ALL SPECIFIED FILES FOUND CEL2 SA1 INCF ZR X1,CEL2.1 IF NOT INCREMENTAL LOAD SA1 CIFC ZR X1,CEL10 IF END OF CATALOG IMAGE CEL2.1 SA2 EOLF ZR X2,CEL3 IF END OF LOAD NOT REACHED SA2 CPAR+/COMSPFS/CPNB SB2 X2+ LE B2,B1,CEL9 IF FILE COUNT ONE CEL2.2 RJ SER SKIP TO END OF RECORD PL X1,CEL2.2 IF NOT EOF/EOI EQ CEL7 PROCESS EOF/EOI * PROCESS NEXT ARCHIVE FILE CONTROL WORD. CEL3 RJ RCW READ ARCHIVE FILE CONTROL WORD SX6 X3-1 NZ X7,CEL5 IF READ ERROR ZR X6,CELX IF CATALOG CONTROL WORD ZR X3,CEL4 IF LABEL CONTROL WORD NG X1,CEL7 IF EOF/EOI NZ X1,CEL3 IF EOR SA1 CWBF CHECK FOR END OF LOAD SA2 ACEA BX6 X1-X2 ZR X6,CEL6 IF END OF ARCHIVE FILE CONTROL WORD RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK RJ SER SKIP TO END OF RECORD EQ CEL3 GET NEXT CONTROL WORD * PROCESS ARCHIVE FILE LABEL. CEL4 RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK SX6 B1+ SET CONTROL WORD RE-USE FLAG SA6 RCWF RJ PAL PROCESS ARCHIVE LABEL ZR X6,CEL8 IF NOT A BAD LABEL RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING SB2 ERAL * ERROR IN ACHIVE FILE LABEL.* RJ SEM EQ CEL3 GET NEXT CONTROL WORD * PROCESS ARCHIVE FILE READ ERROR. CEL5 RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK RJ SER SKIP TO END OF RECORD EQ CEL3 GET NEXT CONTROL WORD * PROCESS END OF ARCHIVE FILE CONTROL WORD. CEL6 RECALL TAPE SA1 X2+B1 REWIND BUFFER SX6 X1 SA6 A1+B1 SA6 A6+B1 SX6 30B CHECK FOR EOF/EOI ON ARCHIVE FILE SA1 X2 BX7 X6*X1 BX6 X7-X6 ZR X6,CEL7 IF ARCHIVE FILE AT EOF/EOI SKIPFF X2,B1,R SKIP TO EOF * PROCESS MULTIPLE FILE ARCHIVE OPTION. CEL7 SA1 TAPE LX1 59-9 NG X1,CEL9 IF ARCHIVE FILE AT EOI SA1 CPAR+/COMSPFS/CPNB CHECK FILE COUNT SB2 X1 SX6 B2-B1 LE B2,B1,CEL9 IF NO MORE FILES TO PROCESS SA6 A1+ SET NEW FILE COUNT RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK RJ PSF PROCESS SORTED FILE OUTPUT FOR LAST FILE READCW TAPE,17B INITIALIZE CONTROL WORD READ SX6 B0+ CLEAR CONTROL WORD STATUS WORD SA6 TAPE+CWSW RJ PAL PROCESS ARCHIVE LABEL ZR X6,CEL8 IF NOT BAD LABEL SB2 ERAL * ERROR IN ACHIVE FILE LABEL.* RJ SEM RJ SER SKIP TO END OF RECORD CEL8 RJ SCI SKIP CATALOG IMAGE RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING EQ CEL3 GET NEXT CONTROL WORD * CHECK INCREMENTAL LOAD STATUS. CEL9 SA1 INCF ZR X1,CEL10 IF NOT INCREMENTAL LOAD SA1 CIFC ZR X1,CEL10 IF END OF CATALOG IMAGE RJ PSF PROCESS SORTED FILE OUTPUT SX6 B0+ SA6 EOLF CLEAR END OF LOAD FLAG ON INCREMENTAL LOAD SA6 MXDC CLEAR DEVICE POSITION AND CATALOG TRACK SX6 377B SA6 AFDM RESET ARCHIVE FILE DUMP MASK RJ ART ADVANCE INCREMENTAL LOAD ZR X6,CEL8 IF NOT END OF INCREMENTAL LOAD * SET END OF LOAD STATUS. CEL10 SX6 B1 SET END OF LOAD STATUS EQ CELX RETURN CIN SPACE 4,15 ** CIN - CLEAR PF UTILITY INTERLOCK. * * ENTRY (UIFL) = 0 IF UTILITY INTERLOCK NOT SET. * = 1 IF UTILITY INTERLOCK SET. * (MAEQ) = EQUIPMENT TO CLEAR INTERLOCK ON. * * EXIT (UIFL) = 0. * *PFU* CALLED TO CLEAR UTILITY INTERLOCK IF NOT ALREADY * CLEAR. * * USES X - 1, 2, 3, 6. * A - 1, 2, 3, 6. * * MACROS CALLPFU, MESSAGE, MOVE. CIN SUBR ENTRY/EXIT SA1 UIFL CHECK PF UTILTIY INTERLOCK FLAG SA2 MAEQ SET MASTER DEVICE EST ORDINAL ZR X1,CINX IF UTILITY INTERLOCK ALREADY CLEAR SX1 UIFL SET INTERLOCK FLAG ADDRESS LX2 48 BX6 X2+X1 SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS SA6 UIFT+FTPM MOVE 3,MSGK,X3 * CLEARING UTILITY INTERLOCK.* MESSAGE MSGK,2,R CALLPFU UIFT,CTCU,R CLEAR PF UTILITY INTERLOCK SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS MOVE 3,BLNK,X3 CLEAR MESSAGES MESSAGE (=C**),2,R EQ CINX RETURN CSP SPACE 4,20 ** CSP - CHECK SELECTION PARAMETERS. * * ENTRY (CPAR) = CONVERTED PARAMETER ARRAY. * (TCBF) = CATALOG ENTRY FOR CURRENT FILE. * * EXIT (X6) = 0 IF FILE NOT TO BE LOADED. * (X6) .NE. 0 IF FILE TO BE LOADED. * DESTINATION USER INDEX SET IN *TCBF* CATALOG ENTRY IF * SPECIFIED. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 2, 3, 4, 6, 7. * B - 2, 4. * * CALLS CSC. CSP SUBR ENTRY/EXIT * CHECK SELECTION CRITERIA. SB4 TCBF SET PFC ADDRESS RJ CSC CHECK SELECTION CRITERIA ZR X6,CSPX IF FILE NOT TO BE LOADED ZR B6,CSP2 IF NO FILE NAME SELECTION SA1 CPAR+/COMSPFS/CPOP SA2 CPAR+/COMSPFS/CPNB SA3 /COMSPFS/NFIS SA4 B6+ READ FILE NAME ENTRY SX6 B1 LX1 59-52 SB4 X2 IX7 X3-X6 DECREMENT FILE SELECTION COUNT PL X1,CSP1 IF REPLACE OPTION NOT SELECTED GT B4,B1,CSP2 IF NOT LAST ARCHIVE FILE CSP1 LX6 17-0 SA7 A3 UPDATE FILE SELECTION COUNT BX6 X6+X4 SET FILE FOUND FLAG SA6 B6 WRITE FILE NAME ENTRY * PROCESS DESTINATION USER INDEX AND DETERMINE IF FILE-S MASTER * DEVICE SELECTED FOR LOAD. CSP2 SA1 CPAR+/COMSPFS/CPDI SA2 TCBF+FCUI SA3 MASK MX7 -3 MX0 -1 ZR X1,CSP3 IF DESTINATION USER INDEX NOT SPECIFIED MX6 42 BX6 X6*X2 BX6 X6+X1 SET DESTINATION INDEX IN CATALOG ENTRY BX2 X1 SA6 A2+ CSP3 BX2 -X7*X2 USER INDEX BITS 0 - 2 SB2 X2 AX6 X3,B2 SELECT MASK BIT BX6 -X0*X6 ZR X6,CSPX IF USER INDEX NOT TO BE LOADED * CHECK TRUE DEVICE SELECTION. SA1 CPAR+/COMSPFS/CPTD ZR X1,CSPX IF NO TRUE DEVICE SELECTION SA2 TMDA+X2 SA3 TCBF+FCDN SA2 X2+ MX0 -6 LX3 24 BX2 -X0*X2 MASTER DEVICE NUMBER BX3 -X0*X3 OLD RESIDENCY DEVICE NUMBER IX2 X2-X1 BX3 X3-X1 ZR X2,CSPX IF FILE CATALOGED ON TRUE DEVICE ZR X3,CSPX IF FILE RESIDED ON TRUE DEVICE BX6 X6-X6 SET TO NOT LOAD FILE EQ CSPX RETURN DDS SPACE 4,10 ** DDS - DELETE DATA SPACE. * * ENTRY (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * * EXIT DATA SPACE FOR FILE DELETED. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 3, 6, 7. * * CALLS FDB, SFD. DDS SUBR ENTRY/EXIT RJ FDB FLUSH DATA BUFFER SA3 CATS+2 CHECK FOR FILE WITH WRITE ERROR SA1 X3+FCUI SX6 X1+ SX7 X1-IFUI ZR X6,DDSX IF WRITE ERROR ON FILE ZR X7,DDSX IF WRITE ERROR ON FILE SA1 X3+FCBS+FCBT* SET FIRST TRACK AND SECTOR OF FILE MX3 -12 BX6 -X3*X1 LX3 12 BX7 X3*X1 CLEAR FIRST TRACK OF FILE BX3 -X3*X1 LX1 59-11 ZR X3,DDSX IF NO FIRST TRACK SA7 A1+ PL X1,DDS1 IF INDIRECT ACCESS FILE SA2 A1+FCDN-FCBT MX6 -6 LX2 -36 BX2 -X6*X2 SET DEVICE NUMBER MX6 -9 RJ SFD SEARCH FOR DEVICE LX1 -6 BX6 -X6*X1 SET EST ORDINAL SX6 X6+4000B SET *DROP TRACKS* FLAG DDS1 BX6 X3+X6 PUT PARAMETER IN FET SA1 DATA SET POSITION REQUEST IN FET MX3 42 BX7 X3*X1 SA6 DATA+FTPM SA7 A1 EQ DDSX RETURN DIF SPACE 4,15 ** DIF - DELETE INCOMPLETE FILE. * * ENTRY (IPFF) = INCOMPLETE PERMANENT FILE FLAG. * * EXIT (IPFF) = 0. * (*TFST* ENTRY) = 0. * ANY INCOMPLETE PERMANENT FILE DELETED. * * USES X - 1, 6. * A - 1, 6. * * CALLS DDS, DPS. DIF SUBR ENTRY/EXIT SA1 IPFF ZR X1,DIF1 IF NO INCOMPLETE PERMANENT FILE RJ DDS DELETE DATA SPACE RJ DPS DELETE PERMIT SPACE DIF1 SA1 CBFO SA1 TFST+X1 SX6 B0 SA6 IPFF CLEAR INCOMPLETE FILE FLAG SA6 A1 CLEAR FILE STATUS EQ DIFX RETURN DPS SPACE 4,15 ** DPS - DELETE PERMIT SPACE. * * ENTRY (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * * EXIT PERMIT SPACE FOR FILE DELETED. * (RICT) = UPDATED TO REFLECT DELETED PERMITS. * * USES X - 1, 3, 6, 7. * A - 1, 3, 6, 7. * B - 6, 7. * * CALLS FPB, WPR. * * MACROS RECALL. DPS SUBR ENTRY/EXIT RJ FPB FLUSH PERMIT BUFFER SA3 CATS+2 GET PERMIT RANDOM INDEX SA1 X3+FCRI MX6 24 BX7 X6*X1 ZR X7,DPSX IF NO PERMITS LX7 -36 SA1 X2 SET POSITION REQUEST IN FET SA7 RICT UPDATE PERMIT RANDOM INDEX MX3 42 BX6 X3*X1 SA7 X2+FTPM PUT RANDOM INDEX PARAMETER IN FET SA6 X2 RECALL X2 SX7 B1+B1 SET EOI CONTROL WORD SB6 LWRD SET BUFFER ADDRESS LX7 54 SB7 B1 SET BUFFER WORD COUNT SA7 B6 RJ WPR WRITE EOI SECTOR RJ FPB FLUSH PERMIT BUFFER TO FORCE EOI WRITE EQ DPSX RETURN DUP SPACE 4,15 ** DUP - DROP UTILITY PROCESSOR. * * ENTRY (PAFL) = 0 IF *PFU* NOT ACTIVE. * = 1 IF *PFU* ACTIVE. * * EXIT (PAFL) = 0. * *PFU* DROPPED IF ACTIVE. * CATALOG PROCESSING COMPLETED. * * USES X - 1, 2, 6. * A - 1, 6. * * CALLS FCB. * * MACROS RECALL. DUP SUBR ENTRY/EXIT SA1 PAFL ZR X1,DUPX IF *PFU* NOT ACTIVE RJ FCB FLUSH CATALOG BUFFER RECALL DATA SA1 DATA SIGNAL *PFU* TO DROP MX2 42 BX6 X2*X1 SX1 10B BX6 X6+X1 SA6 A1 RECALL DATA WAIT FOR *PFU* TO COMPLETE EQ DUPX RETURN DWE SPACE 4,40 ** DWE - DATA WRITE ERROR PROCESSOR. * * ENTRY (DATA+FTPM) = FST ENTRY AT TIME OF ERROR. * WRITE ERROR DETECTED ON DATA FILE. * * EXIT (BFCA) = BAD FILE CATALOG ADDRESS. * * IF A WRITE ERROR - * DATA FOR BAD FILE REMOVED FROM BUFFER. * (DATA+FTSC) = DECREMENTED BY SECTOR COUNT REMOVED FROM * BUFFER. * FILE LENGTH IN CATALOG DECREMENTED BY THE NUMBER OF * SECTORS - 1 REMOVED FROM BUFFER. * USER INDEX OF FILE CLEARED FROM CATALOG FOR A DIRECT * ACCESS FILE AND SET TO A SPECIAL WRITE ERROR USER * INDEX FOR AN INDIRECT ACCESS FILE. * DATA WRITE ERROR MESSAGES ISSUED. * MASS STORAGE SPACE DROPPED FOR A DIRECT ACCESS FILE. * ERROR STATUS CLEARED FROM FET. * * IF A TRACK LIMIT OR ERROR IDLE - * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE * PURGED. * UTILITY PROCESSOR IS DROPPED. * UTILITY INTERLOCK IS CLEARED. * TRACK LIMIT OR ERROR IDLE MESSAGES ARE ISSUED. * MESSAGE IDENTIFYING FIRST FILE NOT LOADED IS ISSUED. * EXIT TO *ABT* IS TAKEN. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 3, 6, 7. * B - 2. * * CALLS CFE, PFD, SEC, SFE. DWE SUBR ENTRY/EXIT SA1 DATA GET FET ERROR CODE MX2 -6 LX1 -12 BX6 -X2*X1 SX2 A1 SAVE FET ADDRESS SX1 X6-FEWE ZR X1,DWE0 IF WRITE ERROR WITH DATA TANSFERRED SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED NZ X1,DWE3 IF NOT WRITE ERROR DWE0 SA1 DATA+FTPM MX7 -9 LX1 12 BX7 -X7*X1 SET EST ORDINAL SA7 DWEB * SET BAD FILE CATALOG ADDRESS. SA1 DATA+3 GET CONTROL WORD FOR BAD SECTOR SA2 X1 LX2 -36 SET BAD FILE CATALOG ADDRESS SX6 X2 SA6 BFCA * REMOVE BAD FILE FROM BUFFER. SX2 DATA SKIP TO END OF BAD FILE RJ SEC SA1 DATA+FTSC ADJUST SECTOR COUNTER SX3 A0 IX6 X1-X3 SA6 A1 * SET CORRECT CATALOG LENGTH AND USER INDEX. SA2 BFCA ADJUST CATALOG LENGTH SX3 A0-B1 LEAVE BAD SECTOR WITH FILE SA1 X2+FCLF+FCBS* LX3 36 IX6 X1-X3 SA3 X2+FCUI LX1 59-11 CHECK FILE TYPE SA6 A1 MX2 42 CLEAR USER INDEX BX7 X2*X3 NG X1,DWE2 IF DIRECT ACCESS FILE SX1 IFUI SET *IAPF* FLAWED SECTOR CHAIN USER INDEX BX7 X7+X1 DWE2 SA7 A3+ * ISSUE ERROR MESSAGE. SA2 BFCA SA1 X2+FCUI SB2 ERDW * DATA WRITE ERROR ...* RJ SFE SEND ERROR MESSAGE RJ CFE COUNT FILE SKIPPED * DROP DIRECT ACCESS FILE. SA2 BFCA SA1 X2+FCBS+FCBT* LX1 59-11 PL X1,DWEX IF INDIRECT ACCESS FILE MX7 -12 SA3 DWEB SET BAD EQUIPMENT BX6 -X7*X1 SET FIRST TRACK OF FILE LX6 12 SX3 X3+4000B SET *DROP TRACKS* FLAG BX7 X3+X6 MX2 42 SA7 DATA+FTPM PUT POSITION PARAMETERS IN FET SA1 DATA SET POSITION FUNCTION IN FET BX6 X2*X1 SA6 A1 EQ DWEX RETURN * PROCESS TRACK LIMIT/ERROR IDLE CONDITION. DWE3 RJ PFD PROCESS FULL DEVICE SB2 B0 SET NO MESSAGE EQ ABT ABORT DWEA CON 0 WRITE ERROR MESSAGE ADDRESS DWEB CON 0 EST ORDINAL ECL SPACE 4,10 ** ECL - EDIT CATALOG ENTRY FOR LOAD. * * ENTRY CATALOG ENTRY IN *TCBF*. * * EXIT CATALOG ENTRY FIELDS MODIFIED AS REQUIRED. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 2, 3, 4, 6, 7. ECL SUBR ENTRY/EXIT * PROCESS UTILITY CONTROL DATE OPTION. SA1 UDAT FETCH UTLITY CONTROL UPDATE FLAG ZR X1,ECL1 IF FORCED UPDATE FLAG NOT SET SA2 TCBF+FCUD MX0 24 BX6 X0*X2 BX6 X6+X1 SET UTILITY CONTROL DATE SA6 A2+ * PROCESS OP=Z OPTION. ECL1 SA1 PFCO FETCH *PFC ONLY* FLAG ZR X1,ECL2 IF *PFC* ONLY SA1 CPAR+/COMSPFS/CPOP BX6 X6-X6 LX1 59-46 PL X1,ECL2 IF *OP=Z* NOT SELECTED SA6 TCBF+FCAA+FCAT*0+FCAF*0 CLEAR CARTRIDGE POINTERS SA6 TCBF+FCTV+FCTS*0+FCTF*0 CLEAR TAPE POINTERS EQ ECLX RETURN * INITIALIZE ALTERNATE STORAGE FLAGS. ECL2 SA1 TCBF+FCAF CHECK ALTERNATE STORAGE INFORMATION SA2 TCBF+FCTF MX0 -59 BX6 -X0*X1 CLEAR *AFLOK* FLAG BX7 -X0*X2 CLEAR *TFLOK* FLAG MX0 -36 BX3 -X0*X1 BX4 -X0*X2 SX0 1 LX1 59-48 LX0 52-0 ZR X3,ECL3 IF NO CARTRIDGE ALTERNATE STORAGE COPY NG X1,ECL3 IF CARTRIDGE COPY IS OBSOLETE BX6 X6+X0 SET *AFVER* FLAG ECL3 ZR X4,ECL4 IF NO TAPE ALTERNATE STORAGE COPY LX0 48-52 BX7 X7+X0 SET *TFVER* FLAG ECL4 SA6 TCBF+FCAF SET CARTRIDGE ALTERNATE STORAGE FLAGS SA7 TCBF+FCTF SET TAPE ALTERNATE STORAGE FLAGS EQ ECLX RETURN EFL SPACE 4,20 ** EFL - ENTER FILE LIST. * * ENTRY (TCBF) = CATALOG ENTRY FOR FILE. * (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * * EXIT (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * FILE ADDED TO FILE LIST. * * USES X - 1, 2, 6, 7. * A - 1, 2, 6, 7. * * MACROS WRITE, WRITEW. EFL SUBR ENTRY/EXIT SA1 FLPT CHECK FOR FULL FILE LIST SX6 X1-FLBF-FLBFL NG X6,EFL1 IF FILE LIST NOT FULL WRITEW FO,FLBF+FLBFL-100B,100B WRITE LAST SECTOR OF BUFFER WRITE X2 SA1 FLPT BACK LIST POINTER UP ONE SECTOR SX1 X1-100B SX6 B1+ SET FILE LIST OVERFLOW SA6 FLOF EFL1 SA2 TCBF+FCFN+FCUI* PUT FILE IN FILE LIST BX7 X2 SA7 X1 SX6 X1+B1 ADVANCE FILE LIST POINTER SA6 A1 EQ EFLX RETURN EOL SPACE 4,15 ** EOL - END OF LOAD PROCESSOR. * * EXIT UTILITY PROCESSOR DROPPED. * UTILITY INTERLOCK CLEARED. * LOAD SYSTEM FILES RETURNED. * ARCHIVE FILE POSITIONED AS APPROPRIATE. * * USES X - 1, 3, 6, 7. * A - 1, 3. * * CALLS CIN, DUP, PSF. * * MACROS RECALL, RETURN, SKIPFF. EOL SUBR ENTRY/EXIT RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK RJ PSF PROCESS SORTED FILE OUTPUT RETURN CATS RETURN LOAD SYSTEM FILES RETURN PETS RETURN DATA SETPFP GPAR RESTORE PERMANENT FILE PARAMETERS RETURN DATA RETURN FILES RETURN CIRF RETURN FO RECALL TAPE POSITION ARCHIVE FILE SA1 CPAR+/COMSPFS/CPNB ZR X1,EOLX IF NO FILE COUNT SPECIFIED SA3 X2 CHECK FOR EOF/EOI ON ARCHIVE FILE SX6 30B BX7 X6*X3 BX6 X7-X6 NZ X6,EOL3 IF NOT EOF/EOI SX1 X1-1 EOL3 ZR X1,EOLX IF NO FILES TO SKIP SKIPFF X2,X1 SKIP FILES NOT PROCESSED EQ EOLX RETURN FCB SPACE 4,40 ** FCB - FLUSH CATALOG BUFFER. * * ENTRY (CEWF) = 0 IF NO CATALOG ENTRIES IN BUFFER. * = NON-ZERO IF CATALOG ENTRIES IN BUFFER. * (CSWC) = CURRENT CATALOG SECTOR WORD COUNT. * * EXIT (CBFO) = 0. * (CEWF) = 0. * THE FOLLOWING CONDITIONS EXIST IF (CEWF) WAS NON-ZERO. * (CSWC) = 0. * (ANCE) = FWA OF CATALOG BUFFER. * PERMIT BUFFER FLUSHED. * DATA BUFFER FLUSHED. * CATALOG BUFFER WRITTEN TO MASS STORAGE. * CATALOG BUFFER REWOUND. * * IF A CATALOG WRITE ERROR IS DETECTED THE UTILITY * PROCESSOR IS DROPPED, ERROR IDLE STATUS IS SET ON THE * MASTER EQUIPMENT IF DATA ON THE CATALOG FILE HAS * BEEN CORRUPTED, THE UTILITY INTERLOCK IS CLEARED, * CATALOG WRITE ERROR MESSAGES ARE ISSUED AND EXIT IS TO * *ABT*. * * IF A TRACK LIMIT OR ERROR IDLE CONDITION IS DETECTED, * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE * PURGED, THE UTILITY PROCESSOR IS DROPPED, THE UTILITY * INTERLOCK IS CLEARED, TRACK LIMIT OR ERROR IDLE * MESSAGES ARE ISSUED, THE FIRST FILE NOT LOADED IS * IDENTIFIED AND EXIT IS TO *ABT*. * * USES X - 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 6, 7. * * CALLS FDB, FPB, LLF, PCE, PFD. * * MACROS RECALL. FCB SUBR ENTRY/EXIT SA1 CEWF ZR X1,FCBX IF NO CATALOG ENTRIES IN BUFFER SA1 CSWC GET SECTOR WORD COUNT ZR X1,FCB3 IF SECTOR IS EMPTY * GET SECTOR CONTROL WORD. SA2 CATS+FTIN SA3 CATS+FTFT SX2 X2 SX3 X3 IX6 X2-X1 IN - SECTOR WORD COUNT IX7 X6-X3 ZR X7,FCB1 IF WRAP AROUND PL X7,FCB2 IF NO WRAP AROUND FCB1 SA3 CATS+FTLM SX3 X3 IX6 X3+X7 LIMIT + COMPLEMENT OF REMAINING COUNT FCB2 SA2 X6-1 GET SECTOR CONTROL WORD * INSERT WORD COUNT INTO SECTOR CONTROL WORD. MX7 48 BX6 X7*X2 IX7 X6+X1 SA7 A2 * INCREMENT BUFFER SECTOR COUNTER. SA2 CATS+FTSC SX6 X2+1 SA6 A2+ * FLUSH CATALOG AND ASSOCIATED BUFFERS. FCB3 RJ FPB FLUSH PERMIT BUFFER RJ FDB FLUSH DATA BUFFER SA1 CATS ISSUE WRITE REQUEST MX2 42 BX7 X2*X1 SX1 B1+B1 SET WRITE FUNCTION CODE BX6 X7+X1 SA6 A1 RECALL A1 WAIT FOR *PFU* TO FLUSH BUFFER RJ LLF LIST LOADED FILES SA1 CATS CHECK ERROR STATUS MX7 -6 LX1 -12 BX6 -X7*X1 NZ X6,FCB4 IF MASS STORAGE ERROR SA1 A1+B1 REWIND BUFFER SX7 X1 SA7 A1+B1 SA7 A7+B1 SA7 ANCE SET ADDRESS OF NEW CATALOG ENTRIES SA6 CSWC CLEAR SECTOR WORD COUNT SA6 CATS+FTSC CLEAR SECTOR COUNTER SA6 CEWF CLEAR *CATALOG ENTRIES WRITTEN* SA6 CBFO RESET CATALOG BUFFER ORDINAL EQ FCBX RETURN * PROCESS CATALOG WRITE ERROR. FCB4 SX1 X6-FEWE ZR X1,FCB4.1 IF WRITE ERROR WITH DATA TRANSFERRED SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED NZ X1,FCB5 IF NOT WRITE ERROR FCB4.1 SA2 CATS+FTOT GET BAD SECTOR CONTROL WORD SA3 CATS+FTPM GET BAD TRACK AND SECTOR ADDRESS MX6 24 LX3 12 PUT BAD ADDRESS IN CONTROL WORD SA1 X2 LX6 -12 BX2 X6*X3 BX3 -X6*X1 BX7 X2+X3 SA7 A1 SX6 ERCW * CATALOG WRITE ERROR...* RJ PCE PROCESS CATALOG WRITE ERROR SB2 B0 SET NO MESSAGE EQ ABT ABORT * PROCESS TRACK LIMIT/ERROR IDLE CONDITION. FCB5 SX2 CATS RJ PFD PROCESS FULL DEVICE SB2 B0 SET NO MESSAGE EQ ABT ABORT FDB SPACE 4,10 ** FDB - FLUSH DATA BUFFER. * * EXIT DATA BUFFER FLUSHED. * DATA WRITE ERRORS PROCESSED IF NECESSARY. * * USES X - 2. * * CALLS DWE, FUB. FDB SUBR ENTRY/EXIT FDB1 SX2 DATA FLUSH DATA BUFFER RJ FUB ZR X6,FDBX IF NO MASS STORAGE ERROR RJ DWE PROCESS DATA WRITE ERROR EQ FDB1 FLUSH DATA BUFFER FPB SPACE 4,20 ** FPB - FLUSH PERMIT BUFFER. * * EXIT (X2) = PERMIT FET ADDRESS. * PERMIT BUFFER FLUSHED. * * IF A PERMIT WRITE ERROR, TRACK LIMIT ERROR OR ERROR * IDLE CONDITION IS DETECTED, CLEANUP IS PERFORMED AND * EXIT IS TO *ABT*. * * USES X - 2, 5. * * CALLS FUB, PWE. FPB SUBR ENTRY/EXIT SX2 PETS FLUSH PERMIT BUFFER RJ FUB ZR X6,FPBX IF NO PERMIT WRITE ERROR RJ PWE PROCESS PERMIT WRITE ERROR SB2 B0 SET NO MESSAGE EQ ABT ABORT FPF SPACE 4,15 ** FPF - FLUSH PERMANENT FILES. * * ENTRY (UIFL) = UTILITY INTERLOCK STATUS. * (PAFL) = UTILITY PROCESSOR ACTIVITY FLAG. * * EXIT ANY INCOMPLETE PERMANENT FILE DELETED. * COMPLETE PERMANENT FILES FLUSHED TO MASS STORAGE. * * USES X - 1, 2, 6. * A - 1, 2, 6. * * CALLS DIF, SSC. * * MACROS CALLPFU, RECALL. FPF1 RJ DIF DELETE INCOMPLETE FILE FPF SUBR ENTRY/EXIT SA1 UIFL CHECK UTILITY INTERLOCK STATUS SX2 X1-1 NZ X2,FPFX IF UTILITY INTERLOCK NOT SET SA1 PAFL NZ X1,FPF1 IF UTILITY PROCESSOR ALREADY ACTIVE SA1 CATS+2 SET CATALOG WORD COUNT SA2 A1+B1 IX6 X1-X2 SX1 101B SET SECTOR COUNT ZR X6,FPFX IF NO CATALOG ENTRIES IX6 X6/X1 SA6 CATS+FTSC SX2 PETS SET PERMIT FILE SECTOR COUNTER RJ SSC SX2 DATA SET DATA FILE SECTOR COUNTER RJ SSC SA1 MAEQ SET MASTER EQUIPMENT AND NON-INITIAL FLAG SX2 B1 LX1 12 BX6 X1+X2 SA6 DATA+FTDW SA1 CPAR+/COMSPFS/CPDN SET MASTER DEVICE NUMBER SA2 FAPM SET FET ADDRESS PARAMETERS LX1 54 BX6 X1+X2 SA6 CATS+FTPM SA1 PETS SET PERMITS FET BUSY MX2 48 BX6 X2*X1 SA6 A1 SA1 DATA SET DATA FET BUSY BX6 X2*X1 SA6 A1+ CALLPFU CATS,CTLM ACTIVATE UTILITY LOAD PROCESSOR RECALL DATA WAIT FOR UTILITY PROCESSOR TO INITIALIZE EQ FPF1 DELETE INCOMPLETE FILE FUB SPACE 4,20 ** FUB - FLUSH UTILITY BUFFER. * * ENTRY (X2) = FET ADDRESS. * * EXIT (X2) = FET ADDRESS. * (X6) = 0 IF NO ERROR DETECTED. * = FET ERROR CODE IF ERROR DETECTED. * *PFU* WRITE FUNCTION CODE PLACED IN FET IF BUFFER NOT * EMPTY. * FET NOT BUSY. * * USES X - 1, 3, 6, 7. * A - 1, 3, 7. * * MACROS RECALL. FUB SUBR ENTRY/EXIT FUB1 RECALL X2 SA1 X2+2 CHECK FOR EMPTY BUFFER SA3 A1+B1 IX6 X1-X3 ZR X6,FUBX IF BUFFER EMPTY SA1 X2 ISSUE WRITE REQUEST MX7 42 BX6 X7*X1 SX3 B1+B1 SET WRITE FUNCTION CODE BX7 X6+X3 LX1 -12 GET ERROR STATUS MX3 -6 BX6 -X3*X1 NZ X6,FUBX IF WRITE ERROR SA7 X2 EQ FUB1 WAIT FOR *PFU* TO FLUSH BUFFER IFM SPACE 4,10 ** IFM - ISSUE FILE COUNT MESSAGES. * * EXIT FILES PROCESSED COUNTS ISSUED TO DAYFILE. * * USES X - 1, 5. * A - 1, 5. * * CALLS IFC. * * MACROS MESSAGE. IFM SUBR ENTRY/EXIT SA1 AREF ZR X1,IFM1 IF NO ARCHIVE FILE READ ERRORS MESSAGE AEMS * READ ERRORS ENCOUNTERED ON ARCHIVE...* IFM1 SA5 IFMA RJ IFC ISSUE FILE COUNT MESSAGES EQ IFMX RETURN IFMA BSS 0 MESSAGE TABLE VFD 1/1,1/0,22/0,18/LDMS,18/PRFC VFD 1/1,1/0,22/0,18/SEMS,18/SEFC VFD 1/1,1/0,22/0,18/LEMS,18/PEFC CON 0 END OF TABLE LLF SPACE 4,15 ** LLF - LIST LOADED FILES. * * EXIT CATALOG DATA WRITTEN TO OUTPUT FILES FOR LOADED FILES * IN CATALOG BUFFER. * * USES X - 1, 2, 3, 4, 5, 6, 7. * A - 0, 1, 2, 3, 4, 5, 6, 7. * * CALLS CFP. LLF SUBR ENTRY/EXIT SA3 CATS+FTFT SX4 -NWCE INITIALIZE SECTOR WORD COUNT SX5 B0+ INITIALIZE CATALOG ORDINAL MX6 -18 BX3 -X6*X3 ADDRESS OF FIRST SECTOR CONTROL WORD LLF1 SA1 CATS+FTOT GET *OUT* POINTER SX4 NWCE+X4 EXCESS WORDS IN PREVIOUS SECTOR IX3 X3+X4 LWA+1 OF PREVIOUS SECTOR IX6 X3-X1 PL X6,LLFX IF NO MORE SECTORS IN BUFFER SA4 X3 READ SECTOR CONTROL WORD MX6 -12 BX4 -X6*X4 SECTOR WORD COUNT SX3 X3+B1 SKIP CONTROL WORD LLF2 SX4 X4-NWCE DECREMENT SECTOR WORD COUNT NG X4,LLF1 IF NO MORE CATALOG ENTRIES IN SECTOR SA1 X3+FCUI GET USER INDEX SA2 ANCE MX6 -18 BX6 -X6*X1 IX2 X3-X2 SX3 X3+NWCE ADVANCE CATALOG ENTRY ADDRESS SX5 X5+1 ADVANCE CATALOG BUFFER ORDINAL NG X2,LLF2 IF OLD CATALOG ENTRY ZR X6,LLF2 IF CATALOG HOLE (DATA WRITE ERROR) SX6 X6-IFUI ZR X6,LLF2 IF IAPF FLAW (DATA WRITE ERROR) BX6 X3 BX7 X4 SA6 LLFA SAVE NEXT CATALOG ENTRY ADDRESS SA7 A6+B1 SAVE SECTOR WORD COUNT SA1 TFST-1+X5 GET FILE STATUS SX6 X5 SA6 A7+B1 SAVE CATALOG BUFFER ORDINAL BX7 X1 SA0 X3-NWCE SET CATALOG ENTRY ADDRESS SA7 FLST SET FILE STATUS RJ CFP COUNT FILE PROCESSED SA3 LLFA RESTORE CATALOG ENTRY ADDRESS SA4 LLFA+1 RESTORE SECTOR WORD COUNT SA5 LLFA+2 RESTORE CATALOG BUFFER ORDINAL EQ LLF2 PROCESS NEXT CATALOG ENTRY LLFA CON 0 CATALOG ENTRY ADDRESS CON 0 REMAINING SECTOR WORD COUNT CON 0 CATALOG BUFFER ORDINAL MCE SPACE 4,20 ** MCE - MOVE CATALOG ENTRY TO BUFFER. * * ENTRY (TCBF - TCBF+NWCE-1) = CATALOG ENTRY. * (*CATS* IN POINTER) = BUFFER ADDRESS FOR CATALOG. * (IPFF) = INCOMPLETE FILE FLAG. * * EXIT ANY INCOMPLETE FILE DELETED. * CATALOG ENTRY MOVED TO *CATS* BUFFER. * FIRST TRACK AND PERMIT RANDOM INDEX CLEARED FROM * CATALOG ENTRY IN *CATS* BUFFER. * (IPFF) = 1. * * USES X - 1, 2, 6, 7. * A - 1, 2, 6, 7. * B - 2, 3. * * CALLS DIF. MCE SUBR ENTRY/EXIT RJ DIF DELETE INCOMPLETE FILE SA1 CATS+2 BUFFER ADDRESS = IN SB2 NWCE-1 CATALOG ENTRY WORD COUNT - 1 SB3 TCBF CATALOG ENTRY ADDRESS MCE1 SA2 B3+B2 GET WORD FROM CATALOG ENTRY BX6 X2 SA6 X1+B2 STORE WORD IN BUFFER SB2 B2-B1 DECREMENT WORD COUNT PL B2,MCE1 IF MORE WORDS TO MOVE SA2 X1+FCBS LX2 59-11 PL X2,MCE2 IF NOT DIRECT ACCESS FILE SX6 B1 INCREMENT FILE LENGTH (DATA SECTORS +1) SA2 X1+FCLF LX6 36-0 IX6 X2+X6 SA6 A2+ MCE2 SA2 X1+FCRI CLEAR RANDOM INDEX MX7 -36 BX6 -X7*X2 SA6 A2 MX7 48 SA2 X1+FCBT CLEAR FIRST TRACK LX7 12 BX6 X7*X2 SX7 B1 SET INCOMPLETE PERMANENT FILE FLAG SA6 A2 SA7 IPFF EQ MCEX RETURN PAL SPACE 4,25 ** PAL - PROCESS ARCHIVE FILE LABEL. * * EXIT (X6) = 0 IF ARCHIVE FILE LABEL GOOD OR IF ARCHIVE FILE * LABEL NOT FOUND AND NOT INCREMENTAL LOAD. * (X6) .NE. 0 IF ARCHIVE FILE LABEL BAD OR IF ARCHIVE * FILE LABEL NOT FOUND AND INCREMENTAL LOAD. * (TLBF+/COMSPFS/PFAL) = 0 IF ARCHIVE FILE LABEL NOT * PRESENT OR BAD. * (TLBF - TLBF+/COMSPFS/AFLBL-1) = NEW ARCHIVE FILE * LABEL IF PRESENT AND GOOD. * LABEL INFORMATION SET IN OUTPUT FILE HEADER IF LABEL * PRESENT AND GOOD. * ARCHIVE FILE INFORMATION BLOCK WRITTEN TO CATALOG * ENTRIES FILE IF LABEL PRESENT AND GOOD OR LABEL NOT * FOUND. * OUTPUT FILE INITIALIZED FOR FILE PROCESSING IF LABEL * PRESENT AND GOOD OR LABEL NOT FOUND. * * * USES X - 1, 2, 5, 6, 7. * A - 0, 1, 2, 7. * * CALLS PLP, RCW, SER. * * MACROS CWREAD, MOVE. * PROCESS LABEL NOT FOUND. PAL4 SA2 INCF SX7 1 NZ X2,PAL2.1 IF INCREMENTAL LOAD NG X1,PAL5 IF EOF/EOI NZ X1,PAL1 IF EOR SA7 RCWF SET CONTROL WORD RE-USE FLAG PAL5 SA0 B0 SET LABEL NOT FOUND RJ PLP PROCESS LABEL PARAMETERS SX6 B0+ CLEAR BAD LABEL STATUS PAL SUBR ENTRY/EXIT SX7 B0+ PRESET NO LABEL PRESENT SA7 TLBF+/COMSPFS/PFAL PAL1 RJ RCW READ ARCHIVE FILE CONTROL WORD NZ X7,PAL3 IF READ ERROR NZ X3,PAL4 IF NOT LABEL CONTROL WORD SA1 CWBF GET LABEL WORD COUNT MX2 -9 BX6 -X2*X1 SX1 X6-/COMSPFS/AFLBL NZ X1,PAL2 IF BAD LABEL WORD COUNT CWREAD TAPE,TDBF,X6 READ ARCHIVE FILE LABEL NZ X7,PAL3 IF READ ERROR NZ X1,PAL2 IF LABEL INCOMPLETE SA1 TDBF+/COMSPFS/PFAL CHECK LABEL IDENTIFIER SA2 AFLI MX6 36 BX1 X6*X1 IX2 X1-X2 NZ X2,PAL2 IF NOT CORRECT LABEL IDENTIFIER MOVE /COMSPFS/AFLBL,TDBF,TLBF MOVE LABEL TO LABEL BUFFER SA0 TLBF SET ARCHIVE LABEL ADDRESS RJ PLP PROCESS ARCHIVE LABEL PARAMETERS RJ SER SKIP TO END OF RECORD BX6 X6-X6 CLEAR BAD LABEL STATUS SA6 EOLF CLEAR END OF LOAD FLAG EQ PALX RETURN * PROCESS BAD LABEL. PAL2 SA2 INCF NZ X2,PAL2.1 IF INCREMENTAL LOAD RJ SER SKIP TO END OF RECORD SA0 B0 SET LABEL NOT FOUND RJ PLP PROCESS LABEL PARAMETERS PAL2.1 SX6 B1 SET BAD LABEL STATUS EQ PALX RETURN * PROCESS READ ERROR. PAL3 SA7 AREF INDICATE READ ERROR RJ SER SKIP TO END OF RECORD EQ PAL1 READ ARCHIVE FILE CONTROL WORD PCB SPACE 4,40 ** PCB - PROCESS CATALOG BUFFER. * * EXIT (X6) = 0 IF FILE NOT TO BE LOADED. * = 1 IF FILE TO BE LOADED. * (TCBF) = CATALOG ENTRY FOR CURRENT FILE. * (MMSK) = UPDATED MASTER DEVICE MASK. * (NCTR) = UPDATED NUMBER OF CATALOG TRACKS. * (MAEQ) = UPDATED MASTER EQUIPMENT. * (CPAR+/COMSPFS/CPDN) = UPDATED MASTER DEVICE NUMBER. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED. * (PFCO) = 0 IF *PFC ONLY* FILE. * (PFCO) .NE. 0 IF NOT *PFC ONLY* FILE. * MASTER DEVICE SWITCH MADE IF NECESSARY. * FILES OPENED IF A MASTER DEVICE SWITCH IS MADE. * * USES X - 0, 1, 2, 4, 5, 6, 7. * A - 1, 5, 7. * * CALLS CCE, CCI, CDE, CFE, CSP, DFN, ECL, EFL, GCT, MCE, PGF, * SFE, SFL, SMD, VFN. * * MACROS CWREAD, MESSAGE, MOVE. PCB SUBR ENTRY/EXIT * CHECK FOR PFC ONLY FILE. SA1 CWBF FETCH CONTROL WORD MX0 -3 EXTRACT SUBTYPE LX0 11-2 BX7 -X0*X1 SA7 PFCO SAVE *PFC ONLY* FLAG * READ AND VALIDATE CATALOG ENTRY. MX0 -9 BX5 -X0*X1 CWREAD TAPE,TCBF,X5 NZ X7,PCB10 IF READ ERROR RJ VFN VALIDATE FILE NAME PL X3,PCB9 IF FILE NAME NOT VALID SA1 TCBF+FCUI VALIDATE USER INDEX SX6 X1+ NG X6,PCB9 IF USER INDEX NOT VALID * CHECK FORMAT OF CATALOG ENTRY. SA1 CWBF CHECK SIZE OF CATALOG ENTRY MX6 -9 BX2 -X6*X1 SX1 X2-NWCE ZR X1,PCB1 IF CURRENT SIZE SX4 TCBF RJ CCE CONVERT CATALOG ENTRY TO CURRENT FORMAT * PROCESS SELECTION PARAMETERS. PCB1 SA1 CPAR+/COMSPFS/CPOP LX1 59-46 PL X1,PCB2 IF *OP=Z* NOT SELECTED SA1 PFCO ZR X1,PCB6 IF PFC ONLY FILE PCB2 RJ CCI CHECK CATALOG IMAGE NZ X6,PCB6 IF FILE NOT TO BE LOADED RJ CSP CHECK SELECTION PARAMETERS ZR X6,PCB6 IF FILE NOT TO BE LOADED * DETERMINE IF FILE CAN BE LOADED IN CURRENT ENVIRONMENT. RJ SMD SET MASTER DEVICE PARAMETERS RJ SFL SEARCH FILE LIST ZR X6,PCB3 IF FILE ALREADY PRESENT RJ CDE CHECK DEVICE ENVIRONMENT ZR B2,PCB5 IF NO ERROR EQ PCB8 ISSUE ERROR MESSAGE AND SKIP FILE PCB3 SA1 CPAR+/COMSPFS/CPOP LX1 59-52 PL X1,PCB9 IF REPLACE OPTION NOT SPECIFIED RJ CDE CHECK DEVICE ENVIRONMENT SX6 B2-ERNS ZR B2,PCB4 IF NO ERROR NZ X6,PCB8 IF NOT *NO SPACE FOR FILE* ERROR PCB4 RJ PGF PURGE FILE NZ B2,PCB8 IF NO SPACE FOR FILE RJ SFL SEARCH FILE LIST SB2 ERPE * ERROR ON FILE PURGE ...* ZR X6,PCB8 IF FILE FOUND AGAIN AFTER PURGE RJ CDE CHECK DEVICE ENVIRONMENT NZ B2,PCB8 IF ERROR * LOAD FILE. PCB5 SA7 TCBF+FCDN SET DEVICE NUMBER RJ EFL ENTER FILE IN LIST SA1 TCBF+FCUI SA2 MSGA *LOADING ...* RJ DFN DISPLAY MESSAGE RJ ECL EDIT CATALOG ENTRY FOR LOAD RJ MCE MOVE CATALOG ENTRY TO CATALOG BUFFER SX6 B1 SET LOAD FILE EQ PCBX RETURN * DETERMINE IF END OF INDEX LOAD. PCB6 SA5 MXDC ZR X5,PCB9 IF NOT SELECTIVE LOAD SA1 TCBF+FCUI CURRENT USER INDEX MX2 -3 BX2 -X2*X1 SUBFAMILY INDEX SA2 SFDT+X2 LX1 -3 SX6 X2 CATALOG TRACK MASK BX2 -X6*X2 ARCHIVE FILE DEVICE ORDINAL BX1 X6*X1 CATALOG TRACK BX6 X2+X1 IX6 X5-X6 PL X6,PCB9 IF NOT PAST USER INDEX-S CATALOG TRACK SX7 1 SA7 EOLF SET END OF LOAD FLAG EQ PCB9 SKIP FILE * ISSUE ERROR MESSAGE AND COUNT FILE NOT LOADED. PCB8 SA1 TCBF+FCUI SET FILE NAME AND USER INDEX RJ SFE SEND ERROR MESSAGE RJ CFE ISSUE MESSAGE AND COUNT FILE NOT LOADED * SKIP FILE. PCB9 SX7 B1 SET SKIP TO EOR FLAG SA7 SKER SA1 TCBF+FCUI SA2 MSGE *SKIPPING ...* RJ DFN DISPLAY MESSAGE SX6 B0 SET SKIP FILE EQ PCBX RETURN * PROCESS READ ERROR. PCB10 SA7 AREF INDICATE READ ERROR EQ PCB9 SKIP FILE PCE SPACE 4,25 ** PCE - PROCESS CATALOG ERROR. * * ENTRY (X6) = CATALOG READ OR WRITE ERROR MESSAGE ADDRESS. * (CPAR+/COMSPFS/CPDN) = MASTER DEVICE NUMBER. * (CCTR) = CURRENT CATALOG TRACK. * (MAEQ) = MASTER DEVICE EST ORDINAL. * (*CATS* BUFFER) = CATALOG ENTRIES FOR FILES AFFECTED * BY THE ERROR. CONTROL WORD FOR * FIRST SECTOR IN BUFFER CONTAINS * TRACK AND SECTOR ADDRESS OF THE * ERROR. * * EXIT *PFU* DROPPED. * IF A WRITE ERROR, ERROR IDLE STATUS IS SET FOR THE * MASTER EQUIPMENT IF DATA ON THE CATALOG FILE HAS * BEEN CORRUPTED. * UTILITY INTERLOCK CLEARED. * CATALOG ERROR MESSAGES ISSUED. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 3, 6, 7. * * CALLS CIN, DUP, SEI, SFE. PCE SUBR ENTRY/EXIT SA6 PCEB SAVE MESSAGE ADDRESS * DROP *PFU*. SX6 B0+ CLEAR *CATALOG ENTRIES WRITTEN* SA6 CEWF RJ DUP DROP UTILITY PROCESSOR * IDENTIFY FAILING DEVICE. SA1 PCEB ERROR MESSAGE ADDRESS SX1 X1-ERCW NZ X1,PCE0.1 IF NOT WRITE ERROR SA1 CATS GET ERROR CODE FROM FET MX2 -6 LX1 -12 BX1 -X2*X1 ERROR CODE SX1 X1-FEWE NZ X1,PCE0.1 IF DATA NOT TRANSFERRED TO DEVICE SB2 ELWC * ERROR IDLE SET - PF CATALOG WRITE ...* RJ SEI SET ERROR IDLE STATUS PCE0.1 RJ CIN CLEAR UTILITY INTERLOCK * LIST FILES IN CATALOG BUFFER. SA2 CATS+3 SET ADDRESS OF FIRST CONTROL WORD PCE1 SA1 CATS+2 CHECK IF MORE SECTORS IN BUFFER IX3 X2-X1 MX6 -12 PL X3,PCEX IF NO MORE SECTORS IN BUFFER SA1 X2 SET SECTOR WORD COUNT BX3 -X6*X1 SX2 X2+1 SET ADDRESS OF NEXT CATALOG ENTRY PCE2 SX3 X3-NWCE DECREMENT SECTOR WORD COUNT NG X3,PCE1 IF END OF CATALOG SECTOR SA1 X2+FCFN SET FILE NAME AND USER INDEX SX2 X2+NWCE ADVANCE CATALOG ENTRY ADDRESS MX7 -18 BX6 -X7*X1 USER INDEX ZR X6,PCE2 IF CATALOG HOLE BX6 X2 SAVE CATALOG ENTRY ADDRESS SA6 PCEA BX7 X3 SAVE SECTOR WORD COUNT SA7 A6+B1 SA2 PCEB SB2 X2 SET ERROR MESSAGE ADDRESS RJ SFE SEND ERROR MESSAGE SA2 PCEA RESTORE CATALOG ENTRY ADDRESS SA3 PCEA+1 RESTORE SECTOR WORD COUNT EQ PCE2 PROCESS NEXT CATALOG ENTRY PCEA BSSZ 2 SECTOR ADDRESS AND LENGTH PARAMETERS PCEB CON 0 ERROR MESSAGE ADDRESS PDB SPACE 4,20 ** PDB - PROCESS DATA BLOCK. * * ENTRY (X3) .LT. 0 IF EOR DETECTED ON ARCHIVE FILE. * .GE. 0 IF EOR NOT DETECTED ON ARCHIVE FILE. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * * EXIT (X6) = 0 IF FILE NOT TO BE LOADED. * = NON-ZERO IF FILE TO BE LOADED. * DATA FOR FILE WRITTEN TO MASS STORAGE. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED. * * USES X - ALL. * A - 1, 2, 3, 4, 6, 7. * B - 6, 7. * * CALLS AFE, CFE, DIF, DWE, RCW, SCE, SFE, WPR. * * MACROS CWREAD, RECALL. PDB SUBR ENTRY/EXIT * PRESET DATA PROCESSING PARAMETERS. SA1 TCBF+FCLF SET FILE LENGTH MX0 -24 SX2 B1 ADJUST LENGTH FOR EOI LX1 -36 BX6 -X0*X1 IX7 X6+X2 BX5 X5-X5 CLEAR WORD ACCUMULATOR SA1 TCBF+FCBS CHECK FILE TYPE SA7 PDBB BX6 X6-X6 CLEAR *PFU* CONTROL WORD LX1 59-11 SA6 PDBD CLEAR BUFFER POINTER SX7 SSBFL INITIALIZE SYSTEM SECTOR LENGTH SA7 PDBC PL X1,PDB1 IF INDIRECT ACCESS FILE * SET DEVICE NUMBER FOR DIRECT ACCESS FILE IN LINKAGE WORD. SA1 TCBF+FCDN GET DN FROM CATALOG MX0 -6 LX1 -36 BX6 -X0*X1 LX6 48 NZ X6,PDB1 IF DEVICE SPECIFIED IN CATALOG SA1 CPAR+/COMSPFS/CPDN SET MASTER DEVICE NUMBER LX1 48 BX6 X1 NZ X1,PDB1 IF DN SPECIFIED MX6 1 SET 4000B FOR PACK DAPF DN PDB1 LX6 24 * SET CATALOG ADDRESS IN LINKAGE WORD. SA1 CATS+2 GET ADDRESS OF CATALOG ENTRY LX1 36 BX6 X6+X1 SA6 LWRD NG X3,PDB13 IF PHYSICAL EOR EQ PDB3 PDB2 RJ RCW READ CONTROL WORD NZ X7,PDB25 IF READ ERROR SX0 X3-3 NZ X0,PDB12 IF NOT DATA TYPE * BREAK UP CONTROL WORD PDB3 SA4 CWBF CHECK FOR ERROR CONTROL WORD SA3 PDBE MX0 42 BX2 X0*X4 BX2 X2-X3 ZR X2,PDB26 IF ERROR CONTROL WORD MX0 51 BX1 -X0*X4 SET NUMBER OF WORDS AX4 9 AX0 6 BX0 -X0*X4 SET DATA MARK IX5 X5+X1 INCREMENT WORD COUNT * CHECK FOR SYSTEM SECTOR. SA3 PDBC GET REMAINING SYSTEM SECTOR LENGTH SX4 X0-4 BX7 X7-X7 BX6 X4+X3 ZR X6,PDB12 IF SYSTEM SECTOR NOT BOI ZR X4,PDB4 IF SYSTEM SECTOR ZR X3,PDB6 IF SYSTEM SECTOR PROCESSING COMPLETED SX7 X3-SSBFL ZR X7,PDB5 IF BOI NOT SYSTEM SECTOR SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* EQ PDB27 ISSUE MESSAGE AND SUPPRESS FILE LOAD PDB4 IX7 X3-X1 DECREMENT REMAINING SYSTEM SECTOR LENGTH PL X7,PDB5 IF SYSTEM SECTOR NOT TOO LONG SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* EQ PDB27 ISSUE MESSAGE AND SUPPRESS FILE LOAD * READ FILE DATA INTO BUFFER. PDB5 SA7 PDBC SAVE REMAINING SYSTEM SECTOR LENGTH PDB6 ZR X5,PDB8 IF NO WORDS TO READ SA4 PDBD POINTER TO NEXT AVAILABLE WORD BX3 -X4 SX3 X3+100B IX2 X5-X3 PL X2,PDB7 IF NOT ENOUGH SPACE IX6 X4+X5 NEW POINTER SA6 A4 CWREAD TAPE,TDBF+X4,X5 NZ X7,PDB25 IF READ ERROR BX5 X5-X5 CLEAR WORD COUNT ZR X0,PDB2 IF NO FILE MARK SX2 X0-4 ZR X2,PDB2 IF FIRST PART OF SPLIT SYSTEM SECTOR SX0 X0-1 ZR X0,PDB10 IF EOR SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* EQ PDB22 PROCESS ARCHIVE FILE ERROR * PROCESS BUFFER WITH NOT ENOUGH SPACE AVAILABLE. PDB7 SX6 B0+ RESET WORDS WRITTEN SA6 A4 IX5 X5-X3 WORDS LEFT IN MAIN BUFFER CWREAD TAPE,TDBF+X4,X3 NZ X7,PDB25 IF READ ERROR SX6 100B EQ PDB14 PROCESS BLOCK * PROCESS FILE MARKS. PDB8 ZR X0,PDB2 IF PLAIN DATA BLOCK SX2 X0-4 ZR X2,PDB2 IF SYSTEM SECTOR SX2 X0-1 NZ X2,PDB11 IF NOT EOR * PROCESS EOR WITH ZERO LENGTH PRU. SX6 B0+ SET PRU LENGTH TO ZERO PDB9 BX0 X0-X0 CLEAR DATA MARK EQ PDB14 PROCESS DATA BLOCK * PROCESS EOR WITH SHORT PRU. PDB10 SA1 PDBD SET PRU LENGTH BX6 X1 BX7 X7-X7 CLEAR WORDS WRITTEN SA7 A1 EQ PDB14 PROCESS DATA BLOCK * PROCESS EOF. PDB11 SX6 DLEF SET EOF INDICATOR LX6 54 EQ PDB9 CLEAR DATA MARK * PROCESS EOI. PDB12 NG X3,PDB13 IF EOI SB2 ERAB * ARCHIVE FILE BLOCK ERROR ...* EQ PDB22 PROCESS MISSING EOI PDB13 SX0 3 SET EOI CONDITION SX6 DLEI SET EOI INDICATOR LX6 54 * PROCESS DATA BLOCK PDB14 SA1 LWRD SET PRU LENGTH MX2 48 BX2 -X2*X6 SB7 X2+B1 MX2 42 LX2 54 BX1 X2*X1 BX6 X6+X1 SX3 X0-4 ZR X3,PDB15 IF SYSTEM SECTOR SA1 PDBB DECREMENT LENGTH SX2 B1 IX7 X1-X2 SX3 X0-3 IX1 X7-X2 PL X1,PDB16 IF MORE LENGTH INDICATED BY CATALOG ZR X3,PDB17 IF EOI EQ PDB22 PROCESS FILE TOO LONG * PROCESS SYSTEM SECTOR. PDB15 SX1 DLSS SET SYSTEM SECTOR INDICATOR LX1 54 BX6 X6+X1 BX0 X0-X0 CLEAR DATA MARK EQ PDB18 WRITE SYSTEM SECTOR TO DATA FILE * WRITE SECTOR TO DATA FILE. PDB16 ZR X3,PDB21 IF FILE TOO SHORT PDB17 SA7 A1 SAVE REMAINING LENGTH PDB18 SA6 LWRD SAVE DATA LINKAGE WORD SB6 A6 SET BUFFER ADDRESS PDB19 SX2 DATA RJ WPR WRITE SECTOR TO DATA FILE NZ B7,PDB20 IF WRITE ERROR SX1 X0-3 NZ X1,PDB6 IF NOT EOI SX6 B1+ SELECT FILE LOADING EQ PDBX RETURN * PROCESS DATA WRITE ERROR. PDB20 BX6 X0 SAVE ARCHIVE CONTROL WORD PARAMETERS LX7 X5 SA6 PDBA SA7 A6+B1 RJ DWE PROCESS DATA WRITE ERROR SA1 PDBA RESTORE ARCHIVE CONTROL WORD PARAMETERS SA2 A1+B1 BX0 X1 LX5 X2 SA1 LWRD RESTORE SECTOR WORD COUNT MX2 -12 BX3 -X2*X1 SB6 A1 RESTORE BUFFER ADDRESS SA1 BFCA CHECK IF ERROR ON CURRENT FILE SA2 CATS+2 SB7 X3+B1 BX7 X1-X2 NZ X7,PDB19 IF ERROR NOT ON CURRENT FILE SA1 PDBB LENGTH NOT WRITTEN TO BUFFER SA3 X2+FCLF ADJUST CATALOG LENGTH LX1 36 IX7 X3-X1 SX6 B1 SELECT FILE LOADING SA7 A3 SA6 SKER SET SKIP TO EOR FLAG EQ PDBX RETURN * PROCESS FILE TOO SHORT. PDB21 SA1 TCBF+FCUI SB2 ERFT * FILE TRUNCATED ...* RJ SFE SEND ERROR MESSAGE EQ PDB24 PROCESS TRUNCATED FILE * PROCESS ERRORS. PDB22 SA1 TCBF+FCUI RJ SFE SEND ERROR MESSAGE SX6 B1+ SET SKIP TO EOR FLAG SA6 SKER PDB24 SA2 PDBB UPDATE LENGTH IN CATALOG SX1 B1 IX7 X2-X1 ALLOW FOR EOI SECTOR ZR X7,PDB13 IF NO CATALOG CHANGE MX6 0 SA6 A2 RECALL DATA WAIT FOR *PFU* COMPLETION SA1 CATS+2 SET NEW LENGTH IN CATALOG SA2 X1+FCLF LX2 24 IX6 X2-X7 NEW FILE LENGTH LX6 36 SA6 A2 EQ PDB13 FORCE EOI * PROCESS READ ERROR. PDB25 SB2 ERAR * ARCHIVE FILE READ ERROR ...* EQ PDB22 PROCESS ERROR * PROCESS ERROR CONTROL WORD. PDB26 SX6 FEDT SET DATA ERROR IN CATALOG RJ SCE SA1 CWBF CLEAR CONTROL WORD ERROR FLAGS MX7 -15 BX6 -X7*X1 LX1 -15 GET ERROR TYPE MX7 -3 BX2 -X7*X1 SA6 A1 ZR X2,PDB21 IF TRUNCATED FILE ERROR SA1 CPAR+/COMSPFS/CPEO NZ X1,PDB27 IF BAD FILE PROCESSING SUPPRESSED SX7 X2-2 NZ X7,PDB3 IF NOT SUPPRESSED FILE CONTROL WORD SB2 EREO * FILE LOAD SUPPRESSED BY ERROR ...* * ISSUE ERROR MESSAGE AND SUPRESS FILE LOAD. PDB27 SA1 TCBF SET FILE NAME AND USER INDEX RJ SFE SEND ERROR MESSAGE RJ CFE COUNT FILE NOT LOADED RJ DIF DELETE INCOMPLETE FILE SX7 B1 SET SKIP TO EOR FLAG BX6 X6-X6 CLEAR LOAD FLAG SA7 SKER EQ PDBX RETURN PDBA BSSZ 2 ARCHIVE CONTROL WORD PARAMETERS PDBB CON 0 LENGTH ACCUMULATOR PDBC CON 0 REMAINING SYSTEM SECTOR LENGTH PDBD CON 0 WORDS WRITTEN PDBE VFD 42/7HERROR**,18/0 PFD SPACE 4,25 ** PFD - PROCESS FULL DEVICE. * * ENTRY (X2) = FET ADDRESS OF FILE WITH ERROR. * (X6) = ERROR CODE. * ((X2)+FTPM) = FST ENTRY AT TIME OF ERROR. * (ANCE) = ADDRESS OF NEW CATALOG ENTRIES. * (*CATS* IN POINTER) = ADDRESS OF FIRST CATALOG SECTOR * NOT LOADED. * * EXIT DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES PURGED. * ERROR MESSAGE ISSUED. * UTILITY INTERLOCK CLEARED. * * USES X - ALL. * A - 0, 1, 2, 5, 6, 7. * B - 5, 6, 7. * * CALLS CIN, COD, DUP, FUB, SEM, SFD, SSC, WPR. * * MACROS RECALL. PFD SUBR ENTRY/EXIT * ISSUE ERROR MESSAGE. SB5 ERTL * TRACK LIMIT ...* SX1 X6-FETL ZR X1,PFD1 IF TRACK LIMIT ERROR SB5 ERID * ERROR IDLE DETECTED ...* PFD1 SA1 X2+FTPM MX6 -9 LX1 -48 BX1 -X6*X1 EST ORDINAL OF DEVICE WITH ERROR RJ COD CONVERT EST ORDINAL BX1 X4 SB2 1R+ RJ SNM SET EST ORDINAL IN MESSAGE SB2 B5 SET MESSAGE ADDRESS RJ SEM SEND ERROR MESSAGE * PURGE DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES. RECALL DATA RECALL PETS SA1 PETS+FTSC SAVE OLD SECTOR COUNTER SX0 X1+ RJ SSC SET BUFFER SECTOR COUNT SA1 PETS+FTSC ADJUST SECTOR COUNTER IX6 X0-X1 SA6 A1 SA1 PETS+FTFT REWIND PERMIT BUFFER SX6 X1 SA6 A1+B1 SA6 A6+B1 BX4 X4-X4 CLEAR IAPF PROCESSED FLAG SA0 B0 CLEAR PERMITS PROCESSED FLAG SB5 B0 CLEAR BLOCK WORD COUNT SA5 CATS+FTOT GET FWA OF CATALOG ENTRIES SA2 IPFF SA1 A5-B1 GET LWA+1 OF CATALOG ENTRIES SX5 X5-NWCE BX0 X1 ZR X2,PFD4 IF NO INCOMPLETE FILE SX0 X0+NWCE INCLUDE INCOMPLETE FILE PFD4 SX5 X5+NWCE ADVANCE TO NEXT CATALOG ENTRY GT B5,PFD5 IF NOT END OF CATALOG BLOCK SB5 100B SET FULL BLOCK WORD COUNT SX5 X5+1 SKIP CONTROL WORD PFD5 IX6 X5-X0 SB5 B5-NWCE DECREMENT BLOCK WORD COUNT MX3 -12 PL X6,PFD10 IF NO MORE CATALOG ENTRIES SA2 ANCE SA1 X5+FCUI IX7 X5-X2 SX6 X1 NG X7,PFD4 IF AN OLD CATALOG ENTRY SX7 X1-IFUI ZR X6,PFD7 IF A HOLE ZR X7,PFD7 IF WRITE ERROR ON FILE SA1 X5+FCBT+FCBS* GET FIRST TRACK AND SECTOR OF FILE BX6 -X3*X1 LX3 12 BX7 X3*X1 CLEAR FIRST TRACK OF FILE BX3 -X3*X1 LX1 59-11 SA7 A1 ZR X3,PFD7 IF NO FIRST TRACK NG X1,PFD8 IF DIRECT ACCESS FILE NZ X4,PFD7 IF IAPF FILE ALREADY PROCESSED SX4 B1+ SET IAPF FILE PROCESSED FLAG PFD6 BX6 X3+X6 PUT PARAMETERS IN FET MX3 42 SA6 DATA+FTPM SA1 DATA PUT POSITION REQUEST IN FET BX7 X3*X1 SA7 A1 RECALL A1 WAIT FOR POSITIONING TO COMPLETE PFD7 SA1 X5+FCRI GET PERMIT RANDOM INDEX MX3 -24 LX1 -36 BX6 -X3*X1 ZR X6,PFD4 IF NO PERMITS SB7 A0 NZ B7,PFD4 IF PERMITS ALREADY PROCESSED SA0 B1 SET PERMITS PROCESSED FLAG MX3 42 SA6 PETS+FTPM PUT RANDOM INDEX PARAMETER IN FET SA1 PETS SET POSITION REQUEST IN FET BX7 X3*X1 SB6 LWRD SET BUFFER ADDRESS SX6 B1+B1 SET EOI CONTROL WORD SA7 A1 LX6 54 SB7 B1 SET BUFFER WORD COUNT SA6 B6 SX2 A1 SET PERMITS FET ADDRESS RJ WPR WRITE EOI SECTOR RJ FUB FLUSH PERMIT BUFFER EQ PFD4 PROCESS NEXT CATALOG ENTRY * PROCESS DIRECT ACCESS FILE. PFD8 SA1 X5+FCDN GET DEVICE NUMBER FROM CATALOG MX6 -6 LX1 -36 BX2 -X6*X1 RJ SFD SEARCH FOR DEVICE LX1 -6 SET EST ORDINAL MX7 -9 BX7 -X7*X1 EXTRACT EST ORDINAL SX6 X7+4000B SET *DROP TRACKS* FLAG EQ PFD6 DROP TRACK CHAIN * DROP UTILITY PROCESSOR AND UTILITY INTERLOCK. PFD10 BX6 X6-X6 CLEAR *CATALOG ENTRIES WRITTEN* SA6 CEWF RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK EQ PFDX RETURN PGF SPACE 4,25 ** PGF - PURGE FILE ON REPLACE OPTION. * * ENTRY (X6) .NE. 0 IF SPACE AVAILABLE FOR FILE. * (X6) = 0 IF NO SPACE FOR DIRECT ACCESS FILE. * (X7) = REQUIRED DEVICE NUMBER IF .NE. 0 AND NO SPACE * FOR DIRECT ACCESS FILE. * (X7) = 0 IF LOAD LEVELING USED IN DEVICE SELECTION AND * NO SPACE FOR DIRECT ACCESS FILE. * * EXIT (B2) = 0 IF FILE PURGE ATTEMPTED. * (B2) = * NO SPACE FOR FILE* MESSAGE ADDRESS IF FILE * PURGE NOT ATTEMPTED. * UTILITY INTERLOCK SET AND *PFU* ACTIVE. * * USES X - 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 5, 6, 7. * B - 2. * * CALLS AUP, CAL, CIN, DUP, RAS, SFD, SIN. * * MACROS CATLIST, PURGE, SETPFP. * REACTIVATE *PFU* AND RETURN NO SPACE FOR FILE ERROR. PGF5 RJ SIN SET UTILITY INTERLOCK RJ AUP ACTIVATE *PFU* SB2 ERNS * NO SPACE FOR FILE ...* PGF SUBR ENTRY/EXIT * SAVE ENTRY CONDITIONS AND DROP *PFU*. SA6 PGFB SAVE NO SPACE STATUS SA7 A6+1 SAVE DEVICE POINTER RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK * SET FILE NAME AND USER INDEX FOR *PFM*. SA1 TCBF+FCFN GET FILE NAME AND USER INDEX SA2 PGFA GET CURRENT USER INDEX MX7 -18 BX6 -X7*X1 USER INDEX BX7 X7*X1 FILE NAME IX2 X2-X6 SA7 P+CFPN SET FILE NAME IN FET ZR X2,PGF1 IF SAME USER INDEX SA6 PGFA UPDATE CURRENT USER INDEX SA6 SPAR+2 SET USER INDEX IN *CPM* CALL SX6 UIPR SET USER INDEX FLAG SA6 SPAR SETPFP SPAR SET USER INDEX * DETERMINE IF PURGE WILL CREATE SUFFICIENT SPACE FOR FILE. PGF1 SA1 PGFB NZ X1,PGF4 IF SPACE FOR FILE AVAILABLE SX6 PFMB SET IN = OUT = FIRST SA6 P+2 SA6 P+3 CATLIST P GET DEVICE NUMBER AND FILE LENGTH SA1 P MX6 -8 AX1 10 BX1 -X6*X1 NZ X1,PGF5 IF ERROR ON CATLIST CALL SA2 PFMB+FCDN GET DEVICE NUMBER SA3 PFMB+FCBS+FCLF*0 GET FIRST SECTOR AND LENGTH MX6 -6 LX2 -36 LX3 59-11 BX2 -X6*X2 PL X3,PGF5 IF INDIRECT ACCESS FILE RJ SFD SEARCH FOR DEVICE ZR X1,PGF5 IF DEVICE NOT FOUND SA2 PGFB+1 SA5 A1+1 GET DEVICE PARAMETERS ZR X2,PGF2 IF LOAD LEVELING USED TO SELECT DEVICE SB2 X2 SB2 A1-B2 ZR B2,PGF3 IF SAME DEVICE EQ PGF5 SET NO SPACE FOR FILE PGF2 RJ CAL CHECK ACCESS LEVELS NG X6,PGF5 IF ACCESS LEVEL ERROR PGF3 MX6 -24 MX7 -12 LX3 -24 LX5 -36 BX3 -X6*X3 FILE LENGTH SX6 B1+B1 BX1 -X7*X5 DEVICE SECTOR LIMIT IX3 X3+X6 INCLUDE SYSTEM SECTOR AND EOI IN LENGTH SX6 X1-1 BX7 X1 IX3 X3+X6 LX5 36 RESTORE DEVICE PARAMETERS IX3 X3/X7 IX3 X3*X1 SPACE OCCUPIED BY FILE RJ RAS CHECK SPACE ON DEVICE WITH FILE PURGE ZR X1,PGF5 IF NO SPACE AVAILABLE * REQUIRE FILE NOT BUSY TO AVOID PURGING OLD FILE WITHOUT * CREATING SPACE FOR FILE TO BE LOADED. SA1 P+CFPN SX6 SRNB SET NOT BUSY REQUIRED LX6 12 BX6 X1+X6 SA6 A1+ * PURGE FILE AND REACTIVATE *PFU*. ERROR STATUS IS NOT CHECKED * SINCE A PURGE FAILURE WILL BE DETECTED BY THE FILE NAME * REAPPEARING IN THE FILE LIST WHEN *PFU* IS REACTIVATED. PGF4 PURGE P PURGE FILE RJ SIN SET UTILITY INTERLOCK RJ AUP ACTIVATE *PFU* SB2 B0 SET NO ERROR EQ PGFX RETURN PGFA CON 0 CURRENT USER INDEX PGFB CON 0 NO SPACE FOR FILE STATUS CON 0 REQUIRED DEVICE POINTER PPB SPACE 4,30 ** PPB - PROCESS PERMIT BLOCK. * * ENTRY (CWBF) = PERMIT CONTROL WORD. * (RICT) = CURRENT PERMIT RANDOM INDEX. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * * EXIT (X6) = 0 IF FILE NOT TO BE LOADED. * (X6) = 1 IF FILE TO BE LOADED. * (RICT) = UPDATED PERMIT RANDOM INDEX. * (SKER) = 1 IF *SKIP TO EOR* REQUIRED. * CATALOG ENTRY UPDATED WITH RANDOM INDEX OF FIRST * PERMIT SECTOR. * PERMIT SECTORS WRITTEN TO *PETS* FILE. * ARCHIVE FILE POSITIONED AT EOR IF FILE NOT TO BE * LOADED, OTHERWISE AT FIRST WORD FOLLOWING PERMITS. * * IF A PERMIT WRITE ERROR, TRACK LIMIT ERROR OR ERROR * IDLE CONDITION IS DETECTED, CLEANUP IS PERFORMED AND * EXIT IS TO *ABT*. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 6, 7. * B - 2, 3, 6, 7. * * CALLS CFE, PWE, RCW, SCE, SFE, WPR. * * MACROS CWREAD. PPB SUBR ENTRY/EXIT SA3 CATS+2 PUT FIRST RANDOM INDEX IN CATALOG SA1 X3+FCRI SA2 RICT MX3 -36 BX7 -X3*X1 LX2 36 BX6 X2+X7 SA6 A1 BX5 X5-X5 CLEAR SECTOR BUFFER WORD COUNT PPB1 SA1 CWBF SET WORD COUNT OF CONTROL WORD MX2 -9 BX0 -X2*X1 * FILL PERMIT SECTOR BUFFER. PPB2 SX1 100B IX3 X1-X5 REMAINING WORD COUNT OF SECTOR BUFFER IX2 X0-X3 PL X2,PPB3 IF CONTROL WORD WILL FILL SECTOR BUFFER BX3 X0 SET TO READ REMAINDER OF CONTROL WORD PPB3 ZR X3,PPB4 IF NO WORDS TO READ SB6 TDBF+X5 SET SECTOR BUFFER ADDRESS IX0 X0-X3 REMAINING WORD COUNT FOR CONTROL WORD IX5 X5+X3 SECTOR BUFFER WORD COUNT CWREAD TAPE,B6,X3 NZ X7,PPB5 IF READ ERROR ZR X1,PPB2 IF CONTROL WORD BLOCK COMPLETE SB2 ERAB * ARCHIVE BLOCK ERROR ...* EQ PPB6 PROCESS INCOMPLETE PERMIT BLOCK * PROCESS END OF CONTROL WORD. PPB4 NZ X0,PPB10 IF NOT END OF CONTROL WORD SA1 CWBF GET EOR FLAG MX2 -3 LX1 -9 BX3 -X2*X1 SET LAST SECTOR FLAG LX1 -6 BX6 -X2*X1 SB3 X3 NZ X6,PPB8 IF ERROR CONTROL WORD EQ B3,B1,PPB9 IF EOR FLAG SET IN CONTROL WORD RJ RCW READ NEXT CONTROL WORD SX2 X3-2 ZR X2,PPB1 IF A PERMIT CONTROL WORD * PROCESS ARCHIVE FILE ERROR. PPB5 SA7 AREF INDICATE READ ERROR SB2 ERAR * ARCHIVE FILE READ ERROR ...* PPB6 SA1 CATS+FTIN SA1 X1+FCUI RJ SFE SEND ERROR MESSAGE RJ CFE COUNT FILE NOT LOADED SX7 B1 SET SKIP TO EOR FLAG BX6 X6-X6 SELECT NO FILE LOAD SA7 SKER EQ PPBX RETURN * PROCESS EMPTY PERMIT SECTOR. PPB8 SX6 FEPM SET PERMIT ERROR IN CATALOG RJ SCE PPB9 NZ X5,PPB10 IF NOT EMPTY SECTOR SA3 CATS+2 CLEAR PERMIT RANDOM INDEX FROM CATALOG SA1 X3+FCRI MX2 -36 BX7 -X2*X1 SX6 B1 SELECT FILE LOAD SA7 A1 EQ PPBX RETURN * WRITE PERMIT SECTOR TO PERMIT FILE. PPB10 SA1 RICT ADVANCE RANDOM INDEX SA2 CATS+2 GET CATALOG ADDRESS SX6 B1 IX7 X1+X6 SB7 X5+B1 SET SECTOR WORD COUNT SA7 A1 SA1 X2+FCUI GET USER INDEX FROM CATALOG LX2 36 BUILD SECTOR CONTROL WORD BX6 X2+X5 LX7 36 MX2 -18 SA6 LWRD BX1 -X2*X1 ZR X3,PPB11 IF NOT LAST SECTOR BX7 X7-X7 CLEAR PERMIT LINKAGE RANDOM INDEX PPB11 LX1 12 GET PERMIT LINKAGE WORD BX6 X7+X1 SB6 LWRD SET WORKING BUFFER ADDRESS BX5 X3 SAVE LAST SECTOR FLAG SX2 PETS SET FET ADDRESS SA6 B6+B1 RJ WPR WRITE PERMIT SECTOR NZ B7,PPB12 IF PERMIT WRITE ERROR ZR X5,PPB2 IF NOT LAST SECTOR SX6 B1 SELECT FILE LOAD EQ PPBX RETURN * PROCESS PERMIT WRITE ERROR. PPB12 RJ PWE PROCESS PERMIT WRITE ERROR SB2 B0 SET NO MESSAGE EQ ABT ABORT LOAD PWE SPACE 4,35 ** PWE - PERMIT WRITE ERROR PROCESSOR. * * ENTRY (X6) = FET ERROR CODE. * (CPAR+COMSPFS/CPDN) = MASTER DEVICE NUMBER. * (PETS+FTPM) = BAD TRACK AND SECTOR ADDRESS. * (*PETS* OUT POINTER) = ADDRESS OF CONTROL WORD FOR * BAD SECTOR. * * EXIT *PFU* DROPPED. * * IF A WRITE ERROR - * ERROR IDLE STATUS SET FOR MASTER EQUIPMENT IF DATA * ON THE PERMITS FILE HAS BEEN CORRUPTED. * UTILITY INTERLOCK CLEARED. * PERMIT WRITE ERROR MESSAGES ISSUED. * * IF A TRACK LIMIT OR ERROR IDLE - * DATA AND PERMITS FOR UNWRITTEN CATALOG ENTRIES ARE * PURGED. * UTILITY PROCESSOR IS DROPPED. * UTILITY INTERLOCK IS CLEARED. * TRACK LIMIT OR ERROR IDLE MESSAGES ARE ISSUED. * MESSAGE IDENTIFYING FIRST FILE NOT LOADED IS * ISSUED. * * USES X - 1, 2, 6, 7. * A - 1, 2, 6, 7. * B - 2. * * CALLS CIN, DUP, PFD, SEI, SFE. * PROCESS TRACK LIMIT/ERROR IDLE CONDITION. PWE3 SX2 PETS RJ PFD PROCESS FULL DEVICE PWE SUBR ENTRY/EXIT SX1 X6-FEWE ZR X1,PWE1 IF WRITE ERROR WITH DATA TRANSFERRED SX1 X6-FEWN CHECK WRITE ERROR WITH NO DATA TRANSFERRED NZ X1,PWE3 IF NOT WRITE ERROR * PROCESS WRITE ERROR. PWE1 SA6 PWEA SAVE ERROR CODE BX6 X6-X6 CLEAR *CATALOG ENTRIES WRITTEN* SA6 CEWF RJ DUP DROP UTILITY PROCESSOR SA1 PWEA ERROR CODE SX1 X1-FEWE NZ X1,PWE2 IF DATA NOT TRANSFERRED TO DEVICE SB2 ELWP * ERROR IDLE SET - PF PERMITS WRITE ...* RJ SEI SET ERROR IDLE STATUS PWE2 RJ CIN CLEAR UTILITY INTERLOCK * IDENTIFY AFFECTED FILE. SA2 PETS+3 GET BAD SECTOR CONTROL WORD SA1 X2 LX1 -36 SET FILE NAME OF BAD FILE SA1 X1+FCFN+FCUI* SB2 ERPW * PERMIT WRITE ERROR ...* RJ SFE SEND ERROR MESSAGE EQ PWEX RETURN PWEA BSS 1 FET ERROR CODE RAS SPACE 4,25 ** RAS - RETURN AVAILABLE SPACE. * * ENTRY (X5) = SECOND WORD OF *MSTT* ENTRY. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY. * (X3) = INCREMENT TO ADD TO AVAILABLE SPACE. * CATALOG ENTRY IN *TCBF*. * * EXIT (X1) = 2/0, 3/ST, 31/0, 24/SC IF SUFFICIENT SPACE FOR * FILE ON DEVICE AND DEVICE IS ACCESSIBLE. * ST = 7 IF DEVICE *ON* AND NOT SUSPECT. * = 6 IF DEVICE *ON* AND SUSPECT. * = 5 IF DEVICE *IDLE* AND NOT SUSPECT. * = 4 IF DEVICE *IDLE* AND SUSPECT. * = 2 IF DEVICE *OFF*. * SC = AVAILABLE SECTOR COUNT ON DEVICE. * (X1) = 0 IF INSUFFICIENT SPACE FOR FILE ON DEVICE OR * DEVICE STATE IS *DOWN*. * (A5) = ADDRESS OF SECOND WORD OF *MSTT* ENTRY. * * USES X - 1, 2, 5, 6, 7. * A - 1, 2, 6, 7. * * MACROS SYSTEM. RAS1 SX1 B0+ SET DEVICE NOT AVAILABLE FOR FILE RAS SUBR ENTRY/EXIT LX5 12 MX6 -12 SX1 DALL+1 WORD COUNT FOR READ BX6 -X6*X5 MST ADDRESS / 10B LX1 36 LX6 3+18 BX6 X6+X1 MERGE WORD COUNT SX2 RASB BUFFER ADDRESS BX6 X6+X2 MERGE BUFFER ADDRESS MX7 1 SET CMR READ SA6 RASA SET STATUS WORD SA7 RASB SET BUFFER CONTROL WORD SYSTEM RSB,R,A6 READ MST DATA SA1 RASB+TDGL SA2 RASB+DALL MX7 -12 MX6 3 LX6 -2 BX1 -X7*X1 TRACKS AVAILABLE BX2 X6*X2 DEVICE STATE AND SUSPECT STATUS LX5 12 IX6 X6-X2 DEVICE STATUS FACTOR AX2 56 BX7 -X7*X5 SECTOR LIMIT SX2 X2-DWES IX1 X1*X7 SECTORS AVAILABLE ON DEVICE ZR X2,RAS1 IF DEVICE STATE IS *DOWN* SA2 TCBF+FCLF IX1 X1+X3 ADD INCREMENT TO AVAILABLE SPACE MX7 -24 LX2 24 BX2 -X7*X2 LENGTH OF FILE SX7 B1+B1 IX2 X1-X2 IX2 X2-X7 SUBTRACT SYSTEM SECTOR AND EOI IX1 X1+X6 MERGE SECTORS AVAILABLE AND STATUS FACTOR NG X2,RAS1 IF INSUFFICIENT SPACE FOR FILE EQ RASX RETURN RASA VFD 12/0,12/DALL+1,18/0,18/RASB *RSB* STATUS WORD RASB BSSZ DALL+1 MST DATA BUFFER ERRNG DALL-TDGL CODE DEPENDS ON WORD ORDER RCT SPACE 4,45 ** RCT - READ CATALOG TRACK. * * *RCT* POSITIONS THE CATALOG FILE TO THE CURRENT CATALOG * TRACK, READS THE TRACK AND BUILDS A LIST OF FILES THAT ARE * CONTAINED ON THE TRACK. THE CATALOG FILE FET AND BUFFER ARE * LEFT IN A STATE READY TO WRITE ADDITIONAL CATALOG ENTRIES. * * ENTRY (CATS+FTCA) = PARAMETERS DEFINING CURRENT CATALOG * TRACK. * UTILITY PROCESSOR ACTIVE. * UTILITY INTERLOCK SET. * * EXIT (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = LWA+1 OF MEMORY RESIDENT PORTION OF FILE * LIST. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * (CSWC) = WORD COUNT OF CATALOG SECTOR REMAINING IN * CIRCULAR BUFFER. * (CEWF) = 0. * (CATS+FTSC) = 0. * (ANCE) = FIRST ADDRESS AVAILABLE FOR NEW CATALOG * ENTRIES. * (CBFO) = BUFFER ORDINAL FOR NEW CATALOG ENTRIES. * CIRCULAR BUFFER (STARTING AT FIRST) CONTAINS A *FULL * SECTOR* CONTROL WORD WITH POSITIONING PARAMETERS * NECESSARY TO REWRITE THE LAST CATALOG SECTOR. ANY * CATALOG ENTRIES FROM THE LAST SECTOR FOLLOW THE * CONTROL WORD. * * IF A CATALOG READ ERROR IS DETECTED, THE UTILITY * PROCESSOR IS DROPPED, ERROR IDLE STATUS IS SET ON THE * MASTER EQUIPMENT, THE UTILITY INTERLOCK IS CLEARED, * CATALOG READ ERROR MESSAGES ARE ISSUED AND EXIT IS TO * *ABT*. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 0, 1, 2, 3, 6, 7. * B - 7. * * CALLS BFL, PCE. * * MACROS RECALL, REWIND. RCT SUBR ENTRY/EXIT * POSITION CATALOG FILE. SA1 CATS POSITION CATALOG FILE MX2 42 BX6 X2*X1 SA6 A1 BX7 X7-X7 CLEAR FILE LIST OVERFLOW SA7 FLOF SX6 FLBF SET FILE LIST BUFFER EMPTY SA6 FLPT SA7 CEWF CLEAR *CATALOG ENTRIES WRITTEN* RECALL A1+ WAIT FOR POSITION COMPLETE REWIND FO,R REWIND OVERFLOW SCRATCH FILE * READ CATALOG TRACK. RCT1 SA1 CATS+1 REWIND CATALOG BUFFER SX6 X1 SA6 A1+B1 SA6 A6+B1 SA0 X1 SAVE BUFFER FIRST POINTER SA1 A1-B1 ISSUE READ REQUEST MX2 42 BX1 X2*X1 SX7 4 SET READ FUNCTION CODE BX6 X1+X7 SA6 A1 RECALL A1 WAIT FOR READ TO COMPLETE RCT2 SA1 CATS+2 CHECK FOR MORE DATA IN BUFFER SX2 A0 IX6 X2-X1 PL X6,RCT1 IF NO DATA IN BUFFER SA1 A0 GET SECTOR CONTROL WORD MX2 -12 EXTRACT WORD COUNT BX6 -X2*X1 LX2 12 EXTRACT EOF/EOI FLAG BX7 -X2*X1 LX1 59-49 NZ X7,RCT3 IF NOT EOF/EOI SX6 B0+ CLEAR SECTOR WORD COUNT RCT3 SA6 CSWC SAVE SECTOR WORD COUNT NG X1,RCT5 IF MASS STORAGE ERROR BX0 X6 SA0 A0+B1 RJ BFL BUILD FILE LIST SA1 CSWC CHECK FOR SHORT SECTOR SX6 X1-100B ZR X6,RCT2 IF NOT SHORT SECTOR * MOVE LAST SECTOR TO START OF BUFFER. SA2 CATS+1 DESTINATION ADDRESS = FIRST SX6 A0-B1 SET ADDRESS OF LAST SECTOR IX7 X6-X1 SA3 X7 SET FULL SECTOR WORD COUNT IN CONTROL WORD MX7 48 SX6 100B BX3 X7*X3 BX7 X3+X6 RCT4 SA7 X2 STORE ONE WORD OF SECTOR SX2 X2+B1 SA3 A3+B1 BX7 X3 SX1 X1-1 PL X1,RCT4 IF NOT END OF SECTOR BX6 X2 SET IN POINTER SA6 A2+B1 SA6 ANCE SET ADDRESS OF NEW CATALOG ENTRIES SA1 CSWC SX2 NWCE IX6 X1/X2 NUMBER OF CATALOG ENTRIES IN SECTOR SA6 CBFO SET NEXT CATALOG ORDINAL EQ RCTX RETURN * PROCESS CATALOG READ ERROR. RCT5 SX7 A0 OUT = ADDRESS OF CONTROL WORD SA7 CATS+3 LX1 49-59 SET SECTOR WORD COUNT MX3 48 BX1 X3*X1 IX2 X7+X6 IN = LWA+1 OF SECTOR BX6 X1+X6 SX7 X2+B1 SA6 A0+ SA7 A7-B1 SX6 ERCR * CATALOG READ ERROR* RJ PCE PROCESS CATALOG READ ERROR SB2 B0 SET NO ERROR EQ ABT ABORT RCW SPACE 4,20 ** RCW - READ ARCHIVE FILE CONTROL WORD. * * ENTRY (RCWF) = 0 IF NEW CONTROL WORD TO BE READ. * = NON-ZERO IF OLD CONTROL WORD IN *CWBF* TO * BE USED. * * EXIT (X1) = READ STATUS FROM *CWREAD*. * (X3) = -1 IF EOR/EOF/EOI OR READ ERROR DETECTED. * = CONTROL WORD CODE, OTHERWISE. * (X7) = READ ERROR STATUS FROM *CWREAD*. * (CWBF) = ARCHIVE FILE CONTROL WORD. * (RCWF) = 0. * *CWSW* CLEARED FOR ARCHIVE FILE IF EOR WAS DETECTED * WITHOUT READ ERROR. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 6, 7. * * MACROS CWREAD. * PROCESS RE-USED CONTROL WORD. RCW3 SA2 CWBF UNPACK CONTROL WORD CODE MX6 -3 BX7 X7-X7 CLEAR ERROR STATUS LX2 -12 BX1 X1-X1 CLEAR EOR/EOF/EOI STATUS SA7 A1 CLEAR CONTROL WORD RE-USE FLAG BX3 -X6*X2 RCW SUBR ENTRY/EXIT SA1 RCWF NZ X1,RCW3 IF CONTROL WORD RE-USE FLAG SET * PROCESS NEW CONTROL WORD. CWREAD TAPE,CWBF,B1 READ ARCHIVE FILE CONTROL WORD NZ X7,RCW2 IF READ ERROR NZ X1,RCW1 IF EOR/EOF/EOI SA2 B6-B1 UNPACK CONTROL WORD CODE MX6 -3 LX2 -12 BX3 -X6*X2 EQ RCWX RETURN * PROCESS EOR/EOF/EOI. RCW1 SX3 -B1 SET EOR/EOF/EOI/READ ERROR STATUS NG X1,RCWX IF EOF/EOI BX6 X6-X6 CLEAR EOR SA6 TAPE+CWSW EQ RCWX RETURN * PROCESS READ ERROR. RCW2 SA7 AREF INDICATE READ ERROR SX3 -B1 SET EOR/EOF/EOI/READ ERROR STATUS EQ RCWX RETURN RIP SPACE 4,10 ** RIP - REPRIEVE INTERRUPT PROCESSOR. * * EXIT BUSY FETS SET COMPLETE TO ALLOW TERMINATION * PROCESSING. * * MACROS COMPFET. RIP SUBR ENTRY/EXIT COMPFET (CATS,PETS,DATA,CIRF,TAPE,UIFT,FO,O,SU) EQ RIPX RETURN SCE SPACE 4,15 ** SCE - SET CATALOG ERROR CODE. * * ENTRY (X6) = DATA ERROR OR PERMIT ERROR CODE. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * (CBFO) = CATALOG BUFFER ORDINAL. * * EXIT CATALOG ERROR CODE SET IN CATALOG ENTRY AND IN FILE * STATUS ENTRY. * * USES X - 1, 6, 7. * A - 1, 6, 7. SCE SUBR ENTRY/EXIT SA1 CATS+2 SA1 X1+FCEC GET CURRENT *PFC* ERROR CODE LX6 42 BX7 X1+X6 MERGE NEW ERROR CODE LX6 -41 SA7 A1 SA1 CBFO GET CATALOG BUFFER ORDINAL SA1 TFST+X1 GET FILE STATUS WORD BX7 X1+X6 MERGE ERROR CODE SA7 A1 EQ SCEX RETURN SCI SPACE 4,20 ** SCI - SKIP CATALOG IMAGE RECORD. * * EXIT (RCWF) = SET IF A CONTROL WORD OTHER THAN FOR A * CATALOG IMAGE RECORD WAS FOUND BEFORE * EOF/EOI. * ARCHIVE FILE POSITIONED FOR PROCESSING FIRST RECORD * THAT IS NOT A CATALOG IMAGE RECORD. THIS MAY BE AT * EOF/EOI. * * USES X - 5, 6. * A - 6. * * CALLS RCW, SER. SCI4 SX6 B1+ SET CONTROL WORD RE-USE FLAG SA6 RCWF SCI SUBR ENTRY/EXIT SCI1 RJ RCW READ ARCHIVE FILE CONTROL WORD SX6 X3-5 ZR X6,SCI3 IF CATALOG IMAGE RECORD PL X3,SCI4 IF CONTROL WORD AVAILABLE NZ X7,SCI2 IF READ ERROR NG X1,SCIX IF EOF/EOI EQ SCI1 CHECK NEXT RECORD * SKIP TO END OF RECORD. SCI2 SA7 AREF INDICATE READ ERROR SCI3 RJ SER SKIP TO END OF RECORD EQ SCI1 CHECK NEXT RECORD SEC SPACE 4,15 ** SEC - SKIP THROUGH EOI CONTROL WORD. * * ENTRY (X2) = FET ADDRESS. * * EXIT (X2) = FET ADDRESS. * (A0) = SECTOR COUNT SKIPPED. * *CIO* EOR STATUS SET IN FET. * DATA READ FROM BUFFER UNTIL AN EOI SECTOR IS READ OR * UNTIL BUFFER IS EMPTY. * * USES X - 0, 5, 6. * A - 0, 5, 6. * * MACROS READW, RECALL. SEC3 SX5 X5-2 NZ X5,SEC1 IF NOT EOI CONTROL WORD SEC SUBR ENTRY/EXIT RECALL X2 SET EOR STATUS IN FET SA5 X2 MX6 42 SX0 23B BX5 X6*X5 BX6 X5+X0 SA0 B0 CLEAR SECTOR COUNT SA6 A5 SEC1 READW X2,SECA,B1 READ CONTROL WORD NZ X1,SECX IF BUFFER EMPTY SA5 SECA GET SECTOR WORD COUNT MX6 -12 BX0 -X6*X5 AX5 54 GET CONTROL WORD TYPE SA0 A0+B1 INCREMENT SECTOR COUNT SEC2 ZR X0,SEC3 IF END OF SECTOR READW X2,SECA,B1 READ ONE WORD OF SECTOR NZ X1,SECX IF BUFFER EMPTY SX0 X0-1 EQ SEC2 CHECK FOR END OF SECTOR SECA CON 0 SCRATCH BUFFER SER SPACE 4,10 ** SER - SKIP TO END OF RECORD. * * EXIT ARCHIVE FILE POSITIONED AT EOR/EOF/EOI. * *CWSW* CLEARED FOR ARCHIVE FILE IF NOT EOF/EOI. * (X1) .LT. 0 IF EOF/EOI. * * USES X - 2, 5, 6, 7. * A - 2, 6. * * MACROS CWREAD. SER SUBR ENTRY/EXIT SER1 CWREAD TAPE,TDBF,TDBFL ZR X7,SER2 IF NO READ ERROR SA7 AREF INDICATE READ ERROR ZR B7,SER1 IF TRANSFER COMPLETE SER2 ZR X1,SER1 IF NOT EOR/EOF/EOI NG X1,SERX IF EOF/EOI SX6 B0+ CLEAR EOR SA6 TAPE+CWSW EQ SERX RETURN SFD SPACE 4,15 ** SFD - SEARCH FOR DEVICE. * * ENTRY (X2) = DEVICE NUMBER TO SEARCH FOR IF .NE. 0. * (X2) = 0 IF SEARCH FOR MASTER DEVICE. * (CPAR+/COMSPFS/CPDN) = MASTER DEVICE NUMBER. * * EXIT (A1) = ADDRESS OF FIRST WORD OF DEVICE-S *MSTT* ENTRY. * (X1) = FIRST WORD OF DEVICE-S ENTRY. * (X1) = 0 IF DEVICE NOT FOUND IN TABLE. * * USES X - 0, 1, 2, 7. * A - 1, 2. * B - 7. SFD SUBR ENTRY/EXIT MX0 -6 SB7 MSTT NZ X2,SFD1 IF NOT MASTER DEVICE SEARCH SA2 CPAR+/COMSPFS/CPDN GET MASTER DEVICE NUMBER SFD1 SA1 B7+ READ NEXT TABLE ENTRY ZR X1,SFDX IF END OF TABLE SB7 B7+2 ADVANCE TABLE ADDRESS BX7 -X0*X1 IX7 X2-X7 NZ X7,SFD1 IF NOT MATCHING DEVICE EQ SFDX RETURN SFL SPACE 4,15 ** SFL - SEARCH FILE LIST. * * ENTRY (TCBF) = CATALOG ENTRY FOR FILE. * (FLOF) = 0 IF NO FILE LIST OVERFLOW. * = 1 IF FILE LIST OVERFLOWED TO MASS STORAGE. * (FLPT) = NEXT AVAILABLE LOCATION IN FILE LIST BUFFER. * (FLBF) = MEMORY RESIDENT PORTION OF FILE LIST. * * EXIT (X6) = 0 IF FILE IN LIST. * (X6) .NE. 0 IF FILE NOT IN LIST. * * USES X - 0, 1, 2, 3, 5, 6. * A - 1, 2, 3. * * MACROS READ, READW, REWIND. SFL5 SX6 B1+ SET FILE NOT FOUND SFL SUBR ENTRY/EXIT * CHECK FOR PRIVATE AUXILIARY DEVICE. SA1 CPAR+/COMSPFS/CPPN SA2 CPAR+/COMSPFS/CPUN MX5 60 SET TO CHECK FILE NAME AND USER INDEX ZR X1,SFL1 IF NOT AUXILIARY DEVICE ZR X2,SFL1 IF NOT PRIVATE DEVICE MX5 42 SET TO CHECK FILE NAME ONLY * SEARCH MEMORY RESIDENT PORTION OF FILE LIST. SFL1 SA1 TCBF+FCFN+FCUI*0 GET FILE NAME AND USER INDEX SA2 FLPT LWA+1 OF FILE LIST SX0 FLBF FWA OF FILE LIST SFL2 IX6 X0-X2 PL X6,SFL3 IF NO MORE ENTRIES IN LIST SA3 X0 COMPARE FILE NAME AND USER INDEX BX6 X3-X1 BX6 X5*X6 SX0 X0+1 ADVANCE FILE LIST BUFFER ADDRESS ZR X6,SFLX IF MATCHING ENTRY EQ SFL2 CHECK NEXT ENTRY * SEARCH SCRATCH FILE PORTION OF FILE LIST. SFL3 SA3 FLOF ZR X3,SFL5 IF NO FILE LIST OVERFLOW REWIND FO START SCRATCH FILE READ READ FO SFL4 READW FO,SFLA,1 GET NEXT FILE LIST ENTRY NZ X1,SFL5 IF END OF SCRATCH FILE SA1 TCBF+FCFN+FCUI* COMPARE FILE NAME AND USER INDEX SA2 SFLA BX6 X1-X2 BX6 X5*X6 ZR X6,SFLX IF MATCHING ENTRY EQ SFL4 CHECK NEXT ENTRY SFLA CON 0 FILE LIST ENTRY SCRATCH WORD SIN SPACE 4,15 ** SIN - SET PF UTILITY INTERLOCK. * * ENTRY (UIFL) = UTILITY INTERLOCK FLAG. * (MAEQ) = EQUIPMENT TO SET INTERLOCK ON. * * EXIT (UIFL) = 1. * *PFU* CALLED TO SET UTILITY INTERLOCK IF NOT ALREADY * SET. * * USES X - 1, 2, 3, 6. * A - 1, 2, 3, 6. * * MACROS CALLPFU, MESSAGE, MOVE. SIN SUBR ENTRY/EXIT SA1 UIFL NZ X1,SINX IF UTILITY INTERLOCK ALREADY SET SA2 MAEQ SET MASTER DEVICE EST ORDINAL SX1 UIFL SET INTERLOCK FLAG ADDRESS LX2 48 BX6 X2+X1 SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS SA6 UIFT+FTPM MOVE 3,MSGJ,X3 * SETTING UTILITY INTERLOCK.* MESSAGE MSGJ,2,R CALLPFU UIFT,CTSU,R SET PF UTILITY INTERLOCK SA3 IDSA+/COMSPFS/ADM2 K DISPLAY MESSAGE ADDRESS MOVE 3,BLNK,X3 CLEAR MESSAGES MESSAGE (=C**),2,R EQ SINX RETURN SMD SPACE 4,30 ** SMD - SET MASTER DEVICE PARAMETERS. * * ENTRY (TCBF) = CURRENT CATALOG ENTRY. * (MMSK) = CURRENT MASTER DEVICE MASK. * (NCTR) = CURRENT NUMBER OF CATALOG TRACKS. * (CCTR) = CURRENT CATALOG TRACK. * * EXIT (MMSK) = UPDATED MASTER DEVICE MASK. * (NCTR) = UPDATED NUMBER OF CATALOG TRACKS. * (CCTR) = UPDATED CURRENT CATALOG TRACK. * (MAEQ) = UPDATED MASTER EQUIPMENT. * (CPAR+/COMSPFS/CPDN) = UPDATED MASTER DEVICE NUMBER. * MASTER DEVICE SWITCH MADE IF NECESSARY. * FILES OPENED IF A MASTER DEVICE SWITCH IS MADE. * UTILITY INTERLOCK SET. * UTILITY PROCESSOR ACTIVE. * FILES POSITIONED. * * USES X - 0, 1, 2, 3, 4, 6, 7. * A - 1, 2, 3, 4, 6, 7. * B - 2. * * CALLS AUP, CIN, DUP, FCB, RCT, SIN. * * MACROS CALLPFU, RETURN, SETFS. SMD1 RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK * GET CATALOG TRACK PARAMETERS. SX1 PDWD SET ADDRESS OF PF DESCRIPTION WORD SX2 TCBF+FCUI SET ADDRESS OF USER INDEX IN CATALOG LX1 18 BX6 X1+X2 SA6 CATS+FTCA SA6 CATS+FTPM CALLPFU CATS,CTCT,R GET CATALOG TRACK PARAMETERS * SET UP NEW MASTER DEVICE PARAMETERS. SA3 TCBF+FCUI SET *TMDA* INDEX MX0 -3 BX3 -X0*X3 SA3 TMDA+X3 GET *MSTT* ADDRESS SA3 X3+ SA4 A3+B1 MX0 -6 BX6 -X0*X3 SET MASTER DEVICE NUMBER MX0 -9 SA6 CPAR+/COMSPFS/CPDN LX3 -6 BX6 -X0*X3 SET MASTER EQUIPMENT LX3 -9 SA6 MAEQ BX7 -X0*X3 SET NUMBER OF CATALOG TRACKS MX0 -8 BX6 -X0*X4 SET MASTER DEVICE MASK LX3 -9 SA7 NCTR SA6 MMSK SA1 TCBF+FCUI SET CURRENT CATALOG TRACK SX2 X7-1 LX1 -3 BX7 X2*X1 SA7 CCTR * SET UP CATALOG FST ENTRY. SA1 CATS+FTPM GET CATALOG TRACK PARAMETERS SX2 5 SET FILE STATUS MX0 -24 BX1 -X0*X1 SET EQ AND FIRST TRACK MX0 -12 BX6 -X0*X1 SET CURRENT TRACK LX1 36 BX2 X2+X1 BUILD CATALOG TRACK FST ENTRY LX6 24 BX7 X2+X6 SA7 A1 LX0 36 SET ID, EQ AND STATUS BX6 X0*X2 * SET UP PERMITS FST ENTRY. SX1 10000B*FSMS SET SECTOR FOR *PETS* AND *DATA* BX6 X6+X1 MX0 -12 BX1 -X0*X3 SET FIRST PERMITS TRACK BX2 X1 SET CURRENT TRACK LX1 36 LX2 24 BX7 X6+X1 LX3 -24 BX7 X7+X2 SA7 PETS+FTPM * SET UP DATA FST ENTRY. BX1 -X0*X3 SET FIRST DATA TRACK BX2 X1 SET CURRENT TRACK LX1 36 BX7 X6+X1 LX2 24 BX7 X7+X2 SA7 DATA+FTPM * OPEN FILES AND SET SPECIAL SYSTEM FILE STATUS RETURN CATS RETURN ANY EXISTING FILES RETURN PETS RETURN DATA CALLPFU CATS,CTOP,R OPEN *CATS* FILE CALLPFU PETS,CTOP,R OPEN *PETS* FILE CALLPFU DATA,CTOP,R OPEN *DATA* FILE SETFS CATS,SSST SETFS PETS,SSST SETFS DATA,SSST * SET UTILITY INTERLOCK AND ACTIVATE *PFU*. SMD2 RJ SIN SET UTILITY INTERLOCK RJ AUP ACTIVATE *PFU* * CHECK FOR NEW MASTER DEVICE. SMD SUBR ENTRY/EXIT SA2 TCBF+FCUI USER INDEX OF FILE SA1 MMSK MX0 -3 BX6 -X0*X2 SELECT CORRECT MASK BIT SB2 X6-59 AX1 X1,B2 PL X1,SMD1 IF NOT CORRECT MASTER DEVICE * CHECK FOR NEW CATALOG TRACK. LX2 -3 SA1 NCTR SET CATALOG TRACK MASK SA3 CCTR CURRENT CATALOG TRACK SX6 X1-1 BX7 X6*X2 NEW CATALOG TRACK IX2 X3-X7 ZR X2,SMD2 IF SAME CATALOG TRACK * SWITCH CATALOG TRACKS. SA1 PAFL SA7 A3+ SAVE NEW CATALOG TRACK ZR X1,SMD2 IF *PFU* NOT ACTIVE RJ FCB FLUSH CATALOG BUFFER RJ RCT READ NEW CATALOG TRACK EQ SMDX RETURN SRD SPACE 4,15 ** SRD - SELECT RESIDENCY DEVICE FOR LOAD LEVELING. * * ENTRY PFC ENTRY FOR FILE IN *TCBF*. * (B6) = DAPF MASK SHIFT COUNT. * * EXIT (B2) = *MSTT* ADDRESS OF DEVICE IF DEVICE SELECTED. * (B2) = -1 IF NO DEVICE FOR USER INDEX OF FILE. * (B2) = 0 IF NO DEVICE FOR ACCESS LEVEL OF FILE. * (B2) = 1 IF NO DEVICE WITH SPACE FOR FILE. * * USES X - 2, 3, 4, 5. * A - 5. * B - 2, 3. * * CALLS CAL, RAS. SRD SUBR ENTRY/EXIT * INITIALIZE SEARCH PARAMETERS. SA5 MSTT-1 INITIALIZE SEARCH ADDRESS SB2 -B1 PRESET ERROR STATUS = NO DEVICE FOR UI SX4 -B1 INITIALIZE BEST DEVICE STATUS * ADVANCE TO NEXT DEVICE AND CHECK DEVICE MASK. SRD1 SA5 A5+2 GET DEVICE PARAMETERS AX2 X5,B6 POSITION DAPF MASK BIT ZR X5,SRDX IF END OF DEVICES PL X2,SRD1 IF USER INDEX NOT ALLOWED ON DEVICE * CHECK ACCESS LEVELS, DEVICE STATE, AND AVAILABLE SPACE. RJ CAL CHECK ACCESS LEVELS SB3 B0 SET ACCESS LEVEL ERROR NG X6,SRD2 IF FILE NOT WITHIN DEVICE LEVELS SX3 B0 SET NO SPACE INCREMENT RJ RAS RETURN AVAILABLE SPACE SB3 B1 SET NO SPACE FOR FILE ERROR ZR X1,SRD2 IF INSUFFICIENT SPACE ON DEVICE IX2 X1-X4 NG X2,SRD1 IF PREVIOUS DEVICE BETTER BX4 X1 SET NEW BEST DEVICE STATUS SB2 A5-B1 SET BEST DEVICE POINTER EQ SRD1 ADVANCE TO NEXT DEVICE * PROCESS ACCESS LEVEL CONFLICT OR NO SPACE AVAILABLE. SRD2 SX2 B2-B3 PL X2,SRD1 IF NO LOWER PRIORITY ERROR SET SB2 B3 UPDATE ERROR STATUS EQ SRD1 ADVANCE TO NEXT DEVICE SSC SPACE 4,15 ** SSC - SET SECTOR COUNTER. * * ENTRY (X2) = FET ADDRESS. * FET NOT BUSY. * * EXIT (X2) = FET ADDRESS. * (X2+FTSC) = SECTOR COUNT IN BUFFER. * * USES X - 1, 5, 6, 7. * A - 1, 5, 6, 7. * * MACROS READW. SSC3 SA1 SSCA RESTORE IN SA5 A1+B1 RESTORE OUT BX6 X1 LX7 X5 SA6 X2+2 SA7 A6+B1 SSC SUBR ENTRY/EXIT SA1 X2+2 SAVE IN SA5 A1+B1 SAVE OUT BX6 X1 LX7 X5 SA6 SSCA SA7 A6+B1 SA1 X2 SET EOR STATUS IN FET MX6 48 SX5 23B BX1 X6*X1 SX7 B0+ CLEAR SECTOR COUNT BX6 X1+X5 SA7 X2+FTSC SA6 X2+ SSC1 READW X2,SSCB,B1 READ CONTROL WORD NZ X1,SSC3 IF BUFFER EMPTY SA1 SSCB GET SECTOR WORD COUNT MX6 -12 BX5 -X6*X1 SA1 X2+FTSC INCREMENT SECTOR COUNT SX6 X1+B1 SA6 A1 SSC2 ZR X5,SSC1 IF END OF SECTOR READW X2,SSCB,B1 READ ONE WORD OF SECTOR NZ X1,SSC3 IF BUFFER EMPTY SX5 X5-1 EQ SSC2 CHECK FOR END OF SECTOR SSCA BSSZ 2 IN AND OUT SAVE AREA SSCB CON 0 SCRATCH BUFFER VFN SPACE 4,10 ** VFN - VALIDATE FILE NAME. * * ENTRY (TCBF) = CURRENT CATALOG ENTRY. * * EXIT (X3) .GE. 0, IF FILE NAME NOT VALID * * USES X - 0, 1, 2, 3. * A - 1. VFN SUBR ENTRY/EXIT SA1 TCBF+FCFN CHECK FILE NAME MX2 42 BX1 X2*X1 MX0 -6 LX1 6 SX2 1R9+1 VFN1 BX3 -X0*X1 CHECK FOR NON-ALPHANUMERIC CHARACTER ZR X3,VFNX IF CHARACTER NOT VALID BX1 X0*X1 IX3 X3-X2 PL X3,VFNX IF CHARACTER NOT VALID LX1 6 NZ X1,VFN1 IF MORE CHARACTERS EQ VFNX RETURN WCE SPACE 4,20 ** WCE - WRITE CATALOG ENTRY. * * ENTRY (CSWC) = CURRENT CATALOG SECTOR WORD COUNT. * (*CATS* IN POINTER) = ADDRESS OF CATALOG ENTRY. * * EXIT (CSWC) = UPDATED SECTOR WORD COUNT. * (CBFO) = UPDATED CATALOG BUFFER ORDINAL. * (IPFF) = 0. * (CEWF) = 0 IF CATALOG BUFFER FLUSHED. * = 1 IF CATALOG BUFFER NOT FLUSHED. * CATALOG FILE BUFFER POINTERS ADJUSTED. * CATALOG BUFFER FLUSHED IF NECESSARY. * FULL SECTOR CONTROL WORD WRITTEN TO BUFFER IF * NECESSARY. * * USES X - 1, 2, 6, 7. * A - 1, 2, 6, 7. * * CALLS FCB. WCE SUBR ENTRY/EXIT BX6 X6-X6 CLEAR INCOMPLETE FILE FLAG SA6 IPFF SX7 B1 SET *CATALOG ENTRIES WRITTEN* SA7 CEWF SA2 CBFO ADVANCE CATALOG ORDINAL IX7 X2+X7 SA7 A2 SA2 CATS+2 SET IN POINTER TO END OF CATALOG ENTRY SA1 CSWC ADJUST SECTOR WORD COUNT SX6 X2+NWCE SX7 X1+NWCE SA6 A2 SA7 A1 SX1 X7-100B NG X1,WCEX IF NOT FULL SECTOR BX6 X6-X6 CLEAR SECTOR WORD COUNT SA6 A1 SA1 CATS+FTSC INCREMENT SECTOR COUNTER SX7 X1+B1 SA7 A1+ LX7 59-11 NG X7,WCE1 IF AT SECTOR LIMIT SA1 CATS+4 CHECK BUFFER SPACE SA2 CATS+2 SX6 X1-101B IX7 X2-X6 NG X7,WCE2 IF ROOM FOR FULL SECTOR WCE1 RJ FCB FLUSH CATALOG BUFFER WCE2 SX6 100B SET FULL SECTOR CONTROL WORD SA1 CATS+2 SA6 X1 SX7 X1+B1 ADJUST IN POINTER SA7 A1+ EQ WCEX RETURN WPR SPACE 4,20 ** WPR - WRITE PRU TO *PFU* CIRCULAR BUFFER. * * ENTRY (X2) = FET ADDRESS. * (B6) = FWA OF WORKING BUFFER. * (B7) = WORD COUNT OF WORKING BUFFER. * * EXIT (X2) = FET ADDRESS. * (B7) = 0 IF NO WRITE ERROR DETECTED. * = SAME AS ENTRY IF WRITE ERROR DETECTED. * (X6) = ERROR CODE FROM FET IF (B7) IS NON-ZERO. * DATA WRITTEN TO CIRCULAR BUFFER. * WRITE REQUEST ISSUED IF BUFFER AT LEAST HALF FULL. * * USES X - 1, 3, 6, 7. * A - 1, 3, 6, 7. * B - 2, 3, 4, 6, 7. * * CALLS FUB. * * MACROS RECALL. WPR SUBR ENTRY/EXIT * CHECK SECTOR COUNTER. SA1 X2+FTSC CHECK SECTOR COUNTER LX1 59-11 PL X1,WPR1 IF SECTOR COUNTER NOT AT THRESHOLD RJ FUB FLUSH BUFFER NZ X6,WPRX IF WRITE ERROR SA6 X2+FTSC CLEAR SECTOR COUNTER * CHECK BUFFER SPACE. WPR1 ZR B7,WPRX IF NO DATA TO TRANSFER SA1 X2+2 (B2) = IN SB2 X1 SA1 A1+B1 (B4) = OUT SB4 X1 SA1 A1+B1 (B3) = LIMIT SB3 X1 SB4 B4-B2 BUFFER SPACE + 1 = OUT - IN GE B4,B1,WPR2 IF NO BUFFER WRAP SA1 X2+B1 BUFFER SPACE + 1 = (OUT-IN)+(LIMIT-FIRST) SB4 B4+B3 BX1 -X1 SB4 B4+X1 WPR2 GT B4,B7,WPR4 IF ENOUGH ROOM IN BUFFER * PROCESS BUFFER FULL. SA1 X2 GET FILE NAME MX6 42 BX7 X6*X1 LX1 59-0 CHECK BUFFER STATUS SX3 B1+B1 SET WRITE FUNCTION CODE MX6 -6 PL X1,WPR3 IF BUFFER BUSY LX1 0-12-59+0+60 GET ERROR STATUS BX6 -X6*X1 IX7 X7+X3 NZ X6,WPRX IF WRITE ERROR SA7 X2 ISSUE WRITE REQUEST WPR3 RECALL WAIT FOR *PFU* TO CATCH UP EQ WPR1 CHECK BUFFER SPACE * MOVE DATA TO CIRCULAR BUFFER. WPR4 SA1 B6 MOVE WORD SB6 B6+B1 ADVANCE WORKING BUFFER ADDRESS BX6 X1 SB7 B7-B1 DECREMENT WORD COUNT SA6 B2 SB2 B2+B1 ADVANCE IN LT B2,B3,WPR5 IF IN .LT. LIMIT SA1 X2+B1 IN = FIRST SB2 X1 WPR5 NZ B7,WPR4 IF WORKING BUFFER NOT EMPTY * CHECK BUFFER THRESHOLD. SX6 B2 UPDATE IN SA3 X2 CHECK BUFFER STATUS SA1 X2+FTSC INCREMENT SECTOR COUNTER SA6 X2+2 SX7 X1+B1 LX3 59-0 SA7 A1 SA1 X2+B1 FIRST PL X3,WPRX IF BUFFER ALREADY BUSY SA3 X2+3 OUT SX6 B3 SX1 X1 IX7 X6-X1 BUFFER SIZE = LIMIT - FIRST SX6 B2 BUFFER WC = IN - OUT IX3 X6-X3 PL X3,WPR6 IF NO BUFFER WRAP IX3 X3+X7 BUFFER WC = BUFFER WC + BUFFER SIZE WPR6 AX7 1 BUFFER SIZE / 2 IX1 X3-X7 NG X1,WPRX IF BUFFER NOT AT LEAST HALF FULL SA1 X2 GET FILE NAME MX6 42 BX7 X6*X1 LX1 -12 GET ERROR STATUS MX3 -6 BX6 -X3*X1 SX1 B1+B1 SET WRITE FUNCTION CODE BX7 X7+X1 NZ X6,WPRX IF WRITE ERROR SA7 X2+ ISSUE WRITE REQUEST EQ WPRX RETURN TITLE INCREMENTAL LOAD SUBROUTINES. AAT SPACE 4,20 ** AAT - ASSIGN NEXT ARCHIVE TAPE. * * ENTRY (X1) = VSN LEFT JUSTIFIED. * * EXIT (X6) = 0 IF NEW ARCHIVE TAPE ASSIGNED. * (X6) .NE. 0 IF ARCHIVE FILE LABEL BAD OR MISSING ON * SELECTED TAPE. * OLD ARCHIVE FILE UNLOADED. * ARCHIVE FILE LABEL PROCESSED IF LABEL GOOD. * * USES X - 1, 4, 5, 6, 7. * A - 1, 4, 6, 7. * * CALLS PAL, ZTB. * * MACROS LABEL, READCW, UNLOAD. AAT SUBR ENTRY/EXIT RJ ZTB SPACE FILL VSN MX7 36 BX7 X7*X6 SX6 B0 SA7 TAPE+11B SET VSN IN FET SA6 A7+B1 CLEAR TAPE LABEL PARAMETERS SA6 A6+B1 SA6 A6+B1 SA6 A6+B1 UNLOAD TAPE,R UNLOAD OLD ARCHIVE FILE SA4 X2+B1 CLEAR DEVICE TYPE MX6 -48 SX5 1 CLEAR ERROR PROCESSING BIT BX4 -X6*X4 LX5 44 BX6 -X5*X4 SA6 A4 LABEL TAPE REQUEST ARCHIVE TAPE SA4 X2+B1 SET ERROR PROCESSING BIT BX6 X5+X4 SA6 A4 SA1 X2+B1 SET IN=OUT=FIRST SX6 X1 SA6 A1+B1 SA6 A6+B1 READCW X2,17B INITIATE CONTROL WORD READ SX6 B0+ CLEAR CONTROL WORD STATUS WORD SA6 TAPE+CWSW RJ PAL CHECK ARCHIVE LABEL ZR X6,AATX IF GOOD ARCHIVE FILE LABEL UNLOAD TAPE,R UNLOAD TAPE SX6 B1 SET ASSIGNMENT NOT MADE EQ AATX RETURN ART SPACE 4,20 ** ART - ARCHIVE FILE TRANSITION PROCESSOR. * * ENTRY END OF INCREMENTAL LOAD FILE DETECTED. * * EXIT (X6) = 0 IF NOT END OF INCREMENTAL LOAD. * = NON-ZERO IF END OF INCREMENTAL LOAD. * UTILITY PROCESSOR INACTIVE. * UTILITY INTERLOCK CLEAR. * FILES REMAINING ON CATALOG IMAGE RECORD LISTED IF * SELECTED BY OPERATOR. * NEW ARCHIVE FILE ASSIGNED IF NOT END OF LOAD. * * USES X - 1, 2, 4, 5, 6, 7. * A - 1, 2, 4, 5, 7. * B - 2, 3, 4, 5. * * CALLS AAT, ARM, CCI, CIN, CMA, DUP, KIP, LFS, SRS, USB, ZTB. * * MACROS MOVE. ART SUBR ENTRY/EXIT * DROP *PFU* AND FLUSH CIR BUFFER. RJ DUP DROP UTILITY PROCESSOR RJ CIN CLEAR UTILITY INTERLOCK SX7 B0+ SET FLAG TO FLUSH CIR BUFFER SA7 TCBF+FCUI RJ CCI FLUSH CIR BUFFER * PROCESS *OP=V* SELECTED. SA1 CPAR+/COMSPFS/CPOP LX1 59-51 PL X1,ART1 IF *OP=V* NOT SELECTED SA1 TLBF+/COMSPFS/PVAL CHECK FOR NEXT VSN SA2 =10H MX6 36 BX2 X1-X2 BX1 X6*X1 BX2 X6*X2 ZR X1,ARTX IF NEXT VSN NOT PRESENT ZR X2,ARTX IF NEXT VSN NOT PRESENT RJ AAT ASSIGN ARCHIVE TAPE ZR X6,ARTX IF TAPE ASSIGNED SB2 ERAL * ERROR IN ACHIVE FILE LABEL.* EQ ABT ABORT * SET *K* DISPLAY RIGHT SCREEN FOR INPUT. ART1 SA5 IDSA+/COMSPFS/ADM2 MOVE 4,MSGH,X5 *END OF LOAD FILE - SEE RIGHT SCREEN.* SX6 ARTA RJ SRS SELECT RIGHT SCREEN * CLEAR VSN SELECTION. ART2 SA1 =10H SX6 B0 BX7 X1 SA6 VSPR CLEAR *VSN* PARAMETER SA7 ARTB+1 CLEAR VSN IN DISPLAY * GET OPERATOR INPUT. ART3 SX7 B0+ CLEAR *LIST* AND *END* INDICATORS SA7 LTPR SA7 ENPR SB2 ART4 SET ARGUMENT PROCESSOR ADDRESS SB3 ART9 SET FUNCTION PROCESSOR ADDRESS EQ /COMSPFS/KIP PROCESS KEYBOARD INPUT * PROCESS ARGUMENT ENTRY. ART4 SB2 /COMSPFS/KIN SET PARAMETERS ADDRESS RJ USB UNPACK PARAMETERS SB3 ARGT SET ARGUMENT TABLE ADRESS RJ ARM PROCESS ARGUMENTS ZR X1,ART5 IF NO ERROR SA5 IDSA+/COMSPFS/ADER MOVE 4,MSGT,X5 *INCORRECT OPTION.* EQ ART3 PROCESS KEYBOARD INPUT ART5 SA1 ENPR ZR X1,ART6 IF NOT END OF LOAD RJ CMA CLEAR MESSAGE AREA SX6 B1 SET END OF LOAD STATUS EQ ARTX RETURN ART6 SA1 LTPR ZR X1,ART7 IF NOT LIST FILES RJ CMA CLEAR MESSAGE AREA RJ LFS LIST FILES EQ ART1 PROCESS KEYBOARD INPUT ART7 SA1 VSPR MX7 42 MX6 -24 ZR X1,ART3 IF VSN NOT ENTERED BX1 X7*X1 BX7 -X6*X1 ZR X7,ART8 IF VALID VSN SA5 IDSA+/COMSPFS/ADER MOVE 4,MSGP,X5 *ENTERED VSN TOO LONG.* EQ ART2 CLEAR VSN SELECTION ART8 RJ ZTB SPACE FILL VSN SA6 ARTB+1 SET VSN IN DISPLAY EQ ART3 PROCESS KEYBOARD INPUT * PROCESS *GO* ENTRY. ART9 SA1 VSPR NZ X1,ART10 IF VSN ENTERED SA5 IDSA+/COMSPFS/ADER DISPLAY BAD LABEL MESSAGE MOVE 4,MSGQ,X5 *NO VSN ENTERED.* EQ ART3 GET OPERATOR INPUT ART10 RJ AAT ASSIGN ARCHIVE TAPE ZR X6,ART12 IF TAPE ASSIGNED SA5 IDSA+/COMSPFS/ADER DISPLAY BAD LABEL MESSAGE MOVE 4,MSGV,X5 *ARCHIVE LABEL BAD, SELECT NEW VSN.* EQ ART2 CLEAR VSN SELECTION * PROCESS TAPE ASSIGNED. ART12 RJ CMA CLEAR MESSAGE AREA SX6 B0 SET TAPE ASSIGNED EQ ARTX RETURN * RIGHT SCREEN BUFFER FOR TAPE TRANSITION. ARTA VFD 12/0,36/0,12/0 DISPLAY CONTROL WORD KDL 10,T,(INCREMENTAL LOAD FILE TRANSITION OPTIONS.) KDL 13,H,(ENTER K.OPTION.) KDL 13,,(OPTION) KDL 30,H,(DESCRIPTION) KDL 13,K,(END TERMINATE LOAD.) KDL 13,K,(LIST LIST REMAINING FILES.) ARTB KDL 13,K,(VSN = VSN OF NEXT TAPE.) KDL 13,K,(GO RESUME LOAD AFTER VSN ENTERED.) CON 0 END OF BUFFER * ENTERED PARAMETERS. LTPR CON 0 *LIST* ENPR CON 0 *END* VSPR CON 0 *VSN* * ARGUMENT TABLE. ARGT BSS 0 LIST ARG -NZ,LTPR,,1 END ARG -NZ,ENPR,,1 VSN ARG NZ,VSPR,,1 CON 0 NZ CON 1 NON-ZERO VALUE CCI SPACE 4,20 ** CCI - CHECK CATALOG IMAGE. * * ENTRY (TCBF) = CATALOG ENTRY BEING PROCESSED. * (TCBF+FCUI) = 0, IF INDEX TO BE FLUSHED. * (INCF) = INCREMENTAL LOAD FLAG. * (CIFC) = FILE COUNT FOR CATALOG IMAGE RECORD. * (CIRT) = CATALOG IMAGE RECORD DIRECTORY. * * EXIT (X6) = 0 IF FILE TO BE LOADED (OR NOT INCREMENTAL * LOAD). * .NE. 0 OTHERWISE. * (TCBF) = UPDATED WITH ACCESS INFORMATION FROM THE CIR * IF AN INCREMENTAL LOAD AND FILE TO BE LOADED. * * USES X - ALL. * A - 1, 2, 3, 4, 5, 6, 7. * B - 2, 3, 4. * * MACROS READ, REWRITE, REWRITER. CCI SUBR ENTRY/EXIT SA1 INCF BX6 X6-X6 PRESET TO LOAD FILE MX0 42 ZR X1,CCIX IF NOT AN INCREMENTAL LOAD SA1 TCBF+FCUI GET USER INDEX OF FILE ZR X1,CCI10 IF CATALOG BUFFER TO BE FLUSHED TO DISK BX1 -X0*X1 MX0 -3 SAVE DEVICE MAP BITS BX3 -X0*X1 SB2 X3 SX5 B0 SET INDEX CCI1 SX6 NWCD IX4 X5*X6 SX5 X5+B1 SA4 CIRT+X4 READ HEADER WORD NZ X4,CCI2 IF DEVICE THERE SX6 B1 EXIT - DEVICE NOT FOUND EQ CCIX RETURN CCI2 AX4 X4,B2 MX0 -1 BX4 -X0*X4 ZR X4,CCI1 IF NOT CORRECT DEVICE SA4 A4 GET NUMBER CATALOG TRACKS AX4 12 SX4 X4-1 SET MASK AX1 3 BX1 X4*X1 SB2 X1 SA4 A4+B1 SA5 A4+B2 SX6 B1 ZR X5,CCIX IF NO ENTRIES CCI3 SA1 CCIA FETCH LAST RANDOM INDEX SX6 B1 SET RANDOM REWRITE REQUEST MX2 -29 LX6 29 BX5 X6+X5 NG X1,CCI5 IF NO DATA IN BUFFER BX4 -X2*X5 EXTRACT RANDOM INDEX IX4 X4-X1 ZR X4,CCI6 IF NO RANDOM INDEX CHANGE SA4 CCIB FETCH INDEX MODIFICATION FLAG BX6 X6+X1 NZ X4,CCI5 IF INDEX NOT MODIFIED SA1 CIRF CHECK END STATUS SA6 CIRF+6 SET RANDOM INDEX FOR WRITE LX1 59-4 PL X1,CCI4 IF NOT END OF RECORD REWRITER CIRF,R EQ CCI5 PROCESS NEXT INDEX CCI4 REWRITE CIRF,R CCI5 SA1 CIRF+1 FETCH FIRST BX6 X5 SX7 X1 SA6 CIRF+6 SET NEW RANDOM INDEX MX2 -29 SA7 A1+B1 SET IN=FIRST SA7 A7+B1 SET OUT=FIRST SA7 CCIB CLEAR BUFFER MODIFIED FLAG (SET NONZERO) BX6 -X2*X6 SA6 CCIA SAVE RANDOM INDEX READ CIRF,R LOAD IMAGE BUFFER CCI6 SA1 CIRF SA4 TCBF+FCUI FETCH USER INDEX AND FILE LX1 17-4 SB4 X1 END OF RECORD INDICATOR SA1 CIRF+2 FETCH IN SA2 A1+B1 FETCH OUT IX7 X1-X2 SX6 B1 ZR X7,CCIX IF END OF RECORD AND BUFFER EMPTY SB2 X1 SET LAST BUFFER ADDRESS SB3 X2 SET ADDRESS OF FIRST ENTRY CCI7 SA1 B3 FETCH NEXT ENTRY IX1 X1-X4 ZR X1,CCI8 IF CATALOG ENTRY FOUND SB3 B3+2 LT B3,B2,CCI7 IF MORE ENTRIES IN BUFFER NG B4,CCIX IF END OF RECORD SA1 CIRF+6 FETCH RANDOM INDEX SA4 CCIB FETCH BUFFER MODIFICATION FLAG MX2 -29 LX1 30 CURRENT RANDOM INDEX BX5 X2*X5 PREVIOUS INDEX BX6 -X2*X1 BX5 X5+X6 ZR X4,CCI3 IF BUFFER MODIFIED EQ CCI5 PROCESS NEXT BUFFER LOAD * UPDATE CATALOG ENTRY WITH INFORMATION FROM CIR. CCI8 BX6 X6-X6 SA6 CCIB SET BUFFER MODIFIED FLAG SA6 B3 SA1 B3+B1 FETCH NEW ACCESS INFORMATION FROM CIR SA2 TCBF+FCAD MX0 18 BX7 X0*X1 EXTRACT NEW ACCESS COUNT SA3 TCBF+FCAC BX1 -X0*X1 NEW DEVICE NUMBER AND LAST ACCESS DATE LX7 -6 BX2 X0*X2 CLEAR OLD DEVICE NUMBER AND ACCESS DATE MX0 -36 BX6 X1+X2 UPDATE DEVICE NUMBER AND ACCESS DATE SA6 A2 BX3 -X0*X3 CLEAR OLD ACCESS COUNT BX7 X7+X3 UPDATE ACCESS COUNT SA7 A3 BX6 X6-X6 SA5 A5 UPDATE DIRECTORY ENTRY LX5 30 SX1 B1 IX7 X5-X1 MX5 -30 BX5 -X5*X7 NZ X5,CCI9 IF MORE ENTRIES LEFT BX7 X7-X7 CCI9 LX7 30 SA7 A5 SA4 CIFC DECREMENT FILE COUNT IX7 X4-X1 SA7 A4 EQ CCIX RETURN * CLEAN UP CATALOG BUFFER. CCI10 SA1 CCIA FETCH CURRENT RENDOM INDEX SA2 CCIB FETCH BUFFER MODIFICATION FLAG SA4 CIRF NG X1,CCI12 IF NO DATA IN BUFFER NZ X2,CCI12 IF BUFFER NOT MODIFIED SX6 B1 SX7 -B1 LX6 29 SA7 A1 CLEAR CURRENT RANDOM INDEX LX4 59-4 BX6 X6+X1 SA7 A2 CLEAR BUFFER MODIFICATION FLAG SA6 CIRF+6 RESET RANDOM INDEX PL X4,CCI11 IF NOT END OF RECORD REWRITER CIRF,R EQ CCI12 SET NO LOAD STATUS CCI11 REWRITE CIRF,R CCI12 SX6 B1 EQ CCIX RETURN CCIA DATA -1 CURRENT RANDOM INDEX CCIB DATA -1 BUFFER MODIFICATION FLAG CMA SPACE 4,10 ** CMA - CLEAR MESSAGE AREA. * * EXIT *K* DISPLAY ERROR MESSAGE LINES CLEARED. * * USES X - 5. * A - 5. * * MACROS MOVE. CMA SUBR ENTRY/EXIT SA5 IDSA+/COMSPFS/ADM2 MOVE 4,BLNK,X5 SA5 A5+B1 MOVE 4,BLNK,X5 EQ CMAX RETURN LFS SPACE 4,20 ** LFS - LIST FILES ON CATALOG IMAGE RECORD. * * ENTRY (CIFC) = REMAINING FILE COUNT. * (CIRT - CIRT+NWCD*NDEV) = DIRECTORY OF CATALOG IMAGE * RECORD FILE. * * EXIT FILE LIST CREATED AND RELEASED FOR PRINTING. * * USES X - 1, 2, 5, 6. * A - 1, 5, 6. * B - 2. * * CALLS CDD, FCI, RPP. * * MACROS MESSAGE, MOVE, READ, READW, RECALL, ROUTE, WRITEF, * WRITEH. LFS SUBR ENTRY/EXIT SA1 PAGE SX7 B1+ BX6 X1 SA7 A1 RESET PAGE NUMBER SA6 LFSK SAVE OUTPUT FILE PAGE NUMBER SX6 LCIR SA6 OFFA SET OUTPUT FILE FET ADDRESS SX2 LFSL SET TITLE TEXT SX6 CIS SET CIR SUBHEADER PROCESSOR RJ RPP RESET PAGE PARAMETERS SX6 -1 SA6 LFSA SA5 IDSA+/COMSPFS/ADMS MOVE 3,LFSB,X5 DISPLAY *LISTING FILES* MESSAGE MESSAGE LFSB,1 SA5 CIFC SET TOTAL FILE COUNT ZR X5,LFS4 IF NO FILES LFS1 SA1 LFSA SET DEVICE INDEX SX2 NWCD SX6 X1+B1 SA6 A1 IX6 X6*X2 SA5 CIRT+X6 ZR X5,LFS4 IF NO DEVICES LEFT AX5 12 BX6 X5 SAVE CATALOG TRACK COUNT SA6 LFSD SX6 A5 SAVE DIRECTORY ADDRESS SA6 LFSF LFS2 SA1 LFSF GET DIRECTORY ADDRESS SA5 X1+B1 SX6 A5 SAVE DIRECTORY ADDRESS SA6 LFSF SA1 LFSD SX6 X1-1 SA6 LFSD NG X6,LFS1 IF END OF CATALOGS ZR X5,LFS2 IF NO FILES LEFT ON THIS TRACK RECALL CIRF SA1 X2+B1 REWIND BUFFER SX6 X1 SA6 A1+B1 SA6 A6+B1 MX6 -30 BX6 -X6*X5 SA6 CIRF+6 AX5 30 READ CIRF INITIATE RANDOM READ LFS3 READW CIRF,LFSG,2 READ CATALOG IMAGE ENTRY NZ X1,LFS2 IF END OF CATALOG TRACK SA1 LFSG ZR X1,LFS3 IF NULL ENTRY BX6 X5 SAVE FILE COUNT SA6 LFSE SX6 A1+ SET CATALOG IMAGE ADDRESS RJ FCI FORMAT CIR ENTRY FOR OUTPUT SA5 LFSE RESTORE FILE COUNT SX1 B1 IX5 X5-X1 DECREMENT FILE COUNT NZ X5,LFS3 IF MORE FILES EQ LFS2 PROCESS NEXT CATALOG TRACK LFS4 SA1 CIFC CONVERT FILE COUNT RJ CDD SA6 LFSH+2 WRITEH LCIR,LFSH,3 WRITEF LCIR,R SX6 B0+ CLEAR PARAMETER BLOCK SB2 DSPBL-1 LFS5 SA6 DSPB+B2 SB2 B2-1 PL B2,LFS5 IF NOT END OF BLOCK SA5 LCIR SET UP *DSP* PARAMETER BLOCK MX2 42 BX6 X2*X5 SA6 DSPB SA5 LFSJ SET FLAG BITS BX6 X5 SA6 A6+B1 ROUTE DSPB,RECALL SA5 IDSA+/COMSPFS/ADMS MOVE 3,BLNK,X5 MESSAGE (=C**),1 SA1 LFSK RESET OUTPUT FILE PAGE NUMBER BX6 X1 SA6 PAGE SX6 O SA6 OFFA RESET OUTPUT FILE FET ADDRESS EQ LFSX RETURN LFSA CON 0 DEVICE INDEX LFSB DATA 30C LISTING REMAINING FILES. LFSD CON 0 CATALOG TRACK COUNT LFSE CON 0 FILE COUNT LFSF CON 0 DIRECTORY ADDRESS LFSG BSSZ 2 SCRATCH CATALOG IMAGE ENTRY LFSH DATA 30H0 TOTAL FILE COUNT LFSJ VFD 24/0,12/2HPR,6/0,18/FRDC LFSK CON 1 OUTPUT FILE PAGE NUMBER LFSL DATA 50H1FILES REMAINING ON CATALOG IMAGE RECORD. SRS SPACE 4,15 ** SRS - SELECT RIGHT SCREEN. * * *SRS* REPLACES THE CURRENT RIGHT SCREEN WITH THE REQUESTED * ONE AND ALERTS THE OPERATOR TO ENTER AN OPTION. * * ENTRY (X6) = FWA OF THE REQUESTED RIGHT SCREEN BUFFER. * * USES X - 0, 5, 6. * A - 5, 6. * * MACROS MESSAGE. SRS SUBR ENTRY/EXIT SA5 IDSA+/COMSPFS/KDCW CHANGE *K* DISPLAY CONTROL WORD MX0 42 LX6 18 LX0 18 BX5 X0*X5 BX6 X5+X6 SA6 A5 MESSAGE MSGW,2 * REQUEST K DISPLAY.* EQ SRSX RETURN TITLE COMMON DECKS. * COMMON DECKS. *CALL COMCARM *CALL COMCCCE *CALL COMCCDD ERP1$ EQU 1 SELECT *COMCCIO* ERROR PROCESSING OPTION *CALL COMCCIO *CALL COMCCOD *CALL COMCCPM *CALL COMCDXB *CALL COMCEDT FCE$ EQU 0 *CALL COMCFCE GMS$ EQU 1 USE SORT KEY MASK MWK$ EQU 1 ALLOW MULTIPLE WORD SORT KEYS *CALL COMCGMS *CALL COMCJCR *CALL COMCLFM *CALL COMCMSF *CALL COMCMVE *CALL COMCPFM COM$ EQU 1 ASSEMBLE COMMON ROUTINES PFA$ EQU 1 ASSEMBLE COMMON ARCHIVE FILE ROUTINES DVA$ EQU 1 ASSEMBLE DEVICE ACCESS ROUTINES PFR$ EQU 1 ASSEMBLE ARCIVE FILE READ ROUTINES LIST X *CALL COMCPFS LIST * *CALL COMCPFU *CALL COMCPOP *CALL COMCRDW *CALL COMCSCB *CALL COMCSFN *CALL COMCSNM *CALL COMCSYS *CALL COMCUSB *CALL COMCVDT *CALL COMCWTC *CALL COMCWTH *CALL COMCWTO *CALL COMCWTW *CALL COMCZTB TITLE BUFFERS. USE LITERALS * BUFFERS. PBUF EQU * PERMIT BUFFER DBUF EQU PBUF+PBUFL DATA BUFFER TCBF EQU DBUF+DBUFL TEMPORARY CATALOG BUFFER CWBF EQU TCBF+NWCE CONTROL WORD BUFFER MBUF EQU CWBF+CWBFL MAIN INPUT BUFFER CBUF EQU MBUF+MBUFL CATALOG BUFFER TLBF EQU CBUF+CBUFL TAPE LABEL BUFFER PFMB EQU TLBF+TLBFL *PFM* CATLIST BUFFER DSPB EQU PFMB+PFMBL *DSP* PARAMETER BLOCK LWRD SPACE 4,20 ** LWRD - *PFU* BUFFER LINKAGE WORD. * *T LWRD 6/ TY,18/ CA,12/ 0,12/ DN,12/ LN * * TY = SECTOR TYPE. * 0 = FULL SECTOR OR EOR SECTOR. * 1 = EOF SECTOR. * 2 = EOI SECTOR. * 4 = SYSTEM SECTOR. * CA = ADDRESS OF CATALOG ENTRY FOR FILE. * DN = 0 FOR INDIRECT ACCESS FILES. * = DEVICE NUMBER FOR DIRECT ACCESS FILES. * = 4000 FOR DIRECT ACCESS FILES ON AN AUXILIARY DEVICE. * LN = LENGTH OF SECTOR. * * LINKAGE WORD MUST IMMEDIATELY PRECEDE *TDBF*. LWRD EQU DSPB+DSPBL *PFU* BUFFER LINKAGE WORD TDBF EQU LWRD+1 TEMPORARY DATA BUFFER FLBF EQU TDBF+TDBFL FILE LIST BUFFER FLCB EQU FLBF+FLBFL FILE LIST CIRCULAR BUFFER OUTB EQU FLCB+FLCBL OUTPUT FILE BUFFER SUMB EQU OUTB+OUTBL SUMMARY FILE BUFFER PFLB EQU SUMB+SUMBL PROCESSED FILES FILE BUFFER MS1B EQU PFLB+PFLBL SORT FILE 1 MS2B EQU MS1B+MSFBL SORT FILE 2 MS3B EQU MS2B+MSFBL SORT FILE 3 MS4B EQU MS3B+MSFBL SORT FILE 4 SRTB EQU MS3B SORT BUFFER (OVERLAYS *MS3B* AND *MS4B*) ERRNG MSFBL*2-SRTBL SORT BUFFER OVERFLOW CIBF EQU MS4B+MSFBL *CIR* SCRATCH FILE BUFFER CIRT SPACE 4,40 ** CIRT - *CIR* DIRECTORY TABLE. * * *CIRT* IS A DIRECTORY TO THE CATALOG IMAGE RECORD (*CIR*) * WHICH IS COPIED FROM THE ARCHIVE FILE TO THE RANDOM FILE * *CIRF*. *CIRT* IS INDEXED BY CATALOG TRACK NUMBER (*CT*) * AND THE RELATIVE DEVICE NUMBER WITHIN THE DIRECTORY (*RDEV*) * AS DEFINED BELOW. * *T,CIRT+DI 36/,12/ NCT,12/ DM *T,CIRT+TI 30/ FC,30/ RI *T, 60/ 0 * * CT = CATALOG TRACK NUMBER. * DI = DEVICE INDEX = NWCD*RDEV. * DM = DEVICE MASK. * FC = FILE COUNT FOR CATALOG TRACK. * NCT = NUMBER OF CATALOG TRACKS FOR DEVICE. * NWCD = NUMBER OF DIRECTORY WORDS PER DEVICE. (ASSEMBLY * CONSTANT.) * RDEV = RELATIVE DEVICE IN DIRECTORY. * RI = RANDOM INDEX IN *CIRF* FOR CATALOG TRACK FILE LIST. * TI = CATALOG TRACK INDEX = DI+1+CT. * * EACH MASTER DEVICE HAS A RECORD ON *CIRF* FOR EACH NON-NULL * CATALOG TRACK CONTAINING THE *CIR* ENTRIES FOR THAT TRACK. CIRT EQU CIBF+CIBFL *CIR* DIRECTORY TABLE LBUF EQU CIRT+CIRTL LIST *CIR* ENTRIES OUTPUT BUFFER ENDB EQU LBUF+LBUFL+5 END OF BUFFERS TITLE PRESET. PRE SPACE 4,40 ** PRS - PRESET PROGRAM. * * ENTRY (CPAR) = CONVERTED PARAMETER ARRAY. * FILES *ZZZZZG0* THROUGH ZZZZZG9 AND *ZZZZZGA* RETURNED * BY *PFS*. * FILE *ZZZZZGB* RETURNED BY *PFS* IF NO FILE * SELECTIONS. * FILE *ZZZZZGB* CONTAINS FILE SELECTIONS IF PRESENT. * * EXIT (B1) = 1. * (MSTT) = TABLE OF DEVICES IN FAMILY BEING LOADED. * (MASK) = MASK FOR MASTER DEVICES BEING LOADED. * (TMDA) = TABLE OF MASTER DEVICE ADDRESSES. * (PDWD) = PF DESCRIPTION WORD FOR FAMILY OR AUXILIARY * DEVICE BEING LOADED. * (MPFM) = FAMILY NAME PARAMETER. * (MPPN) = PACK NAME PARAMETER. * EXIT TO *ABT* FOR EXTRACT OPTION WITHOUT CIR. * ARCHIVE FILE ASSIGNED. * CATALOG IMAGE RECORD PROCESSED. * DEVICE SELECTION PERFORMED. * SELECTION PARAMETERS PUT IN ACCOUNTING MESSAGES. * APPROPRIATE ACCOUNTING MESSAGES ISSUED TO DAYFILE AND * OUTPUT FILE. * *K* DISPLAY COORDINATES INITIALIZED. * * USES X - 0, 1, 2, 5, 6, 7. * A - 1, 2, 5, 6, 7. * B - 1. * * CALLS AAF, BMT, CAS, GAM, IFL, IOF, PCI, SBS, SFP, SMP, SSP, * SSS, STC. * * MACROS MEMORY, REPRIEVE, SKIPFF. PRS SUBR ENTRY/EXIT SB1 1 MEMORY CM,,R,ENDB REQUEST REQUIRED MEMORY REPRIEVE RPVB,SET,277B SET EXTENDED REPRIEVE PROCESSING RJ SSS SET SECURED SYSTEM STATUS * OPEN ARCHIVE FILE. SA1 CPAR+/COMSPFS/CPTB SA2 TAPE MX0 42 SET ARCHIVE FILE NAME BX6 X0*X1 BX2 -X0*X2 BX6 X6+X2 SA6 A2 SX2 TAPE SET OPTICAL DISK EXTENSION BUFFER SA3 PRSC RJ SOE SET FET EXTENSION IF OPTICAL DISK FILE OPEN TAPE,READNR,R SA1 CPAR+/COMSPFS/CPSF ZR X1,PRS1 IF NO FILE SKIP COUNT SPECIFIED SKIPFF TAPE,X1 * INITIALIZE FILES AND DEVICE ENVIRONMENT. PRS1 RJ IOF INITIALIZE OUTPUT FILES SX3 PRSA PRESET *K* DISPLAY COORDINATES RJ PRK RJ BMT BUILD MASS STORAGE TABLE SX6 DSTBUF SET DEVICE STATUS BUFFER ADDRESS RJ ODV OUTPUT DEVICE STATUS SX0 ENDB SET BUFFER ADDRESS RJ RPS READ FILE SELECTIONS RJ SMK SET FILE SELECTION MASK RJ SMP SET MASTER DEVICE PARAMETERS RJ GAM GENERATE ACCOUNTING MESSAGES RJ STC SET TAPE CHARACTERISTICS READCW TAPE,17B INITIATE CONTROL WORD READ BX6 X6-X6 CLEAR CONTROL WORD STATUS WORD SA6 TAPE+CWSW RJ PAL PROCESS ARCHIVE LABEL SB2 ERAL * ERROR IN ACHIVE FILE LABEL.* NZ X6,ABT IF BAD ARCHIVE FILE LABEL RJ SFP SET PERMANENT FILE PARAMETERS * SET UTILITY CONTROL DATE UPDATE FLAG. SA1 CPAR+/COMSPFS/CPUD ZR X1,PRS3 IF UNCONDITIONAL UPDATE NOT SELECTED SA1 /COMSPFS/STDT SET TO UPDATE UTILITY CONTROL DATE BX6 X1 SA6 UDAT * PROCESS INCREMENTAL LOAD PARAMETERS. PRS3 RJ PCI PROCESS CATALOG IMAGE RJ IFL INITIALIZE OUTPUT FILE FOR FILE PROCESSING SA1 CPAR+/COMSPFS/CPOP LX1 59-49 PL X1,PRSX IF EXTRACT OPTION NOT SPECIFIED SA1 INCF SB2 EREC * EXTRACT OPTION REQUIRES CIR.* ZR X1,ABT IF CATALOG IMAGE RECORD NOT PRESENT SA1 ACEA SET END OF LOAD CONTROL WORD SX7 B1 SET CONTROL WORD RE-USE FLAG BX6 X1 SA7 RCWF SA6 CWBF EQ PRSX RETURN PRSA BSS 0 Y-COORDINATE TABLE KDL * PRSC VFD 36/,6/ODEBL,18/ODEB POINTER TO *OD* EXT. BUFFER TITLE PRESET SUBROUTINES. GAM SPACE 4,20 ** GAM - GENERATE ACCOUNTING MESSAGES. * * ENTRY (MASK) = MASK OF MASTER DEVICES BEING LOADED. * (CPAR) = COMVERTED PARAMETER ARRAY. * * EXIT SELECTION PARAMETERS PUT IN ACCOUNTING MESSAGES. * APPROPRIATE ACCOUNTING MESSAGES ISSUED TO DAYFILE AND * OUTPUT FILE. * * USES X - 0, 1, 2, 5, 6, 7. * A - 1, 2, 5, 6, 7. * * CALLS COD, SFN. * * MACROS EDATE, ETIME, MESSAGE, MOVE, WRITEH. GAM SUBR ENTRY/EXIT * PUT CORRECT DEVICE NUMBER IN MESSAGES. SA1 CPAR+/COMSPFS/CPDN SA2 CPAR+/COMSPFS/CPTD MX6 -6 IX1 X1+X2 BX1 -X6*X1 SET *DN* OR *TD* DEVICE NUMBER RJ COD MX0 24 SA5 MSGC+1 BX5 X0*X5 BX7 -X0*X6 BX7 X7+X5 SA7 A5 SET DEVICE NUMBER IN MESSAGE * PUT FAMILY/PACK NAME IN MESSAGES. SA5 CPAR+/COMSPFS/CPPN SET PACKNAME PARAMETERS SA2 GAMM MX0 42 BX1 X5 NZ X5,GAM3 IF PACKNAME SPECIFIED SA2 GAML SET FAMILY NAME PARAMETERS SA1 CPAR+/COMSPFS/CPFN GAM3 LX6 X2 BX1 X0*X1 PUT FAMILY/PACK NAME IN MESSAGE SA6 MSGC+2 RJ SFN ZR X5,GAM4 IF PACKNAME NOT SPECIFIED SA1 GAMN PUT PACKNAME IN MESSAGE BX7 X1 SA7 A6-B1 GAM4 BX6 X0*X6 ADD PERIOD TO NAME SX2 1L. BX1 -X0*X2 BX6 X6+X1 SA6 MSGC+3 MESSAGE MSGC,,R WRITEH O,GAMJ,1 WRITEH O,MSGC,4 SA1 CPAR+/COMSPFS/CPUD ZR X1,GAM5 IF UTILITY CONTROL UPDATE NOT REQUESTED WRITEH O,GAMO,4 GAM5 SA5 CPAR+/COMSPFS/CPOP BX1 X5 LX1 59-46 PL X1,GAM6 IF OP=Z NOT SPECIFIED WRITEH O,GAMP,4 GAM6 MX0 2 LX5 3 SA1 GAMI BX5 X0*X5 LX6 X1 ZR X5,GAM8 IF NOT INDIRECT OR DIRECT ONLY SA6 GAMK SX2 GAMH PL X5,GAM7 IF DIRECT ONLY SX2 GAMG GAM7 MOVE 3,X2,GAMK+1 WRITEH O,GAMK,4 GAM8 SA5 CPAR+/COMSPFS/CPOP MX0 3 BX5 X0*X5 ZR X5,GAM11 IF NO DATE OPTION SPECIFIED LX5 2 SA2 X5+GAMD LOAD *CREATED*, *ACCESSED*, OR *MODIFIED* SA5 CPAR+/COMSPFS/CPAD BX6 X2 SA6 GAMK SET DATE/TIME OPTION MESSAGE ZR X5,GAM9 IF AFTER DATE NOT SPECIFIED SA2 GAMC BX1 X5 AX1 18 BX6 X2 SA6 GAMK+1 SET *AFTER* IN MESSAGE EDATE X1 MX2 -18 SA6 GAMK+2 SET DATE IN MESSAGE BX1 -X2*X5 ETIME X1 SA6 GAMK+3 SET TIME IN MESSAGE GAM9 SA5 CPAR+/COMSPFS/CPBD ZR X5,GAM10 IF BEFORE DATE NOT SPECIFIED SA2 GAMC+1 BX6 X2 SA6 A6+B1 SET *BEFORE* IN MESSAGE BX1 X5 AX1 18 SA0 A6+B1 EDATE X1 MX2 -18 SA6 A0 SET DATE IN MESSAGE BX1 -X2*X5 SA0 A6+B1 ETIME X1 SA6 A0 SET TIME IN MESSAGE GAM10 WRITEH O,GAMK,A6-GAMK+1 GAM11 SA2 /COMSPFS/FISP ZR X2,GAM12 IF NO FILE SELECTIONS MOVE 2,GAMB,GAMK *SELECTED FILES ON * SA1 CPAR+/COMSPFS/CPUI NZ X1,GAM13 IF ONLY 1 USER INDEX MOVE 3,GAMQ,GAMK+2 * MULTIPLE USER INDICES* EQ GAM14 WRITE MESSAGE GAM12 SA1 CPAR+/COMSPFS/CPUI ZR X1,GAMX IF NO USER INDEX SELECTED MOVE 2,GAMA,GAMK * ALL FILES FOR * GAM13 SA2 GAMF SA1 CPAR+/COMSPFS/CPUI BX6 X2 SA6 GAMK+2 *USER INDEX* RJ COD LX6 12 SA6 A6+B1 SA1 =10H BX6 X1 SA6 GAMK+4 GAM14 WRITEH O,GAMK,5 EQ GAMX RETURN GAMA DATA 20H ALL FILES FOR GAMB DATA 20HSELECTED FILES ON GAMC DATA 10H AFTER DATA 10H BEFORE GAMD DATA 10H MODIFIED DATA 10H ACCESSED DATA 10H CREATED GAMF DATA 10HUSER INDEX GAMG DATA 30H INDIRECT ACCESS FILES ONLY GAMH DATA 30H DIRECT ACCESS FILES ONLY GAMI DATA 10H LOADING - GAMJ DATA 10H1 GAMK DATA 40H DATA 30H GAML DATA 10H FAMILY GAMM DATA 10H PACK GAMN DATA 10H PACK GAMO DATA 40H UPDATE UTILITY CONTROL DATE. GAMP DATA 40H CLEAR ALTERNATE STORAGE INFORMATION. GAMQ DATA 30H MULTIPLE USER INDICES PCI SPACE 4,20 ** PCI - PROCESS CATALOG IMAGE RECORD. * * EXIT (RCWF) = SET IF A CONTROL WORD OTHER THAN FOR A * CATALOG IMAGE RECORD WAS FOUND BEFORE * EOF/EOI. * (INCF) = NON-ZERO IF CATALOG IMAGE FOUND AND NOT TO * BE IGNORED. * CATALOG IMAGE COPIED TO SCRATCH FILE AND DIRECTORY * BUILT IF (INCF) IS NON-ZERO. * CATALOG IMAGE SKIPPED IF PRESENT AND (INCF) IS ZERO. * ARCHIVE FILE POSITIONED FOR PROCESSING FIRST RECORD * THAT IS NOT A CATALOG IMAGE RECORD. THIS MAY BE AT * EOF/EOI. * EXIT TO *ABT* IF FATAL ERROR. * * USES X - 0, 1, 2, 3, 5, 6, 7. * A - 1, 2, 3, 5, 6, 7. * B - 2, 3. * * CALLS COD, ICI, KIP, OCI, PSI, RCW, SCI, SEM, SER. * * MACROS CWREAD, MESSAGE, MOVE, WRITER, WRITEW. PCI14 RJ SCI SKIP CATALOG IMAGE PCI SUBR ENTRY/EXIT SA1 CPAR+/COMSPFS/CPOP LX1 59-48 NG X1,PCI14 IF OMIT *CIR* SPECIFIED RJ RCW READ ARCHIVE FILE CONTROL WORD NG X3,PCI14 IF EOR/EOF/EOI OR READ ERROR SX1 X3-5 ZR X1,PCI0 IF CATALOG IMAGE RECORD SX6 B1 SET CONTROL WORD RE-USE FLAG SA6 RCWF EQ PCIX RETURN * INITIALIZE FOR INCREMENTAL LOAD. PCI0 SA1 TLBF+/COMSPFS/PFAL NZ X1,PCI1 IF ARCHIVE FILE LABEL READ SB2 ERMI * NO ARCHIVE LABEL ON INCREMENTAL LOAD...* EQ ABT ABORT PCI1 SX7 B1 SET INCREMENTAL LOAD FLAG BX6 X6-X6 SA7 INCF SB2 CIRT SET FWA TO CLEAR SB3 CIRT+CIRTL SET LWA+1 TO CLEAR PCI2 SA6 B2 CLEAR WORD OF BUFFERS SB2 B2+B1 LT B2,B3,PCI2 IF NOT END OF BUFFERS RJ ICI INITIALIZE FOR OUTPUT OF CIR DATA PCI3 MESSAGE MSCI,1 * CREATING CATALOG IMAGE RECORD* SA5 IDSA+/COMSPFS/ADMS MOVE 3,MSCI,X5 BX6 X6-X6 CLEAR CATALOG TRACK WORD COUNT SA6 PCIB * COPY CATALOG IMAGE RECORD INFORMATION. PCI4 SA1 CWBF SET BLOCK WORD COUNT MX2 -9 BX0 -X2*X1 LX1 0-48 CHECK IF NEW DEVICE MX2 -12 BX3 -X2*X1 LX1 0-36-0+48 SET CATALOG TRACK COUNT SX6 X3-2RCH NZ X6,PCI5 IF NOT NEW DEVICE BX7 -X2*X1 LX1 0-24-0+36 SET DEVICE MASK SA7 PCIE BX6 -X2*X1 MX2 -24 SA6 PCIF SA3 PCIC SET DIRECTORY ADDRESS FOR NEXT DEVICE SX6 X3+NWCD BX7 -X2*X1 PUT DEVICE HEADER IN DIRECTORY SA6 A3 SX2 X6-CIRT-NWCD*NDEV PL X2,PCI10 IF TOO MANY DEVICES SA7 X6+ PCI5 SA1 PCIC CHECK FOR DEVICE HEADER SX2 X1-CIRT NG X2,PCI10 IF NO DEVICE HEADER ZR X0,PCI7 IF ZERO WORD COUNT CWREAD TAPE,TDBF,X0 READ CATALOG IMAGE BLOCK NZ X7,PCI11 IF READ ERROR NZ B7,PCI10 IF INCOMPLETE CATALOG IMAGE BLOCK WRITEW CIRF,TDBF,X0 COPY BLOCK TO SCRATCH FILE SA1 PCIB INCREMENT WORD COUNT IX6 X1+X0 SA6 A1 NZ X1,PCI6 IF NOT FIRST BLOCK SA1 PCIE SET CATALOG TRACK MASK SA2 TDBF GET USER INDEX SX6 X1-1 LX2 0-3 SET CATALOG TRACK BX7 X6*X2 SA7 PCID * WRITE CIR DATA TO SELECTED OUTPUT FILES. PCI6 SX6 TDBF SET BUFFER ADDRESS SX7 X0 SET WORD COUNT RJ OCI OUTPUT CATALOG IMAGE ENTRIES * CHECK FOR EOR (END OF CATALOG TRACK). PCI7 SA2 CWBF CHECK FOR EOR BLOCK MX0 -3 LX2 0-9 BX6 -X0*X2 NZ X6,PCI8 IF EOR BLOCK RJ RCW READ ARCHIVE FILE CONTROL WORD NZ X7,PCI11 IF READ ERROR SX6 X3-5 NZ X6,PCI10 IF NOT CATALOG IMAGE CONTROL WORD EQ PCI4 COPY MORE CATALOG IMAGE RECORD * SET DIRECTORY ENTRY. PCI8 SA1 PCIB ZR X1,PCI9 IF AN EMPTY CATALOG TRACK SA2 CIFC UPDATE TOTAL FILE COUNT AX3 X1,B1 FILE COUNT = WORD COUNT / 2 IX6 X2+X3 SA6 A2 LX3 30 30/FILE COUNT, 30/RANDOM INDEX SA2 PCIA BX6 X3+X2 AX1 6 SECTOR COUNT = WORD COUNT / 64 + 1 SX7 B1 IX0 X1+X7 SA3 PCIC GET DIRECTORY ADDRESS SA1 PCID GET CATALOG TRACK IX7 X2+X0 UPDATE RANDOM INDEX SA7 A2 IX3 X3+X1 SAVE DIRECTORY ENTRY SA6 X3+B1 WRITER CIRF,R FLUSH THIS CATALOG TRACK * PROCESS END OF CATALOG IMAGE RECORD. PCI9 RJ RCW READ ARCHIVE FILE CONTROL WORD NZ X7,PCI11 IF READ ERROR SX6 X3-5 ZR X6,PCI3 IF CATALOG IMAGE RECORD NG X1,PCI9.1 IF EOF/EOI NZ X1,PCI9 IF EOR MESSAGE (=C**),1 CLEAR CREATING CATALOG IMAGE MESSAGE SA5 IDSA+/COMSPFS/ADMS MOVE 3,BLNK,X5 SX6 1 SET CONTROL WORD RE-USE FLAG SA6 RCWF PCI9.1 RJ PSI PROCESS SORTED CIR OUTPUT EQ PCIX RETURN * PROCESS CATALOG IMAGE RECORD FORMAT ERROR. PCI10 SB2 ERIF * CATALOG IMAGE FORMAT ERROR.* EQ ABT ABORT * PROCESS CATALOG IMAGE RECORD READ ERROR. PCI11 SA7 AREF INDICATE READ ERROR SA1 PCIF PUT DEVICE MASK IN MESSAGE RJ COD SA1 =1A. ADD PERIOD TO MESSAGE LX6 30 BX5 X1-X6 SA1 PCID PUT CATALOG TRACK IN MESSAGE RJ COD LX6 6 BX7 X6-X5 SA7 ERIR+3 SA5 IDSA+/COMSPFS/ADER PUT MESSAGE ON *K* DISPLAY MOVE 4,ERIR,X5 SB2 ERIR *READ ERROR IN CATALOG IMAGE* RJ SEM SEND ERROR MESSAGE SB3 PCI12 SET *K.GO.* PROCESSOR ADDRESS SB2 PCI13 SET *K.ANYTHING ELSE.* PROCESSOR ADDRESS EQ /COMSPFS/KIP PROCESS KEYBOARD INPUT * PROCESS *K.GO.* RESPONSE TO READ ERROR. PCI12 RJ SER SKIP TO END OF RECORD EQ PCI8 BUILD DIRECTORY ENTRY PCI13 SB2 B0 SET NO MESSAGE EQ ABT ABORT PCIA CON 1 RANDOM INDEX FOR *CIR* PCIB CON 0 CATALOG TRACK WORD COUNT PCIC CON CIRT-NWCD CURRENT DIRECTORY ADDRESS PCID CON 0 CURRENT CATALOG TRACK PCIE CON 0 NUMBER OF CATALOG TRACKS FOR DEVICE PCIF CON 0 DEVICE MASK BEING READ SMP SPACE 4,20 ** SMP - SET MASTER DEVICE PARAMETERS. * * ENTRY (MSTBUF) = MST ENTRY OF DEVICE DESCRIBED BY * PACKNAME PARAMETER. * * EXIT PACK NAME, UNIT COUNT AND EQUIPMENT MNEMONIC SET IN * *PURG* FET IF AUXILIARY DEVICE BEING LOADED. * (DDMA) = DESTINATION DEVICE *MSTT* ADDRESS IF * DESTINATION DEVICE SPECIFIED. * TO *ABT* IF DESTINATION DEVICE NOT FOUND. * * USES X - 1, 2, 3, 6, 7. * A - 1, 2, 6, 7. * B - 2, 3. * * CALLS SFD. SMP SUBR ENTRY/EXIT * INITIALIZE *PURG* FET FOR AUXILIARY DEVICE. SA1 CPAR+/COMSPFS/CPPN ZR X1,SMP5 IF PACK NAME NOT SPECIFIED SA2 MSTBUF+DDLL SET UNIT COUNT MX3 -3 LX2 12 BX1 -X3*X2 SA2 MSTT+1 LX2 -18 SET EQUIPMENT MNEMONIC SX1 X1+B1 MX3 -11 BX6 X6+X1 MERGE UNIT COUNT WITH PACK NAME SA1 PURG+1 CLEAR OLD MNEMONIC FROM FET BX2 -X3*X2 MX3 -48 SA6 PURG+CFPK BX1 -X3*X1 LX2 48 PUT MNEMONIC IN FET BX7 X2+X1 SA7 A1 * SET DESTINATION DEVICE *MSTT* ADDRESS. SMP5 SA2 CPAR+/COMSPFS/CPDD ZR X2,SMPX IF NO DESTINATION DEVICE BX6 X2 RJ SFD SEARCH FOR DEVICE NZ X1,SMP6 IF DEVICE FOUND SB2 ERDN * DESTINATION DEVICE NOT FOUND.* EQ ABT ABORT SMP6 SX6 A1+ SET DESTINATION DEVICE *MSTT* ADDRESS SA6 DDMA EQ SMPX RETURN STC SPACE 4,10 ** STC - SET TAPE CHARACTERISTICS. * * EXIT TAPE CHARACTERISTICS SET IN FET. * * USES X - 1, 2, 3, 4, 5, 6. * A - 1, 4, 5, 6. * * MACROS FILINFO, RECALL, SETFS. STC SUBR ENTRY/EXIT RECALL TAPE MX1 42 SA5 X2 SET ARCHIVE FILE NAME IN PARAMETER BLOCK SA4 STCA BX5 X1*X5 SX4 X4 BX6 X5+X4 SA6 A4 FILINFO STCA GET FILE INFORMATION SA1 STCA+1 GET TAPE DEVICE TYPE SA4 STCA+FIPBL GET TAPE FORMAT LX1 59-24 PL X1,STC3 IF NOT TAPE FILE MX3 2 LX1 59-26-59+24 BX6 X3*X1 SET TAPE DEVICE TYPE SA5 A4+1 GET DENSITY, CONVERSION MODE, LABEL TYPE LX6 56-59 LX4 -6 MX1 -6 LX5 -6 BX4 -X1*X4 TAPE FORMAT BX2 -X1*X5 DENSITY AND CONVERSION MODE LX5 -6 BX5 -X1*X5 LABEL TYPE LX4 30 SA1 A5+1 GET PROCESSING OPTIONS BX6 X6+X4 LX2 -12 MX4 -12 LX1 -12 BX6 X6+X2 SX2 7757B BX1 -X4*X1 PROCESSING OPTIONS BX1 X2*X1 CLEAR PO=W IF SELECTED SX2 /MTX/POGH*100B+/MTX/POLM*200B BX1 X1-X2 SET OPTIONS TO TOGGLE INSTALLATION BITS LX1 -24 BX6 X6+X1 ZR X5,STC2 IF UNLABELED MX3 1 LX3 58-59 SET LABELED TAPE BIT BX6 X6+X3 SX5 X5-14B NZ X5,STC2 IF STANDARD LABELS LX3 57-59-58+59 SET NONSTANDARD LABEL BIT BX6 X6+X3 STC2 SA6 TAPE+LBWD SET TAPE INFORMATION STC3 SETFS TAPE,0 CLEAR SPECIAL FILE STATUS EQ STCX RETURN STCA VFD 42/0,6/STCAL,12/1 *FILINFO* PARAMETER BLOCK BSS FIPBL-1 CON FMTK FORMAT KEYWORD CON DENK DENSITY, CONVERSION, LABEL TYPE KEYWORD CON POPK PROCESSING OPTIONS KEYWORD STCAL EQU *-STCA SPACE 4,10 * PRESET MESSAGES. MSCI DATA 30CCREATING CATALOG IMAGE RECORD SPACE 4,10 * PRESET ERROR MESSAGES. ERDN DATA C* DESTINATION DEVICE NOT FOUND.* EREC DATA C* EXTRACT OPTION REQUIRES CIR.* ERIF DATA C* CATALOG IMAGE FORMAT ERROR.* ERIR DATA 40C READ ERROR IN CATALOG IMAGE DM CT. ERMI DATA C* NO ARCHIVE LABEL ON INCREMENTAL LOAD FILE.* COMMON SPACE 4,10 ** PRESET COMMON DECKS. *CALL COMCDCP LIST X *CALL COMCPFP LIST * *CALL COMCRSB *CALL COMCSOE PRK HERE ASSEMBLE Y-COORDINATE PRESET CODE HERE SPACE 4,10 * PRESET BUFFERS. ESTADD EQU * RSB PARAMETER WORD FOR EST ESTBUF EQU ESTADD+1 EST BUFFER MSTADD EQU ESTBUF+ESMX*ESTE *RSB* PARAMETER WORD FOR MST READ MSTBUF EQU MSTADD+1 MST BUFFER DSTBUF EQU MSTBUF+MSTL PRSL EQU DSTBUF+2*63+2 PRESET LWA+1 SPACE 4 END