COPYPF
* /--- FILE TYPE = E
* /--- BLOCK COPYPFX 00 000 81/04/29 11.32
COPYPF
IDENT COPYPF,BEGIN,COPYPF
ENTRY COPYPF
SYSCOM B1 DEFINE (B1) = 1
*COMMENT COPY PLATO FILES FROM DUMPS
COMMENT COPYRIGHT CONTROL DATA CORP. 1980.
TITLE COPY PLATO FILES FROM DUMPS
SPACE 4
*** COPY PLATO FILES FROM DUMPS
* J. J. BUCHMANN. 80/06/17.
*
*FUNCTION;
* THIS PROGRAM HAS TWO MODES OF OPERATION, SINGLE PLATO
* FILE RECOVERY, AND MASTERFILE RECOVERY MODE. THE MODE
* OF OPERATION DEPENDS ON THE *FF* PARAMETER ON THE
* CONTROL CARD. IF *FF* IS PRESENT, THEN SINGLE FILE
* MODE IS SELECTED, IF NOT PRESENT, THEN MASTERFILE MODE
* IS SELECTED.
*
* IN SINGLE FILE MODE, ALL THE PARAMETERS MUST BE
* SPECIFIED ON THE CONTROL CARD; PLATO MUST BE UP; AND A
* PLATO FILE CREATED (*TF* PARAMETER) OF TYPE BACKUP,
* RESIDING IN THE SAME ACCOUNT AS THE ORIGINAL FILE, AND
* OF THE SAME SIZE. THE COPYPF PROGRAM WILL REQUEST THE
* TAPE/DISK (E,P DISPLAY IF THE V=VSN PARAMETER IS
* SPECIFIED). THE TAPE/DISK WILL BE SCANNED FOR THE
* REQUESTED FILE, AND THE FILE WILL BE RESTORED IF ALL
* CONDITIONS FOR FILE TYEP, ACCOUNT, AND SIZE ARE MET.
*
* IN MASTERFILE MODE, THE PARAMETERS MAY BE PASSED ON
* THE CONTROL CARD OR VIA THE K-DISPLAY. WHEN THE
* PROPER MASTERFILES HAVE BEEN SELECTED FOR RECOVERY,
* THEN A K.GO WILL START THE PROCESS. ALL MASTERFILES
* THAT ARE TO BE RECOVERED MUST HAVE BEEN ATTACHED TO
* THE CONTROL POINT PRIOR TO THE RECOVERY ATTEMPT. THE
* PROGRAM WILL REQUEST TAPES/PACKS VIA THE E,P DISPLAY.
* THE OPERATOR CONTINUES TO MOUNT THE TAPE/PACKS AS
* NEEDED UNTIL ALL REQUESTED MASTERFILES HAVE BEEN
* RECOVERED.
*
* AN ON-LINE LISTING OF ALL PARAMETERS MAYBE DISPLAYED
* BY TYPING KK.
*
*PARAMETERS;
* SINGLE PLATO FILE RECOVERY MODE;
* V=VSN REQUEST LABELED TAPE (VSN=LABEL)
* FF=XXXXXX FROM FILE NAME (PLATO FILE NAME ON TAPE)
* TF=XXXXXX TO FILE NAME (CURRENT PLATO FILE NAME)
* IF NOT SPECIFIED, DEFAULT = FF
*
* MASTERFILE RECOVERY MODE;
* PN=PACK PACKNAME TO BE RECOVERED
* MF=MASTER MASTERFILE NAME TO BE RECOVERED
* DA=MMDD MONTH AND DAY TO BE RECOVERED
* SL=NN SLOT VALUE TO BE USED
*
* K-DISPLAY PARAMETERS (MASTERFILE MODE ONLY);
* PN,MF,DA,SL SAME AS ABOVE
* GO BEGIN PROCESSING THE RECOVERY TAPES
*
* /--- BLOCK COPYPFX 00 000 81/04/29 11.33
*INFORMATIVE MESSAGES;
* DO NOT USE BLANK LABEL TAPE (WRONG TAPE)
* DUMP FILE ASSIGNED TO DISK (RESTART THE PROGRAM AND
* GIVE TAPE ASSIGNMENT)
* NO FILES SELECTED (WHEN K.GO IS ENTERED)
* FFFFF - FILE NOT FOUND IN MASTERFILE MMMMM (FILE NOT
* IN THIS MASTERFILE, SKIP TO NEXT MASTERFILE)
* MMMMM - MASTERFILE NOT REQUESTED (THIS MASTERFILE WILL
* BE SKIPPED)
* ALL DONE
*
*ERROR MESSAGES;
* ERROR IN PARAMETERS (CORRECT THE PROCEDURES)
* TOO MANY FILES SELECTED (TO BE RESTORED - MAX. 50)
* FIW OF TO FILE NOT BACKUP TYPE
* TO FILE TYPE NOT BACKUP (WORD 2 OF BLOCK 0)
* FILE SIZES DO NOT MATCH
* FILE ACCOUNTS DO NOT MATCH
*
*PLATO ATTACH READ/WRITE ERROR MESSAGES;
* WAITING FOR FILE - XXXXXX (INFORMATIVE ONLY)
* ERROR IN ATTACHING FILE
* ERROR IN READING FILE
* ERROR IN WRITING FILE
* FILE NAME = XXXXX
* ERROR STATUS = NNNN
* BEGINNING RECORD = NNNN
* ENDING RECORD = NNNN
*
*INTERNAL ERROR MESSAGES;
* ERROR IN PROCESSOR TABLE
* TOO MANY FILES IN MASTER FILE
* NAMES OF TO FILES DO NOT MATCH (FIW .VS. FILE DIRECT.)
* NAMES OF FROM FILES DO NOT MATCH (FIW .VS. FILE DIR.)
* FROM FILE SIZE WRONG
* FILE NOT COMPLETELY CONTAINED IN MASTERFILE
SPACE 4
*CALL COMCMAC
*CALL COMCDCM
*CALL COMCCMD
SPACE 4,10
*CALL SYSCON
SPACE 4,10
**** ASSEMBLY CONSTANTS.
BUFL EQU 10001B 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
MAXK545 EQU 35 MAX LINES ON CC545 K-DISPLAY
MAXK721 EQU 20 MAX LINES ON 721 K-DISPLAY
MAXST EQU 50 MAX NO. OF STACK ENTRIES
MAXST2 EQU MAXST*2 SIZE OF STACK BUFFER
BLOCK EQU 320 BLOCK SIZE
NUMBLK EQU 7 NUMBER OF BLOCKS/PART
PART EQU BLOCK*NUMBLK 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
BACKTY EQU 52B BACKUP TYPE
NAME EQU 0 FILE NAME OFFSET IN DIRECTORY
TYPE EQU 1 FILE TYPE OFFSET
SIZE EQU 2 FILE SIZE OFFSET
ACCT EQU 40 ACCOUNT NAME OFFSET
* /--- BLOCK COPYPFX 00 000 81/05/07 06.53
USERI EQU 377773B USER INDEX FOR FILES
TIMEL EQU 7777B TIME LIMIT
PRIOR EQU 41B PRIORITY
BEGIN BSS 0
* SET UP FETS
IF BSS 0
MFDUMP FILEC IBUF,LBUFL,(FET=14),XL
TB BSS 0
ZZZZZZ FILEC TBUF,BUFL,(FET=14)
* MAIN LOOP
COPYPF BSS 0 ENTRY POINT
SB1 1 FOREVER CONSTANT
RJ INIT INITIALIZE AND GET ARGS
CPF1 SA1 MFCT UPDATE MASTER FILE COUNT
SX6 X1+B1
SA6 A1
SA1 VSNX USER REQUESTED VSN
BX6 X1
RJ RTF OPEN TAPE
READ IF,R INITIALIZE READING OF FILE
CPF2 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
BX7 X1 SAVE READ STATUS
SA7 STATUS
NG X1,CPF4 IF EOF/EOI
NZ X1,CPF3 IF EOR
RJ PROCESS PROCESS INFO FOR THIS BLOCK
EQ CPF2
CPF3 RJ PROCESS PROCESS INFO FOR THIS BLOCK
READ IF
EQ CPF2
CPF4 SX5 X1+B1
NZ X5,CPF5 IF EOI OR ERROR
RJ PROCESS PROCESS INFO FOR THIS BLOCK
READ IF
EQ CPF2
CPF5 RJ PROCESS PROCESS INFO FOR THIS BLOCK
SA1 FF
ZR X1,PROK6 IF DUMP MASTERFILE MODE
MESSAGE TOOBIG
EQ ABORT
* /--- BLOCK COPYPFX 00 000 80/11/17 11.04
ATTAUD SPACE 4
** ATTAUD - ATTACH AUDIT TRAIL FILE
ATTAUD DATA 0 ENTRY/EXIT
SETUI USERI USER INDEX
PACKNAM PACK SET PACKNAME
SA1 TB+1 SET ERROR PROCESSING BIT
RJ SETEPR
ATTA1 ATTACH TB,APER,,,R ATTACH AUDIT FILE
SA1 TB CHECK STATUS FOR BUSY
RJ CKSTATS
NZ X2,ATTA1 IF BUSY
SA1 TB+1 CLEAR ERROR PROCESSING BIT
RJ CLREPR
EQ ATTAUD
TITLE SUBROUTINES
CKSTATS SPACE 4
** CKSTATS - CHECK FILE STATUS FOR BUSY
* ROLLOUT FOR 64 SECONDS 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 CKSW
SX2 1 BUSY STATUS
EQ CKSTATS
CKSW DATA 7700000100B
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
* /--- BLOCK COPYPFX 00 000 81/01/15 07.00
GETPN SPACE 4
** GETPN - ATTACH FILE ON PACK *PN*
GETPN DATA 0 ENTRY/EXIT
SA1 MFCT GET MF COUNT
SA2 =5LMFDMP
LX1 24
BX6 X1+X2
SA6 IF+8
SA1 IF+1 SET EPR
RJ SETEPR
GETPN1 ATTACH IF,IF+8,,,R,PN
SA1 IF
RJ CKSTATS
NZ X2,GETPN1
SA1 IF+1 CLEAR EPR
RJ CLREPR
REWIND IF,R
EQ GETPN
GTW SPACE 4
** GTW - GET WORD
*
* THIS ROUTINE EXTRACTS UP TO TEN CHARACTERS FROM
* A CONTROL CARD AREA. 'ALL WORDS ARE SEPARATED
* BY DELIMITERS (ANY CHARACTER .GT. 9 EXCEPT BLANK).
*
* ENTRY B1 = 1
* A4/X4 = CHARACTERS TO BE EXTRACTED FROM
* B6 = SHIFT COUNT (INITIALLY 0)
*
* EXIT X1 = WORD THAT WAS EXTRACTED
* X2 = DELIMITER
* IF X2 .LT. 0 - MORE THAN 10 CHARS IN WORD
* IF X2 .EQ. 0 - END OF CARD
* B5 = 60-(N*6) WHERE N IS THE NUMBER OF
* CHARACTERS FOUND IN THE WORD
* A4/X4/B6 SET FOR NEXT WORD
*
* USES A-4
* X-1,2,3,4
* B-5,6,7
* /--- BLOCK COPYPFX 00 000 81/01/15 06.59
GTW DATA 0 ENTRY/EXIT
MX1 0 INITIAL SETTINGS
SB5 60
SB7 B5
GTW1 SB6 B6+6 NEXT CHARACTER
GT B6,B7,GTW2 IF NEW WORD NEEDED
MX2 -6 CHARACTER MASK
LX4 6 SHIFT TO NEXT CHARACTER
BX2 -X2*X4
ZR X2,GTW END OF CARD
SX3 X2-1R TEST FOR BLANKS
ZR X3,GTW1A
SX3 X2-1R9-1
PL X3,GTW IF DELIMITER
GTW1A SB5 B5-6 DECREASE CHARACTER SHIFT COUNT
NG B5,GTW3 IF MORE THAN 10 CHARS.
LX2 X2,B5 SHIFT TO PROPER LOCATION
BX1 X1+X2 MERGE
EQ GTW1 GET NEXT CHARACTER
GTW2 SA4 A4+B1 GET NEXT WORD
SB6 B0
EQ GTW1
GTW3 BX2 -X2 ERROR FLAG
EQ GTW EXIT
INIT SPACE 4
** INIT - INITIALIZE
INIT4 RJ INITFIL INITIALIZE FOR SINGLE FILE MODE
INIT DATA 0 ENTRY/EXIT
SB6 LSCR CLEAR BUFFERS
SB7 BEND-LSCR
RJ ZERO
RJ INITPT INITIALIZE POINTERS
SETUI USERI SET USER INDEX
SETTL TIMEL SET TIME LIMIT
SETPR PRIOR SET PRIORITY
*
* GET ARGUMENTS
*
SA1 ACTR ARG COUNT
SB4 X1
SA4 ARGR FIRST ARG
SB5 ARGTBL ARG TABLE
RJ ARG
NZ X1,INITERR ERROR IN ARGUMENTS
SA1 INITM MODIFY COMCARG FOR 10 CHARS
BX6 X1
SA6 /COMCARG/ARG5
SA1 Z SEE IF EXTENDED PARAMETERS
ZR X1,INIT1
SX5 CCDR CONTROL CARD AREA
RJ PRA EXTRACT EXTENDED PARAMETERS
NZ X6,INITERR IF ERROR IN CARD
SB5 ARGTBL ARG TABLE ADDRESS
RJ ARG
NZ X1,INITERR ERROR IN ARGUMENTS
INIT1 SA1 FF FROM FILE
NZ X1,INIT3 IF TO FILE SPECIFIED
INIT2 RJ KDISP DO K-DISPLAY
EQ INIT
INIT3 SA2 TF TO FILE
NZ X2,INIT4 IF TO FILE SPECIFIED
BX6 X1 SET TO = FROM
SA6 A2
EQ INIT4
INITM BX7 X3+X6 INSTRUCTIONS MODIFIED AT ARG5
SA7 B2+
SB3 B2-B3
INITERR MESSAGE INMSG
EQ ABORT
* /--- BLOCK COPYPFX 00 000 80/11/13 09.27
INITFIL SPACE 4
** INITFIL - INITIALIZE FOR FILE RECOVERY
INITFIL DATA 0 ENTRY/EXIT
REWIND TB
SA1 TF ATTACH TO FILE
RJ SETF
SX1 WORK READ DIRECTORY BLOCK
SX6 B0
SX7 B1
RJ DRD
SA1 =XPFINFO
MX7 -6
AX1 24
BX6 -X7*X1 SIZE OF FILE (PARTS)
SA6 TOSIZE
AX1 6
BX6 -X7*X1 TYPE OF FILE
SX6 X6-BACKTY SEE IF BACKUP TYPE
NZ X6,TOFIWE IF WRONG TYPE
SA1 WORK+NAME
SA2 TF
IX6 X1-X2
NZ X6,TONAME IF WRONG NAME
SA1 WORK+TYPE
SA2 BACKUP
IX6 X1-X2
NZ X6,TOTYPE IF WRONG TYPE
SA1 WORK+ACCT
BX6 X1
SA6 TOACCT SAVE ACCOUNT
EQ INITFIL
INITPCK SPACE 4
** INITPCK - INITIALIZE PACKNAME/VSN FOR MASTER FILE
* RECOVERY MODE.
*
* EXIT X1=0, NO MORE STACK ENTRIES
INITPCK DATA 0 ENTRY/EXIT
SA1 STACKPT
ZR X1,INITPCK IF NO ENTRIES
SX7 0 ZERO POINTERS
SA7 MFCT
SA7 VSNX
SA7 VSN
SA7 PN
SA7 RTFA
SB6 0
SB7 X1+ COUNTERS
IPCK1 SA1 B6+STACK+1 CURRENT STACK ENTRY
NZ X1,IPCK2 ENTRY FILLED
SB6 B6+2 NEXT ENTRY
LT B6,B7,IPCK1 IF NOT DONE
EQ INITPCK EXIT, X1=0
IPCK2 BX6 X1 STORE ENTRY IN VSN OR PACKNAME
MX7 6
BX7 X7*X6
ZR X7,IPCK3 IF VSN
SA6 PN
EQ INITPCK
IPCK3 LX6 6
SA6 VSNX
EQ INITPCK
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
SA7 OFFSET
SA1 PROX INITIALIZE PROCESS POINTERS
BX6 X1
SA6 PRO1
SX7 PTABLE
SA7 PPOINT
EQ INITPT
* /--- BLOCK COPYPFX 00 000 80/11/03 07.22
PRA SPACE 4
** PRA - EXTRACT PARAMETERS BEYOND PERIOD
*
* EXTRACT PARAMETERS FROM CONTROL CARD AREA
*
* ENTRY B1 = 1
* X5 = ADDRESS OF CONTROL CARD
*
* EXIT X6 = 0 ALL OK, -1 IF ERROR
* ARGUMENTS AT ARGR
* A4/X4 = FIRST ARGUMENT
* B4 = NUMBER OF ARGUMENTS
*
* USES A-4
* X-1,2,3,4,6,7
* B-3,4,5,6,7
*
* CALLS GTW
PRA DATA 0 ENTRY/EXIT
SA4 X5 CONTROL CARD AREA
SB6 0 INITIAL SHIFT COUNT
PRA1 RJ GTW GET NEXT WORD
NG X2,PRAX ERROR - MORE THAN 10 CHARS.
ZR X2,PRAX ERROR - NULL WORD
SX7 X2-1R.
ZR X7,PRA2 IF PERIOD
SX7 X2-1R)
NZ X7,PRA1 IF NOT )
PRA2 SB3 ARGR LOCATION TO STORE ARGS
PRA3 RJ GTW GET NEXT WORD
NG X2,PRAX ERROR - MORE THAN 10 CHARS
ZR X1,PRA5 IF END OF CARD
SX7 X2-1R= SEE IF = IS DELIMITER
SX6 0
NZ X7,PRA4 IF NOT =
SB4 48
LT B5,B4,PRA4 IF NOT 1 OR 2 CHARACTERS
SX6 1R= ADD = CHARACTER TO WORD
PRA4 BX6 X6+X1 MERGE
SA6 B3 STORE ARGUMENT
SB3 B3+B1 ADVANCE ARG POINTER
NZ X2,PRA3 IF NOT END OF CARD
PRA5 SB4 B3-ARGR NUMBER OF ARGUMENTS
SA4 ARGR FIRST ARGUMENT
MX6 0 OK EXIT
EQ PRA
PRAX MX6 59 ERROR EXIT
EQ PRA
* /--- BLOCK COPYPFX 00 000 80/11/14 09.08
RTF SPACE 4
** RTF - REQUEST TAPE FILE
*
* REQUEST A LABELED TAPE
*
* ENTRY - IF = 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
SX1 B1 TEST FOR REQUEST TAPE OPTION
SX2 B1
LX2 39 X2=RING OUT
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 SX7 5 (X7) = LABELED / 9-TRACK
LX7 56
BX7 X7+X2
SA7 IF+8
MX0 36
BX6 X0*X6
SA6 A7+B1 SET VSN
BX6 X6-X6
SX6 B0 SET FILE NAME = 0
SA6 A6+B1
SA2 RTFA GET TAPE POSITION
BX7 X2
* 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 IF 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 IF,READ,R
* SA1 IF+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
SA1 VSNX
BX6 X1
* /--- BLOCK COPYPFX 00 000 80/10/27 10.12
LX6 54 CLEAR TOP BITS FOR TAPE FLAG
SA6 VSN
RTF5 SA1 RTFA FORM FILE SEQUENCE NUMBER
SX1 X1+10000
RJ CDD
MX7 -18
BX4 -X7*X6
SA1 IF+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 IF+1 CLEAR EXTENDED LABEL BIT
SX6 B1
LX6 41
BX6 -X6*X1
SA6 A1
POSMF IF,R
SA1 IF+2 IN=OUT
BX6 X1
SA6 A1+B1
SA1 IF+B1 CHECK DEVICE TYPE
NG X1,RTF IF ASSIGNED TO TAPE
RTF7 MESSAGE WRONG WRONG DEVICE
EQ ABORT
RTF8 RJ GETPN GET FILE ATTACHED ON PACK
EQ RTF EXIT
RTF9 UNLOAD IF,R GET RID IF BLANK LABEL
MESSAGE BLANK ERROR MESSAGE
SA1 VSNX TRY TO REQUEST TAPE AGAIN
BX6 X1
EQ RTF1
PB BSSZ 10 BUFFER FOR VOL1 HEADER
RTFA DATA 0 COUNT OF FILES ON TAPE
* /--- BLOCK COPYPFX 00 000 80/10/30 12.14
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
SETEB DATA 0 ENTRY/EXIT
SX6 10 LENGTH
SX7 PB BEGINNING ADDRESS
LX6 18
BX6 X6+X7
SA6 IF+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
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
ZERO SPACE 4
** ZERO - ZERO BUFFER
*
* ENTRY B1=1
* B6=FWA
* B7=NUMBER OF WORDS TO ZERO
*
* EXIT X7=0
* BUFFER ZEROED
*
* USES A-7
* X-7
* B-6,7
ZERO DATA 0 EMTRY/EXIT
MX7 0
SB7 B7-B1
NG B7,ZERO
ZRO1 SA7 B6+B7
SB7 B7-B1
PL B7,ZRO1
EQ ZERO
* /--- BLOCK COPYPFX 00 000 80/10/24 07.15
TITLE PROCESS MF DATA
** 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 COPYPFX 00 000 80/10/31 12.06
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
PROG SA2 NFILES NUMBER OF FILES
SA1 FF FROM FILE
SB7 X2+
SB6 0
PROG1 SA2 FILN+B6 CURRENT FILE NAME
IX6 X1-X2
ZR X6,PROG4 IF DESIRED FILE
SB6 B6+B1 NEXT FILE
LT B6,B7,PROG1 IF NOT DONE
RJ SFN FORM MESSAGE
SA6 PROGM
SA1 MFNAME MASTER FILE NAME
SX2 3RLE
BX6 X1+X2
LX6 42
SA6 PROGM1
MESSAGE PROGM
PROG1A SA1 PN UNLOAD IF DISK PACK
ZR X1,PROG2
UNLOAD IF,R
EQ PROG3
PROG2 SA1 IF+2 IN=OUT
BX6 X1
SA6 A1+B1
PROG3 RJ INITPT INITIALIZE POINTERS
EQ CPF1 READ NEXT MASTER FILE
PROG4 SA1 FILI+B6 FILE INFO WORD
SX5 PART NUMBER OF WORDS IN PART
MX7 -24
BX6 -X7*X1 BEGINNING PART NUMBER
IX6 X6*X5 BEGINNING WORD
SX7 PROH FORM PROCESSOR TABLE ENTRY
LX7 30
IX6 X6+X7
SA6 PTABB
MX7 -6
AX1 24
BX6 -X7*X1 NUMBER OF PARTS IN FILE
IX6 X6*X5 WORD COUNT
SA6 WCWANT
EQ PRO1 NEXT ENTRY
* /--- BLOCK COPYPFX 00 000 81/01/15 07.56
PROH BSS 0
SA1 WCWANT WORD COUNT REMAINING IN FILE
IX6 X3+X1 DECREMENT
SA6 A1
NG X6,PROH1 IF ENOUGH WORDS THIS PASS
ZR X6,PROH1 IF JUST ENOUGH WORDS
SA4 A4 REREAD PROCESSOR WORD
IX7 X4-X3 INCREMENT FROM COUNT
SA7 A4
SX7 A4 RESET PROCESSOR POINTER
SA7 PPOINT
PROH1 BX3 -X3 CORRECT WORD COUNT
WRITEW TB,WORK+X5,X3 WRITE OUT TEMP. FILE
SA1 WCWANT
NG X1,PROH2 IF DONE
NZ X1,PRO1 IF NOT DONE
PROH2 WRITER TB,R WRITE EOR
EQ PRO1
PROI BSS 0
REWIND TB,R
READ TB,R
READW TB,WORK,BLOCK
NZ X1,PROIER IF EARLY EOR, EOF, EOI
SA1 WORK+NAME SEE IF NAMES MATCH
SA2 FF
IX6 X1-X2
NZ X6,FFNAME
SA2 TOACCT
BX6 X2 UPDATE ACCT NAME IN FILE DIR.
SA6 WORK+ACCT
SA1 WORK+SIZE SEE IF SIZE MATCH
SA2 TOSIZE
SX6 NUMBLK
IX2 X6*X2
IX6 X1-X2
NZ X6,TOSIZX
BX6 X1 SAVE NUMBER OF BLOCKS
SA6 A2
SX6 B0 CURRENT BLOCK
SA6 WCWANT
PROI1 READW TB,WORK,BLOCK
NZ X1,PROI2 IF EOR, EOF, EOI
SA1 WCWANT
SX6 X1+B1 CURRENT BLOCK
SA6 A1
SX7 1 NUMBER OF BLOCKS TO WRITE
SX1 WORK FWA
RJ DWR WRITE BLOCK
EQ PROI1
PROI2 SA1 WCWANT
SA2 TOSIZE
SX1 X1+B1
IX6 X1-X2
NZ X6,PROIER IF FILES NOT THE SAME SIZE
REWIND TB,R REREAD FIRST BLOCK
READ TB,R
READW TB,WORK,BLOCK
NZ X1,PROIER IF EARLY EOR, EOF, EOI
SA1 TF PUT IN PROPER NAME
BX6 X1
SA6 WORK+NAME
SX6 B0 REWRITE DIRECTORY
SX7 B1
SX1 WORK
RJ DWR
PROI3 MESSAGE (=C*ALL DONE*)
ENDRUN
* /--- BLOCK COPYPFX 00 000 80/11/14 08.33
PROJ SA1 FF
NZ X1,PRO1 SKIP IF IN SINGLE FILE MODE
SA2 MFNAME GET MASTER FILE NAME
SA3 STACKPT NUMBER OF ENTRIES IN STACK * 2
SB6 B0 COUNTER
SB5 2 INCREMENT
SB7 X3 FINAL COUNT
PROJ1 SA1 B6+STACK CURRENT ENTRY
BX6 X1-X2 COMPARE
SB6 B6+B5 INCREMENT FOR NEXT ENTRY
PROJ2 ZR X6,PROJ3 IF MASTER FILES AGREE
LT B6,B7,PROJ1 IF NOT DONE
SA1 MFNAME OUTPUT MASTERFILE NAME
RJ SFN
SA6 NOTREQ
MESSAGE NOTREQ
EQ PROG1A
PROJ3 SA1 B6+STACK-1 GET VSN/PACKNAME
MX7 6 MASK FOR TOP CHARACTER
BX7 X7*X6
ZR X7,PROJ5 IF VSN
SA1 PN GET PACK NAME
PROJ4 BX6 X1-X2 COMPARE VSN/PN WITH REQUEST
* NZ X6,PROJ2 IF NOT THE SAME
SX6 B6-B5 SAVE STACK ADDRESS
SA6 THISONE
SA1 MFNAME
SX6 B1
IX6 X6+X1
SA6 TB SET UP F.E.T.
REWIND TB,R
SX7 PTABD RESET PROCESS POINTER
SA7 PPOINT
SX6 PROK SET UP PROCESS WORD
LX6 30
SA6 X7
SA1 MFNAME OUTPUT RESTORING MESSAGES
RJ SFN
SA6 REING+1
MESSAGE REING
EQ PRO1 FOR NOW
PROJ5 SA1 VSN GET VSN
EQ PROJ4
PROK SA1 ECOUNT ENDING COUNT
SX6 PROK PROCESS TABLE POINTER
SA2 WCOUNT BEGINNING COUNT
LX6 30 SHIFT TO PROPER SUBR. POSITION
IX5 X1-X2 WORD COUNT
IX6 X1+X6 NEXT RECORD PROCESS WORD
SA6 PTABD
SX6 A6 PROCESS POINTER
SA6 PPOINT
ZR X5,PROK1 NO WORDS TO WRITE
WRITEW TB,WORK,X5 WRITE OUT WORDS
PROK1 SA1 STATUS CHECK READ STATUS
SB7 X1+
LE B7,B0,PROK2 IF NOT EOR
SB7 1 EOR JUMP NUMBER
PROK2 JP B7+PROK3+3 JUMP TO PROPER ROUTINE
PROK3 EQ PROK5 ERROR
EQ PROK6 EOI
EQ PROK4 EOF
EQ PRO1 NORMAL READ
* WRITER TB,R EOR
EQ PRO1 NEXT RECORD
* PROK4 WRITEF TB,R EOF
PROK4 BSS 0
EQ PRO1 NEXT RECORD
PROK5 MESSAGE (=C* ERROR WHILE READING INPUT*)
EQ ABORT
* /--- BLOCK COPYPFX 00 000 80/11/07 13.23
PROK6 SA1 TB+2 SEE IF BUFFER EMPTY
SA2 A1+B1
IX3 X1-X2
ZR X3,PROK7
WRITE TB,R
SA1 TB+2 SEE IF BUFFER NOW EMPTY
SA2 A1+B1
IX3 X1-X2
ZR X3,PROK7
WRITER TB,R FORCE WRITE
PROK7 SA1 MFNAME OUTPUT RECOVERED MESSAGE
RJ SFN
SA6 RECOV
MESSAGE RECOV
SA1 THISONE
SA1 X1+STACK+1 GET THIS PACKNAME/VSN
MX7 0 CLEAR THIS ENTRY
SA7 A1
SA7 A7-B1
*
* LOOK FOR MORE ENTRIES TO DO
*
SB6 B0
SA3 STACKPT
SB7 X3
SB5 B1+B1
PROK8 SA2 B6+STACK+1 CURRENT ENTRY
BX6 X1-X2 SEE IF SAME AS CURRENT ONE
SB6 B6+B5
ZR X6,PROG1A IF MORE FOR THIS VSN/PACK
LT B6,B7,PROK8 IF MORE TO LOOK AT
UNLOAD IF,R ALL DONE WITH THIS PACK VSN
RJ INITPT SET UP POINTERS
RJ INITPCK INIT. PACK POINTERS
NZ X1,CPF1 IF MORE ENTRIES
EQ PROI3 ALL DONE
PROX SA3 PPOINT COPY OF PRO1
SA4 X3+
PROY EQ PROCESS DUMMY FAST EXIT COMMAND
PROERR MESSAGE PROM
ABORT ABORT
PROFERR MESSAGE PROFM
EQ ABORT
PROIER MESSAGE PROIE
EQ ABORT
* PROCESSOR TABLE
PPOINT VFD 60/PTABLE PROCESS TABLE POINTER
PTABLE BSS 0
VFD 12/1,18/MFNAME,30/MFNM
VFD 12/0,18/PROJ,30/0
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/PROG,30/0
PTABB VFD 12/0,18/PROH,30/0 FILE LOCATION FILLED IN
VFD 12/0,18/PROI,30/0
PTABC DATA 0 END OF TABLE
PTABD VFD 12/0,18/PROK,30/0
DATA 0 END OF TABLE
* /--- BLOCK COPYPFX 00 000 80/10/15 08.53
TITLE PLATO FILE ATTACH, READ WRITE ROUTINES
** SETF - ATTACH FILE
*
* X1=FILE NAME
*
* EXIT IF ALREADY ATTACHED
* ABORT IF ERROR
SETFX SA1 DST4 SEE IF CLEAR MESSAGE NEEDED
ZR X1,SETF
MX6 0 CLEAR FLAG
SA6 A1
SX6 CMSG
RJ BDIS CLEAR B DISPLAY
SETF DATA 0 ENTRY/EXIT
BX7 X1 FILE NAME
SA1 DSNAME OLD FILE NAME
IX6 X7-X1
ZR X6,SETF EXIT IF ALREADY ATTACHED
SA7 A1 SAVE FOR LATER
DST1 SA1 DARG1 ARGUMENT LIST
RJ =XSETFILE ATTACH FILE
SB1 1 RESTORE
SA1 DERROR SEE IF ERROR STATUS
NG X1,SETFX IF NO ERROR
SX6 X1-13 SEE IF ATTACHED EARLIER
ZR X6,DST2
SX1 X1-2 SEE IF ATTACHED ELSEWARE
NZ X1,DST3
SA6 DST4 FLAG TO CLEAR WAITING MESSAGE
SX6 DWAIT WAITING MESSAGE
RJ BDIS
EQ DST1
DST2 RJ DDET DETACH IT
EQ DST1 REATTACH IT
DST3 MESSAGE DMATT ATTACH ERROR MESSAAGE
RJ DMAM FILE NAME
RJ DMEM ERROR STATUS
EQ ABORT
DST4 DATA 0 FLAG FOR WAITING MESSAGE
DRD SPACE 4
** DRD - DATAIN ROUTINES
*
* X1 - CENTRAL MEMORY LOCATION
* X6 - STARTING RECORD
* X7 - NUMBER OF RECORDS
DRD DATA 0 ENTRY/EXIT
RJ DPAR STORE PARAMETERS
RJ =XDREAD READ IN DATA
SB1 1 RESTORE
SA1 DERROR LOOK AT STATUS
NG X1,DRD IF NO ERROR
MESSAGE DMRDM DREAD ERROR MESSAGE
DRDX RJ DMAM FILE NAME
RJ DMEM ERROR STATUS
RJ DBGM BEGINNING RECORD NUMBER
RJ DNRM NUMBER OF RECORDS
EQ ABORT ABORT
DWR SPACE 4
** DWR - DWRITE ROUTINES
*
* X1 - CENTRAL MEMORY LOCATION
* X6 - STARTING RECORD
* X7 - NUMBER OF RECORDS
DWR DATA 0 ENTRY/EXIT
RJ DPAR STORE PARAMETERS
RJ =XDWRITE WRITE OUT DATA
SB1 1 RESTORE
SA1 DERROR LOOK AT STATUS
NG X1,DWR IF NO ERROR
MESSAGE DMWRM DWRITE ERROR MESSAGE
EQ DRDX ERROR MESSAGES AND ABORT
* /--- BLOCK COPYPFX 00 000 80/10/15 08.42
DDET SPACE 4
** DDET - DETACH FILE
*
* DETACHES LAST FILE
DDET DATA 0 ENTRY/EXIT
SA1 DARG3 ARGUMENT LIST
RJ =XDETACH DETACH FILE
SB1 1 RESTORE
EQ DDET
DPAR SPACE 4
** DPAR - STORE PARAMETERS
*
* X1 - CENTRAL MEMORY LOCATION
* X6 - STARTING RECORD
* X7 - NUMBER OF RECORDS
DPAR DATA 0 ENTRY/EXIT
SA6 DBR BEGINNING RECORD
SA7 DNR NUMBER OF RECORDS
BX6 X1 MEMORY ADDRESS
SA6 DA2M
SA1 DARG2 PARAMETER LIST
EQ DPAR
BDIS SPACE 4
** BDIS - SENT MESSAGE TO THE B DISPLAY ONLY
*
* X6=ADDRESS OF MESSAGE
BDIS DATA 0 ENTRY/EXIT
SA6 DARG4 STORE ARGUMENT
SA1 DARG4
RJ =XBDISP
SB1 1 RESTORE
EQ BDIS
* /--- BLOCK COPYPFX 00 000 80/10/15 08.53
DMAM SPACE 4
** DMAM - OUTPUT FILE NAME INTO DAYFILE
DMAM DATA 0 ENTRY/EXIT
SA1 DSNAME GET CURRENT FILE NAME
BX6 X1
SA6 DMNAX STORE IN ERROR MESSAGE
MESSAGE DMNAM
EQ DMAM
DMEM SPACE 4
** DMEM - OUTPUT ERROR STATUS INTO DAYFILE
DMEM DATA 0 ENTRY/EXIT
SA1 DERROR GET ERROR STATUS
RJ CDD CONVERT
SA6 DMERX STORE IN ERROR MESSAGE
MESSAGE DMERR
EQ DMEM
DBGM SPACE 4
** DBGM - OUTPUT BEGIN RECORD INTO DAYFILE
DBGM DATA 0 ENTRY/EXIT
SA1 DBR GET BEGINNING RECORD NUMBER
RJ CDD CONVERT
SA6 DMBGX STORE IN ERROR MESSAGE
MESSAGE DMBGR
EQ DBGM
DNRM SPACE 4
** DNRM - OUTPUT NUMBER OF RECORDS INTO DAYFILE
DNRM DATA 0 ENTRY/EXIT
SA1 DNR GET NUMBER OF RECORDS
RJ CDD CONVERT
SA6 DMNRX STORE IN ERROR MESSAGE
MESSAGE DMNRC
EQ DNRM
* ERROR MESSAGES
DMATT DIS ,* ERROR IN ATTACHING FILE*
DMRDM DIS ,* ERROR IN READING FILE*
DMWRM DIS ,* ERROR IN WRITING FILE*
DMNAM DATA 10H FILE NAM
DATA 10HE =
DMNAX DATA 0
DATA 0
DMERR DATA 10H ERROR ST
DATA 10HATUS =
DMERX DATA 0
DATA 0
DMBGR DATA 10H BEGINNIN
DATA 10HG RECORD =
DMBGX DATA 0
DATA 0
DMNRC DATA 10H ENDING R
DATA 10HECORD =
DMNRX DATA 0
DATA 0
* ARGUMENT LISTS AND VARIABLES
DWAIT DATA 10HWAITING FO
DATA 10HR FILE -
DSNAME DATA 0 FILE NAME
DATA 0 END OF MESSAGE
DERROR DATA 0 RETURN STATUS
DM1 DATA -1 WRITE PERMISSION
DBR DATA 0 BEGINNING RECORD NUMBER
DNR DATA 0 NUMBER OF RECORDS
CMSG DATA 1L CLEAR MESSAGE
DARG1 VFD 60/DSNAME ARGUMENT LIST FOR ATTACH
VFD 60/DERROR
VFD 60/DM1
DATA 0
DARG2 VFD 60/DBR ARG. LIST FOR DREAD /DWRITE
DA2M VFD 60/0 MEMORY LOCATION STORED HERE
VFD 60/DNR
VFD 60/DERROR
DATA 0
DARG3 VFD 60/DSNAME ARGUMENT LIST FOR DETACH
DATA 0
DARG4 VFD 60/0 B DISPLAY ARGUMENT
DATA 0
* /--- BLOCK COPYPFX 00 000 80/10/27 14.51
TITLE K-DISPLAY ROUTINES
BUILDO SPACE 4
** BUILDO - BUILD OUTPUT LINE
*
* AUDIT INFO IN BUFA
* BUILDS OUTPUT LINE FOR PRINTER IN BUILD
BUILDO DATA 0 ENTRY/EXIT
SA1 BUFA MASTER FILE NAME
MX7 42
BX1 X7*X1
RJ SFN
LX6 54
SA6 BUILD
SA1 BUFA+1 PACKNAME
MX7 42
BX1 X7*X1
RJ SFN
SA6 BUILD+1
SA1 BUFA NUMBER OF FILES
SX1 X1
RJ CDD
MX7 -24
BX6 -X7*X6
LX6 36
SA6 BUILD+2
SA1 BUFA+1 SLOT NUMBER
MX7 -7
BX1 -X7*X1
RJ CDD
SA1 BUILD+2
LX6 6
MX7 -36
BX6 -X7*X6
IX6 X6+X1
SA6 A1
SA1 BUFA+2 VSN/PACK
MX7 6 IF TAPE, ADD *
BX7 X7*X1
NZ X7,BUI1
SX7 1R*
LX7 54
BX1 X1+X7
BUI1 MX7 42
BX1 X7*X1
RJ SFN
SA6 BUILD+3
SA1 BUFA+1 EST
MX7 -6
AX1 7
BX1 -X7*X1
RJ WOD
MX6 -12
SA1 BUILD+3
BX7 -X6*X7
BX1 X6*X1
IX6 X7+X1
SA6 A1
SA1 BUFA+2 YEAR
AX1 14
MX7 -4
BX1 -X7*X1
SX1 X1+80
RJ CDD
MX7 -18
BX6 -X7*X6
LX6 42
SA6 BUILD+4
SA1 BUFA+2 MONTH
AX1 10
MX7 -4
BX1 -X7*X1
RJ CDD
SA1 BUILD+4
MX7 -18
BX6 -X7*X6
LX6 24
IX6 X6+X1
SA6 A1
SA1 BUFA+2 DAY
AX1 5
MX7 -5
BX1 -X7*X1
RJ CDD
SA1 BUILD+4
LX6 6
MX7 -24
BX6 -X7*X6
IX6 X6+X1
SA6 A1
SA1 BUFA+2 HOUR
MX7 -5
BX1 -X7*X1
RJ CDD
LX6 6
MX7 -18
BX6 -X7*X6
LX6 42
SA6 BUILD+5
EQ BUILDO
* /--- BLOCK COPYPFX 00 000 80/11/03 10.40
KDISP SPACE 4
** DO K-DISPLAY
KDISP DATA 0 ENTRY/EXIT
RJ SETPAR SET UP PARAMETERS
NZ X4,INITERR IF ERROR IN PARAMS
SX6 0 CLEAR GO FLAG
SA6 GO
RJ ATTAUD ATTACH AUDIT FILE
KDSP1 RJ SETK SET UP K-DISPLAY PARAMETERS
KDSP2 REWIND TB,R
READ TB,R
KDSP3 READW TB,BUFA,BUFAL READ AUDIT ENTRY
NZ X1,KDSP11 IF EOR, EOF, EOI
SA1 PN SEE IF PACKNAME SPECIFIED
ZR X1,KDSP4
SA2 BUFA+1
MX7 42
BX2 X7*X2
BX6 X1-X2
NZ X6,KDSP3 IF PACKNAMES DO NOT MATCH
KDSP4 SA1 MF SEE IF MASTERFILE SPECIFIED
ZR X1,KDSP5
SA2 BUFA
MX7 42
BX2 X7*X2
BX6 X1-X2
NZ X6,KDSP3 IF MASTERFILES DO NOT MATCH
KDSP5 SA1 SL SEE IF SLOT SPECIFIED
ZR X1,KDSP6
SA2 BUFA+1
MX7 -7
BX2 -X7*X2
BX6 X1-X2
NZ X6,KDSP3 IF SLOT DOES NOT MATCH
KDSP6 SA1 MO SEE IF MONTH SPECIFIED
ZR X1,KDSP7
SA2 BUFA+2
AX2 10
MX7 -4
BX2 -X7*X2
BX6 X1-X2
NZ X6,KDSP3 IF MONTH DOES NOT MATCH
KDSP7 SA1 DAY SEE IF DAY SPECIFIED
ZR X1,KDSP8
SA2 BUFA+2
AX2 5
MX7 -5
BX2 -X7*X2
BX6 X1-X2
NZ X6,KDSP3 IF DAY DOES NOT MATCH
KDSP8 SA1 GO SEE IF IN GO MODE
ZR X1,KDSP10 NO GO MODE
RJ SETSTK ADD TO REQUEST STACK
NG X7,KDSP3 IF NO OVERFLOW
RJ SETBUF SETUP BUFFER
RJ SETK
SB6 TOOMF TOO MANY FILE SELECTED
KDSP9 RJ MOVEL MOVE ERROR LINE
SX6 0 CLEAR GO FLAG
SA6 GO
EQ KDSP11
KDSP10 RJ BUILDO BUILD OUTPUT LINE
SB6 BUILD
RJ MOVEL MOVE TO K-DISPLAY BUFFER
ZR X6,KDSP3 IF NO OUTPUT TO TRANSFER
EQ KDSP12
* /--- BLOCK COPYPFX 00 000 80/11/07 07.34
KDSP11 SA1 GO SEE IF GO MODE
NZ X1,KDSP14
SB6 0 END MESSAGE
RJ MOVEL
ZR X6,KDSP2 START OVER IF +
KDSP12 SA1 =10HXXXXXXXXX. SET UP FAKE CONTROL CARD
SX5 KFILL
BX6 X1
SA6 X5
RJ PRA STRIP OFF PARAMETERS
NZ X6,KDSP13 IF ERROR IN PARAMETERS
SB5 ARGT ARG TABLE ADDRESS
RJ ARG
NZ X1,KDSP13 ERROR IN PARAMETERS
RJ SETBUF SET UP BUFFER
RJ SETPAR SET UP PARAMETERS
NZ X4,KDSP13 IF ERROR IN PARAMS
SA1 GO SEE IF GO MODE
ZR X1,KDSP1
SB6 STACK ZERO STACK
SB7 MAXST*2
RJ ZERO
SA7 STACKPT CLEAR STACK POINTER
EQ KDSP1
KDSP13 RJ SETBUF SET UP BUFFER PARAMS
RJ SETK
SB6 INMSG ERROR IN PARAMS MESSAGE
RJ MOVEL
EQ KDSP11
KDSP14 RJ INITPCK SEE IF ANY ENTRIES/INITIALIZE
ZR X1,KDSP15
UNLOAD TB,R GET RID OF AUDIT TRAIL FILE
MX6 0 RELEASE CONSOLE BUFFERS
SA6 CMA
CONSOLE CMA
EQ KDISP
KDSP15 RJ SETBUF SEND ERROR MESSAGE
RJ SETK
SB6 NOFILE
EQ KDSP9
MOVEL SPACE 4
** MOVEL - MOVE CODED LINE TO LEFT SCREEN BUFFER
*
* MOVES A CODED LINE TO LEFT DISPLAY BUFFER IF ROOM.
* IF NO ROOM, OUTPUT MESSAGE *+ FOR MORE*, AND
* WAIT FOR KEYBOARD INPUT. IF INPUT =*+*, THEN
* ZERO BUFFER AFTER HEADER AND MOVE LINE.
*
* ENTRY B1=1
* B6=ADDRESS OF CODED LINE
* IF B6=0, END MESSSAGE SENT
* WLINE, WHDR, LLINE, LHDR SET(INIT. 0,1,0,0)
*
* EXIT X6=0, LINE MOVED OK
* X6.NE.0, INFORMATION IN KEYBOARD BUFFER
* WLINE, LLINE RESET
* /--- BLOCK COPYPFX 00 000 80/10/30 11.11
MOVEL DATA 0 ENTRY/EXIT
MVL1 ZR B6,MVL7 IF END MESSAGE
MX7 -12 CHARACTER MASK
SB7 B0 WORD COUNTER
MVL2 SA1 B6+B7 GET NEXT WORD
BX6 -X7*X1 SEE IF BOTTOM 12 BITS ARE ZERO
ZR X6,MVL3 IF END OF LINE
SB7 B7+B1 BUMP WORD COUNT
EQ MVL2
MVL3 SA1 WLINE CURRENT WORD COUNT
SB7 B7+B1 CORRECT WORD COUNT FOR LINE
SX6 X1+B7 TOTAL INCLUDING THIS LINE
SX7 X6-1000B-3
PL X7,MVL5 IF NOT ENOUGH ROOM IN BUFFER
SA6 A1 UPDATE WORD COUNT
SA2 LLINE UPDATE NUMBER OF LINES
SX6 X2+B1
SA6 A2
SB4 B0 MOVE COUNTER
SA3 MAXK CHECK IF TOO MANY LINES
IX6 X2-X3
PL X6,MVL5
SB5 X1+LSCR FIRST STOREAGE ADDRESS
MVL4 SA1 B6+B4 NEXT WORD TO TRANSFER
BX6 X1
SA6 B5+B4 STORE IN LEFT SCREEN BUFFER
SB4 B4+B1 BUMP COUNTER
LT B4,B7,MVL4 IF NOT DONE
MX6 0 OK FLAG
EQ MOVEL EXIT
MVL5 SA2 =10L+ FOR MORE MORE INFO MESSAGE
MVL6 BX6 X2
SX7 B6 SAVE FWA OF MESSAGE
SA6 LSCR+X1 PUT IN SCREEN BUFFER
SA7 LSAVE
RJ WAINP WAIT FOR KEYBOARD INPUT
NZ X6,MOVEL EXIT WITH ERROR FLAG
RJ SETBUF SET UP BUFFER
SA1 LSAVE RESTORE FWA OF LINE
SB6 X1
MX6 0
ZR B6,MOVEL EXIT IF END MESSAGE
EQ MVL1 TRY IT AGAIN
MVL7 SA2 =3LEND END MESSAGE
SA1 WLINE WORD COUNT
EQ MVL6 MOVE END MESSAGE
WLINE DATA 0 NUMBER OF WORDS USED IN BUFFER
LLINE DATA 0 NUMBER OF LINES IN BUFFER
WHDR DATA 1 NUMBER OF WORDS IN HEADER
LHDR DATA 0 NUMBER OF LINES IN HEADER
LSAVE DATA 0 SAVE FWA OF LINE
* /--- BLOCK COPYPFX 00 000 80/10/29 14.34
SETBUF SPACE 4
** SETBUF - SET UP BUFFER
*
* ZEROS NON-HEADER PORTION OF BUFFER
* ZERO KEYBOARD BUFFER
* SETS POINTER TO REFLECT HEADER
SETBUF DATA 0 ENTRY/EXIT
SA1 WHDR ZERO BUFFER AND SET LINE COUNT
SA2 LHDR
BX6 X1
BX7 X2
SA6 WLINE
SA7 LLINE
SB6 X1+LSCR
SB7 X1-1000B - WORD COUNT
SB7 -B7
RJ ZERO
SB6 KBUF ZERO KEYBOARD BUFFER
SB7 KEND-KBUF
RJ ZERO
EQ SETBUF
SETK SPACE 4
** SETK - SET UP K-DISPLAY PARAMETERS
SETK DATA 0 ENTRY/EXIT
.NOS23 IFGE "MODLEVEL",617D
CSTATUS CTYPE GET CONSOLE TYPE
SA1 CTYPE
MX6 12
BX1 X6*X1
ZR X1,SETK1 IF CC545 CONSOLE
SX6 MAXK721 RESET MAX LINES
SA6 MAXK
.NOS23 ENDIF
SETK1 SX6 B1 SET UP SCREEN BUFFERS
SA6 WLINE NUMBER OF WORDS
LX6 48
SX7 0
SA7 LLINE LINE COUNT
SA6 LSCR SET DISPLAY MODES
SA6 RSCR
SA1 PN FORMAT PACKNAME
RJ SFN
MX7 42
BX6 X7*X6
SX7 3RPN=
IX6 X6+X7
LX6 42
SA6 PLINE+1
SA1 MF FORMAT FILENAME
RJ SFN
MX7 42
BX6 X7*X6
SX7 3RMF=
IX6 X6+X7
LX6 42
SA6 PLINE+3
SA1 SL FORMAT SLOT
RJ CDD
MX7 42
BX4 X7*X4
SX6 3RSL=
BX6 X6+X4
LX6 36
BX6 X7*X6
SA6 PLINE+4
SA1 DA FORMAT DATE
RJ CDD
MX7 42
BX4 X7*X4
SX6 3RDA=
BX6 X6+X4
LX6 36
SA6 PLINE+2
SB6 PLINE MOVE HEADER LINES
RJ MOVEL
SB6 =1L
RJ MOVEL
SB6 LINE1
RJ MOVEL
SB6 LINE2
RJ MOVEL
SA1 WLINE NUMBER OF WORDS IN HEADER
BX6 X1
SA6 WHDR
SX6 4 NUMBER OF LINES IN HEADER
SA6 LHDR
CONSOLE CMA CALL CONSOLE
EQ SETK
CTYPE BSS 1
* /--- BLOCK COPYPFX 00 000 80/10/29 14.43
SETPAR SPACE 4
** SETPAR - SETUP PARAMETERS
*
* CONVERT DATE/SLOT PARAMETERS
*
* EXIT X4=0 IF OK, X4.NE.0 IF ERROR
SETPAR DATA 0 ENTRY/EXIT
SA5 SLOT CONVERT SLOT
SX6 B1
IX6 X5-X6
MX4 0 EXIT FLAG
SB7 B1 BASE FLAG = DECIMAL
ZR X6,SETP1
RJ DXB CONVERT
SETP1 NZ X4,SETPAR IF ERROR
SA6 SL STORE CONVERTED NUMBER
SA5 DATE CONVERT DATE
SX6 B1
IX6 X5-X6
ZR X6,SETP2
RJ DXB CONVERT
SETP2 NZ X4,SETPAR IF ERROR
SA6 DA STORE CONVERTED NUMBER
SX5 100 FIND MONTH
BX1 X6
IX7 X6/X5
SA7 MO
SX5 100
IX7 X7*X5 FIND DAY OF MONTH
IX7 X1-X7
SA7 DAY
EQ SETPAR
SETSTK SPACE 4
** SETSTK - SET PARAMETERS IN STACK
*
* GOOD AUDIT ENTRY AT BUFA
* STACKPT - SET TO CURRENT STACK ENTRY
*
* EXIT X7.LT.0 - ENTRY INSERTED, X7=+ - OVERFLOW
SETSTK DATA 0 ENTRY/EXIT
SA2 STACKPT CURRENT STACK POINTER
SA1 BUFA GET MASTER FILE NAME
MX7 42
BX6 X7*X1
SA6 STACK+X2
SA1 BUFA+2 GET VSN/PACK NAME
BX6 X7*X1
SA6 A6+B1
SX7 X2+2 INCREMENT STACK POINTER
SA7 A2
SX7 X7-MAXST2-1 TEST FOR OVERFLOW
EQ SETSTK
WAINP SPACE 4
** WAINP - WAIT FOR KEYBOARD INPUT
*
* EXIT X6=0, FIRST CHARACTER OF INPUT IS A *+*
WAINP DATA 0
WAI1 RECALL WAIT FOR USER INPUT
SA1 KBUF SEE IF USER INPUT
ZR X1,WAI1 IF NO INPUT
MX6 6 SEE IF *+*
BX6 X6*X1
LX6 6
SX6 X6-1R+
EQ WAINP
* /--- BLOCK COPYPFX 00 000 87/03/18 14.33
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
BX6 X1
SA6 DMSG
RJ WOD
SA6 DMSA
SA7 A6+B1
MESSAGE DMSA
EQ SHOW
MESSX DATA 0 ENTRY/EXIT
BX7 X2
SA7 DMS
BX6 X1
SA6 DMSG
MESSAGE DMS
EQ MESSX
* /--- BLOCK ARG 00 000 87/03/18 14.08
ARG TITLE ARG - PROCESS ARGUMENTS.
*** ARG - PROCESS ARGUMENTS.
* G. R. MANSFIELD. 70/10/09.
*
* THIS IS A COPY OF NOS COMMON DECK COMCARG.
*
* AFTER PARSING THE CONFORMING ARGUMENTS, THE *INIT*
* ROUTINE MODIFIES THE CODE TO ACCEPT 10 CHARACTER
* ARGUMENTS (THOSE FOLLOWING THE CLOSE PARENTHESIS
* OR PERIOD) FOR THE *Z* PARAMETER.
*
IF -DEF,QUAL$,1
QUAL COMCARG
BASE D
ARG SPACE 4
*** ARG PROCESSES AN ARGUMENT LIST BY THE USE OF AN
* EQUIVALENCE TABLE.
*
* ENTRY (B1) = 1.
* (B4) = ARGUMENT COUNT.
* (A4) = ADDRESS OF FIRST ARGUMENT.
* (X4) = FIRST ARGUMENT.
* (B5) = ADDRESS OF ARGUMENT TABLE IN ONE OF THE
* FOLLOWING FORMS -
* 1. 12/ OP, 18/ ASV, 12/ ST, 18/ ADDR
* 2. 12/ 77B, 18/ ASV, 12/ ST, 18/ ADDR
* 42/ OP, 18/0
* 77B = INDICATION THAT TWO-WORD ENTRY TABLE
* FORMAT WAS USED.
* OP = ONE TO SEVEN CHARACTER OPTION.
* ASV = ADDRESS OF ASSUMED VALUE.
* ST = STATUS.
* ADDR = ADDRESS TO STORE ARGUMENT.
* THE LOWER 18 BITS OF THE ASSUMED VALUE ARE
* ENTERED INTO THE EQUIVALENCED ARGUMENT.
* IF *ASV* .LT. 0, THE ARGUMENT MUST NOT BE
* EQUIVALENCED.
* IF *ASV* = *ADDR*, ONLY ONE ENTRY OF THAT
* ARGUMENT WILL BE ALLOWED (*OP* IS SET TO - 0).
* IF STATUS = 4000B, A ZERO *0* PARAMETER IS
* RETAINED AS A DISPLAY ZERO, OTHERWISE A
* VALUE OF ZERO IS STORED.
*
* EXIT (X1) .NE. 0, IF ARGUMENT ERROR DETECTED.
* AN ERROR STATUS IS RETURNED FOR THE FOLLOWING
* CONDITIONS -
* 1. OPTION NOT FOUND IN TABLE
* 2. SINGLE ARGUMENT EQUIVALENCED
* 3. ILLEGAL RE-ENTRY OF ARGUMENT
*
* USES X - 0, 1, 2, 3, 4, 6, 7.
* B - 2, 3, 4.
* A - 2, 3, 4, 7.
* /--- BLOCK ARG 00 000 87/03/18 14.02
ARG SUBR ENTRY/EXIT
MX0 42
SX1 B0
ZR B4,ARGX IF NO ARGUMENTS
SX1 B1 PRESET ERROR
* SEARCH FOR MATCH IN ARGUMENT TABLE.
ARG1 ZR X4,ARGX IF NULL ARGUMENT
SA2 B5-B1
MX3 12
SB3 12
ARG1.1 SA2 A2+B1 GET NEXT OPTION
ZR X2,ARGX IF END OF OPTION TABLE
SB2 B0
BX6 X3*X2 CHECK FOR KEYWORD MATCH
LX7 X6,B3
SX7 X7-77B
NZ X7,ARG1.2 IF ARGUMENT LESS THAN THREE CHARACTERS
SB2 B1
SA2 A2+B1 GET SECOND WORD OF THE ENTRY
BX6 X0*X2 GET OPTION
ARG1.2 BX7 X4-X6
BX7 X0*X7
NZ X7,ARG1.1 IF NO MATCH
* CHECK FOR EQUIVALENCE ALLOWED.
ZR B2,ARG2 IF ONE WORD ENTRY
SA2 A2-B1
ARG2 SX7 X4-1R= CHECK FOR EQUIVALENCE SEPARATOR
SB2 X2 SET VALUE ADDRESS
LX2 30 GET ASSUMED VALUE
ZR X7,ARG2.1 IF NOS *=*
SX7 X4-2 CHECK FOR PRODUCT SET FORMAT *=*
ARG2.1 SB3 X2
PL B3,ARG3 IF EQUIVALENCE ALLOWED
SA3 -B3 ASSUMED VALUE
BX6 -X0*X3 ASSUMED STATUS
SB3 -B3
NZ X7,ARG5 IF ARGUMENT NOT EQUIVALENCED
SA4 A4+B1
SB4 B4-B1
ZR X4,ARG6 IF NULL PARAMETER
EQ ARGX RETURN
* /--- BLOCK ARG 00 000 87/03/18 14.04
* PROCESS EQUIVALENCE.
ARG3 SA3 B3 ASSUMED VALUE
BX6 -X0*X3 ASSUMED STATUS
NZ X7,ARG5 IF ARGUMENT NOT EQUIVALENCED
SA4 A4+B1 CHECK EQUIVALENCE
SB4 B4-B1
BX3 X4 CHANGED TO BX3 X0*X4 IN NOS 670
AX4 42
NG X2,ARG4 IF DISPLAY ZERO REQUESTED
SX2 X4-1L0
ARG4 ZR X3,ARG6 IF NULL PARAMETER
NZ X2,ARG5 IF NOT *0*
SX3 B0 CLEAR EQUIVALENCE
SX6 B0 CLEAR STATUS
* ENTER ARGUMENT.
ARG5 BX3 X0*X3 MERGE ARGUMENT AND STATUS
IX7 X3+X6
SA7 B2 STORE ARGUMENT
SB3 B2-B3
NZ B3,ARG6 IF ASSUMED VALUE NOT IN ARGUMENT ADDRESS
SA2 A2
MX3 12
BX4 -X3*X2
BX7 X3+X4 SET OP = -0 IF ONLY ONE ARGUMENT ALLOWED
SA7 A2
ARG6 SB4 B4-B1 CHECK FOR MORE ARGUMENTS
SA4 A4+B1
NZ B4,ARG1 IF MORE ARGUMENTS TO PROCESS
SX1 B0 CLEAR ERROR
EQ ARGX RETURN
SPACE 4
BASE *
QUAL$ IF -DEF,QUAL$
QUAL *
ARG EQU /COMCARG/ARG
QUAL$ ENDIF
* /--- BLOCK MESSAGES 00 000 87/03/18 14.33
TITLE MESSAGES, BUFFERS, DATA AREAS AND COM DECKS
* DISPLAY MESSAGES
TOFIWE MESSAGE TOFIW
EQ ABORT
TONAME MESSAGE TONAM
EQ ABORT
TOTYPE MESSAGE TOTYP
EQ ABORT
TOACCE MESSAGE TOACT
EQ ABORT
TOSIZX MESSAGE TOSIZ
EQ ABORT
FFNAME MESSAGE FFNAM
EQ ABORT
INMSG DIS ,* ERROR IN PARAMETERS.*
PROM DIS ,* ERROR IN PROCESSOR TABLE.*
WRONG DIS ,* DUMP FILE ASSIGNED TO DISK*
BLANK DIS ,* DO NOT USE BLANK LABEL TAPE*
PROFM DIS ,* TOO MANY FILES IN MASTER FILE.*
TOFIW DIS ,* FIW OF TO FILE NOT BACKUP TYPE*
TONAM DIS ,* NAMES OF TO FILES DOES NOT MATCH*
FFNAM DIS ,* NAMES OF FROM FILES DOES NOT MATCH*
TOTYP DIS ,* TO FILE TYPE NOT BACKUP*
TOSIZ DIS ,* FILE SIZES DO NOT MATCH*
TOACT DIS ,* FILE ACCOUNTS DO NOT MATCH*
TOOMF DIS ,* TOO MANY FILES SELECTED*
NOFILE DIS ,* NO FILES SELECTED*
NOTREQ DATA 0 MASTER FILE NAME
DIS ,* - MASTER FILE NOT REQUESTED*
PROIE DIS ,* FROM FILE SIZE WRONG*
PROGM DATA 0 FILE NAME
DATA 30H - FILE NOT FOUND IN MASTER FI
PROGM1 DATA 3LLE MASTER FILE NAME ADDED HERE
DATA 0
TOOBIG DIS ,* FILE NOT COMPLETELY CONTAINED IN M.F.*
RECOV DATA 0 MASTER FILE NAME
DIS ,* - MASTER FILE RECOVERED*
REING DATA 10HRESTORING
DATA 0,0
PLINE DATA 10HPARAMS -
DATA 3HPN=
DATA 4H DA=
DATA 3HMF=
DATA 4L SL=
LINE1 DIS ,= MASTER- PACKNAME FILE SLOT VSN(*) EST YY MM DD HH=
LINE2 DIS ,= FILE PACK=
DMSA DATA 0
DMS DATA 0
DMSG DATA 0,0 DEBUG MESSAGE AREA
* ARGUMENT TABLE
ARGTBL BSS 0
VFD 12/1LV,18/ONE,30/VSNX
VFD 12/1LZ,18/ONE,30/Z
VFD 12/2LFF,18/FF,30/FF
VFD 12/2LTF,18/TF,30/TF
* VFD 12/2LSP,18/PACK,30/PACK
* VFD 12/2LAP,18/APER,30/APER
ARGT BSS 0
VFD 12/2LPN,18/ZRO,30/PN
VFD 12/2LMF,18/ZRO,30/MF
VFD 12/2LGO,18/ONE,30/GO
VFD 12/2LSL,18/ONE,12/4000B,18/SLOT
VFD 12/2LDA,18/ONE,12/4000B,18/DATE
ARGTBLE DATA 0 END OF TABLE
* /--- BLOCK DATA 00 000 80/11/17 11.01
* 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
VSN DATA 0 VSN NUMBER (ACTUAL)
VSNX DATA 0 VSN NUMBER (USER REQUEST)
Z DATA 0 EXTENDED PARAMETER FLAG
ONE DATA 1 CONSTANT ONE
ZRO DATA 0 CONSTANT ZERO
PN DATA 0 USER PACK NAME FOR DUMPED FILE
FF DATA 0 FROM FILE
TF DATA 0 TO FILE
MFCT DATA 0 MASTER FILE COUNT
WCWANT DATA 0 WORD COUNT WANTED
BACKUP DATA 10HBACKUP ) BACKUP FILE TYPE
TOSIZE DATA 0 TO FILE SIZE (PARTS)
TOACCT DATA 0 TO FILE ACCOUNT
PACK DATA 0 PACK NAME FOR ATTACHES
APER DATA 5LAUDIT PERMANENT FILE FOR AUDIT
MF DATA 0 MASTER FILE NAME
SL DATA 0 SLOT NUMBER
SLOT DATA 0 SLOT NUMBER/FLAG
DA DATA 0 DATE
MO DATA 0 MONTH
DAY DATA 0 DAY OF MONTH
DATE DATA 0 DATE/FLAG
GO DATA 0 GO FLAG
STACKPT DATA 0 STACK POINTER
STATUS DATA 0 STATUS OF READ REQUEST
THISONE DATA 0 POINTER TO CURRENT STACK ENTRY
MAXK CON MAXK545 MAX LINES ON K-DISPLAY
CMA VFD 24/KBUF,18/RSCR,18/LSCR K-SCREEN PARAMS
* RESERVE BUFFER SPACE
WORK BSSZ WORKL WORKING BUFFER
IBUF BSSZ LBUFL INPUT CIRCULAR BUFFER
TBUF BSSZ BUFL TEMP CIRCULAR BUFFER
FILN BSSZ MAXFIL FILE NAMES
FILI BSSZ MAXFIL FILE INFO AND LOCATION
* SCREEN LOCATIONS
RSCR EQU IBUF RIGHT SCREEN
LSCR EQU RSCR+1000B LEFT SCREEN
KFILL EQU LSCR+1000B KEYBOARD FILL IN COMMAND
KBUF EQU KFILL+1 KEYBOARD BUFFER
KEND EQU KBUF+9 END OF KEYBOARD BUFFER
BUILD EQU KEND BUILD AUDIT OUTPUT LINE
BUFA EQU BUILD+6 READ AUDIT INFO
BUFAL EQU 3 LENGTH OF AUDIT INFO
BEND EQU BUFA+BUFAL END OF BUFFERS
* STACK
STACK EQU FILN REQUEST STACK
* /--- BLOCK COMMONS 00 000 87/03/18 14.37
* COMMON DECKS.
*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 COMCDXB
ORG RSCR+1
DIS ,* COPYPF PARAMETER HELP SEQUENCE*
DIS ,* *
DIS ,* K.MF=MASTER FILE NAME*
DIS ,* K.PN=PACK NAME*
DIS ,* K.SL=SLOT NUMBER*
DIS ,* K.DA=DATE (MMDD FORMAT, MM=MONTH, DD=DATE)*
DIS ,* *
DIS ,* K.+ WILL ADVANCE THE ENTRIES OR START OVER*
DIS ,* IF AT THE END OF THE ENTRIES*
DIS ,* *
DIS ,* K.GO WILL START THE PROCESSING*
DATA 0
ORG *
END COPYPF