COPYMF * /--- FILE TYPE = E * /--- BLOCK COMMENTS 00 000 87/12/07 13.56 COPYMF IDENT COPYMF,BEGIN,COPYMF ABS SST ORG 111B ENTRY COPYMF ENTRY SSJ= ENTRY RFL= SYSCOM B1 DEFINE (B1) = 1 *COMMENT COPY MASTER FILES COMMENT COPYRIGHT CONTROL DATA CORP. 1980. TITLE COPY MASTER FILES SPACE 4 *** COPY MASTER FILES * J. J. BUCHMANN. 80/06/17. * * *FUNCTION; * THIS PROGRAM IS RESPONSIBLE FOR THE DUMPING OF ALL THE * MASTERFILE DATA ONTO A TAPE OR DISK. SEVERAL * MASTERFILES MAY BE DESIGNATED TO BE DUMPED AT ONE * TIME. ALL MASTERFILES THAT ARE TO BE DUMPED MUST BE * ATTACHED PREVIOUSLY IN READ MODE. THE FIRST STEP IS * TO ATTACH THE COMMUNICATIONS BUFFER TO DETERMINE IF * ANY OF THE REQUESTED MASTERFILES HAVE BEEN DUMPED * BEFORE. IF IT HAS BEEN DUMPED, THEN AN ERROR MESSAGE * IS GIVEN TO THE DAYFILE AND THE JOB ABORT UNLESS THE * *NA* PARAMETER HAS BEEN SELECTED. IF AN UNDUMPED * MASTERFILE IS FOUND IN THE PARAMETER LIST, THEN THE * TAPE OR DISK IS REQUESTED. AFTER THE DUMP MEDIUM IS * ASSIGNED, THEN THE MASTERFILE IS DUMPED. AS THE FILE * IS BEING COPIED TO THE DUMP MEDIUM, INFORMATION IS * BEING EXTRACT AS THE DATA PASSES THRU CENTRAL MEMORY. * INFORMATION REGARDING FILE NAMES, ACCOUNT NAMES, FILE * TYPES AND FILE SIZES ARE WRITTEN TO ANOTHER TEMPORARY * FILE. AFTER ALL MASTERFILES HAVE BEEN DUMPED, THIS * TEMPORARY FILE IS COPIED ONTO THE COMMUNICATIONS * BUFFER TO PREVENT DUMPING THIS FILE AGAIN AND TO GIVE * NECESSARY INFORMATION TO THE BACKUP MERGE PROGRAMS. * *PARAMETERS; * MF=FILENAM MASTERFILE NAME TO BE DUMPED * MF=FILENAM THIS PARAMETER MAY BE REPEATED IF MORE * THAN ONE MASTERFILE NEEDS TO BE DUMPED. * V SELECT OPERATOR ASSIGNED TAPE * V=VSN SELECT LABEL TAPE (VSN=LABEL) * PN=PACK DUMP TO DISK PACK *PACK* * NOTE; IF NEITHER V OR PN IS SELECTED, A * LABELED SCRATCH TAPE IS NEEDED. * R=DEVICE DEVICE TYPE OF THE DISK PACK SELECTED * TYPE ABOVE. * NA DO NOT ABORT IF THE MASTERFILE ALREADY * DUMPED * D USE SYSTEM DEFAULT FOR TAPE DENSITY (SAME * AS *D* OMITTED) * D=HD USE TAPE DENSITY OF 800 BPI * D=PE USE TAPE DENSITY OF 1600 BPI * D=GE USE TAPE DENSITY OF 6250 BPI * F USE INTERNAL FORMAT * F=I USE INTERNAL FORMAT * F=LI USE LONG INTERNAL FORMAT * * /--- BLOCK CONSTANTS 00 000 87/12/07 15.29 *INFORMATIVE MESSAGES; * VSN XXXXX (VSN ASSIGNED) * PACK XXXXX (PACK RESIDENCE OF MASTERFILE) * MF NAME XXXXX (MASTERFILE NAME) * MF TYPE XXXXX (MASTERFILE TYPE) * NUM FILES NNN (NUMBER OF FILES ON MASTERFILE) * MAX FILES NNN (MAXIMUM NUMBER OF FILES ALLOWED) * END OF MASTER FILE (DUMP COMPLETE FOR MASTERFILE) * *ERROR MESSAGES; * ERROR IN PARAMETERS (CORRECT THE PROCEDURES) * XXXXXX - MASTER FILE ALREADY DUMPED (NO ABORT IF *NA*) * DO NOT USE BLANK LABEL TAPE (LABEL THE TAPE) * CANNOT READ TAPE LABEL (RELABEL THE TAPE) * DUMP FILE ASSIGNED TO DISK (RESTART THE DUMP AND GIVE * TAPE ASSIGNMENT) * XXXXXX - FILE DIRECTORY DOES NOT MATCH FILE (THE FILE * DIRECTORY DOES NOT MATCH THE FILENAME IN THE FILE) * *INTERNAL ERROR MESSAGES; * ERROR IN PROCESSOR TABLE * TOO MANY FILES IN MASTER FILE * ERROR IN FILE TABLE * NOT ALL FILES PROCESSED SPACE 4 *CALL COMCMAC *CALL COMCCMD SPACE 4,10 *CALL AIDTEXT *CALL SYSCON SPACE 4,10 **** ASSEMBLY CONSTANTS. SSJ= EQU 0 BUFL EQU 1001B CIO BUFFER LENGTH (SMALL) LBUFL EQU 10001B CIO BUFFER LENGTH (LARGE) WORKL EQU 320*7 WORKING STORAGE BUFFER LENGTH CWRKH EQU 6 COMMUNICATIONS BUFFER HEADER CWRKF EQU 3 COMM. BUFFER FILE ENTRY MAXFIL EQU MFFILES MAX NUM OF FILES / MASTERFILE PART EQU 320*7 PART SIZE BASE EQU 320 BASE WORD FOR BEGINNING OF INFO MFNM EQU BASE MASTER FILE NAME MFTY EQU BASE+1 MASTER FILE TYPE FILW EQU BASE+3 FILE WORD WITHIN FIRST BLOCK OFFS EQU BASE+4 FILE LIST OFFSET NAME EQU 0 FILE NAME OFFSET IN DIRECTORY ACCT EQU 40 ACCOUNT NAME OFFSET BEGIN BSS 0 * SET UP FETS IF BSS 0 ZZZZCM0 FILEC IBUF,LBUFL,(FET=8) OF BSS 0 MFDUMP FILEC OBUF,LBUFL,(FET=14),XL CB BSS 0 ZZZZCM1 FILEC CBUF,BUFL,(FET=8) PF BSS 0 COMBUF FILEC PBUF,BUFL,(FET=13) * /--- BLOCK MAIN 00 000 81/04/29 08.39 * MAIN LOOP COPYMF BSS 0 ENTRY POINT SB1 1 FOREVER CONSTANT RJ INIT INITIALIZE AND GET ARGS REWIND CB,R CMF0 SA1 MFCT INCREMENT MF COUNTER SX6 X1+B1 SA6 A1 SA1 X1+MF GET MASTER FILE NAME ZR X1,CMF8 SX6 1 BX6 X6+X1 SA6 IF RJ INITCB INTIAL READ OF COM BUFFER NZ X1,CMF0 IF FILE ALREADY DUMPED SA1 VSNX USER REQUESTED VSN BX6 X1 RJ RTF OPEN TAPE SA1 VSN SA2 =10HVSN RJ MESSX SA1 IF GET PACKNAME RJ GETPACK SA6 PACKNAM BX1 X6 SA2 =10HPACK RJ MESSX READ IF,R INITIALIZE READING OF FILE CMF1 READW IF,WORK,WORKL SA2 ECOUNT TRANSFER WORD COUNTS SX7 B6-WORK NUMBER OF WORDS READ BX6 X2 SA6 WCOUNT IX7 X6+X7 NEW WORD COUNT SA7 A2 NG X1,CMF3 IF EOF/EOI NZ X1,CMF2 IF EOR WRITEW OF,WORK,WORKL RJ PROCESS PROCESS INFO FOR THIS BLOCK EQ CMF1 CMF2 SB7 B6-WORK WRITEW OF,WORK,B7 WRITER OF,R RJ PROCESS PROCESS INFO FOR THIS BLOCK READ IF EQ CMF1 CMF3 BX5 X1 SB7 B6-WORK WRITEW OF,WORK,B7 SX5 X5+B1 NZ X5,CMF4 IF EOI RJ PROCESS PROCESS INFO FOR THIS BLOCK WRITEF OF,R READ IF EQ CMF1 CMF4 RECALL OF RJ PROCESS PROCESS INFO FOR THIS BLOCK SA1 OF+2 CHECK IF BUFFER EMPTY SA2 A1+B1 BX1 X1-X2 ZR X1,CMF5 IF IN=OUT WRITE OF,R CMF5 WRITER CB,R WRITE OUT COMMUNICATIONS BUFFER WRITER OF,R PUT EOR ON MASTER FILE COPY SA1 PN ZR X1,CMF6 IF TAPE UNLOAD OF,R GET RID OF DISK EQ CMF7 CMF6 WRITEF OF,R PUT EOF ON MASTER FILE COPY CLOSE OF,NR,R CLOSE TAPE CMF7 RJ ALLMSG OUTPUT MESSAGES RJ INITPT REINITIALIZE POINTERS EQ CMF0 CMF8 SA1 PN SEE IF DISK NZ X1,CMF9 UNLOAD OF,R CMF9 RJ ALLDONE CMF10 ENDRUN * /--- BLOCK SUBRTINES 00 000 87/12/07 15.36 TITLE SUBROUTINES CKSTATS SPACE 4 ** CKSTATS - CHECK FILE STATUS FOR BUSY * ROLLOUT BASED ON *TERW* IF BUSY * ABORT IF ERROR * * ENTRY X1-FET STATUS WORD * * EXIT X2=0, NOT BUSY CKSTATS DATA 0 ENTRY/EXIT AX1 10 MX7 -8 BX2 -X7*X1 ISOLATE STATUS ZR X2,CKSTATS IF NOT BUSY AND NO ERROR SX2 X2-1 NZ X2,ABORT ATTACH ERROR ROLLOUT =0 USE RETURNED PFM VALUES SX2 1 BUSY STATUS EQ CKSTATS CLREPR SPACE 4 ** CLREPR - CLEAR ERROR PROCESSING BIT IN THE FET * * ENTRY A1/X1=FET+1 AND CONTENTS CLREPR DATA 0 ENTRY/EXIT SX6 B1 MASK FOR EPR LX6 44 BX6 -X6*X1 SA6 A1 EQ CLREPR INIT SPACE 4 ** INIT - INITIALIZE INIT DATA 0 ENTRY/EXIT RJ INITPT INITIALIZE POINTERS PDATE DATE GET DATE/TIME * * TRANSFORM DATE/TIME TO 18 BIT FORMAT * 4/YEAR-1980,4/MONTH,5/DAY,5/HOUR * SA1 DATE MX7 -5 AX1 12 GET RID OF MINUTES AND SECONDS BX6 -X7*X1 EXTRACT HOURS AX1 1 LX7 5 BX5 -X7*X1 EXTRACT DAYS IX6 X6+X5 MERGE MX7 -4 AX1 1 LX7 10 BX5 -X7*X1 EXTRACT MONTH IX6 X6+X5 MERGE AX1 2 LX7 4 SX5 26D SUBTRACT 26 YEARS (1996 BASE) LX5 14D IX5 X1-X5 BX5 -X7*X5 MASK FOR 4-BIT FIELD IX6 X6+X5 SA6 A1 STORE IN DATE * * GET ARGUMENTS * SA1 ACTR ARG COUNT SB4 X1 SA4 ARGR FIRST ARG SB5 ARGTBL ARG TABLE RJ ARG NZ X1,INITERR ERROR IN ARGUMENTS EQ INIT INITERR MESSAGE INMSG EQ ABORT SETEPR SPACE 4 ** SETEPR - SET ERROR PROCESSING BIT IN THE FET * * ENTRY A1/X1=FET+1 AND CONTENTS SETEPR DATA 0 ENTRY/EXIT SX6 B1 MASK FOR EPR LX6 44 BX6 X6+X1 SA6 A1 EQ SETEPR * /--- BLOCK SUBRTINES 00 000 87/12/07 16.34 FINFO SPACE 4 ** FINFO - GET FILE INFO FINFO DATA 0 ENTRY/EXIT MX6 42 ISOLATE FILE NAME BX6 X6*X1 SX7 50001B PARAMETER LENGTH IX6 X6+X7 SA6 FIB FILINFO FIB GET FILE INFO FOR THIS FILE EQ FINFO FIB DATA 0,0,0,0,0 FILINFO BUFFER GETPACK SPACE 4 ** GETPACK - GET PACK NAME FOR FILE * * ENTRY - X1=FILE NAME * * EXIT - X6=PACK NAME GETPACK DATA 0 ENTRY/EXIT RJ FINFO GET FILE INFO SX6 EST READ EST ORDINAL WORD SX1 ESTP (X1) = ADDR OF PTR TO EST FWA SX2 1 RJ RSB GET WORD WITH PTR TO EST FWA SA1 EST ISOLATE EST BEGINNING ADDRESS SA2 FIB+2 EQUIPMENT ORDINAL MX7 -12D LX2 12 SHIFT EQ NUM TO LOW ORDER BX2 -X7*X2 .NOS22 IFGE OSLEV,596 NOS VERSION 2.2 AX1 36D TOP 24 BITS IS FWA OF EST LX2 1 TWO WORDS PER EST ENTRY .NOS22 ELSE PRIOR TO 2.2 LX1 12 TOP 12 BITS IS FWA OF EST BX1 -X7*X1 .NOS22 ENDIF IX1 X1+X2 ADDR OF EST ENTRY SX6 MST SX2 1 RJ RSB SA1 MST GET MST ADDRESS/10B MX7 -12 BX1 -X7*X1 LX1 3 SX1 X1+PFGL (X1) = OFFSET TO PACKNAME SX6 PACKN SX2 1 RJ RSB GET PACK NAME SA1 PACKN ISOLATE PACKNAME MX6 42 BX6 X6*X1 SA6 A1 EQ GETPACK EST DATA 0 EST ORDINAL WORD MST DATA 0 MST ADDRESS PACKN DATA 0 PACK NAME GETPN SPACE 4 ** GETPN - DEFINE FILE ON PACK *PN* GETPN DATA 0 ENTRY/EXIT SA1 MFCT GET MF COUNT SA2 =5LMFDMP LX1 24 BX6 X1+X2 SA6 OF+8 SA1 OF+1 SET EPR RJ SETEPR PURGE OF,,,PN,DT SA1 OF+1 CLEAR EPR RJ CLREPR DEFINE OF,OF+8,,,DT,,W,PN EQ GETPN INITPT SPACE 4 ** INITPT - INITIALIZE POINTERS INITPT DATA 0 ENTRY/EXIT SX7 0 ZERO COUNTERS SA7 COUNT SA7 WCOUNT SA7 ECOUNT SA7 MFNAME SA7 MFTYPE SA7 NFILES SA7 MFILES * /--- BLOCK SUBRTINES 00 000 80/11/17 11.59 SA7 OFFSET SA7 WRCNT SA1 PROX INITIALIZE PROCESS POINTERS BX6 X1 SA6 PRO1 SX7 PTABLE SA7 PPOINT MX6 59 SA6 FILEPT EQ INITPT * /--- BLOCK SUBRTINES 00 000 87/12/09 15.56 INITCB SPACE 4 ** INITCB - INITIAL READ OF COM BUFFER * * READS COMMUNICATIOS BUFFER TO SEE IF FILE * ALREADY DUMPED * * EXIT - X1=0 - IF FILE NOT ALREADY DUMPED * X1.NE.0 - IF FILE ALREADY DUMPED AND *NA* * NOT SELECTED ON CONTROL CARD * JOB ABORTED IF *NA* NOT SELECTED AND FILE DUMPED INITCB DATA 0 ENTRY/EXIT SA1 PF+1 PREPARE FET+1 FOR *EP* BIT SET RJ SETEPR SET ERROR PROCESSING BIT INIT1 ATTACH PF,COMB,,,R,PACK SA1 PF RJ CKSTATS NZ X2,INIT1 IF FILE WAS BUSY SA1 PF+1 PREPARE FET+1 FOR *EP* BIT SET RJ CLREPR CLEAR ERROR PROCCESSING BIT REWIND PF,R INIT2 READSKP PF,0,R READ HEADER FROM COMM BUFFER READW PF,WORK,CWRKH NZ X1,INIT3 IF EOF, EOI, OR EARLY EOR SA1 WORK MASTER FILE NAME SA2 IF FILE WE ARE LOOKING FOR MX7 42 BX2 X7*X2 MASK JUST THE MASTER FILE NAME IX6 X2-X1 ZR X6,INITPER IF FILE ALREADY DUMPED SA1 PF+2 IN=OUT BX6 X1 SA6 A1+B1 EQ INIT2 READ NEXT RECORD INIT3 UNLOAD PF,R RETURN COMM. BUFF FOR NOW. SX1 B0 FILE NOT DUMPED EQ INITCB INITPER RJ SFN SA6 INPMSG MESSAGE INPMSG SA1 NA NO ABORT FLAG NZ X1,INITCB IF *NA* SELECTED EQ ABORT RSB SPACE 4 ** RSB - READ SUBSYSTEM PROGRAM BLOCK * * USED TO READ LOW-CORE ABSOLUTE MEMORY * * ENTRY - X6=ADDRESS TO READ INTO * X1=CM ADDRESS * X2=NUMBER OF WORD TO TRANSFER RSB DATA 0 ENTRY/EXIT MX7 59 LOW CORE FLAG SA7 X6 LX1 18 CM ADDRESS LX2 36 WORD COUNT BX6 X6+X1 BX6 X6+X2 SA6 RSBS STATUS WORD SA1 RSBQ RSB REQUEST BX6 X1 RJ SYS= MAKE SYSTEM REQUEST RSB1 SA1 RSBS CK. IF STATUS WORD IS FINISHED MX7 2 BX1 X7*X1 NG X1,RSB IF TRANSFER OK NZ X1,RSB2 IF ERROR RECALL WAIT EQ RSB1 RSB2 MESSAGE RSBM EQ ABORT RSBM DIS ,*RSB CALL ERROR* RSBQ VFD 18/3LRSB,6/20B,18/0,18/RSBS RSBS DATA 0 RSB STATUS WORD * /--- BLOCK SUBRTINES 00 000 87/12/07 16.55 RTF SPACE 4 ** RTF - REQUEST TAPE FILE * * REQUEST A LABELED TAPE * * ENTRY - OF = FET ADDRESS * PN .NE. 0 - PN=PACKNAME (DO NOT LABEL) * (X6) = VSN REQUESTED * IF BINARY 0, GET SCRATCH TAPE * IF BINARY 1, REQUEST TAPE * * EXIT - (X6) = VSN OF TAPE LOADED * LABELS WRITTEN RTF DATA 0 ENTRY/EXIT SA1 RTFA INCREMENT TAPE FILE COUNT SX7 X1+B1 SA7 A1 RTF1 SA1 PN SEE IF PACK NAME SPECIFIED NZ X1,RTF8 SA1 TDEN (X1) = DENSITY ARGUMENT BX4 X4-X4 ZR X1,RTF1.2 IF NOT SPECIFIED, USE DEFAULT SB2 TDENL (B2) = KEYWORD TABLE LENGTH MX0 12 RTF1.1 SB2 B2-B1 NG B2,INITERR IF NO MATCH IN TABLE, ABORT SA2 TDENTBL+B2 (X2) = 12/KEYWORD,48/CODE BX3 X0*X2 (X3) = 12/KEYWORD,48/0 BX3 X3-X1 NZ X3,RTF1.1 IF NO MATCH CONTINUE SEARCH BX4 -X0*X2 (X4) = DENSITY CODE LX4 51 MOVE TO BITS 53-51 RTF1.2 SX1 B1 TEST FOR REQUEST TAPE OPTION SX2 B1 (X2) = WRITE LABEL / RING IN LX2 59 SX7 B1 LX7 40 BX2 X2+X7 IX6 X6-X1 ZR X6,RTF2 REQUEST TAPE IX6 X6+X1 NZ X6,RTF2 IF VSN SPECIFIED SA1 =6L LABEL FOR SCRATCH TAPE BX6 X1 (X6) = SCRATCH VSN RTF2 SA3 FORMAT (X3) = FORMAT ('I OR 'L'I) LX3 12 MX0 -12 BX3 -X0*X3 RETRIEVE TWO CHAR FORMAT SX0 5 DEFAULT TO *LI* SX3 X3-2RLI COMPARE TO SEE IF *LI* ZR X3,RTF2.1 IF *LI*, CONTINUE SX0 0 DEFAULT TO *I* FORMAT RTF2.1 LX0 30 POSITION TO BITS 35-30 SX7 5 (X7) = LABELED / 9-TRACK LX7 56 BX7 X7+X0 INCLUDE FORMAT FIELD BX7 X7+X2 BX7 X7+X4 INCLUDE DENSITY FIELD SA7 OF+8 ZR X6,RTF2.2 DO NOT BLANK FILL IF ZERO. BX1 X6 RJ ZTB BLANK-FILL THE REQUESTED VSN RTF2.2 BSS 0 MX0 36 BX6 X0*X6 SA6 A7+B1 SET VSN BX6 X6-X6 SA1 IF SET FILE NAME = MASTERFILE NAME MX0 42 BX1 X0*X1 ZR X1,RTF3 IF NO FILE NAME PRESENT RJ SFN * /--- BLOCK SUBRTINES 00 000 79/10/25 13.40 RTF3 SA6 A6+B1 SA1 =7L BX6 X1 SA2 RTFA GET TAPE POSITION SX2 X2-1 SX7 1 FIRST FILE SEQUENCE = 1 ZR X2,RTF4 SX7 9999 ALL OTHERS = 9999 RTF4 IX6 X6+X7 MERGE WITH FILE NAME SA6 A6+B1 FET+11 SA1 =6LMFDUMP BX6 X1 SA6 A6+B1 SET NAME = *MFDUMP* BX7 X7-X7 SA7 A6+B1 LABEL OF FIND LABELED TAPE * OPEN VOL1 LABEL IF FIRST TIME THRU SA3 RTFA TAPE FILE NUMBER SX3 X3-1 NZ X3,RTF5 IF NOT FIRST FILE RJ SETEB SA1 =0LVOL1 BX6 X1 SA6 PB+1 OPEN OF,READ,R SA1 OF+B1 CHECK DEVICE TYPE PL X1,RTF7 IF ASSIGNED TO DISK SA1 PB+1 GET VSN SA4 =6L TEST FOR BLANK LABEL MX6 36 LX1 24 BX6 X6*X1 IX7 X6-X4 ZR X7,RTF9 IF BLANK LABEL * /--- BLOCK SUBRTINES 00 000 87/12/07 16.57 SA4 =2L** TEST FOR BAD LABEL MX7 12 BX7 X7*X6 MASK TOP CHARACTERS IX7 X7-X4 ZR X7,RTF11 IF TOP TWO CHARACTERS ARE ** LX6 54 CLEAR TOP BITS FOR TAPE FLAG SA6 VSN SA1 OF GET TAPE UNIT NUMBER RJ FINFO SA1 FIB+2 MX6 12 BX6 X6*X1 MASK EST LX6 12 SA6 TAPUNIT SA4 =3R001 EQ RTF6 RTF5 SA4 =3R999 POSMF COUNT (NEXT RECORD) RTF6 SA1 OF+10 SHIFT TO STANDARD FET INFO SA2 A1+B1 BX6 X1 SA6 A1-B1 FILE IDENTIFIER-FIRST 10 CHARS MX7 42 BX6 X7*X2 NEXT 7 CHARS BX6 X6+X4 ADD SEQUENCE NUMBER SA6 A6+B1 FET+10 MX6 0 SA6 A6+B1 SA1 A6+B1 SET IDENTIFICATION MX7 36 BX6 X7*X1 SA6 A1 FET+12 SA1 OF+1 CLEAR EXTENDED LABEL BIT SX6 B1 LX6 41 BX6 -X6*X1 SA6 A1 POSMF OF,R SA1 OF+B1 CHECK DEVICE TYPE NG X1,RTF IF ASSIGNED TO TAPE RTF7 MESSAGE WRONG WRONG DEVICE EQ ABORT RTF8 RJ GETPN GET FILE DEFINED ON PACK SA1 OF GET PACK NAME FOR FILE RJ GETPACK SA6 VSN STORE PACK NAME EQ RTF EXIT RTF9 UNLOAD OF,R GET RID OF BLANK LABEL MESSAGE BLANK ERROR MESSAGE RTF10 SA1 VSNX TRY TO REQUEST TAPE AGAIN BX6 X1 EQ RTF1 RTF11 UNLOAD OF,R GET RID OF BAD LABEL TAPE MESSAGE BADLAB ERROR MESSAGE EQ RTF10 TRY TO GETANOTHER TAPE PB BSSZ 10 BUFFER FOR VOL1 HEADER RTFA DATA 0 COUNT OF FILES ON TAPE SETEB SPACE 4 ** SETEB - SETUP EXTENDED LABEL BUFFER * * SETS UP COUNT FIELDS IN FET AND EXT. BUFFER * CLEAR ALL OTHER FIELDS IN BUFFER * * USES A - 6,7 * X - 6,7 * B - 6 * /--- BLOCK PROCESS 00 000 87/12/07 17.01 SETEB DATA 0 ENTRY/EXIT SX6 10 LENGTH SX7 PB BEGINNING ADDRESS LX6 18 BX6 X6+X7 SA6 OF+9 PUT IN FET SX7 80 CHARACTER COUNT SA7 PB SX6 0 SB6 9 SEB1 SA6 A7+B6 CLEAR PB+1 TO PB+9 SB6 B6-B1 GE B6,B1,SEB1 EQ SETEB TITLE PROCESS MF DATA PROCESS SPACE 4 ** PROCESS BLOCK INFORMATION * PROZ SA1 PROY INSTALL FAST EXIT BX6 X1 SA6 PRO1 PROCESS DATA 0 PROCESS BLOCK INFO * * THE FOLLOWING COMMANDS DUPLICATED AT PROX * PRO1 SA3 PPOINT PROCESS POINTER SA4 X3+ ZR X4,PROZ IF ALL DONE SA1 WCOUNT BEGINNING COUNT FOR THIS READ SA2 ECOUNT ENDING COUNT FOR THIS READ MX7 30 BX6 -X7*X4 WORD THAT IS WANTED ZR X6,PRO5 JUMP ROUTINE DEMANDED IX5 X6-X1 COMPARE WITH BEGINNING IX3 X6-X2 COMPARE WITH ENDING NG X5,PROERR IF WE HAVE ALREADY PASSED IT PL X3,PROCESS IF NOT HERE YET MX7 12 BX7 X7*X4 WORD COUNT ZR X7,PRO5 PROCESS JUMP WANTED LX7 12 SB7 X7 WORD COUNT NE B7,B1,PRO2 IF MORE THAN 1 WORD SA1 X5+WORK GET WORD THAT IS WANTED AX4 30 STORE LOCATION BX7 X1 SA7 X4 STORE DESIRED WORD SX7 A4+B1 BUMP POINTER COUNTER SA7 PPOINT EQ PRO1 PROCESS NEXT REQUEST PRO2 IX6 X3+X7 COMPARE WORD COUNT WITH ROOM NG X6,PRO3 IF ENOUGH ROOM ZR X6,PRO3 IF JUST ENOUGH ROOM IX7 X4-X3 INCREMENT FROM LX3 30 IX7 X7-X3 INCREMENT TO LX3 18 IX7 X7+X3 DECREMENT TO LX3 12 RESTORE COUNT SA7 A4 STORE NEW COMMAND FOR NEXT PASS BX1 -X3 WORD COUNT THIS PASS EQ PRO4 MOVE WORDS PRO3 SX7 A4+B1 BUMP POINTER SA7 PPOINT SX1 B7 WORD COUNT PRO4 SX2 X5+WORK FROM AX4 30 SX3 X4 TO RJ MVE= MOVE WORDS EQ PRO1 NEXT REQUEST * /--- BLOCK PROCESS 00 000 80/10/14 14.26 PRO5 SX7 A4+B1 BUMP POINTER SA7 PPOINT AX4 30 GET JUMP ADDRESS SB7 X4 JP B7+ JUMP TO PROPER ROUTINE PROF SA1 NFILES GET FILE COUNTS SX7 X1 NUMBER OF FILES AX1 18 NZ X7,PROF1 IF NO FILES, FAKE ONE SX7 1 PROF1 SX6 X1 MAX NUMBER OF FILES SA7 A1 SA6 MFILES SX5 X7-MAXFIL-1 COMPARE WITH MAX. PL X5,PROFERR TOO MANY SA1 OFFSET SX2 FILN FILE NAME BUFFER SX3 FILI FILE INFO BUFFER LX2 30 LX3 30 SX1 X1+BASE IX6 X6+X1 LX7 48 FILE COUNT IX6 X6+X7 IX6 X6+X3 IX7 X7+X1 IX7 X7+X2 SA7 PTABA SA6 A7+B1 EQ PRO1 NEXT REQUEST PRON SA1 FILEPT INCREMENT FILE POINTERS SA2 NFILES NUMBER OF FILES SX6 X1+B1 IX7 X6-X2 COMPARE PL X7,PRON2 IF DONE SA6 A1 STORE FILE POINTER SB7 X6 GET FILE INFO SA1 FILI+B7 MX7 -24 BX1 -X7*X1 EXTRACT PART COUNT ZR X1,PRON1 IF NO PART NUMBER SX6 PART PART SIZE IX1 X6*X1 WORD COUNT SA2 FILDUM DUMMY WORD FOR WORD TRANSFER SA3 A2+1 DUMMY WORD FOR ACCOUNT TRANSFER SX6 NAME NAME OFFSET SX7 ACCT ACCOUNT OFFSET IX6 X6+X1 IX7 X7+X1 IX6 X6+X2 IX7 X7+X3 SA6 PTABB STORE IN POINTER TABLE SA7 A6+B1 SX6 A6 SET POINTER SA6 PPOINT EQ PRO1 NEXT REQUEST PRON1 SA2 FILN+B7 GET FILE NAME MX7 1 BX7 X7-X2 COMPARE PL X7,PRONERR IF ERROR ZR X7,PRON GO TO NEXT FILE EQ PRONERR PRON2 SX6 -2 FILE FLAG FOR ALL DONE SA6 FILEPT SX7 PTABC SA7 PPOINT SET PROCESSOR TABLE POINTER EQ PRO1 EXIT * /--- BLOCK PROCESS 00 000 80/10/01 09.01 PROS SA1 NFILES NUMBER OF FILES SB5 X1 SB7 B0 INITIAL LOOP VALUE PROS1 SB6 B7 START OF THIS LOOP MX5 -24 MX7 -23 BIG VALUE BX7 -X7 PROS2 SA1 FILI+B6 GET FILE INFO WORD BX1 -X5*X1 STRIP LOWER 24 IX2 X1-X7 COMPARE PL X2,PROS3 IF BIGGER OR EVEN SB3 B6 SAVE LOWER VALUE BX7 X1 PROS3 SB6 B6+B1 TRY NEXT VALUE LT B6,B5,PROS2 IF NOT DONE EQ B3,B7,PROS4 IF NO TRANSFER NECESSARY SA1 FILN+B3 FIRST FILE NAME SA2 FILI+B3 FIRST FILE INFO SA3 FILN+B7 SECOND FILE NAME SA4 FILI+B7 SECOND FILE INFO BX6 X1 SWAP WORDS BX7 X2 SA6 A3 SA7 A4 BX6 X3 BX7 X4 SA6 A1 SA7 A2 PROS4 SB7 B7+B1 INCREMENT LOOP COUNTER LT B7,B5,PROS1 EQ PRO1 NEXT REQUEST PROWH SA1 MFNAME WRITE COMM. BUFF HEADER SA2 NFILES NUMBER OF FILES BX6 X1 BX7 X2 SA6 CWORK MASTER FILE NAME SA7 A6+B1 SA1 PACKNAM PACK NAME BX6 X1 SA2 TAPUNIT TAPE UNIT SA6 A7+B1 BX7 X2 SA1 VSN VSN SA7 A6+B1 BX6 X1 SA2 DATE DATE/TIME SA6 A7+B1 BX7 X2 SA7 A6+B1 WRITEW CB,CWORK,CWRKH EQ PRO1 NEXT REQUEST PROWR SA1 FILEPT GET FILE POINTER SA2 CWORK+1 FILE NAME SB7 X1 SA3 FILN+B7 FILE NAME FROM DIRECTORY IX7 X3-X2 COMPARE SA4 FILI+B7 FILE INFO WORD BX6 X4 SA6 A2+B1 STORE IN COMM BUFFER ZR X7,PROWR1 IF OK BX7 X3 SA7 CWORK+1 STORE FILE NAME MX6 1 BX6 -X6 SA6 A7-B1 STORE DUMMY ACCOUNT NAME BX1 X7 SPACE FILL NAME RJ SFN SA6 PROWM MESSAGE PROWM PROWR1 WRITEW CB,CWORK,CWRKF SA1 WRCNT SX6 X1+B1 SA6 A1 EQ PRO1 NEXT REQUEST PROX SA3 PPOINT COPY OF PRO1 SA4 X3+ PROY EQ PROCESS DUMMY FAST EXIT COMMAND * /--- BLOCK PROC TABLE 00 000 81/01/21 11.04 PROERR MESSAGE PROM PROABT RJ ALLDONE RJ ALLMSG ABORT ABORT PROFERR MESSAGE PROFM EQ PROABT PRONERR MESSAGE PRONM ERROR MESSAGE EQ PROABT * PROCESSOR TABLE PPOINT VFD 60/PTABLE PROCESS TABLE POINTER PTABLE BSS 0 VFD 12/1,18/MFNAME,30/MFNM VFD 12/1,18/MFTYPE,30/MFTY VFD 12/1,18/NFILES,30/FILW VFD 12/1,18/OFFSET,30/OFFS VFD 12/0,18/PROF,30/0 PTABA VFD 12/0,18/FILN,30/0 FILLED IN WITH NUM FILES VFD 12/0,18/FILI,30/0 FILLED IN WITH NUM FILES VFD 12/0,18/PROS,30/0 VFD 12/0,18/PROWH,30/0 VFD 12/0,18/PRON,30/0 PTABB VFD 60/0 FILE TRANSFER TO BE FILLED IN VFD 60/0 ACCOUNT TRANSFER VFD 12/0,18/PROWR,30/0 VFD 12/0,18/PRON,30/0 PTABC DATA 0 END OF TABLE * /--- BLOCK ALLDONE 00 000 87/12/09 15.57 ALLDONE SPACE 4 ** ALL DONE - WRITE COM. BUFF. * ALLDONE DATA 0 SA1 RTFA SEE IF ANY INFO DUMPED ZR X1,ALLDONE EXIT IF NOTHING SA1 PF+1 PREPARE FET+1 FOR *EP* BIT SET RJ SETEPR SET ERROR PROCESSING BIT ALLD1 ATTACH PF,COMB,,,A,PACK SA1 PF RJ CKSTATS NZ X2,ALLD1 IF FILE WAS BUSY SA1 PF+1 RJ CLREPR CLEAR ERROR PROCESSING BIT REWIND CB,R SKIPEI PF,R READ CB,R ALLD2 READW CB,WORK,WORKL NG X1,ALLD4 EOI/EOF NZ X1,ALLD3 EOR WRITEW PF,WORK,WORKL EQ ALLD2 ALLD3 SB7 B6-WORK WRITEW PF,WORK,B7 WRITER PF READ CB EQ ALLD2 ALLD4 BX5 X1 EOI/EOF FLAG SB7 B6-WORK WRITEW PF,WORK,B7 SX5 X5+B1 NZ X5,ALLD5 IF EOI WRITEF PF READ CB EQ ALLD2 ALLD5 RECALL PF SA1 PF+2 SA2 A1+B1 BX1 X1-X2 ZR X1,ALLD6 NO WORDS REMAINING IN BUFFER WRITE PF ALLD6 BSS 0 UNLOAD PF,R UNLOAD CB,R EQ ALLDONE EXIT * ALLMSG DATA 0 SA1 FILEPT SEE IF ALL FILES PROCESSED SX1 X1+2 NZ X1,ALLDA SA1 MFNAME SA2 =10HMF NAME RJ MESSX SA1 MFTYPE SA2 =10HMF TYPE RJ MESSX SA1 WRCNT SA2 =10HNUM FILES RJ DEBUGX SA1 MFILES SA2 =10HMAX FILES RJ DEBUGX * SA1 ECOUNT * SA2 =10HEND COUNT * RJ DEBUGX * SA1 WRCNT * SA2 =10HWRITE REC * RJ DEBUGX MESSAGE MSG ALL DONE MESSAGE EQ ALLMSG EXIT ALLDA MESSAGE ALLDM NOT ALL FILE PROCESSED EQ ABORT SHOWF DATA 0 MESSAGE SHOWFM SX7 0 SA7 SHOWFX SHOWF1 SA1 SHOWFX SX6 X1+B1 SA6 A1 SX6 X6-15 PL X6,SHOWF SA1 X1+OF RJ SHOW EQ SHOWF1 SHOWFX DATA 0 SHOWFM DIS ,* FET* * /--- BLOCK DEBUG 00 000 87/12/07 17.13 DEBUG SPACE 4 ** DEBUG - USE IF NECESSARY. * DEBUG SPACE 4 DEBUG DATA 0 ENTRY/EXIT RJ CDD SA6 DMSG MESSAGE DMSG EQ DEBUG DEBUGX DATA 0 ENTRY/EXIT BX7 X2 SA7 DMS RJ CDD SA6 DMSG MESSAGE DMS EQ DEBUGX SHOW DATA 0 RJ WOD SA6 DMS SA7 A6+B1 MESSAGE DMS EQ SHOW SHOWP DATA 0 MESSAGE SHOWPM SX7 0 SA7 SHOWPX SHOWP1 SA1 SHOWPX SX6 X1+B1 SA6 A1 SX6 X6-11 PL X6,SHOWP SA1 X1+PB RJ SHOW EQ SHOWP1 SHOWPX DATA 0 SHOWPM DIS ,* LABEL BUFFER* MESSX DATA 0 ENTRY/EXIT BX7 X2 SA7 DMS BX6 X1 SA6 DMSG MESSAGE DMS EQ MESSX * DISPLAY MESSAGES MSG DIS ,* END OF MASTER FILE.* INMSG DIS ,* ERROR IN PARAMETERS.* INPMSG DATA 0 MASTER FILE NAME DIS ,* - MASTER FILE ALREADY DUMPED* PROM DIS ,* ERROR IN PROCESSOR TABLE.* PROFM DIS ,* TOO MANY FILES IN MASTER FILE.* PRONM DIS ,* ERROR IN FILE TABLE* PROWM DATA 0 FILE NAME INSERTED HERE DIS ,*- FILE DIRECTORY DOES NOT MATCH FILE* ALLDM DIS ,* NOT ALL FILES PROCESSED* WRONG DIS ,* DUMP FILE ASSIGNED TO DISK* BLANK DIS ,* DO NOT USE BLANK LABEL TAPE* BADLAB DIS ,* CANNOT READ THE TAPE LABEL* DMS DATA 0 DMSG DATA 0,0 DEBUG MESSAGE AREA * ARGUMENT TABLE ARGTBL VFD 12/2LMF,18/MF,30/MF VFD 12/2LMF,18/MF+1,30/MF+1 VFD 12/2LMF,18/MF+2,30/MF+2 VFD 12/2LMF,18/MF+3,30/MF+3 VFD 12/2LMF,18/MF+4,30/MF+4 VFD 12/2LMF,18/MF+5,30/MF+5 VFD 12/2LMF,18/MF+6,30/MF+6 VFD 12/2LMF,18/MF+7,30/MF+7 VFD 12/2LMF,18/MF+8,30/MF+8 VFD 12/2LMF,18/MF+9,30/MF+9 VFD 12/1LV,18/ONE,30/VSNX VFD 12/2LNA,18/ONE,30/NA VFD 12/2LPN,18/PN,30/PN VFD 12/1LR,18/DT,30/DT VFD 12/1LD,18/TDEN,30/TDEN VFD 12/1LF,18/FORMAT,30/FORMAT ARGTBLE DATA 0 END OF TABLE * /--- BLOCK PARAMETERS 00 000 79/10/25 13.32 * COUNTERS AND PARAMETERS COUNT DATA 0 BLOCK COUNT WCOUNT DATA 0 BEGINNING WORD COUNT ECOUNT DATA 0 ENDING WORD COUNT MFNAME DATA 0 MASTER FILE NAME MFTYPE DATA 0 MASTER FILE TYPE NFILES DATA 0 NUMBER OF FILES MFILES DATA 0 MAX. NUMBER OF FILES OFFSET DATA 0 FILE OFFSET PACKNAM DATA 0 PACKNAME TAPUNIT DATA 0 TAPE UNIT MF DATA 0,0,0,0,0,0,0,0,0,0 MASTER FILE NAMES DATA 0 END OF TABLE VSN DATA 0 VSN NUMBER (ACTUAL) VSNX DATA 0 VSN NUMBER (USER REQUEST) NA DATA 0 NO ABORT FLAG ONE DATA 1 CONSTANT ONE PACK DATA 1L0 PACK NAME FOR COM. BUFFER COMB DATA 6LCOMBUF FILE NAME FOR COM BUF. PN DATA 0 USER PACK NAME FOR DUMPED FILE DT DATA 0 USER PACK NAME DEVICE TYPE TDEN DATA 0 TAPE DENSITY FORMAT DATA 0 TAPE FORMAT (DEFAULT = 'I) MFCT DATA 0 MASTER FILE COUNT DATE DATA 0 DATE WRCNT DATA 0 NUMBER OF RECORDS WRITTEN FILEPT DATA -1 FILE POINTER FILDUM VFD 12/1,18/CWORK+1,30/0 FILE TRANSFER DUMMY VFD 12/1,18/CWORK,30/0 ACCOUNT TRANSFER * TAPE DENSITY TABLE TDENTBL BSS 0 VFD 12/2LHD,48/3 *HD* = 800 BPI VFD 12/2LPE,48/4 *PE* = 1600 BPI VFD 12/2LGE,48/5 *GE* = 6250 BPI TDENL EQU *-TDENTBL TABLE LENGTH * RESERVE BUFFER SPACE WORK BSSZ WORKL WORKING BUFFER CWORK BSSZ CWRKH COMMUNICATIONS WORK BUFFER IBUF BSSZ LBUFL INPUT CIRCULAR BUFFER OBUF BSSZ LBUFL OUTPUT CIRCULAR BUFFER CBUF BSSZ BUFL COMMUNICATION CIRCULAR BUFFER PBUF BSSZ BUFL PERMANENT FILE COM. BUFFER FILN BSSZ MAXFIL FILE NAMES FILI BSSZ MAXFIL FILE INFO AND LOCATION * COMMON DECKS. *CALL COMCZTB *CALL COMCCIO *CALL COMCRDS *CALL COMCRDW *CALL COMCSYS *CALL COMCWTS *CALL COMCWTW *CALL COMCCDD *CALL COMCWOD *CALL COMCMVE *CALL COMCSFN *CALL COMCCPM *CALL COMCPFM *CALL COMCLFM *CALL COMCARG USE // RFL= BSS 0 END OF PROGRAM END COPYMF