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