plato:source:plaopl:copymf
Table of Contents
COPYMF
Table Of Contents
- [00015] COPY MASTER FILES
- [00220] SUBROUTINES
- [00222] CKSTATS - CHECK FILE STATUS FOR BUSY
- [00241] CLREPR - CLEAR ERROR PROCESSING BIT IN THE FET
- [00252] INIT - INITIALIZE
- [00296] SETEPR - SET ERROR PROCESSING BIT IN THE FET
- [00308] FINFO - GET FILE INFO
- [00321] GETPACK - GET PACK NAME FOR FILE
- [00367] GETPN - DEFINE FILE ON PACK *PN*
- [00383] INITPT - INITIALIZE POINTERS
- [00407] INITCB - INITIAL READ OF COM BUFFER
- [00452] RSB - READ SUBSYSTEM PROGRAM BLOCK
- [00487] RTF - REQUEST TAPE FILE
- [00660] SETEB - SETUP EXTENDED LABEL BUFFER
- [00684] PROCESS MF DATA
- [00931] ALL DONE - WRITE COM. BUFF.
- [01023] DEBUG - USE IF NECESSARY.
Source Code
- COPYMF.txt
- 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
plato/source/plaopl/copymf.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator