cdc:nos2.source:opl871:copyb
Table of Contents
COPYB
Table Of Contents
- [00013] COPYB - BINARY FILE COPIES.
- [00671] MACRO DEFINITIONS.
- [00673] CWRW - CONTROL WORD READ WORDS TO WORKING BUFFER.
- [00693] CWWW - CONTROL WORD WRITE WORDS FROM WORKING BUFFER.
- [00717] FETS.
- [00757] DATA STORAGE.
- [00801] TECA - TABLE OF ERROR COUNT ADDRESSES.
- [00818] COPY/COPYBF/COPYEI.
- [00820] COPY - COPY ONE FILE TO ANOTHER UNTIL SPECIFIED TERMINATION
- [00830] COPYBF - COPY SPECIFIED NUMBER OF FILES FROM ONE FILE TO
- [00840] COPYEI - COPY ONE FILE TO ANOTHER UNTIL END OF INFORMATION
- [00852] CPY - COPY FILES.
- [00879] SBC - SINGLE BUFFER COPY.
- [01093] COMMON COPY ROUTINES.
- [01095] ABP - ADVANCE BUFFER POINTER.
- [01119] ABT - ABORT ROUTINE.
- [01167] BFL - BLANK FILL LINE.
- [01198] CPF - COPY FILE.
- [01285] CUE - CHECK UNRECOVERABLE ERROR.
- [01314] CWR - CONTROL WORD READ WORDS.
- [01430] CWW - CONTROL WORD WRITE WORDS.
- [01508] DRN - DISPLAY RECORD NAME.
- [01556] END - END ROUTINE.
- [01665] ERP$ - ERROR PROCESSING ROUTINE.
- [01711] IES - ISSUE ERROR SUMMARY MESSAGES.
- [01744] INB - INITIALIZE NEW BLOCK.
- [01839] INM - INSERT NUMBER IN MESSAGE.
- [01863] PDE - PROCESS DATA BLOCK ERROR.
- [01945] PEF - PROCESS END OF FILE.
- [02032] SSL - SPECIAL PROCESSOR FOR S AND L OUTPUT TAPES.
- [02097] VFY - VERIFY FILES.
- [02149] VNS - VERIFY NOISE SIZE BLOCK FOR *COPY* OR *TCOPY*.
- [02220] COPYBR/COPYX.
- [02222] COPYBR - COPY SPECIFIED NUMBER OF RECORDS FROM ONE FILE TO
- [02244] COPYX - COPY LOGICAL RECORDS FROM ONE FILE TO ANOTHER UNTIL
- [02317] RECORD COPY ROUTINES.
- [02319] CPR - COPY RECORD.
- [02400] TCOPY.
- [02402] TCOPY - COPY E, B, X, SI-CODED OR I TAPE VIA S/L FORMAT TO
- [02423] CEB - COPY E OR B TAPE TO MASS STORAGE, I, LI OR SI-B TAPE.
- [02481] GEB - GENERATE E OR B TAPE FROM MASS STORAGE, I, LI OR SI-B
- [02567] E, B, X, SI-C, I CONVERSION ROUTINES.
- [02569] CCW - COUNT CHARACTERS IN WORD.
- [02589] CEL - CONVERT SI-CODED END OF LINES.
- [02642] CUB - CALCULATE UNUSED BIT COUNT FOR B TAPE LINE.
- [02720] CWC - COUNT WORDS - *C* FORMAT.
- [02744] CWH - COUNT WORDS - *H* FORMAT.
- [02774] IBT - PROCESS I TAPE BLOCK TERMINATOR.
- [02849] IIB - INITIALIZE I FORMAT TAPE BLOCK.
- [02890] ISI - INITIALIZE SI-CODED FORMAT TAPE BLOCK.
- [02936] IXB - INITIALIZE X FORMAT TAPE BLOCK.
- [02986] SIT - PROCESS SI-CODED TAPE BLOCK TERMINATOR.
- [03034] TELN - TABLE OF EOR LEVEL NUMBERS. BLANK REPRESENTS
- [03073] PRESET.
- [03075] CTP - COPY AND TCOPY PRESET PROGRAM.
- [03139] TCYA - TABLE OF COPY COMMAND ARGUMENTS.
- [03158] TTYA - TABLE OF TCOPY COMMAND ARGUMENTS.
- [03175] PRS - PRESET FOR COPYBR, COPYBF, COPYEI, AND COPYX.
- [03281] PRESET SUBROUTINES.
- [03283] AEM - ADJUST ERROR MESSAGES.
- [03311] BVR - BUILD VERIFY REQUEST.
- [03419] CCP - CRACK THE COMMAND PARAMETERS.
- [03451] CDT - CHECK DEVICE TYPE.
- [03572] CFN - CHECK FILE NAMES.
- [03617] CIC - CHECK FOR INDETERMINATE COPY.
- [03662] CNS - CALCULATE NOISE SIZE.
- [03710] CPV - CONVERT PARAMETER VALUES.
- [03797] TCFV - TABLE OF CONVERSION FORMAT VALUES.
- [03808] TCMV - TABLE OF CODED MODE VALUES.
- [03816] TCPO - TABLE OF *COPY* PROCESSING OPTIONS.
- [03826] TTPO - TABLE OF *TCOPY* PROCESSING OPTIONS.
- [03834] TTCV - TABLE OF TERMINATION CONDITION VALUES.
- [03846] GPS - GET PRU SIZES.
- [03868] PER - PRESET ERROR PROCESSOR.
- [03903] RBL - RESET BUFFER LENGTHS.
- [04068] RBP - RESET BUFFER POINTERS.
- [04133] RPV - RETURN PARAMETER VALUE.
- [04158] SFM - SET FILE MODE.
- [04183] SPS - SET PRU SIZE ON S AND L TAPES.
- [04232] STC - SET TERMINATION CONDITION.
- [04333] VCY - VALIDATE COPY.
- [04452] VTY - VALIDATE TCOPY.
- [04593] TTCD - TABLE OF TCOPY DEFAULTS FOR CONVERSION TYPE.
Source Code
- COPYB.txt
- IDENT COPYB,FETS
- ABS
- ENTRY COPY
- ENTRY COPYBF
- ENTRY COPYEI
- ENTRY COPYBR
- ENTRY COPYX
- ENTRY TCOPY
- ENTRY NPC=
- ENTRY RFL=
- ENTRY SSM=
- SYSCOM B1 DEFINE (B1) = 1
- TITLE COPYB - BINARY FILE COPIES.
- *COMMENT COPYB - BINARY FILES COPIES.
- COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
- SPACE 4,10
- ***** COPYB - BINARY FILE COPIES.
- *
- * G. R. MANSFIELD. 70/12/20.
- *
- * J. C. BOHNHOFF. 73/03/01.
- * R. E. TATE. 73/04/03.
- * J. L. LARSON. 77/03/16.
- *
- * THE COPYB DECK CONTAINS THE BINARY FILE AND RECORD COPY
- * UTILITIES, INCLUDING COPY, COPYBF, COPYEI, TCOPY, COPYBR,
- * AND COPYX.
- SPACE 4,10
- *** THE COPY UTILITY COPIES DATA FROM ONE FILE TO ANOTHER UNTIL
- * THE SPECIFIED TERMINATION CONDITION IS MET. THE FOLLOWING
- * TABLE DESCRIBES THE CAPABILITIES OF THE COPY UTILITY -
- *
- * OUTPUT MEDIA FORMAT
- * +------+------+------+------+------+------+------+
- * + MS + I + SI + S + L + F + LI +
- * +------+------+------+------+------+------+------+------+
- * + MS + YES* + YES* + YES* + YES + YES + NO + YES* +
- * +------+------+------+------+------+------+------+------+
- * + I + YES* + YES* + YES* + YES + YES + NO + YES* +
- * INPUT +------+------+------+------+------+------+------+------+
- * + SI + YES* + YES* + YES* + YES + YES + NO + YES* +
- * MEDIA +------+------+------+------+------+------+------+------+
- * + S + YES + YES + YES + YES* + YES + NO + YES +
- * FORMAT +------+------+------+------+------+------+------+------+
- * + L + YES + YES + YES + NO + YES* + NO + YES +
- * +------+------+------+------+------+------+------+------+
- * + F + YES + YES + YES + NO + NO + YES* + YES +
- * +------+------+------+------+------+------+------+------+
- * + LI + YES* + YES* + YES* + YES + YES + NO + YES* +
- * +------+------+------+------+------+------+------+------+
- *
- * MS REFERS TO MASS STORAGE, TERMINAL, OPTICAL DISK OR
- * UNIT RECORD EQUIPMENT. I, SI, S, L, F AND LI REFER
- * TO TAPE FORMATS. COPIES MARKED WITH (*) INDICATE
- * VERIFY IS MEANINGFUL, SINCE LOGICAL STRUCTURE OF
- * FILES IS COMPATIBLE.
- *
- *
- * COPY ( LFN1, LFN2, X, C, TC, COPYCNT, BSIZE, CHARCNT,
- * ERLIMIT, PO, LFN3, NSC )
- *
- * COPY ( I=LFN1, O=LFN2, V=X, M=C, TC=TC, N=COPYCNT, BS=BSIZE,
- * CC=CHARCNT, EL=ERLIMIT, PO=PO, L=LFN3, NS=NSC )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, FILES ARE SKIPPED.
- *
- * X IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS), FILES
- * ARE REWOUND BEFORE COPY, AND REWOUND, VERIFIED, AND
- * REWOUND AGAIN AFTER COPY. DEFAULT = NO VERIFY.
- * IF LFN1 = LFN2, FILE WILL BE REWOUND BEFORE
- * SKIPPING, BUT VERIFY WILL NOT BE DONE.
- *
- * C CODED FILE MODE SELECTION -
- * C1 = INPUT FILE ONLY, C2 = OUTPUT FILE ONLY,
- * OTHER (1 TO 7 ALPHANUMERIC CHARACTERS) = BOTH FILES.
- * APPLIES TO S, L, AND SI FORMAT TAPES.
- * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
- *
- * TC COPY TERMINATION CONDITION. DEFINES MEANING OF
- * COPYCNT PARAMETER -
- * F OR EOF = COPYCNT DEFINES NUMBER OF FILES TO COPY.
- * I OR EOI = COPY TO EOI. COPYCNT MEANINGLESS.
- * D OR EOD = COPYCNT DEFINES NUMBER OF DOUBLE EOF,S
- * TO COPY TO.
- * DEFAULT = EOD.
- *
- * COPYCNT COPY COUNT, AS FURTHER DEFINED BY TC PARAMETER.
- * DEFAULT = 1.
- *
- * BSIZE MAXIMUM BLOCK SIZE IN CM WORDS FOR S OR L TAPE.
- * BSIZE CANNOT BE SPECIFIED TOGETHER WITH CHARCNT
- * PARAMETER. DEFAULT = 1000B FOR S TAPE, 2000B
- * FOR L TAPE.
- *
- * CHARCNT MAXIMUM NUMBER OF CHARACTERS IN BLOCK FOR S OR L
- * TAPE. PRU SIZE AND UNUSED BIT COUNT ARE CALCULATED
- * FROM CHARCNT, HOWEVER, UNUSED BIT COUNT IS USED
- * ONLY WHEN WRITING A FULL BLOCK DURING GENERATION
- * OF AN S OR L TAPE FROM A MASS STORAGE, I, LI OR
- * SI-BINARY FILE. CHARCNT CANNOT BE SPECIFIED
- * TOGETHER WITH BSIZE PARAMETER. NO DEFAULT
- * (BSIZE DEFAULT USED).
- *
- * ERLIMIT ERROR LIMIT. MAXIMUM NUMBER OF NON-FATAL TAPE
- * ERRORS TO ALLOW BEFORE ABORT. INCLUDES *PARITY*
- * AND *BLOCK TOO LARGE* ERRORS, AS RETURNED BY THE
- * SYSTEM AFTER RECOVERY ATTEMPTS FAILED.
- * IF EL=U IS SPECIFIED, UNLIMITED ERROR PROCESSING
- * IS ALLOWED. ERROR LIMIT DOES NOT APPLY (IGNORED)
- * IF CONTROL WORDS ARE NOT SUPPORTED ON THE INPUT
- * DEVICE TYPE (TERMINAL AND UNIT RECORD EQUIPMENT),
- * IN WHICH CASE, ANY ERROR WILL ABORT THE JOB.
- * DEFAULT = 0.
- *
- * PO ONE OR MORE OF THE FOLLOWING PROCESSING OPTIONS -
- *
- * E INPUT BLOCKS WITH *PARITY* OR *BLOCK TOO
- * LARGE* ERRORS ARE TO BE PROCESSED. DEFAULT =
- * ERROR BLOCKS ARE SKIPPED.
- *
- * D NOISE BLOCKS GENERATED DURING MASS STORAGE, I,
- * LI OR SI COPY TO S OR L TAPE ARE DELETED.
- * DEFAULT = NOISE BLOCKS ARE PADDED TO NOISE SIZE
- * WITH BINARY ZEROS IF BINARY S OR L TAPE OR WITH
- * BLANKS IF CODED MODE. PO=D ALLOWED ONLY ON
- * COPY FROM MASS STORAGE, I, LI OR SI-BINARY TAPE
- * TO S OR L TAPE.
- *
- * R RECORD SPLITTING ALLOWED DURING GENERATION OF S
- * OR L TAPE FROM MASS STORAGE, I, LI OR SI-BINARY
- * FILE. INPUT RECORDS GREATER THAN OUTPUT FILE
- * PRU SIZE WILL BE SPLIT INTO MULTIPLE BLOCKS ON
- * OUTPUT. DEFAULT = NO RECORD SPLITTING ALLOWED,
- * ABORT IF RECORD TOO LARGE ENCOUNTERED. ALLOWED
- * ONLY ON COPY FROM MASS STORAGE, I, LI OR
- * SI-BINARY TAPE TO S OR L TAPE.
- *
- * M COPY FILES AS SPECIFIED BY COPY TERMINATION
- * CONDITION, ELIMINATING EOF ON OUTPUT. PRIMARILY
- * PROVIDED FOR USE WITH LABELED S AND L OUTPUT
- * TAPES, SINCE TAPE MARK HAS DOUBLE MEANING
- * (EOF AND LABEL GROUP DELIMITER).
- * DEFAULT = FILES ARE COPIED WITH EOF SEPARATORS.
- *
- * LFN3 ALTERNATE OUTPUT FILE TO RECEIVE PARITY ERROR
- * MESSAGES WHEN NON-ZERO ERLIMIT SPECIFIED, IN
- * WHICH CASE, FILE NAME LFN3 CANNOT BE THE SAME AS
- * LFN1 OR LFN2. DEFAULT = OUTPUT.
- *
- * NSC NOISE SIZE. ANY INPUT BLOCK CONTAINING FEWER THAN
- * NSC CHARACTERS IS CONSIDERED NOISE AND IS DISCARDED.
- * ALLOWED ONLY WHEN INPUT TAPE IS S, L, OR F FORMAT.
- * MAXIMUM VALUE IS 41 CHARACTERS. IF NS=0 IS SPECIFIED,
- * THE DEFAULT OF 18 CHARACTERS IS USED.
- *
- *
- * THE PARAMETERS ON THE COPY COMMAND ARE BOTH POSITIONAL
- * AND EQUIVALENCED. ANY COMBINATION OF POSITIONAL AND
- * EQUIVALENCED ARGUMENTS MAY BE SPECIFIED, HOWEVER, POSITIONAL
- * ARGUMENTS ARE INTERPRETTED SOLELY ON THE NUMBER OF PRECEDING
- * PARAMETERS. ALL PARAMETERS ARE OPTIONAL. UNLESS EXPLICITLY
- * STATED OTHERWISE IN THE PARAMETER DESCRIPTION, SPECIFICATION
- * OF NON-APPLICABLE PARAMETERS FOR A PARTICULAR TYPE OF COPY
- * IS INCORRECT.
- *
- * FOR IDENTICAL COPIES (MASS STORAGE TO MASS STORAGE, I TO I,
- * SI TO SI, S TO S, L TO L, F TO F, AND LI TO LI TAPE COPIES)
- * AND FOR INTERCHANGEABLE COPIES (I TO SI-BINARY, SI-BINARY TO
- * I, AND S TO L), WHERE DATA MANIPULATION IS NOT REQUIRED, A
- * SINGLE BUFFER COPY IS USED. ALL OTHER TYPES OF COPIES
- * REQUIRE TWO I/O BUFFERS AND A WORKING STORAGE BUFFER. COPY
- * WILL RFL UP FOR ADDITIONAL FIELD LENGTH NEEDED TO PROCESS L
- * AND F TAPE COPIES.
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND
- * LFN2, UNLESS THE VERIFY OPTION IS SPECIFIED, AND CONTINUES
- * UNTIL THE COPY TERMINATION CONDITION IS MET OR EOI IS
- * ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED. IF PO=M
- * OPTION IS SELECTED, CORRESPONDING EOF,S ARE NOT GENERATED
- * ON LFN2. WHEN THE COPY IS TERMINATED BY A DOUBLE EOF (FOR
- * TC=EOD OPTION), THE SECOND EOF IS NOT TRANSFERRED TO LFN2.
- * FOR A COPY WITH A FILE COUNT SPECIFIED (TC=EOF), IF EOI IS
- * ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS SATISFIED, AN
- * ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF DATA OR RECORDS
- * HAVE BEEN TRANSFERRED SINCE THE PREVIOUS EOF WAS WRITTEN.
- SPACE 4,10
- *** THE COPYBF UTILITY COPIES A SPECIFIED NUMBER OF FILES FROM
- * ONE FILE TO ANOTHER.
- *
- *
- * COPYBF ( LFN1, LFN2, N, C )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, FILES ARE SKIPPED.
- *
- * N NUMBER OF FILES TO COPY. DEFAULT = 1.
- *
- * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
- * CODED MODE SET ON BOTH FILES.
- * APPLIES TO S, L, AND SI FORMAT TAPES.
- * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
- * AND CONTINUES UNTIL THE SPECIFIED NUMBER OF FILES ARE COPIED
- * OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED.
- * IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS
- * SATISFIED, AN ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF
- * DATA OR RECORDS HAVE BEEN TRANSFERRED SINCE THE PREVIOUS
- * EOF WAS WRITTEN.
- SPACE 4,10
- *** THE COPYEI UTILITY COPIES ONE FILE TO ANOTHER UNTIL END
- * OF INFORMATION IS ENCOUNTERED.
- *
- *
- * COPYEI ( LFN1, LFN2, V, C )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, THE FILE IS SKIPPED TO EOI.
- *
- * V IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS), FILES
- * ARE REWOUND BEFORE COPY, AND REWOUND, VERIFIED, AND
- * REWOUND AGAIN AFTER COPY. DEFAULT = NO VERIFY.
- * IF LFN1 = LFN2, FILE WILL BE REWOUND BEFORE
- * SKIPPING, BUT VERIFY WILL NOT BE DONE.
- *
- * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
- * CODED MODE SET ON BOTH FILES.
- * APPLIES TO S, L, AND SI FORMAT TAPES.
- * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND
- * LFN2, UNLESS THE VERIFY OPTION IS SELECTED, AND CONTINUES
- * UNTIL EOI IS ENCOUNTERED. IF LFN1 = LFN2, THE FILE IS
- * SKIPPED TO EOI.
- SPACE 4,10
- *** THE COPYBR UTILITY COPIES A SPECIFIED NUMBER OF RECORDS FROM
- * ONE FILE TO ANOTHER.
- *
- *
- * COPYBR ( LFN1, LFN2, N, C )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, RECORDS ARE SKIPPED.
- *
- * N NUMBER OF RECORDS TO COPY. DEFAULT = 1.
- * EACH EOF IS COUNTED AS AN ADDITIONAL RECORD.
- *
- * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
- * CODED MODE SET ON BOTH FILES.
- * APPLIES TO S, L, AND SI FORMAT TAPES.
- * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
- * AND CONTINUES UNTIL THE SPECIFIED NUMBER OF RECORDS ARE
- * COPIED OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, RECORDS ARE
- * SKIPPED. IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE RECORD
- * COUNT IS SATISFIED, AN ADDITIONAL EOR WILL BE GENERATED
- * ON LFN2 IF ANY DATA HAS BEEN TRANSFERRED SINCE THE PREVIOUS
- * EOR/EOF WAS WRITTEN.
- SPACE 4,10
- *** THE COPYX UTILITY COPIES LOGICAL RECORDS FROM ONE FILE TO
- * ANOTHER UNTIL THE SPECIFIED TERMINATION CONDITION IS MET.
- *
- *
- * COPYX ( LFN1, LFN2, TERM, BKSP, C )
- *
- * COPYX ( LFN1, LFN2, TYPE / NAME, BKSP, C )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, RECORDS ARE SKIPPED.
- *
- * TERM TERMINATION CONDITION. DEFAULT = 1.
- * *00* = COPY TO ZERO RECORD.
- * N = NUMBER OF RECORDS TO COPY.
- * NAME = NAME OF LAST RECORD TO COPY.
- *
- * TYPE MNEMONIC FOR RECORD TYPE.
- * *ABS* = MULTIPLE ENTRY POINT OVERLAY
- * *CAP* = FAST DYNAMIC LOAD CAPSULE
- * *OPL* = MODIFY OLD PROGRAM LIBRARY DECK
- * *OPLC* = MODIFY OLD PROGRAM LIBRARY COMMON DECK
- * *OPLD* = MODIFY OLD PROGRAM LIBRARY DIRECTORY
- * *OVL* = CENTRAL PROCESSOR OVERLAY
- * *PP* = 6000 SERIES PERIPHERAL PROCESSOR PROGRAM
- * *PPL* = 16-BIT PERIPHERAL PROCESSOR PROGRAM
- * *PPU* = 7600 PERIPHERAL PROCESSOR PROGRAM
- * *PROC* = PROCEDURE TYPE RECORD
- * *REL* = RELOCATABLE CENTRAL PROCESSOR PROGRAM
- * *TEXT* = UNRECOGNIZABLE AS A PROGRAM
- * *ULIB* = USER LIBRARY PROGRAM
- *
- * NAME RECORD NAME.
- *
- * BKSP BACKSPACE CONTROL. DEFAULT = 0.
- * *0* = NO BACKSPACE
- * *1* = BACKSPACE LFN1 ONLY
- * *2* = BACKSPACE LFN2 ONLY
- * *3* = BACKSPACE BOTH FILES
- *
- * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
- * CODED MODE SET ON BOTH FILES.
- * APPLIES TO S, L, AND SI FORMAT TAPES.
- * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
- * AND CONTINUES UNTIL THE SPECIFIED TERMINATION CONDITION IS
- * MET OR EOF OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, RECORDS
- * ARE SKIPPED. IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE
- * TERMINATION CONDITION IS SATISFIED, AN ADDITIONAL EOR WILL
- * BE GENERATED ON LFN2 IF ANY DATA HAS BEEN TRANSFERRED SINCE
- * THE PREVIOUS EOR WAS WRITTEN.
- SPACE 4,10
- *** THE TCOPY UTILITY PROVIDES CONVERSION SUPPORT FOR E, B,
- * X, AND SI-CODED FORMAT TAPES. TAPES WRITTEN IN THESE
- * FORMATS SHOULD BE ASSIGNED IN S (STRANGER TAPE) FORMAT.
- * TCOPY WILL CONVERT THE DATA RECEIVED FROM THE S FORMAT
- * DRIVER AS NECESSARY TO MATCH THE SPECIFIED FORMAT
- * (PARAMETER ON TCOPY COMMAND) AND COPY IT TO A MASS
- * STORAGE FILE OR ITS EQUIVALENT (I, LI OR SI-BINARY TAPE).
- * TCOPY ALSO PROVIDES THE CAPABILITY OF GENERATING E AND B
- * TAPES, VIA S FORMAT, FROM A MASS STORAGE, I, LI OR SI-BINARY
- * FILE.
- *
- *
- * TCOPY ( LFN1, LFN2, FORMAT, TC, COPYCNT, CHARCNT, ERLIMIT,
- * PO, LFN3, NSC )
- *
- * TCOPY ( I=LFN1, O=LFN2, F=FORMAT, TC=TC, N=COPYCNT,
- * CC=CHARCNT, EL=ERLIMIT, PO=PO, L=LFN3, NS=NSC )
- *
- * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
- *
- * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
- * IF LFN1 = LFN2, FILES ARE SKIPPED.
- *
- * FORMAT OBSOLETE TAPE FORMAT SPECIFYING THE TYPE OF
- * CONVERSION FOR THE COPY. DEFAULT = X.
- *
- * E COPY E FORMAT TAPE TO MASS STORAGE, I, LI OR
- * SI-BINARY FILE, OR GENERATE NEW E TAPE FROM
- * MASS STORAGE, I, LI OR SI-BINARY FILE. THE E
- * TAPE MUST BE UNLABELED AND ASSIGNED AS S FORMAT.
- *
- * B COPY B FORMAT TAPE TO MASS STORAGE, I, LI OR
- * SI-BINARY FILE OR GENERATE A NEW B TAPE FROM
- * A MASS STORAGE, I, LI OR SI-BINARY FILE.
- * THE B TAPE MUST BE UNLABELED AND ASSIGNED AS
- * S FORMAT.
- *
- * X COPY X FORMAT TAPE TO MASS STORAGE, I, LI OR
- * SI-BINARY FILE. THE X TAPE MUST BE UNLABELED
- * AND ASSIGNED AS S FORMAT.
- *
- * SI COPY SI-CODED FORMAT TAPE TO MASS STORAGE,
- * I, LI OR SI-BINARY FILE. THE SI-CODED TAPE MUST
- * BE ASSIGNED AS S FORMAT AND MAY BE LABELED OR
- * UNLABELED.
- * NOTE - IF FILE COUNT WAS SPECIFIED, THE POSITION
- * OF THE INPUT TAPE AFTER THE COPY IS INDETERMI-
- * NATE SINCE CONTROL WORDS ARE USED ON THE SI-
- * CODED FILE READ VIA S FORMAT (EOF ON SI-CODED
- * TAPE IS LEVEL 17B BLOCK TERMINATOR BUT EOF ON
- * S TAPE IS A TAPE MARK).
- *
- * I COPY I FORMAT TAPE TO MASS STORAGE, I, LI OR
- * SI-BINARY FILE. THE I FORMAT TAPE MUST BE
- * ASSIGNED AS L FORMAT AND MAY BE LABELED OR
- * UNLABELED. I FORMAT IS NOT AN OBSOLETE FORMAT.
- * THIS OPTION HAS BEEN INCLUDED TO SIMPLIFY THE
- * RECOVERY OF DATA FROM OVERWRITTEN TAPES.
- * NOTE - IF THE TERMINATING CONDITION IS OTHER
- * THAN *EOI*, THEN THE POSITION OF THE INPUT TAPE
- * AFTER THE COPY IS INDETERMINATE, SINCE CONTROL
- * WORD READS ARE USED ON THE I FORMAT TAPE READ
- * VIA L FORMAT (EOF ON AN I FORMAT TAPE IS A
- * LEVEL 17B BLOCK TERMINATOR BUT EOF ON AN L
- * TAPE IS A TAPE MARK).
- *
- * TC COPY TERMINATION CONDITION. DEFINES MEANING OF
- * COPYCNT PARAMETER -
- * F OR EOF = COPYCNT DEFINES NUMBER OF FILES TO COPY.
- * I OR EOI = COPY TO EOI. COPYCNT MEANINGLESS.
- * D OR EOD = COPYCNT DEFINES NUMBER OF DOUBLE EOF,S
- * TO COPY TO.
- * DEFAULT = EOD.
- *
- * COPYCNT COPY COUNT, AS FURTHER DEFINED BY TC PARAMETER.
- * DEFAULT = 1.
- *
- * CHARCNT CHARACTER COUNT. DETERMINES MAXIMUM BLOCK SIZE
- * (LINE LENGTH) IN CHARACTERS TO BE READ OR WRITTEN
- * AND PRU SIZE. APPLIES ONLY TO E AND B TAPE COPIES.
- * DEFAULT = 136 CHARACTERS FOR E TAPE, 150 CHARACTERS
- * FOR B TAPE.
- *
- * ERLIMIT ERROR LIMIT. MAXIMUM NUMBER OF NON-FATAL TAPE
- * ERRORS TO ALLOW BEFORE ABORT. INCLUDES *PARITY*
- * AND *BLOCK TOO LARGE* ERRORS, AS RETURNED BY THE
- * SYSTEM AFTER RECOVERY ATTEMPTS FAILED. FOR X, SI-
- * CODED AND I TAPES IT ALSO INCLUDES *INCORRECT BLOCK
- * FORMAT* ERRORS (INCORRECT BYTE COUNT AND/OR UNUSED
- * BIT COUNT FOR THIS FORMAT). IF EL=U IS SPECIFIED,
- * UNLIMITED ERROR PROCESSING IS ALLOWED. ERROR LIMIT
- * DOES NOT APPLY (IGNORED) WHEN GENERATING AN E OR B
- * TAPE FROM A MASS STORAGE, I, LI OR SI-BINARY FILE
- * (SINCE CONTROL WORDS ARE NOT USED) OR IF CONTROL
- * WORDS ARE NOT SUPPORTED ON THE INPUT FILE DEVICE
- * TYPE (TERMINAL OR UNIT RECORD EQUIPMENT), IN WHICH
- * CASE, ANY ERROR WILL ABORT THE JOB. DEFAULT = 0.
- *
- * PO PROCESSING OPTION -
- *
- * E INPUT BLOCKS WITH *PARITY* OR *BLOCK TOO
- * LARGE* ERRORS ARE TO BE PROCESSED. DEFAULT =
- * ERROR BLOCKS ARE SKIPPED.
- *
- * T WHEN GENERATING AN E OR B FORMAT TAPE, TRUNCATE
- * DATA IN LINE BEYOND THE MAXIMUM E/B TAPE LINE
- * SIZE (AS DEFINED BY CC= PARAMETER OR DEFAULT).
- * LEGAL ONLY WHEN GENERATING AN E OR B TAPE FROM
- * A MASS STORAGE, I, LI OR SI-BINARY TAPE FILE.
- *
- * LFN3 ALTERNATE OUTPUT FILE TO RECEIVE PARITY ERROR
- * MESSAGES WHEN NON-ZERO ERLIMIT SPECIFIED, IN
- * WHICH CASE, FILE NAME LFN3 CANNOT BE THE SAME AS
- * LFN1 OR LFN2. DEFAULT = OUTPUT.
- *
- * NSC NOISE SIZE. ANY BLOCK CONTAINING FEWER THAN NSC
- * CHARACTERS IS CONSIDERED NOISE AND IS DISCARDED.
- * ALLOWED ONLY FOR E/B FORMAT CONVERSION.
- * IF NS=0 IS SPECIFIED, THE DEFAULT OF 18
- * CHARACTERS IS USED.
- *
- *
- * THE PARAMETERS ON THE TCOPY COMMAND ARE BOTH POSITIONAL
- * AND EQUIVALENCED. ANY COMBINATION OF POSITIONAL AND
- * EQUIVALENCED ARGUMENTS MAY BE SPECIFIED, HOWEVER, POSITIONAL
- * ARGUMENTS ARE INTERPRETTED SOLELY ON THE NUMBER OF PRECEDING
- * PARAMETERS. ALL PARAMETERS ARE OPTIONAL. UNLESS EXPLICITLY
- * STATED OTHERWISE IN THE PARAMETER DESCRIPTION, SPECIFICATION
- * OF NON-APPLICABLE PARAMETERS FOR A PARTICULAR TYPE OF COPY
- * IS INCORRECT.
- *
- * WHEN GENERATING A NEW B TAPE FROM A MASS STORAGE, I, LI OR
- * SI-BINARY FILE, LINES MAY BE ENCOUNTERED THAT ARE TOO SMALL
- * TO BE COPIED DIRECTLY TO THE TAPE. SMALL BLOCKS MAY ALSO
- * RESULT WHEN A LINE IS ENCOUNTERED THAT EXCEEDS THE MAXIMUM
- * LINE SIZE FOR THE B TAPE, SINCE IT IS SPLIT INTO MULTIPLE
- * LINES. IF THE LINE LENGTH IS LESS THAN THE B TAPE NOISE
- * SIZE, IT WILL BE BLANK FILLED TO THE NOISE SIZE.
- * IF THE *PO=T* OPTION IS SPECIFIED, LINES THAT WOULD
- * NORMALLY BE SPLIT INTO MULTIPLE LINES WILL BE TRUNCATED
- * AT THE MAXIMUM LINE SIZE.
- *
- * WHEN GENERATING A NEW E TAPE FROM A MASS STORAGE, I, LI OR
- * SI-BINARY TAPE FILE, LINES THAT EXCEED THE MAXIMUM LINE
- * SIZE WILL BE SPLIT INTO MULTIPLE LINES. A CONTINUATION
- * LINE CONSISTING OF AN EOL ONLY WILL BE DISCARDED (WILL NOT
- * GENERATE EXTRANEOUS BLANK BLOCK). IF THE *PO=T* OPTION
- * IS SPECIFIED, LINES ARE TRUNCATED AT THE MAXIMUM LINE SIZE
- * (ALL CONTINUATION LINES ARE DISCARDED).
- *
- * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
- * AND CONTINUES UNTIL THE COPY TERMINATION CONDITION IS MET OR
- * EOI IS ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED.
- * WHEN THE COPY IS TERMINATED BY A DOUBLE EOF (FOR TC=EOD
- * OPTION), THE SECOND EOF IS NOT TRANSFERRED TO LFN2.
- * FOR A COPY WITH A FILE COUNT SPECIFIED (TC=EOF), IF EOI IS
- * ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS SATISFIED, AN
- * ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF ANY DATA OR
- * RECORDS HAVE BEEN TRANSFERRED SINCE THE PREVIOUS EOF WAS
- * WRITTEN.
- SPACE 4,10
- *** DAYFILE ERROR MESSAGES.
- *
- *
- * * ARGUMENT ERROR.* - COMMAND CONTAINS INCORRECT OR
- * NON-APPLICABLE PARAMETERS.
- *
- * * BLOCK SIZE NOT APPLICABLE.* - SPECIFICATION OF *CC* OR
- * *BS* PARAMETER ON *COPY* IS ALLOWED ONLY WHEN COPYING
- * TO OR FROM AN S OR L FORMAT TAPE. SPECIFICATION OF
- * *CC* PARAMETER ON *TCOPY* LEGAL ONLY WHEN CONVERTING
- * OR GENERATING AN E OR B FORMAT TAPE.
- *
- * * BLOCK SIZE TOO LARGE ON LFN.* - FOR *COPY*, BLOCK SIZE FOR
- * S COPY EXCEEDS MAXIMUM FOR THAT FORMAT (1000B WORDS).
- * FOR *TCOPY*, CHARACTER COUNT FOR E OR B TAPE COPY EXCEEDS
- * MAXIMUM FOR THAT FORMAT (5120 CHARACTERS).
- * FOR *COPYBF* AND *COPYEI*, F TAPE BLOCK SIZE EXCEEDS WORKING
- * BUFFER LENGTH (ONLY *COPY* SUPPORTS S, L, AND F TAPES).
- *
- * * BLOCK SIZE TOO SMALL ON LFN.* - FOR *COPY*, ON F TO F TAPE
- * COPY, MAXIMUM FRAME COUNT FOR THE FIRST FILE (AS SPECIFIED
- * DURING TAPE ASSIGNMENT) EXCEEDS THAT SPECIFIED FOR THE SECOND
- * FILE. ON S AND L TAPE COPIES, BLOCK SIZE (AS SPECIFIED BY
- * *BS* PARAMETER OR CALCULATED FROM *CC* PARAMETER) IS LESS
- * THAN NOISE SIZE. FOR *TCOPY*, ON E AND B TAPE COPIES, BLOCK
- * SIZE (AS CALCULATED FROM *CC* PARAMETER) IS LESS THAN THE
- * CORRESPONDING S TAPE NOISE SIZE.
- *
- * * COPY FL ABOVE USER LIMIT.* - FOR *COPY*, FIELD LENGTH
- * REQUIRED FOR F OR L TAPE COPY EXCEEDS THE USER,S CURRENT
- * MAXIMUM FL.
- *
- * * ERROR LIMIT EXCEEDED.* - FOR *COPY* AND *TCOPY*, NUMBER
- * OF *PARITY*, *BLOCK TOO LARGE* AND *INCORRECT BLOCK FORMAT*
- * ERRORS DETECTED ON THE INPUT FILE EXCEEDS THE ERROR LIMIT
- * (AS SPECIFIED BY EL PARAMETER).
- *
- * * FILE NAME CONFLICT.* - FOR *COPY* AND *TCOPY*, WITH
- * EXTENDED ERROR PROCESSING IN EFFECT (NONZERO *EL* SPECIFIED),
- * ALTERNATE OUTPUT FILE NAME IS SAME AS INPUT OR OUTPUT FILE
- * NAME.
- *
- * * INCORRECT COPY.* - FOR *COPY*, THE FILE TYPES (TAPE FORMAT
- * OR DEVICE TYPE) DO NOT MEET COPY REQUIREMENTS (REFER TO
- * CAPABILITY TABLE IN *COPY* DOCUMENTATION). FOR *TCOPY*,
- * THE CONVERSION TYPE (E, B, X, SI) AND THE FILE TYPES
- * (TAPE FORMAT OR DEVICE TYPE) DO NOT MEET COPY REQUIRE-
- * MENTS (REFER TO *TCOPY* CAPABILITY DOCUMENTATION).
- *
- * * INCORRECT NOISE SIZE ON LFN.* - FOR *COPY*, ON S TO S, L TO
- * L, AND F TO F TAPE COPIES, THE NOISE SIZE FOR THE SECOND FILE
- * (AS SPECIFIED DURING TAPE ASSIGNMENT) EXCEEDS THAT DEFINED
- * FOR THE FIRST FILE. FOR *TCOPY*, ON X AND SI-CODED TAPE
- * COPIES, INCORRECT NOISE SIZE HAS BEEN SPECIFIED WHEN THE S
- * FORMAT TAPE WAS ASSIGNED (REQUIRED NOISE SIZE IS 8 FRAMES FOR
- * 7-TRACK, 6 FRAMES FOR 9-TRACK).
- *
- * * PROCESSING OPTION NOT APPLICABLE.* - *PO=R* OR *PO=D*
- * SPECIFICATION ALLOWED ONLY ON *COPY* FROM MASS STORAGE, I,
- * LI OR SI-BINARY FILE TO S OR L TAPE. *PO=T* SPECIFICATION
- * ALLOWED ON *TCOPY* ONLY WHEN GENERATING AN E OR B TAPE.
- *
- * * RECORD TOO LARGE ON LFN.* - FOR *COPY* WHEN RECORD
- * SPLITTING PROCESSING OPTION NOT SPECIFIED, *COPYBF*, AND
- * *COPYEI*, DURING GENERATION OF S OR L TAPE FROM MASS
- * STORAGE, I, LI OR SI-BINARY FILE, AN INPUT RECORD WAS
- * ENCOUNTERED THAT WAS LARGER THAN THE OUTPUT FILE PRU SIZE.
- *
- * * UNLABELED TAPE REQUIRED - LFN.* - FOR *TCOPY*, THE
- * S FORMAT TAPE FOR AN E, B, OR X COPY MUST BE UNLABELED.
- *
- * * UNRECOVERABLE ERROR ON LFN.* - FOR *COPY* AND *TCOPY*, AN
- * UNRECOVERABLE ERROR WAS DETECTED ON THE INPUT FILE (WRONG
- * PARITY, DENSITY CHANGE, READY DROP, ETC.).
- *
- * * UNRECOGNIZED TERMINATION CONDITION.* - THE *COPYX*
- * TERMINATION RECORD COUNT OR RECORD TYPE WAS NOT RECOGNIZED.
- *
- * * UNRECOGNIZED BACKSPACE CODE.* - THE BACKSPACE CODE
- * SPECIFIED TO *COPYX* WAS NOT 0, 1, 2, OR 3.
- SPACE 4,10
- *** DAYFILE INFORMATIVE MESSAGES.
- *
- *
- * * CHECK DAYFILE FOR ERRORS.* - ALERTS TERMINAL USER THAT SOME
- * ERROR SUMMARY OR WARNING MESSAGES WERE ISSUED TO THE DAYFILE.
- *
- * * COPY COMPLETE.* - COPY COUNT WAS EXHAUSTED BEFORE EOI
- * ENCOUNTERED.
- *
- * * COPY INDETERMINATE.* - WARNING MESSAGE ISSUED BY *COPYBF*,
- * *COPYEI*, *COPYBR*, AND *COPYX* WHEN COPY INVOLVES AN S, L,
- * OR F FORMAT TAPE (ONLY *COPY* UTILITY PROVIDES SUPPORT
- * FOR THESE FORMAT TAPES).
- *
- * * EOF ENCOUNTERED.* - END OF FILE WAS ENCOUNTERED BEFORE
- * *COPYX* TERMINATION CONDITION SATISFIED.
- *
- * * EOI ENCOUNTERED.* - END OF INFORMATION WAS ENCOUNTERED
- * BEFORE THE COPY COUNT WAS EXHAUSTED.
- *
- * * FILE NOT FOUND - LFN.* - INPUT FILE DID NOT EXIST PRIOR
- * TO COPY.
- *
- * * N BAD FORMAT BLOCKS.* - *TCOPY* ERROR SUMMARY MESSAGE
- * ISSUED BEFORE ENDING OR ABORTING. ALTERNATE OUTPUT FILE
- * CONTAINS DETAILED ERROR MESSAGES.
- *
- * * N NOISE BLOCKS DELETED.* - DURING S OR L TAPE *COPY* FROM
- * MASS STORAGE, I, LI OR SI-BINARY FILE, N OUTPUT FILE BLOCKS
- * WERE DELETED SINCE THEY WERE LESS THAN NOISE SIZE.
- * DURING *TCOPY* WITH S FORMAT INPUT TAPE FOR E/B FORMAT
- * CONVERSION OR FOR *COPY* FROM S/L/F FORMAT INPUT TAPE,
- * N INPUT BLOCKS WERE DELETED (NOT WRITTEN TO OUTPUT)
- * SINCE THEY WERE LESS THAN NOISE SIZE.
- *
- * * NOISE BLOCK PROCESSING IN EFFECT.* - IN *COPY* WHEN
- * USER DOES NOT SPECIFY *NS* PARAMETER FOR S TO S/L, L TO L,
- * OR F TO F TAPE COPY, NOISE PROCESSING IS AUTOMATICALLY
- * SELECTED WHEN THE OUTPUT TAPE NOISE SIZE EXCEEDS THE INPUT
- * TAPE NOISE SIZE. THIS WILL SLOW PROCESSING, SINCE DOUBLE
- * BUFFER DATA MANIPULATION MUST THEN BE USED TO REMOVE INPUT
- * NOISE BLOCKS.
- *
- * * INSUFFICIENT NOISE SIZE, AUTOMATICALLY INCREASED.* -
- * WARNING MESSAGE ISSUED IN *COPY* IF *NS* PARAMETER IS
- * SPECIFIED BUT NOT LARGE ENOUGH FOR S TO S/L, L TO L, OR F TO
- * F TAPE COPY (THE NOISE SIZE USED FOR THE INPUT TAPE MUST BE
- * GREATER THAN OR EQUAL TO THAT OF THE OUTPUT TAPE).
- *
- * * N NOISE BLOCKS PADDED.* - DURING S OR L TAPE *COPY* FROM
- * MASS STORAGE, I, LI OR SI-BINARY FILE, N OUTPUT FILE BLOCKS
- * HAD TO BE PADDED SINCE THEY WERE LESS THAN NOISE SIZE.
- *
- * * N PARITY/BLOCK TOO LARGE ERRORS.* - *COPY* AND *TCOPY*
- * ERROR SUMMARY MESSAGE ISSUED BEFORE ENDING OR ABORTING.
- * ALTERNATE OUTPUT FILE CONTAINS DETAILED ERROR MESSAGES.
- *
- * * N RECORD SPLITS OCCURRED.* - DURING S OR L TAPE *COPY* FROM
- * MASS STORAGE, I, LI OR SI-BINARY FILE, MULTIPLE BLOCKS PER
- * RECORD WERE WRITTEN FOR N INPUT RECORDS.
- SPACE 4,10
- *** ALTERNATE OUTPUT FILE MESSAGES.
- *
- * * INCORRECT FORMAT IN BLOCK N.* - FOR *TCOPY* WITH EXTENDED
- * ERROR PROCESSING IN EFFECT, AN *INCORRECT BLOCK FORMAT* ERROR
- * (INCORRECT BYTE COUNT AND/OR UNUSED BIT COUNT IN THIS FORMAT)
- * WAS DETECTED IN THIS BLOCK WITHOUT THE *PARITY* ERROR
- * INDICATOR SET. N SPECIFIES BLOCK COUNT OF BLOCK IN
- * ERROR, AND IS INITIALLY SET TO 0 (FIRST BLOCK FROM INITIAL
- * POSITION OF INPUT FILE).
- *
- * * PARITY/BLOCK TOO LARGE ERROR IN BLOCK N.* - FOR *COPY*
- * AND *TCOPY*, WITH EXTENDED ERROR PROCESSING IN EFFECT,
- * A *PARITY* OR *BLOCK TOO LARGE* ERROR WAS DETECTED ON THIS
- * BLOCK (ERROR INDICATOR SET IN CONTROL WORD HEADER).
- * N SPECIFIES BLOCK COUNT OF BLOCK IN ERROR, AND IS INITIALLY
- * SET TO 0 (FIRST BLOCK FROM INITIAL POSITION OF INPUT FILE).
- SPACE 4,10
- **** ASSEMBLY CONSTANTS.
- DPRS EQU 1003B DEFAULT PRU SIZE WITH CONTROL WORDS
- BUFL EQU DPRS DEFAULT WORKING STORAGE BUFFER LENGTH
- FBUFL EQU DPRS*30B DEFAULT CIO BUFFER LENGTH
- LBUFL EQU 102B ALTERNATE OUTPUT CIO BUFFER LENGTH
- RBFL EQU 1000B RECORD COPY WORKING BUFFER LENGTH
- SBUFL EQU FBUFL*2 SINGLE BUFFER COPY DEFAULT BUFFER LENGTH
- FETL EQU 9 FET LENGTH
- FETODL EQU 16 OPTICAL DISK FET EXTENSION LENGTH
- DFNS EQU 18 DEFAULT NOISE SIZE
- MNSZ EQU 41 MAXIMUM NS PARAMETER IN CHARACTERS
- DSPS EQU 1000B DEFAULT S TAPE PRU SIZE FOR *COPY*
- DLPS EQU 2000B DEFAULT L TAPE PRU SIZE FOR *COPY*
- MCBS EQU 5120 MAXIMUM BLOCK SIZE (IN CHARACTERS)
- MFLF EQU 73000B-2 MAXIMUM FIELD LENGTH FACTOR
- LOFL EQU 43000B-2 LOWER OPTIMUM FL FOR L AND F TAPE COPIES
- ****
- SPACE 4,10
- * SPECIAL ENTRY POINTS.
- NPC= EQU 0 FORCE OPERATING SYSTEM PARAMETER FORMAT
- SSM= EQU 0 SUPPRESS DUMPS OF FIELD LENGTH
- TITLE MACRO DEFINITIONS.
- CWRW SPACE 4,15
- ** CWRW - CONTROL WORD READ WORDS TO WORKING BUFFER.
- *
- * CWRW FILE,BUF,N
- *
- * FILE FWA FET. PARAMETER PROVIDED ONLY FOR
- * COMPATIBILITY WITH READW MACRO. INPUT
- * FET IS ALWAYS USED BY CWR ROUTINE.
- * BUF FWA WORKING BUFFER. PARAMETER PROVIDED
- * ONLY FOR COMPATIBILITY WITH READW MACRO.
- * (FWWB) IS ALWAYS USED BY CWR ROUTINE.
- * N NUMBER OF WORDS TO TRANSFER.
- *
- * CALLS CWR.
- CWRW MACRO F,S,N
- R= X7,N
- RJ CWR
- ENDM
- CWWW SPACE 4,15
- ** CWWW - CONTROL WORD WRITE WORDS FROM WORKING BUFFER.
- *
- * CWWW FILE,BUF,N
- *
- * FILE FWA FET.
- * BUF FWA WORKING BUFFER.
- * N NUMBER OF WORDS TO TRANSFER.
- *
- * CALLS CWW.
- CWWW MACRO F,S,N
- R= B7,N
- R= B6,S
- R= X2,F
- RJ CWW
- ENDM
- SPACE 4,10
- *CALL COMCMAC
- *CALL COMSLFM
- QUAL MTX
- *CALL COMSMTX
- QUAL *
- *CALL COMSSRT
- TITLE FETS.
- ORG 120B
- FETS BSS 0
- I BSS 0 INPUT FILE
- INPUT FILEB IBUF,FBUFL,FET=FETL
- BSSZ FETODL OPTICAL DISK FET EXTENSION
- CWF EQU *-I CONTROL WORD FLAG
- CON 0 NONZERO IF CONTROL WORDS ENABLED ON INPUT
- SLF EQU *-I FORMAT FLAG
- CON 0 1= S TAPE, 2= L TAPE, -1= F TAPE, 0= OTHER
- TCF EQU *-I TCOPY CONVERSION FORMAT
- CON 0 -3=I,-2=SI,-1=X,1=E,2=B,0=NO CONVERSION
- PRU EQU *-I PRU SIZE (IN CM WORDS)
- CON -1
- NSZ EQU *-I NOISE SIZE (24/BITS, 18/UBC, 18/LENGTH)
- CON 0
- TRK EQU *-I TRACK BITS, TAPE TYPE AND LABEL TYPE
- CON 0 1/NT,1/MT,2/TAPE TYPE,50/0,6/LABEL TYPE
- ODF EQU *-I FORMAT FLAG (OD SIMILAR TO L)
- CON 0
- O BSS 0 OUTPUT FILE
- OUTPUT FILEB OBUF,FBUFL,FET=FETL
- BSSZ FETODL OPTICAL DISK FET EXTENSION
- CON 0 NONZERO IF CONTROL WORDS ENABLED ON OUTPUT
- CON 0 1= S TAPE, 2= L TAPE, -1= F TAPE, 0= OTHER
- CON 0 1=E, 2=B, 0=NO CONVERSION
- CON -1 PRU SIZE (IN CM WORDS)
- CON 0 NOISE SIZE (24/BITS, 18/UBC, 18/LENGTH)
- CON 0 1/NT,1/MT,2/TAPE TYPE,50/0,6/LABEL TYPE
- CON 0 FORMAT FLAG (OD SIMILAR TO L)
- L FILEB LBUF,LBUFL ALTERNATE OUTPUT FILE
- ORG L
- VFD 42/0LOUTPUT,17/1,1/1
- ORG L+FETL
- TITLE DATA STORAGE.
- ** DATA STORAGE.
- BTSK CON 0 BLOCK TERMINATOR/SKIP WORD INDICATOR
- CWBC CON 0 READCW BYTE COUNT
- CRI CON -2 CALLING ROUTINE INDICATOR
- CT CON 1 COPY COUNT
- EL CON 0 ERROR LIMIT
- EORF CON 1 CURRENT BLOCK EOR FLAG
- ERRF CON 0 CURRENT BLOCK ERROR FLAG
- FUBC CON 0 FULL BLOCK UNUSED BIT COUNT (S, L TAPES)
- FWWB CON BUF1+1 FWA WORKING BUFFER
- LVL CON 0 EOR LEVEL NUMBER
- LWDB CON 0 LWA+1 DATA TRANSFERRED TO WORKING BUFFER
- NS CON 0 NOISE SIZE
- NSFG CON 0 NOISE SIZE FORCED UP FLAG
- RWCB VFD 1/1,59/0 REMAINING WORDS IN CURRENT BLOCK
- RWTT CON 0 REMAINING WORDS TO TRANSFER
- SBT CON -1 SINGLE BUFFER READ/WRITE THRESHOLD
- SK CON 0 SKIP FLAG
- TC CON 1 TERMINATION CONDITION (-1=EOI,0=EOD,1=EOF)
- UBC CON 0 UNUSED BIT COUNT FOR CURRENT WRITE
- UBCB CON 0 UNUSED BIT COUNT FOR CURRENT BLOCK
- VF CON 0 VERIFY FLAG
- BC CON -1 BLOCK COUNT
- RC CON 0 RECORD COUNT
- ESPI CON 0 ERROR BLOCKS SKIPPED/PROCESSED INDICATOR
- NPDI CON 0 NOISE BLOCKS PADDED/DELETED INDICATOR
- RSAI CON 0 RECORD SPLIT ALLOWED INDICATOR
- SEWI CON 0 SKIP EOF WRITE INDICATOR
- TLLI CON 0 TRUNCATE LONG LINES INDICATOR
- BFCT CON 0 BAD FORMAT BLOCK COUNT
- NZCT CON 0 NOISE BLOCK COUNT
- PBCT CON 0 PARITY/BLOCK TOO LARGE ERROR COUNT
- RSCT CON 0 RECORD SPLIT COUNT
- FCPY CON 0 FILE COPY COUNT
- RCPY CON 0 RECORD COPY COUNT
- WCPY CON 0 WORD COPY COUNT
- SPACE 4,10
- ** TECA - TABLE OF ERROR COUNT ADDRESSES.
- *
- *T 6/ EF, 18/ DMSA, 18/ OMSA, 18/ ERCA
- *
- * EF ERROR FLAG VALUE.
- * DMSA DAYFILE ERROR SUMMARY MESSAGE ADDRESS.
- * OMSA ALTERNATE OUTPUT FILE ERROR MESSAGE ADDRESS.
- * ERCA ERROR COUNT ADDRESS.
- TECA BSS 0
- VFD 6/-1,18/IESA,18/PDED,18/PBCT PARITY/BLOCK TOO LARGE
- VFD 6/1,18/IESC,18/PDEF,18/BFCT BAD FORMAT BLOCK ERROR
- TECAL1 EQU *-TECA
- VFD 6/0,18/IESD,18/0,18/NZCT NOISE BLOCKS PROCESSED
- VFD 6/0,18/IESE,18/0,18/RSCT RECORD SPLITS PROCESSED
- TECAL2 EQU *-TECA
- TITLE COPY/COPYBF/COPYEI.
- COPY SPACE 4,10
- ** COPY - COPY ONE FILE TO ANOTHER UNTIL SPECIFIED TERMINATION
- * CONDITION IS MET.
- *
- * EXIT TO *CPY*.
- COPY SX6 -1 INDICATE *COPY* CALL
- RJ CTP COPY/TCOPY PRESET PROGRAM
- EQ CPY PROCESS FILE COPY
- COPYBF SPACE 4,10
- ** COPYBF - COPY SPECIFIED NUMBER OF FILES FROM ONE FILE TO
- * ANOTHER.
- *
- * EXIT TO *CPY*.
- COPYBF SX6 1 INDICATE *COPYBF* CALL
- RJ PRS PRESET PROGRAM
- EQ CPY PROCESS FILE COPY
- COPYEI SPACE 4,10
- ** COPYEI - COPY ONE FILE TO ANOTHER UNTIL END OF INFORMATION
- * IS ENCOUNTERED.
- *
- * EXIT TO *CPY*.
- COPYEI SX7 -1 SET TERMINATION CONDITION
- SX6 2 INDICATE *COPYEI* CALL
- SA7 TC
- RJ PRS PRESET PROGRAM
- * EQ CPY PROCESS COPY TO EOI
- CPY SPACE 4,10
- ** CPY - COPY FILES.
- *
- * EXIT TO *SBC*, IF SINGLE BUFFER COPY.
- * TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- *
- * USES A - 0, 1, 2.
- * X - 1, 2.
- *
- * CALLS CPF, WNB=.
- CPY SA2 SBT GET SINGLE BUFFER COPY INDICATOR
- PL X2,SBC IF NO DATA MANIPULATION REQUIRED
- SA1 O+CWF
- SA0 BUFL-3 DEFAULT WORKING BUFFER LENGTH
- ZR X1,CPY1 IF CONTROL WORD WRITE DISABLED
- RECALL O
- WRITECW O,* PRESET CONTROL WORD WRITE FUNCTION
- SA2 O+PRU GET OUTPUT PRU SIZE
- SA0 X2+
- CPY1 RJ CPF COPY FILE
- SA1 CT
- NG X0,END5 IF EOI ENCOUNTERED
- ZR X1,END IF COPY COMPLETE
- EQ CPY1 CONTINUE COPY
- SBC SPACE 4,10
- ** SBC - SINGLE BUFFER COPY.
- *
- * EXIT TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- *
- * USES A - 0, 1, 2, 3, 4, 6, 7.
- * B - 3, 6, 7.
- * X - ALL.
- *
- * CALLS ABP, CIO=, DRN, PDE, PEF, SYS=, WNB=.
- *
- * PROGRAMMER,S NOTE - WHEN CHECKING FOR FET COMPLETE AND
- * DATA IN THE BUFFER, THE FET STATUS MUST BE PICKED UP
- * BEFORE THE BUFFER POINTER.
- SBC RECALL O
- WRITECW O,* PRESET CONTROL WORD WRITE
- SA2 I+3
- BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- SA0 X2+ INITIALIZE INPUT PSEUDO OUT POINTER
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- EQ SBC13 INITIATE CONTROL WORD READ
- * CHECK FOR INPUT BLOCK AVAILABLE.
- SBC1 SA2 I CHECK INPUT FILE STATUS
- SA3 I+2 CHECK INPUT IN = PSEUDO OUT POINTER
- BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
- SX1 A0
- IX1 X3-X1
- LX2 59-0
- NZ X1,SBC3 IF INPUT BLOCK AVAILABLE
- PL X2,SBC7 IF BUFFER BUSY
- LX2 59-11-59+0
- NG X2,SBC17 IF PARITY ERROR STATUS IN FET
- LX2 59-3-59+11
- PL X2,SBC7 IF NOT EOF
- LX2 59-9-59+3
- PL X2,SBC2 IF NOT EOI
- SX0 -1 INDICATE EOI ENCOUNTERED
- * PROCESS EOF OR EOI.
- SBC2 RJ PEF PROCESS EOF
- SA1 CT
- NG X0,END5 IF EOI ENCOUNTERED
- ZR X1,END IF COPY COMPLETE
- SA2 O+2 UPDATE INPUT IN = OUTPUT IN
- LX6 X2
- BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- SA6 I+2
- SA0 X2 UPDATE INPUT PSEUDO OUT POINTER
- SX0 B1 FORCE CHECK ON OUTPUT
- SA3 SBT
- NZ X3,SBC13 IF NOT LARGE L OR F TAPE COPY
- SA2 SK
- NZ X2,SBC13 IF SKIP SET
- SA6 A6+B1 UPDATE INPUT OUT = OUTPUT IN
- WRITECW O,R FORCE WRITE ON LARGE L OR F TAPE
- EQ SBC13 REINITIATE CONTROL WORD READ
- * PROCESS INPUT BLOCK.
- SBC3 SX0 B1 INDICATE INPUT BLOCK TRANSFERRED
- SA3 BC INCREMENT BLOCK COUNT
- SX5 B1 INDICATE DATA TRANSFERRED
- IX6 X3+X5
- SA4 A0 CRACK CONTROL WORD HEADER
- MX7 -24
- SA6 A3
- BX7 -X7*X4 BYTE COUNT
- SX2 4 CALCULATE WORD COUNT
- IX7 X7+X2
- SX2 X2+B1
- IX7 X7/X2
- AX4 36
- SB6 X7
- SA2 EORF CHECK FOR PREVIOUS EOR
- SB7 X4 PRU SIZE
- ZR X2,SBC4 IF PREVIOUS BLOCK NOT EOR
- SA2 I+4 GET FWA DATA IN BLOCK
- SX3 B1
- SX1 A0
- RJ ABP
- BX2 -X6 INDICATE BLOCK IN CIO BUFFER
- SX1 X6+B6
- RJ DRN DISPLAY RECORD NAME
- SBC4 SA4 I+SLF
- SA2 I+4
- SX6 -B1 INDICATE EOR STATUS FOR S, L, F TAPE
- NZ X4,SBC5 IF S, L, OR F INPUT TAPE
- SX6 B6-B7 NO EOR IF FULL BLOCK
- SBC5 SA1 WCPY
- SA6 EORF SAVE EOR FLAG
- SX7 B6
- IX7 X1+X7 INCREMENT WORD COPY COUNT
- SA7 A1
- SX1 A0
- ZR X6,SCB5.1 IF NOT EOR/EOF
- SX3 B6+1
- RJ ABP FIND POSITION TRAILER CONTROL WORD
- SA1 RCPY
- SA2 I+4
- SA4 X6 TRAILER CONTROL WORD
- MX7 -12
- LX4 12
- SX6 X1+B1 INCREMENT RECORD COPY COUNT
- SA6 A1
- SA1 FCPY
- BX7 -X7*X4
- SX7 X7-17B CHECK FOR EOF
- NZ X7,SCB5.1 IF NOT EOF
- SX6 X1+1 INCREMENT FILE COUNT
- SA6 A1+
- SCB5.1 SX3 B6+2 ADVANCE OVER BLOCK AND CONTROL WORDS
- SX1 A0
- RJ ABP
- SA1 A0+ GET CONTROL WORD HEADER
- NG X1,SBC16 IF ERROR OCCURRED ON THIS BLOCK
- * TRANSFER BLOCK TO OUTPUT.
- SBC6 SA6 O+2 ADVANCE OUTPUT IN POINTER
- SA1 SK
- SA0 X6 ADVANCE INPUT PSEUDO OUT POINTER
- ZR X1,SBC7 IF SKIP NOT SET
- SA6 A6+B1 ADVANCE OUTPUT OUT POINTER
- SA6 I+3 ADVANCE INPUT OUT POINTER
- EQ SBC11 CONTINUE CONTROL WORD READ
- * CHECK FOR REINITIATE CONTROL WORD WRITE.
- SBC7 SA1 SK
- NZ X1,SBC11 IF SKIP SET
- SA2 O CHECK OUTPUT FILE STATUS
- SA1 O+2
- LX2 59-0
- PL X2,SBC10 IF BUFFER BUSY
- SA2 A1+B1 CHECK BUFFER THRESHOLD
- SA3 SBT
- IX1 X1-X2 (IN-OUT)
- IX2 X1-X3 (IN-OUT) - 1/3(BUFFER SIZE)
- ZR X1,SBC10 IF BUFFER EMPTY
- ZR X3,SBC9 IF FORCE WRITE ON LARGE L OR F TAPE
- PL X1,SBC8 IF IN .GT. OUT
- LX3 1
- IX2 X3+X1 2/3(BUFFER SIZE) - (OUT-IN)
- SBC8 NG X2,SBC10 IF BUFFER THRESHOLD NOT REACHED
- SBC9 WRITECW O REINITIATE CONTROL WORD WRITE
- * CHECK FOR OUTPUT BLOCK WRITTEN.
- SBC10 SA1 O+3 CHECK OUTPUT OUT = INPUT OUT
- SA2 I+3
- IX3 X1-X2
- ZR X3,SBC11 IF BLOCK NOT WRITTEN
- BX6 X1
- SX0 X0+B1 INDICATE OUTPUT BLOCK COMPLETE
- SA6 A2 UPDATE INPUT OUT = OUTPUT OUT
- * CHECK FOR REINITIATE CONTROL WORD READ.
- SBC11 SA4 I CHECK INPUT FILE STATUS
- LX4 59-0
- PL X4,SBC15 IF BUFFER BUSY
- SA1 I+2
- LX4 59-11-59+0
- NG X4,SBC15 IF PARITY ERROR STATUS IN FET
- LX4 59-3-59+11
- NG X4,SBC15 IF EOF/EOI ENCOUNTERED
- SA3 SBT CHECK BUFFER THRESHOLD
- SA2 A1+B1
- IX1 X1-X2 (IN-OUT)
- IX2 X3+X1 1/3(BUFFER SIZE) + (IN-OUT)
- ZR X1,SBC13 IF BUFFER EMPTY
- ZR X3,SBC15 IF WAIT FOR WRITE ON LARGE L OR F TAPE
- NG X1,SBC12 IF OUT .GT. IN
- LX3 1
- IX2 X1-X3 (IN-OUT) - 2/3(BUFFER SIZE)
- SBC12 PL X2,SBC15 IF BUFFER THRESHOLD NOT REACHED
- SBC13 SA1 TC CHECK TERMINATION CONDITION
- PL X1,SBC14 IF NOT COPY TO EOI
- SA2 SEWI CHECK SKIP EOF WRITE INDICATOR
- NZ X2,SBC14 IF PO=M OPTION SELECTED
- READCW I,0 INITIATE CONTROL WORD READ TO EOI
- EQ SBC15 CHECK FOR RECALL
- SBC14 READCW I,17B INITIATE CONTROL WORD READ TO EOF
- * CHECK FOR RECALL.
- SBC15 NZ X0,SBC1 IF INPUT AND/OR OUTPUT BLOCKS TRANSFERRED
- RECALL WAIT FOR DATA TRANSFER
- EQ SBC1 CHECK FOR INPUT BLOCKS
- * PROCESS PARITY OR BLOCK TOO LARGE ERROR.
- SBC16 BX5 X6 SAVE ADVANCED POINTER VALUE
- SB3 B0 INDICATE PARITY/BLOCK TOO LARGE ERROR
- RJ PDE PROCESS ERROR
- BX6 X5
- SA2 ESPI CHECK ERROR BLOCKS SKIPPED OR PROCESSED
- SX7 A0
- NZ X2,SBC6 IF BLOCK TO BE PROCESSED
- SA7 I+2 BACKUP INPUT IN POINTER
- RECALL I WAIT FOR ERROR STATUS COMPLETION
- SBC17 SX2 I
- RJ CUE CHECK FOR UNRECOVERABLE ERROR
- SX0 B1+ FORCE CHECK ON OUTPUT
- SA3 SBT
- NZ X3,SBC13 IF NOT LARGE L OR F TAPE COPY
- RECALL O WAIT FOR WRITE TO COMPLETE
- EQ SBC13 REINITIATE CONTROL WORD READ
- TITLE COMMON COPY ROUTINES.
- ABP SPACE 4,15
- ** ABP - ADVANCE BUFFER POINTER.
- *
- * EXIT (A2) = ADDRESS OF LIMIT POINTER.
- * (X1) = IN OR OUT POINTER TO BE UPDATED.
- * (X2) = LIMIT POINTER.
- * (X3) = NUMBER OF WORDS TO ADVANCE.
- *
- * EXIT (X6) = ADVANCED IN OR OUT POINTER VALUE.
- *
- * USES A - 2.
- * X - 1, 2, 3, 6.
- ABP SUBR ENTRY/EXIT
- SX2 X2+
- IX2 X2-X1
- IX6 X3-X2
- NG X6,ABP1 IF NO WRAP AROUND
- SA2 A2-3 FIRST
- BX3 X6
- SX1 X2
- ABP1 IX6 X1+X3
- EQ ABPX RETURN
- ABT SPACE 4,15
- ** ABT - ABORT ROUTINE.
- *
- * FLUSHES OUTPUT FILE BUFFER. FLUSHES ALTERNATE OUTPUT FILE
- * BUFFER, IF NECESSARY. ISSUES DAYFILE MESSAGES.
- *
- * ENTRY (B5) = FWA MESSAGE, IF ENTRY AT *ABT4*.
- *
- * USES A - 1, 2, 6.
- * B - 2.
- * X - 1, 2, 6.
- *
- * CALLS CIO=, IES, MSG=, SNM, SYS=.
- ABT4 SX6 B5+ SAVE ABORT MESSAGE ADDRESS
- SA1 I SET NAME IN MESSAGE
- MX2 42
- SA6 ABTA
- BX1 X2*X1
- SB2 1RX
- RJ SNM
- * EQ ABT
- ABT SA1 SK
- NZ X1,ABT2 IF SKIP SET
- SA1 O+CWF
- ZR X1,ABT1 IF CONTROL WORDS DISABLED ON OUTPUT
- WRITECW O FLUSH OUTPUT BUFFER
- EQ ABT2 ABORT
- ABT1 WRITER O FLUSH OUTPUT BUFFER
- ABT2 SA1 EL
- ZR X1,ABT3 IF EXTENDED ERROR PROCESSING NOT IN EFFECT
- WRITER L FLUSH ALTERNATE OUTPUT FILE BUFFER
- ABT3 RECALL I FORCE 1MT ERROR MESSAGES TO DAYFILE FIRST
- RJ IES ISSUE ERROR SUMMARY MESSAGES
- SA2 ABTA ISSUE ABORT MESSAGE
- MESSAGE X2,0
- ABORT
- ABTA CON ABTB ABORT MESSAGE ADDRESS
- ABTB DATA C* ERROR LIMIT EXCEEDED.*
- ABTC DATA C* RECORD TOO LARGE ON XXXXXXX.*
- ABTD DATA C* UNRECOVERABLE ERROR ON XXXXXXX.*
- BFL SPACE 4,15
- ** BFL - BLANK FILL LINE.
- *
- * ENTRY (B6) = LWA+1 CODED LINE.
- * (B7) = LENGTH OF FULL LINE.
- * (FWWB) = FWA WORKING BUFFER.
- *
- * EXIT (B6) = LWA+1 BLANK FILLED LINE.
- *
- * USES A - 1, 2, 6.
- * B - 4, 6.
- * X - 1, 2, 3, 6.
- *
- * CALLS SFN.
- BFL SUBR ENTRY/EXIT
- SA2 FWWB FWA WORKING BUFFER
- SA1 B6-B1 GET LAST WORD OF LINE
- SB4 X2+B7
- NZ X1,BFL1 IF LAST WORD NOT ZERO
- SB6 B6-B1 GET PREVIOUS WORD OF LINE
- SA1 B6-B1
- BFL1 RJ SFN BLANK FILL LAST DATA WORD
- SA6 A1
- SA2 =10H
- BX6 X2
- BFL2 GE B6,B4,BFLX IF AT LINE LIMIT
- SA6 B6 BLANK FILL TO LINE LIMIT
- SB6 B6+B1
- EQ BFL2 CONTINUE BLANK FILL
- CPF SPACE 4,15
- ** CPF - COPY FILE.
- *
- * ENTRY (A0) = WORD COUNT FOR READ.
- * (FWWB) = FWA WORKING BUFFER.
- *
- * EXIT (X0) .LT. 0, IF EOI ENCOUNTERED.
- * (CT) = 0, IF COPY COMPLETE.
- *
- * USES A - 1, 2, 4.
- * B - 2, 3, 4, 5, 6, 7.
- * X - 0, 1, 2, 4, 5.
- *
- * CALLS CIO=, CWR, CWW, DRN, PEF, RDW=, SSL, WNB=, WTW=.
- CPF9 SX0 X1+B1 PROCESS END OF FILE
- RJ PEF
- CPF SUBR ENTRY/EXIT
- BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- SA1 I+CWF
- SX0 B1 INDICATE READ TO BE REINITIATED
- ZR X1,CPF1 IF CONTROL WORD READ DISABLED
- SA2 I+TCF
- SB3 -B1
- SB2 X2
- LT B2,B3,CPF1 IF I OR SI-C TAPE READ VIA S/L FORMAT
- READCW I,17B INITIATE CONTROL WORD READ
- CPF1 SA1 O+CWF
- NZ X1,CPF2 IF CONTROL WORD WRITE ENABLED
- RECALL O
- WRITE O,* PRESET STANDARD WRITE
- CPF2 SA1 I+CWF
- ZR X1,CPF3 IF CONTROL WORD READ DISABLED
- CWRW I,(FWWB),A0
- EQ CPF5 CHECK READ STATUS
- CPF3 ZR X0,CPF4 IF PREVIOUS READ STATUS NOT EOR
- READ I INITIATE STANDARD READ
- CPF4 SA4 FWWB FWA WORKING BUFFER
- READW I,X4,A0
- CPF5 NG X1,CPF9 IF EOF/EOI ENCOUNTERED
- SX5 B1+ INDICATE DATA TRANSFERRED
- SB4 X0 SAVE PREVIOUS READ STATUS
- SB5 X1 SAVE CURRENT READ STATUS
- ZR X0,CPF6 IF PREVIOUS READ STATUS NOT EOR
- RJ VNS VERIFY NOISE SIZE BLOCK
- SX0 B5 RESTORE CURRENT READ STATUS
- NG X4,CPF2 IF NOISE BLOCK
- SA2 FWWB DISPLAY RECORD NAME
- RJ DRN
- CPF6 SA1 FWWB FWA WORKING BUFFER
- SA2 SK
- SX0 B5 RESTORE CURRENT READ STATUS
- SB3 X1
- SA3 WCPY
- NZ X2,CPF10 IF SKIP SET
- SA2 O+SLF
- SA1 O+CWF
- SB7 B6-B3
- SB2 X2
- SX4 B7
- IX6 X4+X3 ADD CURRENT WORD COPY COUNT
- SA6 A3+
- ZR X1,CPF8 IF CONTROL WORD WRITE DISABLED
- LE B2,CPF7 IF NOT S OR L OUTPUT TAPE
- RJ SSL SPECIAL PROCESSING FOR S OR L OUTPUT TAPE
- CPF7 CWWW O,B3,B7
- EQ CPF2 CONTINUE COPY
- CPF8 WRITEW O,B3,B7
- ZR X0,CPF2 IF CURRENT READ STATUS NOT EOR
- WRITER O
- SA1 RCPY INCREMENT RECORD COUNT
- SX6 X1+B1
- SA6 A1
- EQ CPF1 PRESET STANDARD WRITE
- CPF10 SX4 B6-B3
- IX6 X4+X3 ADD WORDS COPIED
- SA6 A3+
- ZR X0,CPF2 IF NOT EOR
- SA1 RCPY INCREMENT RECORD COUNT
- SX6 X1+B1
- SA6 A1
- EQ CPF2 CONTINUE COPY
- CUE SPACE 4,15
- ** CUE - CHECK UNRECOVERABLE ERROR.
- *
- * CLEARS ERROR STATUS FROM FET AND CLEARS BLOCK ERROR FLAG.
- * ABORTS IF UNRECOVERABLE ERROR IS DETECTED (IF LAST BLOCK
- * PROCESSED DID NOT HAVE A PARITY OR BLOCK TOO LARGE ERROR).
- *
- * ENTRY (X2) = FWA FET.
- * (ERRF) = ERROR FLAG FOR LAST BLOCK PROCESSED.
- *
- * EXIT TO *ABT4*, IF UNRECOVERABLE ERROR DETECTED.
- *
- * USES A - 1, 3, 6, 7.
- * B - 5.
- * X - 1, 3, 6, 7.
- CUE SUBR ENTRY/EXIT
- SA3 ERRF LAST BLOCK ERROR FLAG
- SB5 ABTD * UNRECOVERABLE ERROR ON LFN.*
- SA1 X2
- PL X3,ABT4 IF NO PARITY ERROR ON LAST BLOCK
- MX6 4 CLEAR ERROR STATUS FROM FET+0 BITS 10 - 13
- LX6 14
- SX7 B0 CLEAR BLOCK ERROR FLAG
- BX6 -X6*X1
- SA7 A3
- SA6 A1
- EQ CUEX RETURN
- CWR SPACE 4,20
- ** CWR - CONTROL WORD READ WORDS.
- *
- * ENTRY (FWWB) = FWA WORKING BUFFER.
- * (X7) = NUMBER OF WORDS TO TRANSFER.
- *
- * EXIT (X1) = -1, IF EOF ENCOUNTERED.
- * = -2, IF EOI ENCOUNTERED.
- * = 0, IF TRANSFER COMPLETE AND NO EOR DETECTED.
- * = (B6), IF EOR WAS DETECTED ON INPUT BEFORE OR
- * IMMEDIATELY AFTER TRANSFER WAS COMPLETED.
- * (B6) = LWA+1 DATA TRANSFERRED.
- * (LVL) = EOR LEVEL NUMBER.
- * (UBC) = UNUSED BIT COUNT FOR LAST WORD TRANSFERRED.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 6, 7.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS CEL, INB, RDW=.
- CWR SUBR ENTRY/EXIT
- SA1 FWWB FWA WORKING BUFFER
- SA7 RWTT SAVE NUMBER OF WORDS TO TRANSFER
- BX6 X6-X6
- LX7 X1
- SA2 RWCB
- SA7 LWDB
- SA6 LVL CLEAR EOR LEVEL NUMBER
- SA6 UBC CLEAR UNUSED BIT COUNT
- PL X2,CWR1 IF WORDS REMAINING IN CURRENT BLOCK
- RJ INB INITIALIZE NEW BLOCK
- NG X1,CWRX IF EOF/EOI ENCOUNTERED
- CWR1 SA1 RWCB REMAINING WORDS IN CURRENT BLOCK
- SA2 RWTT REMAINING WORDS TO TRANSFER
- IX6 X2-X1
- SA4 BTSK BLOCK TERMINATOR/SKIP WORD INDICATOR
- BX3 X2
- SB7 X2
- NG X6,CWR2 IF MORE THAN ENOUGH DATA TO FILL BUFFER
- BX3 X1
- SB7 X1+B1 ALSO TRANSFER CONTROL WORD TRAILER
- ZR X4,CWR2 IF NO BLOCK TERMINATOR OR EXTRA WORD
- SB7 B7+B1 ALSO TRANSFER BLOCK TERMINATOR/EXTRA WORD
- CWR2 SA4 LWDB LWA+1 DATA IN WORKING BUFFER
- ZR B7,CWR3 IF NO DATA REQUESTED
- IX6 X1-X3 DECREMENT NUMBER OF WORDS IN CURRENT BLOCK
- SA6 A1
- IX7 X2-X3 DECREMENT NUMBER OF WORDS TO TRANSFER
- SA7 A2
- IX6 X4+X3 INCREMENT WORKING BUFFER ADDRESS
- SA6 A4
- READW I,X4,B7
- CWR3 SA4 RWCB
- NZ X4,CWR7 IF TRANSFER COMPLETE AND NO EOR
- SA3 LWDB PROCESS TRAILER CONTROL WORD
- SA4 BTSK CHECK FOR BLOCK TERMINATOR OR EXTRA WORD
- SA1 X3 GET TRAILER CONTROL WORD
- ZR X4,CWR4 IF NO BLOCK TERMINATOR OR EXTRA WORD
- SA1 A1+B1
- CWR4 LX7 X1
- SA2 UBCB SET UNUSED BIT COUNT FOR BLOCK
- AX7 48
- BX6 X2
- SA7 LVL
- MX7 1 SET INITIALIZE NEW BLOCK FLAG
- SA6 UBC
- SA7 RWCB
- ZR X2,CWR5 IF NO UNUSED BIT COUNT
- SB3 59 CLEAR EXTRANEOUS DATA FROM LAST DATA WORD
- SB2 X2
- MX2 1
- SA1 X3-1
- SB2 B3-B2
- AX2 B2
- BX6 X2*X1
- SA6 A1
- CWR5 SB2 X4
- LE B2,CWR6 IF NOT I OR SI-C BLOCK TERMINATOR
- SA1 I+TCF
- SB2 B1+B1
- SB2 -B2
- SB3 X1
- NE B2,B3,CWR5.1 IF NOT SI-CODED TAPE
- SA2 X3 PROCESS SI-CODED BLOCK TERMINATOR
- RJ SIT
- PL X1,CWR6 IF NOT SI-CODED EOF
- EQ CWRX RETURN
- CWR5.1 SB2 B2-B1
- NE B2,B3,CWR6 IF NOT I FORMAT VIA L FORMAT
- SA2 X3 PROCESS I BLOCK TERMINATOR
- RJ IBT
- NG X1,CWRX IF I FORMAT EOF ENCOUNTERED
- CWR6 SA2 RWTT
- ZR X2,CWR7 IF TRANSFER COMPLETE
- SA3 EORF
- NZ X3,CWR7 IF EOR ON CURRENT BLOCK
- RJ INB INITIALIZE NEW BLOCK
- PL X1,CWR1 IF EOF/EOI NOT ENCOUNTERED
- CWR7 SA1 I+TCF
- SB2 B1+B1
- SB2 -B2
- SB3 X1
- NE B2,B3,CWR8 IF NOT SI-CODED TAPE
- RJ CEL CONVERT END OF LINES
- CWR8 SA3 LWDB LWA+1 DATA TRANSFERRED
- SA4 RWCB REMAINING WORDS IN CURRENT BLOCK
- SB6 X3
- BX1 X1-X1
- SA2 EORF EOR FLAG
- PL X4,CWRX IF CURRENT BLOCK NOT DEPLETED
- ZR X2,CWRX IF NO EOR ON CURRENT BLOCK
- SX1 B6
- EQ CWRX RETURN
- CWW SPACE 4,20
- ** CWW - CONTROL WORD WRITE WORDS.
- *
- * ENTRY (X0) .NE. 0, IF EOR TO BE GUARANTEED IF MS/I/LI/SI-B
- * OUTPUT.
- * (X2) = FWA FET.
- * (B6) = FWA WORKING BUFFER.
- * (B7) = NUMBER OF WORDS TO TRANSFER.
- * IF (B7) = 0, EOR ONLY WILL BE WRITTEN IF MS/I/LI/SI-B
- * OUTPUT.
- * (UBC) = UNUSED BIT COUNT FOR BLOCK.
- * (LVL) = EOR LEVEL NUMBER.
- *
- * EXIT (X2) = FWA FET.
- *
- * USES A - 1, 3, 4, 6, 7.
- * B - 5, 6, 7.
- * X - 1, 3, 4, 6, 7.
- *
- * CALLS WTW=.
- CWW3 SA1 RCPY EOR VIA NON-FULL PRU
- SX6 X1+B1
- SA6 A1
- CWW SUBR ENTRY/EXIT
- ZR B7,CWW2 IF WORKING BUFFER EMPTY
- SX6 B7 SAVE NUMBER OF WORDS
- SB5 B7
- SA6 CWWA
- SX3 5 BUILD CONTROL WORD HEADER
- SA4 X2+ODF
- SA1 UBC GET UNUSED BIT COUNT FOR BLOCK
- IX6 X6*X3 CALCULATE NUMBER OF BYTES
- ZR X4,CWW1 IF MS/I/LI/SI-B OUTPUT
- BX3 X1
- ZR X1,CWW1 IF NO UNUSED BIT COUNT
- SX4 12 CALCULATE UNUSED BIT COUNT FOR BYTE
- LX7 X4
- IX3 X3/X4
- IX6 X6-X3
- IX3 X3*X7
- IX1 X1-X3
- LX1 24
- BX6 X1+X6 MERGE UNUSED BIT COUNT AND BLOCK LENGTH
- CWW1 SB6 B6-B1 RESET FWA WORKING BUFFER
- SA3 LVL GET EOR LEVEL NUMBER
- SA6 B6 STORE HEADER CONTROL WORD
- BX7 X3
- SB7 B5+B1 INCREMENT LENGTH OF WORKING BUFFER
- LX7 -12
- SA7 B6+B7 STORE TRAILER CONTROL WORD
- SB7 B7+B1
- WRITEW X2,B6,B7 WRITE CONTROL WORD BLOCK
- SA3 CWWA CHECK IF FULL PRU WRITTEN
- SA1 X2+PRU
- IX1 X1-X3
- NZ X1,CWW3 IF LAST BLOCK NOT FULL PRU
- CWW2 SA3 LVL BUILD TRAILER CONTROL WORD
- SA1 X2+SLF
- BX7 X3
- ZR X0,CWWX IF NOT EOR STATUS
- SA3 RCPY INCREMENT RECORD COUNT
- SX6 X3+B1
- SA6 A3
- LX7 -12
- SB6 CWWB
- NZ X1,CWWX IF NOT MS/OD/I/LI/SI-B OUTPUT
- SA7 B6+B1
- WRITEW X2,B6,B1+B1 WRITE EOR ONLY
- EQ CWWX RETURN
- CWWA CON 0 BLOCK SIZE IN WORDS
- CWWB CON 0 CONTROL WORD EOR
- CON 0
- DRN SPACE 4,15
- ** DRN - DISPLAY RECORD NAME.
- *
- * ENTRY (X2) = FWA RECORD. IF (X2) .LT. 0, IT IS THE
- * COMPLEMENT OF FWA RECORD IN INPUT CIO BUFFER.
- * (X1) = FWA RECORD, IF ZERO LENGTH RECORD.
- *
- * EXIT (RC) = UPDATED RECORD COUNT.
- *
- * USES A - 1, 2, 3, 6, 7.
- * X - 1, 2, 3, 6, 7.
- *
- * CALLS MSG=.
- DRN SUBR ENTRY/EXIT
- SA3 RC INCREMENT RECORD COUNT
- SX7 B1
- IX6 X3+X7
- PL X2,DRN1 IF NOT DISPLAY FROM CIO BUFFER
- IX7 X2-X7
- BX2 -X2
- DRN1 IX1 X1-X2
- SA6 A3
- ZR X1,DRN2 IF ZERO LENGTH RECORD
- SA1 X2 GET RECORD NAME
- MX6 12
- BX6 X6*X1
- LX6 12
- SX6 X6-7700B
- NZ X6,DRN2 IF NOT 77 TABLE
- SA3 I+4
- SA1 A1+B1
- SX3 X3
- PL X7,DRN2 IF NOT DISPLAY FROM CIO BUFFER
- SA2 I+1
- IX6 X3+X7 CHECK FOR WRAP AROUND
- NZ X6,DRN2 IF NO WRAP AROUND
- SA1 X2
- DRN2 MX7 42
- BX7 X7*X1
- SA7 DRNA+1 ENTER NAME IN MESSAGE
- MESSAGE A7-B1,1 DISPLAY RECORD NAME
- EQ DRNX RETURN
- DRNA DATA 10H COPYING
- CON 0,0
- END SPACE 4,15
- ** END - END ROUTINE.
- *
- * FLUSHES OUTPUT BUFFER, IF NECESSARY. FLUSHES ALTERNATE
- * OUTPUT FILE BUFFER, IF NECESSARY. ISSUES DAYFILE MESSAGES.
- *
- * ENTRY AT *END5*, IF EOI ENCOUNTERED BEFORE COPY COMPLETE.
- *
- * EXIT TO *VFY*, IF VERIFY REQUESTED.
- *
- * USES A - 1, 2, 6.
- * X - 1, 2, 6.
- *
- * CALLS CIO=, IES, MSG=, SYS=.
- END5 SX6 ENDC *EOI ENCOUNTERED* OR *FILE NOT FOUND*
- SA1 ENDG
- NZ X1,END3.4 IF *FILE NOT FOUND*
- SA6 ENDA
- * EQ END
- END SA1 SK
- NZ X1,END2 IF SKIP SET
- RECALL O
- SA1 O+2 CHECK *IN* = *OUT*
- SA2 A1+B1
- IX1 X1-X2
- ZR X1,END2 IF OUTPUT BUFFER EMPTY
- SA2 O+CWF
- ZR X2,END1 IF CONTROL WORD WRITE DISABLED
- WRITECW O FLUSH OUTPUT BUFFER
- EQ END2 ISSUE COMPLETION MESSAGE
- END1 WRITE O FLUSH OUTPUT BUFFER
- END2 SA1 EL
- ZR X1,END3 IF EXTENDED ERROR PROCESSING NOT IN EFFECT
- WRITER L FLUSH ALTERNATE OUTPUT FILE BUFFER
- END3 RECALL I FORCE 1MT ERROR MESSAGES TO DAYFILE FIRST
- RECALL O
- RECALL L
- SA2 ENDA ISSUE ENDING MESSAGE
- MESSAGE X2,0
- SA2 ENDA
- SA1 X2+2 COPY STATUS
- SB2 1R/
- SB5 ENDF
- RJ SNM SET TERMINATION TYPE INTO MESSAGE
- SA1 FCPY FILE COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- MX0 1
- AX1 X0,B2
- BX1 X1*X4 ZERO FILL
- SB2 1R+
- RJ SNM SET FILE COUNT INTO MESSAGE
- SA1 FCPY
- SX1 X1-1
- ZR X1,END3.1 IF JUST ONE FILE
- SA1 =1LS
- END3.1 SB2 1R#
- RJ SNM SET PLURAL INTO MESSAGE
- SA1 RCPY RECORD COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- AX1 X0,B2
- BX1 X1*X4 ZERO FILL
- SB2 1R-
- RJ SNM SET FILE COUNT INTO MESSAGE
- SA1 RCPY
- SX1 X1-1
- ZR X1,END3.2 IF JUST ONE RECORD
- SA1 =1LS
- END3.2 SB2 1R$
- RJ SNM SET PLURAL INTO MESSAGE
- SA1 WCPY WORD COUNT
- RJ CDD CONVERT TO DISPLAY
- SB2 B2-B1
- AX1 X0,B2
- BX1 X1*X4 ZERO FILL
- SB2 1R,
- RJ SNM SET WORD COUNT INTO MESSAGE
- SA1 WCPY
- SX1 X1-1
- ZR X1,END3.3 IF JUST ONE WORD
- SA1 =1LS
- END3.3 SB2 1R=
- RJ SNM SET PLURAL INTO MESSAGE
- END3.4 MESSAGE ENDF
- RJ IES ISSUE ERROR SUMMARY MESSAGES
- SA1 VF
- NZ X1,VFY IF VERIFY REQUESTED
- ZR X0,END4 IF NO WARNING MESSAGES ISSUED
- MESSAGE ENDE,3 * CHECK DAYFILE FOR ERRORS.*
- END4 ENDRUN
- ENDA CON ENDB ENDING MESSAGE ADDRESS
- ENDB DATA C* COPY COMPLETE.*
- DATA L*END*
- ENDC DATA C* EOI ENCOUNTERED.*
- DATA L*EOI*
- ENDD DATA C* EOF ENCOUNTERED.*
- DATA L*EOF*
- ENDE DATA C* CHECK DAYFILE FOR ERRORS.*
- ENDF DATA C* ///. ++++++++++ FILE#; ---------- RECORD$; ,,,,,,,,,
- ,, WORD=.*
- ENDG CON 0 FILE NOT FOUND FLAG
- ERP$ SPACE 4,35
- ** ERP$ - ERROR PROCESSING ROUTINE.
- *
- * WHEN A NON-FATAL ERROR (ERROR STATUS 02 IN BITS 10-13 OF
- * FET+0) IS DETECTED, CIO= EXITS TO ERP$. SINCE ERROR
- * PROCESSING MUST BE ENABLED IN ORDER TO GET CONTROL BACK AFTER
- * A NON-FATAL ERROR HAS OCCURRED, AND EP BIT IS SET ONLY WHEN
- * CONTROL WORD READ IS ENABLED, THE ERROR PROCESSING ROUTINE
- * IS ENTERED AT ERP$ ONLY VIA CWR ROUTINE (CWR CALLS RDW=
- * WHICH CALLS CIO= WHEN BUFFER IS EMPTY OR THRESHOLD IS
- * REACHED, WHICH EXITS TO ERP$ UPON DETECTING 02 ERROR STATUS).
- *
- * WHEN A PARITY OR BLOCK TOO LARGE ERROR OCCURS, BIT 59 OF THE
- * HEADER CONTROL WORD OF THE BLOCK IN ERROR IS SET IN ADDITION
- * TO THE ERROR STATUS IN THE FET, AND THE CONTROL WORD READ
- * OPERATION TERMINATES SO THAT THE LAST BLOCK IN THE CIO BUFFER
- * IS THE ONE IN ERROR. WHEN SOME OTHER NON-FATAL ERROR SUCH AS
- * WRONG PARITY, DENSITY CHANGE, OR READY DROP OCCURS, ONLY THE
- * ERROR STATUS IS SET IN THE FET. THEREFORE, AFTER THE CIO
- * BUFFER IS EMPTIED, THE JOB MUST BE ABORTED WITH
- * *UNRECOVERABLE ERROR ON LFN.* IF THE LAST BLOCK PROCESSED
- * DID NOT HAVE A PARITY OR BLOCK TOO LARGE ERROR.
- *
- * ENTRY (X2) = FWA FET.
- * (ERRF) = ERROR FLAG FOR LAST BLOCK PROCESSED.
- *
- * EXIT (X7) = 0, IF EXIT TO *CIO=*.
- * (X7) = PREVIOUS READ FUNCTION CODE, IF EXIT
- * TO *CIO=+1*.
- * TO *CIO=*, IF CIO BUFFER NOT EMPTY (RETURN TO RDW=
- * WITHOUT REISSUING CIO FUNCTION).
- * TO *ERPX$* WHEN A RECOVERABLE ERROR OCCURS.
- *
- * USES A - 1, 3.
- * X - 1, 3, 7.
- *
- * CALLS CUE.
- ERP$ SA1 X2+2 IN POINTER
- SA3 A1+B1 OUT POINTER
- IX1 X1-X3
- BX7 X7-X7 CLEAR CIO ERROR STATUS
- NZ X1,CIO= IF BUFFER NOT EMPTY
- RJ CUE CHECK UNRECOVERABLE ERROR
- EQ ERPX$ RESUME *CIO* FUNCTION
- IES SPACE 4,10
- ** IES - ISSUE ERROR SUMMARY MESSAGES.
- *
- * EXIT (X0) = NUMBER OF ERROR SUMMARY MESSAGES ISSUED.
- *
- * USES A - 1, 2, 6.
- * B - 5, 6, 7.
- * X - 0, 1, 2, 6.
- *
- * CALLS INM, MSG=.
- IES SUBR ENTRY/EXIT
- SB6 B0
- BX0 X0-X0
- SB7 TECAL2
- IES1 GE B6,B7,IESX IF END OF ERROR COUNTS
- SA2 TECA+B6
- SB6 B6+B1
- SA1 X2
- ZR X1,IES1 IF NO ERRORS OF THIS TYPE OCCURRED
- AX2 36
- SX0 X0+B1
- SB5 X2+
- RJ INM INSERT NUMBER IN MESSAGE
- MESSAGE B5,3 ISSUE MESSAGE TO USERS DAYFILE
- EQ IES1 CONTINUE ERROR SUMMARY PROCESSING
- IESA DATA C* XXXXXXXXXX PARITY/BLOCK TOO LARGE ERRORS.*
- IESC DATA C* XXXXXXXXXX BAD FORMAT BLOCKS.*
- IESD DATA C* XXXXXXXXXXXXXXX NOISE BLOCKS PADDED.*
- IESE DATA C* XXXXXXXXXX RECORD SPLITS OCCURRED.*
- INB SPACE 4,15
- ** INB - INITIALIZE NEW BLOCK.
- *
- * EXIT CONTROL WORD HEADER CRACKED AND FLAGS/COUNTS SET.
- * (X1) = 0, IF INITIALIZATION COMPLETE.
- * = -1, IF EOF ENCOUNTERED.
- * = -2, IF EOI ENCOUNTERED.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS ABP, ISI, IXB, PDE, RDW=.
- INB8 SA2 I+TCF
- SX2 X2+1
- PL X2,INBX IF NOT I OR SI-C VIA S/L FORMAT
- SX1 -2 RETURN EOI IF TAPE MARK ENCOUNTERED
- INB SUBR ENTRY/EXIT
- INB1 READW I,INBA,B1 READ HEADER CONTROL WORD
- NG X1,INB8 IF EOF/EOI ENCOUNTERED
- SA2 BC INCREMENT BLOCK COUNT
- SX6 B1
- BX7 X7-X7 CLEAR BLOCK ERROR FLAG
- IX6 X2+X6
- SA6 A2
- SA7 ERRF
- SA4 INBA GET CONTROL WORD HEADER
- SA7 BTSK CLEAR BLOCK TERMINATOR/SKIP WORD INDICATOR
- MX3 -24 CRACK CONTROL WORD HEADER
- BX7 -X3*X4 BYTE COUNT
- SA7 CWBC READCW BYTE COUNT
- AX4 24
- MX2 -6
- LX3 X7
- BX6 -X2*X4 UNUSED BIT COUNT FOR BYTE
- SX1 4
- IX7 X7+X1 ROUND UP BYTE COUNT
- SX1 X1+B1
- BX2 X1
- IX7 X7/X1 CALCULATE WORD COUNT
- AX4 12
- IX2 X7*X2 CALCULATE UNUSED BIT COUNT FOR WORD
- SX1 12
- IX2 X2-X3
- ZR X2,INB2 IF NO EXTRA DATA BYTES
- IX2 X2*X1
- IX6 X2+X6
- INB2 SA6 UBCB SAVE UNUSED BIT COUNT FOR BLOCK
- SA7 RWCB SAVE WORD COUNT FOR BLOCK
- SA1 I+SLF
- SX6 -1 INDICATE EOR STATUS FOR S, L, F TAPE
- SX3 X4 PRU SIZE
- NZ X1,INB3 IF S, L, OR F TAPE
- IX6 X7-X3 NO EOR IF FULL BLOCK
- INB3 SA6 EORF SAVE EOR FLAG
- NG X4,INB6 IF ERROR OCCURRED ON THIS BLOCK
- INB4 SA2 I+TCF
- BX1 X1-X1
- SX3 X2+B1
- PL X2,INBX IF NOT TCOPY X, SI-CODED TO I INPUT TAPE
- NZ X3,INB5 IF NOT X BLOCK
- RJ IXB INITIALIZE X FORMAT TAPE BLOCK
- BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
- EQ INBX RETURN
- INB5 SX3 X3+1
- NZ X3,INB5.1 IF NOT SI-CODED BLOCK
- RJ ISI INITIALIZE SI-CODED TAPE BLOCK
- BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
- EQ INBX RETURN
- INB5.1 RJ IIB INITIALIZE I FORMAT TAPE BLOCK
- BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
- EQ INBX RETURN
- * PROCESS PARITY OR BLOCK TOO LARGE ERROR.
- INB6 SB3 B0 INDICATE PARITY/BLOCK TOO LARGE ERROR
- RJ PDE PROCESS ERROR
- SA1 ESPI ERROR BLOCKS SKIPPED/PROCESSED INDICATOR
- NZ X1,INB4 IF ERROR BLOCKS TO BE PROCESSED
- SA1 I+3 REMOVE BLOCK FROM BUFFER
- SA3 RWCB GET BLOCK WORD COUNT
- SX3 X3+B1 REMOVE BLOCK AND TRAILER CONROL WORD
- SA2 A1+B1 LIMIT
- RJ ABP ADVANCE INPUT OUT POINTER
- MX7 1 SET INITIALIZE NEW BLOCK FLAG
- SA6 A1
- SA7 A3+
- EQ INB1 PROCESS NEXT BLOCK
- INBA CON 0 CONTROL WORD HEADER
- INM SPACE 4,15
- ** INM - INSERT NUMBER IN MESSAGE.
- *
- * ENTRY (B5) = FWA MESSAGE TO BE ISSUED.
- * (X1) = NUMBER TO BE CONVERTED FOR MESSAGE.
- *
- * EXIT NUMBER CONVERTED TO DECIMAL DISPLAY AND ENTERED INTO
- * MESSAGE.
- *
- * USES B - 2.
- * X - 1.
- *
- * CALLS CDD, SNM.
- INM SUBR ENTRY/EXIT
- RJ CDD CONVERT NUMBER TO DECIMAL DISPLAY
- SB2 B2-B1 CLEAR BLANK FILL
- MX1 1
- AX1 B2
- BX1 X1*X4
- SB2 1RX
- RJ SNM ENTER NUMBER IN MESSAGE
- EQ INMX RETURN
- PDE SPACE 4,15
- ** PDE - PROCESS DATA BLOCK ERROR.
- *
- * ENTRY (B3) = 0, IF PARITY OR BLOCK TOO LARGE ERROR.
- * = 1, IF DATA ERROR.
- *
- * EXIT IF BLOCK ERROR FLAG NOT ALREADY SET, PARITY/BLOCK
- * TOO LARGE, OR DATA ERROR COUNT INCREMENTED, AND
- * IF ERROR LIMIT NONZERO, ERROR MESSAGE ISSUED TO
- * ALTERNATE OUTPUT FILE.
- * TO *ABT*, IF ERROR LIMIT EXCEEDED.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 5, 7.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS INM, SNM, SYS=, WTC=, WTW=.
- PDE SUBR ENTRY/EXIT
- SA1 ERRF
- SA2 TECA+B3
- NZ X1,PDEX IF BLOCK ERROR FLAG ALREADY SET
- SA3 X2 INCREMENT CORRESPONDING ERROR COUNT
- SX6 B1
- IX7 X3+X6
- SA4 EL
- AX2 18
- SA7 A3
- ZR X4,ABT IF ZERO ERROR LIMIT
- SX7 X2 SAVE ERROR MESSAGE ADDRESS
- AX2 36
- SA7 PDEA
- BX6 X2
- SA6 A1 SET BLOCK ERROR FLAG
- SB2 TECAL1-1
- SX6 -B1
- PDE1 SA1 TECA+B2 CALCULATE TOTAL ERROR COUNT
- SA2 X1
- SB2 B2-B1
- IX6 X6+X2
- GE B2,PDE1 IF MORE ERROR COUNTS
- BX7 X4
- NG X4,PDE2 IF UNLIMITED ERROR PROCESSING
- IX7 X6-X4
- PDE2 SA7 A7+B1 SAVE ABORT INDICATOR
- NZ X6,PDE3 IF NOT FIRST ERROR
- WRITE L,* PRESET STANDARD WRITE
- WRITEW L,PDEC,B1+B1 WRITE HEADER LINE
- WRITEW X2,CCDR,8
- DATE PDEC
- CLOCK PDEC+1
- WRITEW X2,PDEC,5
- PDE3 SA2 PDEA GET ERROR MESSAGE ADDRESS
- SB3 B0
- SB2 X2
- SB7 PDECL
- SB5 PDEC
- PDE4 SA2 B2+B3 MOVE MESSAGE TO BUFFER
- BX6 X2
- SA6 B5+B3
- SB3 B3+B1
- LT B3,B7,PDE4 IF MORE WORDS IN MESSAGE
- SA1 BC BLOCK COUNT
- RJ INM INSERT NUMBER IN MESSAGE
- WRITEC L,B5
- SA1 PDEB GET ABORT INDICATOR
- NG X1,PDEX IF ERROR LIMIT NOT REACHED
- EQ ABT ABORT
- PDEA CON 0 ERROR MESSAGE ADDRESS
- PDEB CON 0 ABORT INDICATOR
- PDECL EQU 6
- PDEC BSS 0 HEADER LINE AND MESSAGE BUFFER
- CON 10H1- ERROR S
- CON 10HUMMARY -
- BSSZ PDECL-2
- PDED DATA C* PARITY/BLOCK TOO LARGE ERROR IN BLOCK XXXXXXXXXX.*
- PDEF DATA C* INCORRECT FORMAT IN BLOCK XXXXXXXXXX.*
- PEF SPACE 4,20
- ** PEF - PROCESS END OF FILE.
- *
- * GENERATES AN EOF ON OUTPUT WITH OR WITHOUT CONTROL WORDS
- * UNLESS ONE OF THE FOLLOWING CONDITIONS EXIST -
- * 1. SKIP FLAG IS SET.
- * 2. PO=M OPTION (SKIP EOF WRITE) IS SELECTED.
- * 3. LAST DOUBLE EOF (FOR TC=EOD COPY) IS ENCOUNTERED.
- * 4. FOR A COPY WITH A FILE COUNT SPECIFIED (COPYBF
- * OR COPY/TCOPY WITH TC=EOF PARAMETER), WHEN EOI
- * IS ENCOUNTERED ON INPUT AND NO DATA TRANSFER HAS
- * OCCURRED SINCE PREVIOUS EOF.
- * THE COPY COUNT IS DECREMENTED WHEN APPLICABLE.
- *
- * ENTRY (X0) .LT. 0, IF EOI ENCOUNTERED.
- * (X5) = 0, IF EMPTY FILE ENCOUNTERED.
- *
- * EXIT (X0) .LT. 0, IF EOI ENCOUNTERED.
- * (CT) = 0, IF COPY COMPLETE.
- *
- * USES A - 1, 2, 3, 4, 6.
- * B - 2.
- * X - 0, 1, 2, 3, 4, 6.
- *
- * CALLS CIO=, MSG=, WTW=.
- PEF3 WRITEF O GENERATE EOF AND FLUSH BUFFER
- PEF4 SA1 TC GET TERMINATION CONDITION
- NG X0,PEFX IF EOI ENCOUNTERED
- NG X1,PEFX IF COPY TO EOI
- SB2 X0+
- NZ X1,PEF5 IF COPY TO FILE COUNT
- EQ B2,B1,PEFX IF EMPTY FILE NOT ENCOUNTERED
- PEF5 SX1 B1 DECREMENT COPY COUNT
- SA2 CT
- IX6 X2-X1
- SA6 A2+
- PEF SUBR ENTRY/EXIT
- SA2 TC
- SA4 SK
- SA1 BC INCREMENT BLOCK COUNT
- SA3 CT
- SB2 X2
- NG X0,PEF2 IF EOI ENCOUNTERED
- SX0 B1
- IX6 X1+X0
- SA6 A1
- NZ X5,PEF1 IF DATA TRANSFERRED
- NZ B2,PEF1 IF NOT COPY TO DOUBLE EOF
- SA2 RC
- IX1 X3-X0
- ZR X2,PEF1 IF NO RECORDS COPIED
- SX0 B1+B1
- NZ X1,PEF1 IF NOT LAST DOUBLE EOF
- SA1 =10H SKIPPING SKIP LAST EOF
- BX0 X0-X0
- LX6 X1
- SA6 PEFB
- PEF1 SA1 RC ADVANCE RECORD COUNT
- SX6 B1
- IX6 X1+X6
- SA6 A1+
- MESSAGE PEFB,1 DISPLAY EOF MESSAGE
- ZR X0,PEF5 IF LAST DOUBLE EOF ENCOUNTERED
- SA3 SEWI SKIP EOF WRITE INDICATOR
- NZ X3,PEF4 IF PO=M OPTION SELECTED
- SA1 FCPY INCREMENT FILE COUNT
- SX6 X1+B1
- SA6 A1
- SA2 O+CWF
- NZ X4,PEF4 IF SKIP SET
- ZR X2,PEF3 IF CONTROL WORD WRITE DISABLED
- WRITEW O,PEFA,B1+B1 WRITE CONTROL WORD EOF
- EQ PEF4 DECREMENT COPY COUNT
- PEF2 NZ X4,PEFX IF SKIP SET
- LE B2,PEFX IF NOT COPY TO FILE COUNT
- ZR X5,PEFX IF NO DATA TRANSFERRED
- EQ PEF1 WRITE EOF
- PEFA VFD 60/0 CONTROL WORD EOF
- VFD 12/17B,48/0
- PEFB DATA C* COPYING EOF.*
- SSL SPACE 4,20
- ** SSL - SPECIAL PROCESSOR FOR S AND L OUTPUT TAPES.
- *
- * ENTRY (B4) = PREVIOUS READ STATUS.
- * (B6) = LWA+1 DATA IN WORKING BUFFER.
- * (B7) = NUMBER OF WORDS IN WORKING BUFFER.
- * (FWWB) = FWA WORKING BUFFER.
- *
- * EXIT (B6) = UPDATED LWA+1 DATA IN WORKING BUFFER.
- * (B7) = UPDATED NUMBER OF WORDS IN WORKING BUFFER.
- * TO *ABT4*, IF RECORD TOO LARGE ENCOUNTERED AND RECORD
- * SPLIT NOT ALLOWED.
- *
- * USES A - 1, 2, 3, 4, 6.
- * B - 5, 6, 7.
- * X - 1, 2, 3, 4, 6.
- *
- * CALLS BFL.
- SSL3 SA6 B6 ZERO FILL BLOCK TO NOISE SIZE
- SB6 B6+B1
- LT B6,B5,SSL3 IF MORE WORDS TO ZERO
- SSL4 SA1 O+PRU GET OUTPUT PRU SIZE
- SA3 UBC
- SX2 B7
- SA4 FUBC
- IX1 X1-X2
- BX6 X4
- IX3 X3-X4
- NZ X1,SSLX IF NOT FULL BLOCK
- PL X3,SSLX IF LARGER UNUSED BIT COUNT ALREADY SET
- SA6 A3+
- SSL SUBR ENTRY/EXIT
- ZR B7,SSLX IF EOR ONLY
- NZ B4,SSL1 IF PREVIOUS READ STATUS EOR
- SA1 RSAI RECORD SPLIT ALLOWED INDICATOR
- SB5 ABTC * RECORD TOO LARGE ON LFN.*
- SA2 RSCT INCREMENT RECORD SPLIT COUNT
- ZR X1,ABT4 IF RECORD SPLIT NOT ALLOWED
- SX6 X2+B1
- SA6 A2
- SSL1 SA2 CRI
- SA1 O+NSZ GET OUTPUT NOISE SIZE
- PL X2,SSLX IF NOT *COPY*
- SA3 FWWB FWA WORKING BUFFER
- SB5 X3
- SB5 B5+X1 LWA+1 MINIMUM SIZE BLOCK
- SA2 NZCT
- SX6 X2+B1 INCREMENT NOISE BLOCK COUNT
- GE B6,B5,SSL4 IF BLOCK AT LEAST MINIMUM SIZE
- SA6 A2
- SA3 NPDI NOISE BLOCKS PADDED/DELETED INDICATOR
- ZR X3,SSL2 IF NOISE BLOCK TO BE PADDED
- SB7 B0 DELETE BLOCK
- EQ SSLX RETURN
- SSL2 SA2 O CHECK OUTPUT MODE
- BX6 X6-X6
- LX2 59-1
- SB7 X1+
- NG X2,SSL3 IF BINARY MODE
- RJ BFL BLANK FILL LINE TO NOISE SIZE
- EQ SSL4 CHECK FOR FULL BLOCK
- VFY SPACE 4,10
- ** VFY - VERIFY FILES.
- *
- * LOADS AND EXECUTES VERIFY UTILITY.
- *
- * USES A - 1, 2, 6, 7.
- * X - 0, 1, 2, 6, 7.
- *
- * CALLS MSG=, SYS=, WNB=.
- VFY BSS 0
- RECALL I
- RECALL O
- MX0 42 TRANSFER VERIFY ARGUMENTS TO RA+2
- SA1 I
- BX7 X0*X1
- SA2 O
- R= A7,ARGR
- BX6 X0*X2
- SA1 VFYA-1
- SA6 A7+B1
- SX7 B1 ARGUMENT COUNT - 1
- VFY1 SA1 A1+B1
- BX6 X1
- SX7 X7+B1 INCREMENT ARGUMENT COUNT
- SA6 A6+B1
- NZ X1,VFY1 IF MORE ARGUMENTS
- SA7 ACTR
- MESSAGE VFYC,3,R ISSUE VERIFY COMMAND TO DAYFILE
- SYSTEM LDR,R,VFYB LOAD AND EXECUTE VERIFY UTILITY
- PS 0
- VFYA CON 0LA ABORT ON ERROR
- CON 0LR REWIND
- CON 1LL+1R= ALTERNATE OUTPUT FILE
- CON 0
- CON 1LN+1R= FILE COUNT
- CON 0
- CON 0 CODED PARAMETER
- CON 0 BLOCK SIZE PARAMETER FOR S AND L TAPES
- CON 0
- CON 0 END OF ARGUMENTS
- VFYB CON 0LVERIFY
- CON 140BS36
- VFYC DATA C-* VERIFY,XXXXXXX,+++++++,A,R,L=///////,N(((((((($$$)
- ,)))))))))).-
- VNS SPACE 4,15
- ** VNS - VERIFY NOISE SIZE BLOCK FOR *COPY* OR *TCOPY*.
- *
- * ENTRY (B6) = LWA+1 DATA IN WORKING BUFFER.
- * (FWWB) = FWA WORKING BUFFER.
- * (I+NSZ) = INPUT TAPE NOISE SIZE.
- * (NZCT) = NOISE BLOCK DELETED COUNT.
- * (BTSK) = ZERO IF NO BLOCK TERMINATOR OR EXTRA WORD
- *
- * EXIT (X4) = BLOCK SIZE - NOISE SIZE.
- *
- * USES A - 1, 2, 4, 6.
- * B - 3.
- * X - 0, 1, 2, 4, 6.
- VNS SUBR ENTRY/EXIT
- SA4 I+NSZ
- SA1 NSFG
- ZR X1,VNSX IF NO SPECIAL NOISE PROCESSING IN EFFECT
- SA2 FWWB FWA WORKING BUFFER
- SB3 X2
- SX1 B6-B3 NUMBER OF DATA WORDS IN LINE
- SA2 BTSK
- ZR X2,VNS1 IF NO BLOCK TERMINATOR OR EXTRA WORD
- SX1 X1+1
- VNS1 SX2 60
- IX1 X2*X1 NUMBER OF DATA BITS IN LINE
- SA2 UBC UNUSED BIT COUNT FOR LAST WORD TRANSFERED
- IX1 X1-X2 BLOCK SIZE
- MX0 24
- BX4 X0*X4 NOISE SIZE
- LX4 24
- IX4 X1-X4
- PL X4,VNSX IF NOT NOISE BLOCK
- SA1 NZCT INCREMENT NOISE BLOCK DELETED COUNT
- SX6 B1
- IX6 X6+X1
- SA6 A1
- EQ VNSX RETURN
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCCDD
- WRIF$ EQU 1 SELECT *RE-ISSUE CURRENT WRITE*
- *CALL COMCCIO
- *CALL COMCRDW
- *CALL COMCSFN
- *CALL COMCSNM
- *CALL COMCSYS
- *CALL COMCWTC
- *CALL COMCWTW
- SPACE 4,10
- ** COPY/COPYBF/COPYEI BUFFERS.
- USE BUFFERS
- LBUF BSS 0 ALTERNATE OUTPUT FILE CIO BUFFER
- * SINGLE BUFFER COPY ALLOCATIONS.
- SBUF EQU LBUF+LBUFL SINGLE CIO BUFFER
- SRFL EQU SBUF+SBUFL FL FOR SINGLE BUFFER COPY
- * DOUBLE BUFFER COPY ALLOCATIONS.
- BUF1 EQU LBUF+LBUFL WORKING STORAGE BUFFER
- IBUF1 EQU BUF1+BUFL INPUT FILE CIO BUFFER
- OBUF1 EQU IBUF1+FBUFL OUTPUT FILE CIO BUFFER
- RFL1 EQU OBUF1+FBUFL FL FOR DOUBLE BUFFER COPY
- ERRNG TCOPY-BUF1 IF LBUF OVERFLOWS INTO TCOPY
- TITLE COPYBR/COPYX.
- COPYBR SPACE 4,10
- ** COPYBR - COPY SPECIFIED NUMBER OF RECORDS FROM ONE FILE TO
- * ANOTHER.
- *
- * EXIT TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- COPYBR SX6 B0 INDICATE *COPYBR* CALL
- RJ PRS PRESET PROGRAM
- CBR1 READ I BEGIN READ
- RECALL O
- WRITE O,* PRESET WRITE FUNCTION
- READW I,BUF,RBFL
- RJ CPR COPY RECORD
- NG X0,END5 IF EOI ENCOUNTERED
- SA2 CT DECREMENT COUNT
- SX6 X2-1
- SA6 A2
- NZ X6,CBR1 LOOP FOR ALL RECORDS
- EQ END TERMINATE PROGRAM
- COPYX SPACE 4,10
- ** COPYX - COPY LOGICAL RECORDS FROM ONE FILE TO ANOTHER UNTIL
- * SPECIFIED TERMINATION CONDITION IS MET.
- *
- * EXIT TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- COPYX SX6 -1 INDICATE *COPYX* CALL
- RJ PRS PRESET PROGRAM
- CPX1 READ I BEGIN READ
- RECALL O
- WRITE O,* PRESET WRITE FUNCTION
- READW I,BUF,RBFL
- PL X1,CPX2 IF NOT EOF OR EOI
- RJ CPR PROCESS EOF/EOI
- CPX1.1 NG X0,END5 IF EOI ENCOUNTERED
- SX6 ENDD SET *EOF ENCOUNTERED.* ENDING MESSAGE
- SA6 ENDA
- EQ END ISSUE DAYFILE MESSAGE AND ENDRUN
- CPX2 BX5 X1 SAVE EOR STATUS
- SA2 TM CHECK TERMINATION CONDITION
- * PROCESS ZERO RECORD.
- NZ X2,CPX3 IF NOT ZERO RECORD REQUEST
- SX2 X1-BUF
- ZR X2,CPX4 IF ZERO RECORD
- EQ CPX5 COPY RECORD
- * PROCESS RECORD NAME.
- CPX3 NG X2,CPX5 IF NOT RECORD NAME
- SX2 BUF
- SX1 B6 LWA+1 OF DATA READ
- RJ SRT SET RECORD TYPE
- SA1 RN CHECK RECORD NAME
- BX2 X7-X1
- SA3 A1+B1
- NZ X2,CPX5 IF NO MATCH
- NG X3,CPX4 IF NO TYPE REQUESTED
- SX2 X6 CHECK TYPE
- BX7 X2-X3
- NZ X7,CPX5 IF NO MATCH
- CPX4 SX6 B1+ SET TERMINATION
- SA6 CT
- * COPY RECORD.
- CPX5 BX1 X5 RESTORE EOR STATUS
- RJ CPR COPY RECORD
- NZ X0,CPX1.1 IF EOF OR EOI ENCOUNTERED
- SA1 CT DECREMENT COUNT
- SX6 X1-1
- SA6 A1+
- NZ X6,CPX1 LOOP FOR ALL RECORDS
- SA1 BK1
- ZR X1,CPX6 IF NO BACKSPACE FOR FILE 1
- BKSP I
- CPX6 SA2 SK
- SA1 BK2
- NZ X2,END IF SKIPPING RECORDS
- ZR X1,END IF NO BACKSPACE FOR FILE 2
- BKSP O
- EQ END
- TM CON 1S59 COPYX TERMINATION
- RN CON 0 RECORD NAME
- CON 1S59 RECORD TYPE
- BK1 CON 0 FILE 1 BACKSPACE
- BK2 CON 0 FILE 2 BACKSPACE
- TITLE RECORD COPY ROUTINES.
- CPR SPACE 4,15
- ** CPR - COPY RECORD.
- *
- * ENTRY (X1) = FIRST BLOCK READ STATUS.
- * (B6) = LWA+1 DATA TRANSFERRED TO WORKING BUFFER.
- *
- * EXIT (X0) .LT. 0, IF EOI.
- * (X0) = 0, IF EOR.
- * (X0) .GT. 0, IF EOF.
- *
- * USES A - 1, 2.
- * X - 0, 1, 2, 5.
- *
- * CALLS CIO=, DRN, MSG=, RDW=, WTW=.
- CPR4 MESSAGE PEFB,1 DISPLAY EOF MESSAGE
- SA1 FCPY
- SA2 WCPY
- SX6 X1+B1 INCREMENT FILE COPY COUNT
- IX7 X2+X5
- SA6 A1
- SA7 A2 INCREMENT WORD COPY COUNT
- SA1 RC ADVANCE RECORD COUNT
- SX0 B1+ SET EOF STATUS
- SA2 SK
- IX6 X1+X0
- SA6 A1
- NZ X2,CPRX IF SKIP SET
- WRITEF O GENERATE EOF
- CPR SUBR ENTRY/EXIT
- SX0 X1+B1
- SA0 X1
- SX5 0 CLEAR WORD COUNT
- PL X1,CPR0 IF NOT EOF OR EOI
- SX2 B6-BUF
- NZ X2,CPR1 IF DATA IN BUFFER
- NG X0,CPRX IF EOI ENCOUNTERED
- EQ CPR4 EOF ENCOUNTERED
- CPR0 SX2 BUF
- RJ DRN DISPLAY RECORD NAME
- CPR1 SA2 SK
- SB7 B6-BUF
- SX1 B7
- IX5 X5+X1 SHOW WORDS COPIED
- NZ X2,CPR2 IF SKIP SET
- WRITEW O,BUF,B7
- CPR2 SX0 B0 CLEAR EOR STATUS
- SX2 A0
- NZ X2,CPR3 IF EOR
- READW I,BUF,RBFL
- SX0 X1+B1
- SA0 X1
- PL X1,CPR1 IF NOT EOF OR EOI
- SX2 B6-BUF
- NZ X2,CPR1 IF DATA IN BUFFER
- PL X0,CPR4 IF EOF
- CPR3 SA1 RCPY
- SA2 WCPY
- SA3 SK
- SX6 X1+B1
- IX7 X2+X5 ADD WORDS COPIED TO COUNT
- SA6 A1
- SA7 A2
- NZ X3,CPRX IF SKIP SET
- WRITER O END RECORD
- EQ CPRX RETURN WITH EOR OR EOI STATUS
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCSRT
- SPACE 4,10
- ** COPYBR/COPYX BUFFERS.
- BUF BSS 0 WORKING STORAGE BUFFER
- IBUF EQU BUF+RBFL INPUT FILE CIO BUFFER
- OBUF EQU IBUF+FBUFL OUTPUT FILE CIO BUFFER
- RFL= EQU OBUF+FBUFL FIELD LENGTH FOR COPYBR AND COPYX
- TITLE TCOPY.
- TCOPY SPACE 4,10
- ** TCOPY - COPY E, B, X, SI-CODED OR I TAPE VIA S/L FORMAT TO
- * MASS STORAGE, I, LI, OR SI-BINARY FILE, OR GENERATE E OR B
- * TAPE VIA S/L FORMAT FROM MASS STORAGE, I, LI, OR SI-BINARY
- * FILE.
- *
- * EXIT TO *CPY*, IF X, SI-C, OR I TO MS/I/LI/SI-B COPY.
- * TO *CEB*, IF E OR B TO MS/I/LI/SI-B COPY.
- * TO *GEB*, IF MS/I/LI/SI-B TO E OR B COPY.
- TCOPY SX6 B0 INDICATE *TCOPY* CALL
- RJ CTP COPY/TCOPY PRESET PROGRAM
- SA1 I+TCF
- SB3 -B1
- SB2 X1
- GE B2,B1,CEB IF E OR B TO MS/I/LI/SI-B COPY
- ZR B2,GEB IF MS/I/LI/SI-B TO E OR B COPY
- EQ B2,B3,CPY IF X TO MS/I/LI/SI-B COPY
- READCW I,17B INITIATE CONTROL WORD READ
- EQ CPY SI-C OR I TO MS/I/LI/SI-B COPY
- CEB SPACE 4,10
- ** CEB - COPY E OR B TAPE TO MASS STORAGE, I, LI OR SI-B TAPE.
- *
- * EXIT TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- *
- * USES A - 0, 1, 2, 3, 4, 6.
- * B - 2, 6, 7.
- * X - 0, 1, 2, 3, 4, 5, 6.
- *
- * CALLS CIO=, CWR, DRN, PEF, WTC=, WTH=.
- CEB BSS 0
- SA1 I+PRU GET E OR B TAPE PRU SIZE
- SA0 X1+
- CEB1 BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- READCW I,17B INITIATE CONTROL WORD READ
- RECALL O
- WRITE O,* PRESET STANDARD WRITE FUNCTION
- CEB2 CWRW I,(FWWB),A0
- NG X1,CEB5 IF EOF/EOI ENCOUNTERED
- NZ X5,CEB3 IF PREVIOUS READ STATUS NOT EOF
- RJ VNS VERIFY NOISE SIZE BLOCK
- NG X4,CEB2 IF NOISE BLOCK
- SA2 FWWB FWA WORKING BUFFER
- RJ DRN DISPLAY FILE NAME
- CEB3 SA1 I+TCF
- SA2 SK
- SX5 B1 INDICATE DATA TRANSFERRED
- SB2 X1
- NZ X2,CEB2 IF SKIP SET
- SA4 FWWB FWA WORKING BUFFER
- GT B2,B1,CEB4 IF B TO MS/I/LI/SI-B COPY
- SB7 X4
- SB7 B6-B7 LENGTH OF LINE
- SA1 B6-B1
- RJ SFN BLANK FILL LAST WORD
- SA6 A1
- RJ CWH COUNT WORDS
- WRITEH O,X4,B7
- EQ CEB2 CONTINUE COPY
- CEB4 BX6 X6-X6 GUARANTEE END OF LINE
- SA6 B6+
- RJ CWC COUNT WORDS
- WRITEC O,X4
- EQ CEB2 CONTINUE COPY
- CEB5 SX0 X1+B1 SET TERMINATION CONDITION
- RJ PEF PROCESS END OF FILE
- SA2 RCPY INCREMENT RECORD COUNT
- SX6 X2+B1
- SA6 A2
- SA1 CT
- NG X0,END5 IF EOI ENCOUNTERED
- ZR X1,END IF COPY COMPLETE
- EQ CEB1 REINITIATE CONTROL WORD READ
- GEB SPACE 4,15
- ** GEB - GENERATE E OR B TAPE FROM MASS STORAGE, I, LI OR SI-B
- * TAPE.
- *
- * EXIT TO *END*, IF COPY COMPLETE.
- * TO *END5*, IF EOI ENCOUNTERED.
- *
- * USES A - 0, 1, 2, 3, 4, 6.
- * B - 2, 3, 5, 6, 7.
- * X - 0, 1, 2, 3, 4, 5, 6.
- *
- * CALLS BFL, CIO=, CUB, CWW, DRN, PEF, RDC=.
- GEB BSS 0
- WRITECW O,* PRESET CONTROL WORD WRITE
- SA1 O+PRU GET E OR B TAPE PRU SIZE
- BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- SA0 X1
- GEB1 SX0 B1+ INDICATE READ REINITIATED
- READ I INITIATE STANDARD READ
- GEB2 SA4 FWWB FWA WORKING BUFFER
- READC I,X4,A0
- NG X1,GEB7 IF EOF/EOI ENCOUNTERED
- BX5 X4 SAVE LAST DATA WORD
- SB5 X1 SAVE CURRENT READ STATUS
- ZR X0,GEB3 IF PREVIOUS READ STATUS NOT EOR
- SX6 B0+
- SA2 FWWB FWA WORKING BUFFER
- SA6 GEBA INDICATE NOT CONTINUATION LINE
- RJ DRN DISPLAY RECORD NAME
- GEB3 SA3 FWWB FWA WORKING BUFFER
- SX0 B5 RESTORE CURRENT READ STATUS
- BX4 X5
- IX6 X0-X3
- SX5 B1 INDICATE DATA TRANSFERRED
- ZR X0,GEB4 IF TRANSFER COMPLETE
- SA1 RCPY INCREMENT RECORD COUNT
- SX6 X1+B1
- SA6 A1
- ZR X6,GEB1 IF EOR ONLY
- SA4 B6-1
- GEB4 BX6 X4 RESTORE CONTENTS OF LAST DATA WORD
- SA2 O+TCF
- SA6 B6-B1
- SB2 X2
- MX4 -12
- SA1 GEBA CHECK PREVIOUS LINE EOL STATUS
- BX6 -X4*X6 SET CURRENT LINE EOL INDICATOR
- SA3 X3
- SA6 A1
- SB7 A0
- SA4 FUBC GET FULL BLOCK UNUSED BIT COUNT
- ZR X1,GEB4.1 IF NOT CONTINUATION LINE
- SA2 TLLI CHECK FOR *PO=T* OPTION
- NZ X2,GEB6.1 IF DISCARD CONTINUATION LINE
- GT B2,B1,GEB5 IF GENERATING B TAPE
- ZR X3,GEB6.1 IF EOL ONLY (E TAPE)
- GEB4.1 GT B2,B1,GEB5 IF GENERATING B TAPE
- RJ BFL BLANK FILL LINE FOR E TAPE
- BX6 X4
- EQ GEB6 WRITE ONE LINE PER BLOCK
- GEB5 RJ CUB CALCULATE B TAPE UNUSED BIT COUNT
- GEB6 SA3 FWWB FWA WORKING BUFFER
- SA6 UBC SET UNUSED BIT COUNT FOR WRITE
- SB3 X3
- SB7 B6-B3 NUMBER OF WORDS IN BUFFER
- SB6 B3+
- SA1 WCPY ADD TO WORD COUNT
- SX3 B7
- IX6 X1+X3
- SA6 A1
- CWWW O,B6,B7
- GEB6.1 ZR X0,GEB2 IF NOT EOR
- EQ GEB1 REINITIATE READ
- GEB7 SX0 X1+B1 PROCESS END OF FILE
- RJ PEF
- SA1 CT
- NG X0,END5 IF EOI ENCOUNTERED
- ZR X1,END IF COPY COMPLETE
- BX5 X5-X5 INDICATE NO DATA TRANSFERRED
- EQ GEB1 CONTINUE COPY
- GEBA CON 0 PREVIOUS LINE EOL STATUS
- TITLE E, B, X, SI-C, I CONVERSION ROUTINES.
- CCW SPACE 4,10
- ** CCW - COUNT CHARACTERS IN WORD.
- *
- * ENTRY (X1) = DATA WORD, LEFT JUSTIFIED, ZERO FILLED.
- *
- * EXIT (B5) = NUMBER OF CHARACTERS IN WORD.
- *
- * USES B - 5.
- * X - 2, 6.
- CCW SUBR ENTRY/EXIT
- SB5 B0
- ZR X1,CCWX IF ZERO WORD
- MX6 -54
- CCW1 BX2 -X6*X1
- SB5 B5+1 INCREMENT CHARACTER COUNT
- AX6 6
- NZ X2,CCW1 IF MORE CHARACTERS IN WORD
- EQ CCWX RETURN
- CEL SPACE 4,15
- ** CEL - CONVERT SI-CODED END OF LINES.
- *
- * FOR 7-TRACK *SI*-CODED TAPE, END-OF-LINES REPRESENTED BY
- * 16...1632B EXTERNAL BCD ARE CONVERTED INTO 63...6362B
- * 64-CHARACTER SET DISPLAY CODE (WITH 6362B IN LOWER BYTE OF
- * CM WORD) OR 00...0062B 63-CHARACTER SET DISPLAY CODE
- * (WITH 0062B IN LOWER BYTE OF CM WORD).
- * THESE REPRESENTATIONS ARE CONVERTED INTO BINARY ZERO
- * END-OF-LINES IN THE WORKING BUFFER.
- *
- * ENTRY (FWWB) = FWA WORKING BUFFER.
- * (LWDB) = LWA+1 DATA IN WORKING BUFFER.
- *
- * USES A - 1, 2, 7.
- * B - 2, 6.
- * X - 1, 2, 3, 4, 6, 7.
- CEL SUBR ENTRY/EXIT
- SA1 FWWB FWA WORKING BUFFER
- SA2 I+TRK GET TRACK BITS
- SB2 X1
- LX2 59-58
- PL X2,CELX IF NOT 7-TRACK SI-CODED TAPE
- SA2 LWDB LWA+1 DATA IN WORKING BUFFER
- MX6 -12
- SB6 X2
- CEL0 SA2 CELA GET 63/64 CHARACTER SET EOL CONVERSION
- BX3 X2
- AX3 6
- CEL1 SB6 B6-B1 CONVERT 63...62B/00...0062B TO EOL
- LT B6,B2,CELX IF CONVERSION COMPLETE
- SA1 B6
- BX4 -X6*X1
- BX4 X4-X2
- NZ X4,CEL1 IF NOT 6362B/0062B IN LOWER BYTE
- MX6 54 CLEAR 62B CHARACTER FROM WORD
- BX7 X6*X1
- ZR X3,CEL3 IF 63-CHARACTER SET CONVERSION
- CEL2 LX6 6 CLEAR CONSECUTIVE 63B CHARACTERS FROM WORD
- BX4 -X6*X7
- LX3 6
- BX4 X4-X3
- NZ X4,CEL3 IF NOT 63B CHARACTER
- BX7 X6*X7
- NZ X7,CEL2 IF MORE CHARACTERS IN WORD
- CEL3 SA7 A1
- MX6 -12
- EQ CEL0 CONTINUE CONVERSION
- CELA CON 6362B 64-CHARACTER SET EOL CONVERSION
- CUB SPACE 4,20
- ** CUB - CALCULATE UNUSED BIT COUNT FOR B TAPE LINE.
- *
- * LINE IS BLANK FILLED TO NOISE SIZE, IF NECESSARY.
- * IF LINE HAS ODD NUMBER OF CHARACTERS, AN EXTRA BLANK IS
- * APPENDED. UNUSED BIT COUNT OF LAST DATA WORD IS CALCULATED
- * FROM THE ADJUSTED LINE.
- *
- * ENTRY (B6) = LWA+1 CODED LINE.
- * (FWWB) = FWA CODED LINE.
- *
- * EXIT (B6) = LWA+1 READJUSTED LINE.
- * (X6) = UNUSED BIT COUNT FOR LAST DATA WORD IN LINE.
- *
- * USES A - 1, 2, 4, 6.
- * B - 2, 3, 5, 6, 7.
- * X - 1, 2, 3, 4, 6.
- *
- * CALLS BFL, CCW.
- CUB SUBR ENTRY/EXIT
- SA1 B6-B1
- SX4 1R
- MX6 -6
- NZ X1,CUB1 IF LAST DATA WORD NOT ZERO
- SA2 A1-B1
- BX3 -X6*X2
- NZ X3,CUB1 IF PREVIOUS WORD NOT PART OF EOL
- BX6 X2+X4 BLANK FILL PREVIOUS WORD
- SA6 A2
- CUB1 SA2 FWWB FWA WORKING BUFFER
- SA4 O+NSZ
- SB3 X2
- SB3 B6-B3 NUMBER OF DATA WORDS IN LINE
- SB7 X4 MINIMUM NUMBER OF WORDS FOR NOISE SIZE
- AX4 18
- GT B3,B7,CUB4 IF LINE LENGTH .GT. NOISE SIZE
- RJ CCW COUNT CHARACTERS IN LAST DATA WORD
- RJ BFL BLANK FILL LINE TO NOISE SIZE
- EQ B3,B7,CUB2 IF LAST WORD BORDERS ON NOISE SIZE
- SB5 B0
- CUB2 SB2 X4
- GE B5,B2,CUB3 IF DATA CHARACTERS EXCEED NOISE SIZE
- SB5 B2
- SA1 NZCT INCREMENT NOISE BLOCK COUNT
- SX6 X1+B1
- SA6 A1
- CUB3 SB5 B5+B5 CLEAR BLANK FILL BEYOND NOISE SIZE
- SB2 B5+B5
- SA1 B6-B1
- SB2 B2+B5
- MX6 1
- SB2 B2-B1
- AX6 B2
- BX6 X6*X1
- SA6 A1
- CUB4 SA1 B6-B1
- NZ X1,CUB5 IF LAST DATA WORD NOT ZERO
- SB6 B6-B1
- SA1 B6-1
- CUB5 RJ CCW COUNT CHARACTERS IN LAST DATA WORD
- SX2 B5
- LX2 59-0
- PL X2,CUB7 IF EVEN NUMBER OF CHARACTERS
- SX4 1R APPEND BLANK CHARACTER
- SB2 B5+1
- CUB6 LX4 -6
- SB2 B2-B1
- NZ B2,CUB6 IF BLANK NOT IN POSITION
- BX6 X1+X4
- SA6 A1+
- SB5 B5+B1 INCREMENT NUMBER OF CHARACTERS
- CUB7 SB2 10 CALCULATE UNUSED BIT COUNT FOR LAST WORD
- SX2 6
- SX6 B2-B5
- IX6 X2*X6
- EQ CUBX RETURN
- CWC SPACE 4,10
- ** CWC - COUNT WORDS - *C* FORMAT.
- *
- * ENTRY (X4) = BUFFER ADDRESS.
- *
- * EXIT (WCPY) = (WCPY)+WORD COUNT
- *
- * USES A - 1.
- * X - 1, 2, 3, 6.
- CWC2 SA1 WCPY ADD TO TOTAL WORD COUNT
- IX6 X3+X1
- SA6 A1
- CWC SUBR
- SA1 X4 FWA OF BUFFER
- MX2 -12 EOL MASK
- SX3 1 CLEAR WORD COUNT
- CWC1 BX6 -X2*X1
- ZR X6,CWC2 IF EOL
- SX3 X3+B1
- SA1 A1+1
- EQ CWC1 CONTINUE COUNTING
- CWH SPACE 4,10
- ** CWH - COUNT WORDS - *H* FORMAT.
- *
- * ENTRY (X4) = BUFFER ADDRESS
- * (B7) = BUFFER LENGTH
- *
- * EXIT (WCPY) = (WCPY)+WORD COUNT
- *
- * USES A - 1, 2.
- * X - 1, 2, 3, 6.
- * B - 2.
- CWH SUBR
- SB2 B7-B1
- SA1 X4+B2 LWA BUFFER
- SA2 CWHA BLANK
- CWH1 IX3 X1-X2 CHECK BLANK WORD
- NZ X3,CWH2 IF NON-BLANK
- SA1 X4+B2
- SB2 B2-B1
- NZ B2,CWH1 IF NOT FIRST WORD
- CWH2 SA1 WCPY
- SX2 B2+B1 WORDS LEFT
- IX6 X1+X2
- SA6 A1+
- EQ CWHX RETURN
- CWHA DATA 10H
- IBT SPACE 4,20
- ** IBT - PROCESS I TAPE BLOCK TERMINATOR.
- *
- * ENTRY (X2) = DATA WORD CONTAINING 48-BIT BLOCK TERMINATOR.
- * (BTSK) = UNUSED BIT COUNT FOR BLOCK TERMINATOR WORD.
- * (CWBC) = READCW BYTE COUNT.
- *
- * EXIT (X1) = -1, IF LEVEL 17B BLOCK TERMINATOR (EOF)
- * ENCOUNTERED IN I BLOCK TERMINATOR.
- * (LVL) = EOR LEVEL FROM BLOCK TERMINATOR.
- * (EORF) = ZERO IF NOT FULL I BLOCK.
- *
- * USES A - 1, 2, 6, 7.
- * B - 2, 3.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS PDE.
- IBT3 SA2 CWBC
- SX6 X2-5004B BYTES IN NON-EOR BLOCK
- SA6 EORF
- SA7 LVL
- SX2 X7-17B
- BX1 X1-X1
- NZ X2,IBTX IF NOT LEVEL 17B (EOF)
- SX1 -B1
- IBT SUBR ENTRY/EXIT
- SA1 I+TRK
- SX4 B0+ NO EXTRA BYTE BIAS
- LX1 59-58
- NG X1,IBT1 IF 7-TRACK TAPE
- SA1 CWBC
- SX3 X1+4
- SX1 5
- IX3 X3/X1
- LX3 -1
- NG X3,IBT1 IF ODD WORD COUNT WITH 48 BIT TERMINATOR
- SX4 -1 BIAS TO REMOVE EXTRA BYTE
- IBT1 SA1 BTSK CLEAR EXTRANEOUS DATA
- SB3 59
- SB2 X1-1 CORRECT FOR ALWAYS HAVE TERMINATOR FLAG
- MX1 1
- SB2 B3-B2
- AX1 B2
- BX2 X1*X2
- AX2 12 EXTRACT LEVEL NUMBER FROM BLOCK TERMINATOR
- MX1 -6
- BX7 -X1*X2 LEVEL NUMBER
- AX2 12
- MX1 -24
- BX6 -X1*X2 BLOCK NUMBER
- AX2 24
- MX3 -12
- SA1 CWBC READCW BYTE COUNT
- IX1 X1+X4 9-TRACK ODD BYTE NUMBER CORRECTION
- BX4 -X3*X2 BYTE COUNT
- IX3 X4-X1
- NZ X3,IBT2 IF ERROR IN NUMBER OF BYTES
- SA1 IBTA PREVIOUS BLOCK NUMBER
- SX3 B1
- IX2 X1+X3 INCREMENT
- IX3 X6-X2
- SA6 A1 REPLACE PREVIOUS BLOCK NUMBER
- NZ X3,IBT2 IF BLOCK SEQUENCE NUMBER ERROR
- SX1 X7-20B
- NG X1,IBT3 IF LEGAL LEVEL NUMBER
- IBT2 SB3 B1 PROCESS DATA ERROR
- RJ PDE
- BX7 X7-X7
- EQ IBT3 CLEAR LEVEL NUMBER
- IBTA CON -1 PREVIOUS BLOCK NUMBER
- IIB SPACE 4,15
- ** IIB - INITIALIZE I FORMAT TAPE BLOCK.
- *
- * ENTRY (RWCB) = WORD COUNT OF BLOCK.
- * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
- *
- * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS NECESSARY.
- * EOR FLAG AND BLOCK TERMINATOR SET.
- *
- * USES A - 1, 2, 4, 6, 7.
- * B - 3.
- * X - 1, 2, 4, 6, 7.
- *
- * CALLS PDE.
- IIB1 NG X1,IIB2 IF ODD WORD COUNT
- SX2 X2+12
- IIB2 SA6 A1 UPDATE BLOCK WORD COUNT
- BX7 X7-X7 CLEAR UNUSED BIT COUNT
- SX6 B1
- SA7 A2
- SA6 EORF
- ZR X2,IIBX IF NO DATA ERROR
- SB3 B1 PROCESS DATA ERROR
- RJ PDE
- IIB SUBR ENTRY/EXIT
- SA1 RWCB GET BLOCK WORD COUNT
- SA2 UBCB GET UNUSED BIT COUNT
- BX6 X1
- LX1 -1
- BX7 X2 SET BLOCK TERMINATOR = UNUSED BIT COUNT
- SX7 X7+B1 ALWAYS HAVE TERMINATOR
- SA7 BTSK SET BLOCK TERMINATOR INDICATOR
- SX6 X6-1 DECREMENT BLOCK WORD COUNT
- SA4 I+TRK GET TRACK BITS
- SX2 X2-12
- LX4 59-58
- NG X4,IIB2 IF 7-TRACK TAPE
- EQ IIB1 CHECK FOR ODD WORD COUNT
- ISI SPACE 4,15
- ** ISI - INITIALIZE SI-CODED FORMAT TAPE BLOCK.
- *
- * ENTRY (RWCB) = WORD COUNT OF BLOCK.
- * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
- *
- * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS NECESSARY.
- * EOR FLAG AND BLOCK TERMINATOR INDICATOR SET
- * APPROPRIATELY.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 3.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS PDE.
- ISI3 NG X1,ISI4 IF ODD WORD COUNT
- SX2 X2+12-8
- ISI4 SA6 A1 UPDATE BLOCK WORD COUNT
- BX7 X7-X7 CLEAR UNUSED BIT COUNT
- IX6 X3-X6 SET EOR FLAG IF NOT FULL BLOCK
- SA7 A2
- SA6 EORF
- ZR X2,ISIX IF NO DATA ERROR
- SB3 B1 PROCESS DATA ERROR
- RJ PDE
- ISI SUBR ENTRY/EXIT
- SA1 RWCB GET BLOCK WORD COUNT
- SA2 UBCB GET UNUSED BIT COUNT
- SA3 I+PRU GET INPUT PRU SIZE
- LX6 X1
- IX4 X3-X1
- NZ X4,ISI1 IF WORD COUNT .NE. PRU SIZE
- ZR X2,ISI4 IF FULL BLOCK
- ISI1 SA4 I+TRK GET TRACK BITS
- LX1 -1
- BX7 X2 SET BLOCK TERMINATOR = UNUSED BIT COUNT
- NZ X2,ISI2 IF NONZERO UNUSED BIT COUNT
- SX7 B1+ SET TERMINATOR INDICATOR WHEN DATA ERROR
- ISI2 SX6 X6-1 DECREMENT BLOCK WORD COUNT
- SA7 BTSK SET BLOCK TERMINATOR INDICATOR
- SX2 X2-12
- NG X4,ISI3 IF 9-TRACK SI-CODED TAPE
- EQ ISI4 UPDATE FLAGS/COUNTS
- IXB SPACE 4,15
- ** IXB - INITIALIZE X FORMAT TAPE BLOCK.
- *
- * ENTRY (RWCB) = WORD COUNT OF BLOCK.
- * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
- *
- * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS
- * NECESSARY. EOR FLAG AND SKIP WORD INDICATOR
- * SET APPROPRIATELY.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 3.
- * X - 1, 2, 3, 6, 7.
- *
- * CALLS PDE.
- IXB1 SA3 I+TRK GET TRACK BITS
- BX6 X1
- LX3 59-58
- NG X3,IXB3 IF 7-TRACK X TAPE
- BX3 X2
- LX1 -1
- SX2 B1
- NG X1,IXB2 IF ODD WORD COUNT (BAD BLOCK)
- BX2 X3
- ZR X2,IXB3 IF NO UNUSED BIT COUNT
- SX2 X2-48 ELIMINATE EXCESS BYTE
- IXB2 SX7 -B1 SET SKIP WORD INDICATOR
- IX6 X6+X7 DECREMENT BLOCK WORD COUNT
- SA7 BTSK
- IXB3 SA3 I+PRU GET INPUT PRU SIZE
- SA6 A1 UPDATE BLOCK WORD COUNT
- BX7 X7-X7 CLEAR UNUSED BIT COUNT
- IX6 X3-X6 SET EOR FLAG IF NOT FULL BLOCK
- SA7 A2
- SA6 EORF
- ZR X2,IXBX IF NO DATA ERROR
- SB3 B1 PROCESS DATA ERROR
- RJ PDE
- IXB SUBR ENTRY/EXIT
- SA1 RWCB GET BLOCK WORD COUNT
- SA2 UBCB GET UNUSED BIT COUNT
- SX3 X1-1
- NZ X3,IXB1 IF NOT TERMINATOR ONLY
- ZR X2,IXB1 IF NO UNUSED BIT COUNT
- SX2 X2-12
- BX6 X1
- EQ IXB2 SET SKIP WORD INDICATOR
- SIT SPACE 4,15
- ** SIT - PROCESS SI-CODED TAPE BLOCK TERMINATOR.
- *
- * ENTRY (X2) = DATA WORD CONTAINING 48-BIT BLOCK TERMINATOR.
- * (BTSK) = UNUSED BIT COUNT FOR BLOCK TERMINATOR WORD.
- *
- * EXIT (X1) = -1, IF LEVEL 17B BLOCK TERMINATOR (EOF)
- * ENCOUNTERED ON SI-CODED TAPE.
- *
- * USES A - 1, 3, 7.
- * B - 2, 3.
- * X - 1, 2, 3, 6, 7.
- *
- * CALLS PDE.
- SIT2 SX7 X7+B1
- SA1 TELN+X7 CONVERT DISPLAY LEVEL NUMBER TO BCD
- BX3 X1-X2
- ZR X1,SIT1 IF END OF TABLE
- NZ X3,SIT2 IF NOT MATCH
- SIT3 SA7 LVL
- SX2 X7-17B
- BX1 X1-X1
- NZ X2,SITX IF NOT LEVEL 17B (EOF)
- SX1 -B1
- SIT SUBR ENTRY/EXIT
- SA1 BTSK CLEAR EXTRANEOUS DATA
- SB3 59
- SB2 X1+
- SA3 I+TRK GET TRACK BITS
- MX1 1
- SB2 B3-B2
- AX1 B2
- BX2 X1*X2
- AX2 12 EXTRACT LEVEL NUMBER FROM BLOCK TERMINATOR
- MX1 -6
- SX7 -1
- BX2 -X1*X2
- PL X3,SIT2 IF 7-TRACK SI-CODED TAPE
- BX7 X2
- SX1 X2-20B
- NG X1,SIT3 IF LEGAL LEVEL NUMBER
- SIT1 SB3 B1 PROCESS DATA ERROR
- RJ PDE
- BX7 X7-X7
- EQ SIT3 CLEAR LEVEL NUMBER
- TDBC SPACE 4,10
- ** TELN - TABLE OF EOR LEVEL NUMBERS. BLANK REPRESENTS
- * LEVEL 0. LEVELS 1 - 17B IN EXTERNAL BCD WERE CONVERTED
- * TO DISPLAY CODE DURING READ, AND MUST BE RE-TRANSLATED.
- TELN BSS 0
- LOC 0
- CON 55B LEVEL 0 EOR
- CON 34B LEVEL 1 EOR
- CON 35B LEVEL 2 EOR
- CON 36B LEVEL 3 EOR
- CON 37B LEVEL 4 EOR
- CON 40B LEVEL 5 EOR
- CON 41B LEVEL 6 EOR
- CON 42B LEVEL 7 EOR
- CON 43B LEVEL 10B EOR
- CON 44B LEVEL 11B EOR
- CON 33B LEVEL 12B EOR
- CON 54B LEVEL 13B EOR
- CON 64B LEVEL 14B EOR
- CON 74B LEVEL 15B EOR
- CON 63B LEVEL 16B EOR
- CON 61B LEVEL 17B EOF
- CON 0 END OF TABLE
- LOC *O
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCRDC
- *CALL COMCWTH
- SPACE 4,10
- ** TCOPY BUFFERS.
- BUF2 BSS 0 WORKING STORAGE BUFFER
- IBUF2 EQU BUF2+BUFL INPUT FILE CIO BUFFER
- OBUF2 EQU IBUF2+FBUFL OUTPUT FILE CIO BUFFER
- RFL2 EQU OBUF2+FBUFL FIELD LENGTH FOR TCOPY
- TITLE PRESET.
- CTP SPACE 4,10
- ** CTP - COPY AND TCOPY PRESET PROGRAM.
- *
- * ENTRY (X6) = -1, IF *COPY* CALL.
- * = 0, IF *TCOPY* CALL.
- *
- * EXIT (B1) = 1.
- *
- * USES A - 0, 1, 2, 4, 6, 7.
- * X - 0, 1, 2, 4, 6, 7.
- *
- * CALLS BVR, CCP, CDT, CFN, CPV, GPS, RBL, RBP, SPS, VCY, VTY.
- CTP2 RJ VCY VALIDATE COPY
- CTP3 SA0 I SET PRU SIZE ON S OR L INPUT TAPE
- RJ SPS
- RJ GPS GET INPUT PRU SIZE
- SA0 O SET PRU SIZE ON S OR L OUTPUT TAPE
- RJ SPS
- RJ GPS GET OUTPUT PRU SIZE
- RJ RBL RESET BUFFER LENGTHS FOR L AND F TAPES
- RJ RBP RESET BUFFER POINTERS
- RJ AEM ADJUST ERROR MESSAGES
- RJ BVR BUILD VERIFY REQUEST
- SA1 I+CWF
- ZR X1,CTPX IF CONTROL WORDS DISABLED
- MX1 1 SET EP BIT OF INPUT FILE FET
- SA2 I+1
- LX1 44-59
- BX6 X1+X2
- SA6 A2
- CTP SUBR ENTRY/EXIT
- SB1 1 (B1) = 1
- SA6 CRI SAVE CALLING ROUTINE INDICATOR
- SX7 1RD SET DEFAULT TERMINATION CONDITION
- SA0 TCYA COPY ARGUMENT TABLE
- LX7 -6
- SX0 TCYAL COPY ARGUMENT TABLE LENGTH
- SA7 TC
- NG X6,CTP1 IF NOT *TCOPY* CALL
- SX7 1RX SET DEFAULT X FORMAT CONVERSION
- LX7 -6
- SA7 CF
- SX6 BUF2+1 FWA TCOPY WORKING BUFFER
- SA0 TTYA TCOPY ARGUMENT TABLE
- SA6 FWWB
- SX0 TTYAL TCOPY ARGUMENT TABLE LENGTH
- CTP1 RJ CCP CRACK COMMAND PARAMETERS
- RJ CPV CONVERT PARAMETER VALUES
- SA0 I CHECK IF CONTROL WORDS ALLOWED ON INPUT
- RJ CDT
- SA0 O CHECK IF CONTROL WORDS ALLOWED ON OUTPUT
- RJ CDT
- RJ CFN CHECK FILE NAMES
- SA1 CRI GET CALLING ROUTINE INDICATOR
- NG X1,CTP2 IF *COPY* CALL
- RJ VTY VALIDATE TCOPY
- SA1 CSMR GET CHARACTER SET MODE
- NG X1,CTP3 IF 64-CHARACTER SET
- SX6 0062B SET *SI*-CODED EOL FOR 63-CHARACTER SET
- SA6 CELA
- EQ CTP3 CONTINUE PRESET
- TCYA SPACE 4,10
- ** TCYA - TABLE OF COPY COMMAND ARGUMENTS.
- TCYA BSS 0
- I ARG I,I,400B INPUT FILE
- O ARG O,O,400B OUTPUT FILE
- V ARG =0,VF,400B VERIFY OPTION
- M ARG =0,CM,400B CODED MODE
- TC ARG =0,TC TERMINATION CONDITION
- N ARG =0,DCT COPY COUNT
- BS ARG =0,BS,400B BLOCK SIZE
- CC ARG =0,CC,400B CHARACTER COUNT
- EL ARG =0,EL ERROR LIMIT
- PO ARG =0,PO,400B PROCESSING OPTIONS
- L ARG L,L,400B ALTERNATE OUTPUT FILE
- NS ARG =0,NS,400B NOISE SIZE
- TCYAL EQU *-TCYA
- CON 0
- TTYA SPACE 4,10
- ** TTYA - TABLE OF TCOPY COMMAND ARGUMENTS.
- TTYA BSS 0
- I ARG I,I,400B INPUT FILE
- O ARG O,O,400B OUTPUT FILE
- F ARG =0,CF,400B CONVERSION FORMAT
- TC ARG =0,TC TERMINATION CONDITION
- N ARG =0,DCT COPY COUNT
- CC ARG =0,CC,400B CHARACTER COUNT
- EL ARG =0,EL ERROR LIMIT
- PO ARG =0,PO,400B PROCESSING OPTIONS
- L ARG L,L,400B ALTERNATE OUTPUT FILE
- NS ARG =0,NS,400B NOISE SIZE
- TTYAL EQU *-TTYA
- CON 0
- PRS SPACE 4,15
- ** PRS - PRESET FOR COPYBR, COPYBF, COPYEI, AND COPYX.
- *
- * ENTRY (X6) = -1, IF *COPYX* CALL.
- * = 0, IF *COPYBR* CALL.
- * = 1, IF *COPYBF* CALL.
- * = 2, IF *COPYEI* CALL.
- *
- * EXIT (B1) = 1.
- * TO *PER2*, IF ARGUMENT ERROR.
- *
- * USES A - 0, 1, 2, 5, 6, 7.
- * B - 6, 7.
- * X - 0, 1, 2, 3, 5, 6, 7.
- *
- * CALLS BVR, CDT, CFN, CIC, DXB, GPS, RBL, RBP, SFM, STC.
- PRS7 SA7 I+CWF DISABLE CONTROL WORD READ
- SA7 O+CWF DISABLE CONTROL WORD WRITE
- PRS SUBR ENTRY/EXIT
- SB1 1 (B1) = 1
- SA6 CRI SAVE CALLING ROUTINE INDICATOR
- SB6 X6
- MX0 42
- SA1 ACTR GET ARGUMENT COUNT
- SB7 X1
- ZR B7,PRS6 IF NO ARGUMENTS
- * PROCESS INPUT FILE NAME.
- R= A5,ARGR INPUT FILE NAME
- SA2 I
- BX7 X0*X5
- SX3 X2
- ZR X7,PRS1 IF NULL PARAMETER
- BX7 X7+X3
- SA7 A2
- * PROCESS OUTPUT FILE NAME.
- PRS1 SB7 B7-B1
- ZR B7,PRS6 IF END OF ARGUMENTS
- SA5 A5+B1
- SA2 O
- BX7 X0*X5
- SX3 X2
- ZR X7,PRS2 IF NULL PARAMETER
- BX7 X7+X3
- SA7 A2
- * PROCESS COPY COUNT PARAMETER, VERIFY PARAMETER, OR
- * TERMINATION CONDITION PARAMETERS.
- PRS2 SB7 B7-1
- ZR B7,PRS6 IF END OF ARGUMENTS
- GE B6,PRS3 IF NOT COPYX CALL
- RJ STC PROCESS TERMINATION CONDITION PARAMETERS
- EQ PRS5 PROCESS MODE PARAMETER
- PRS3 SA5 A5+B1
- BX5 X0*X5
- ZR X5,PRS5 IF NULL PARAMETER
- GT B6,B1,PRS4 IF COPYEI CALL
- BX6 X5
- SA6 DCT SAVE DISPLAY CODE COPY COUNT
- RJ DXB CONVERT COPY COUNT
- NZ X4,PER2 IF CONVERSION ERROR
- ZR X6,PER2 IF INCORRECT COUNT
- SA6 CT
- EQ PRS5 PROCESS MODE PARAMETER
- PRS4 SX6 B1+ SET VERIFY FLAG
- SA6 VF
- * PROCESS MODE PARAMETER.
- PRS5 SB7 B7-B1
- ZR B7,PRS6 IF END OF ARGUMENTS
- SA5 A5+B1
- MX0 42
- SB7 B7-B1
- BX5 X0*X5
- SX6 -B1
- NZ B7,PER2 IF TOO MANY ARGUMENTS
- ZR X5,PRS6 IF NULL PARAMETER
- SA6 CM SET CODED MODE FLAG (BOTH FILES)
- PRS6 SA0 I CHECK IF CONTROL WORDS ALLOWED ON INPUT
- RJ CDT
- SA0 O CHECK IF CONTROL WORDS ALLOWED ON OUTPUT
- RJ CDT
- RJ SFM SET FILE MODE
- RJ CFN CHECK FILE NAMES
- RJ CIC CHECK FOR INDETERMINATE COPY
- SA0 I GET INPUT PRU SIZE
- RJ GPS
- SA0 O GET OUTPUT PRU SIZE
- RJ GPS
- SA1 CRI GET CALLING ROUTINE INDICATOR
- BX7 X7-X7
- SB6 X1
- LE B6,PRS7 IF COPYBR OR COPYX CALL
- RJ RBL RESET BUFFER LENGTHS
- RJ RBP RESET BUFFER POINTERS
- RJ BVR BUILD VERIFY REQUEST
- EQ PRSX RETURN
- TITLE PRESET SUBROUTINES.
- AEM SPACE 4,10
- ** AEM - ADJUST ERROR MESSAGES.
- *
- * EXIT ERROR MESSAGES ADJUSTED FOR TYPE OF COPY.
- *
- * USES A - 1, 2, 3, 5, 6, 7.
- * X - 1, 2, 3, 5, 6, 7.
- *
- * CALLS SFN.
- AEM SUBR ENTRY/EXIT
- SA3 =10H
- SA2 =0LDELETED.
- SA1 CCDR+8
- BX6 X3
- SA5 NSFG
- NZ X5,AEM0 IF NOISE BLOCK TO BE DELETED
- SA5 NPDI
- ZR X5,AEM1 IF NOISE BLOCK TO BE PADDED
- AEM0 BX7 X2 ADJUST NOISE BLOCK SUMMARY MESSAGE
- SA7 IESD+3
- AEM1 SA1 A1-B1 BLANK FILL COMMAND IMAGE
- SA6 A1
- ZR X1,AEM1 IF NOT END OF COMMAND
- RJ SFN BLANK FILL LAST WORD OF COMMAND
- SA6 A1
- EQ AEMX RETURN
- BVR SPACE 4,15
- ** BVR - BUILD VERIFY REQUEST.
- *
- * EXIT IF VERIFY REQUESTED, VERIFY PARAMETERS BUILT,
- * VERIFY COMMAND DAYFILE MESSAGE BUILT,
- * AND INPUT AND OUTPUT FILES ARE REWOUND.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 2, 3, 5, 6.
- * X - 0, 1, 2, 3, 5, 6, 7.
- *
- * CALLS CDD, CIO=, SNM.
- BVR7 SX6 B0+ CLEAR VERIFY FLAG
- SA6 VF
- BVR SUBR ENTRY/EXIT
- SA2 VF
- ZR X2,BVRX IF VERIFY NOT REQUESTED
- REWIND I REWIND FILES
- SA1 SK
- NZ X1,BVR7 IF SKIP SET
- REWIND O
- SA1 I GET INPUT FILE NAME
- SB5 VFYC BUILD VERIFY COMMAND MESSAGE
- MX5 42
- BX1 X5*X1
- SB2 1RX
- RJ SNM SET INPUT FLE NAME IN MESSAGE
- SA1 O GET OUTPUT FILE NAME
- SB2 1R+
- BX1 X5*X1
- RJ SNM SET OUTPUT FILE NAME IN MESSAGE
- SA1 L GET ALTERNATE OUTPUT FILE NAME
- SB6 VFYA+4 BUILD VERIFY COMMAND PARAMETERS
- BX1 X5*X1
- SB2 1R/
- LX6 X1
- SA6 B6-B1
- RJ SNM SET ALTERNATE OUTPUT FILE NAME IN MESSAGE
- SA3 TC
- SX0 1R=
- SX5 1R,
- PL X3,BVR1 IF NOT COPY TO EOI
- SX6 1RN
- LX6 -6
- BX1 X1-X1
- EQ BVR2 CHECK CODED MODE
- BVR1 SX6 1R0
- SB6 B6+1
- LX6 -6
- SA2 DCT DISPLAY CODE COPY COUNT
- BX1 X6+X0
- ZR X3,BVR2 IF COPY TO DOUBLE EOF
- LX6 X2
- BX1 X2+X0
- BVR2 SA6 B6
- LX1 -6
- SB2 1R(
- RJ SNM SET TERMINATION CONDITION IN MESSAGE
- SA2 CM
- SB6 B6+B1
- BX1 X1-X1
- ZR X2,BVR4 IF NOT CODED MODE
- SX6 2RC1
- SB2 X2
- EQ B2,B1,BVR3 IF FIRST FILE ONLY
- SX6 X6+B1
- GT B2,B1,BVR3 IF SECOND FILE ONLY
- AX6 6
- LX6 6
- BVR3 LX6 -12
- BX1 X6+X5
- SA6 B6
- SB6 B6+B1
- BVR4 SB2 1R$
- LX1 -6
- RJ SNM SET MODE PARAMETER IN MESSAGE
- SA1 I+SLF
- SA2 O+SLF
- SB2 X1
- SB3 X2
- SA1 I+PRU
- BX3 X3-X3
- GT B2,BVR5 IF INPUT IS S OR L TAPE
- SA1 O+PRU
- LE B3,BVR6 IF OUTPUT NOT S OR L TAPE
- BVR5 RJ CDD CONVERT PRU SIZE TO DISPLAY
- SB2 B2-B1 BUILD BS= PARAMETER
- MX2 1
- SX7 2RBS
- AX2 B2
- LX7 -12
- BX6 X2*X4
- BX3 X7+X5
- SA6 B6+B1
- BX7 X7+X0
- LX3 -6
- BX6 X6+X0
- SA7 B6+
- LX6 -24
- BX3 X3+X6
- BVR6 SB2 1R)
- BX1 X3
- RJ SNM SET BLOCK SIZE IN MESSAGE
- EQ BVRX RETURN
- CCP SPACE 4,15
- ** CCP - CRACK THE COMMAND PARAMETERS.
- *
- * ENTRY (A0) = FWA ARGUMENT TABLE.
- * (X0) = ARGUMENT TABLE LENGTH.
- *
- * EXIT TO *PER2*, IF ARGUMENT ERROR.
- *
- * USES A - 6.
- * B - 2, 3, 4, 6.
- * X - 6.
- *
- * CALLS ARM, CPA, POP, USB.
- CCP SUBR ENTRY/EXIT
- SB2 CCDR UNPACK COMMAND
- RJ USB
- RJ POP SKIP OVER PROGRAM NAME
- ZR B6,CCPX IF NO ARGUMENTS
- SB2 X0 ARGUMENT TABLE LENGTH
- SB3 A0 FWA ARGUMENT TABLE
- SB4 PASB POSITIONAL ARGUMENT STRING BUFFER
- RJ CPA CONVERT TO POSITIONAL ARGUMENTS
- NG B5,PER2 IF CONVERSION ERROR
- PL X1,CCPX IF NO ARGUMENTS PROCESSED
- SX6 B5+ LWA POSITIONAL ARGUMENT STRING
- SB6 PASB FWA POSITIONAL ARGUMENT STRING
- SA6 USBC
- RJ ARM CRACK COMMAND PARAMETERS
- NZ X1,PER2 IF ARGUMENT ERROR
- EQ CCPX RETURN
- CDT SPACE 4,15
- ** CDT - CHECK DEVICE TYPE.
- *
- * ENTRY (A0) = FWA FET.
- *
- * EXIT ((A0)+CWF) .NE. 0, IF CONTROL WORDS ALLOWED.
- * ((A0)+SLF) = -1, IF F FORMAT TAPE.
- * = 1, IF S FORMAT TAPE.
- * = 2, IF L FORMAT TAPE.
- * ((A0)+NSZ) = NOISE SIZE IN FRAMES, IF TAPE FILE.
- * ((A0)+TRK) = TRACK BITS, TAPE TYPE AND LABEL TYPE,
- * IF TAPE FILE.
- * ((A0)+PRU) = PRU SIZE, IF F FORMAT TAPE.
- * WARNING MESSAGE ISSUED IF INPUT FILE NOT FOUND.
- *
- * USES A - 1, 2, 3, 6, 7.
- * B - 2, 5.
- * X - 0, 1, 2, 3, 6, 7.
- *
- * CALLS GPS, SNM.
- *
- * MACROS FILINFO, MESSAGE.
- CDT4 RJ GPS CHECK FOR TERMINAL FILE
- SA3 A0+B1 GET DEVICE TYPE
- MX2 -11
- LX3 12
- BX3 -X2*X3
- SX7 X3-2RTT
- SX2 A0-I
- ZR X7,CDTX IF TERMINAL FILE
- NZ X2,CDT5 IF NOT INPUT FILE
- SA1 A0 GET INPUT FILE NAME
- SB5 -CDTA * FILE NOT FOUND - LFN.*
- BX1 X0*X1
- SB2 1RX
- SX6 1
- SB3 ENDF REPLACE COPY COUNT MESSAGE
- SA6 ENDG FLAG *FILE NOT FOUND*
- RJ SNM SET NAME IN MESSAGE
- CDT5 SX7 B1+ ENABLE CONTROL WORDS
- SA7 A0+CWF
- CDT SUBR ENTRY/EXIT
- SA1 A0 SET FILE NAME IN PARAMETER BLOCK
- MX0 42
- SA2 CDTB
- BX1 X0*X1
- SX2 X2
- BX6 X1+X2
- SA6 A2
- FILINFO CDTB GET FILE INFORMATION
- SA1 CDTB+1 GET DEVICE TYPE AND STATUS
- BX3 X1
- AX3 48
- ZR X3,CDT4 IF FILE NOT FOUND
- SX2 X3-2ROD OPTICAL DISK DEVICE TYPE
- NZ X2,CDT1 IF NOT OD DEVICE
- SX7 FETODL OD FET EXTENSION LENGTH
- SX2 A0+12B BUILD POINTER TO FET EXTENSION
- LX7 18
- BX7 X2+X7
- SA7 A0+11B STORE POINTER AND LENGTH
- SX7 3 INDICATE OPTICAL DISK FILE
- SA7 A0+ODF
- EQ CDT5 ENABLE CONTROL WORDS
- CDT1 SX2 X3-2RNE
- LX1 59-15
- NG X1,CDT5 IF FILE ON MASS STORAGE
- LX1 59-24-59+15
- ZR X2,CDT5 IF NULL EQUIPMENT
- PL X1,CDTX IF NOT TAPE FILE
- MX0 2
- LX1 59-19-59+24
- BX6 X0*X1 ISOLATE NT/MT FLAGS
- LX1 59-26-59+19
- SA2 CDTB+FIPBL+1 GET LABEL TYPE
- BX1 X0*X1 ISOLATE TAPE DEVICE TYPE
- LX1 -2
- BX6 X6+X1
- SA3 A2-B1 GET TAPE FORMAT
- LX2 -12
- MX0 -6
- BX2 -X0*X2
- SA1 A2+B1 GET BLOCK SIZE AND NOISE SIZE
- LX3 -6
- BX6 X6+X2
- LX1 -6
- SA6 A0+TRK SAVE TRACK BITS, TAPE TYPE AND LABEL TYPE
- BX3 -X0*X3
- BX6 -X0*X1
- SA6 A0+NSZ SAVE NOISE SIZE
- SX7 B1
- SX2 X3-/MTX/TFLI
- ZR X2,CDT5 IF LI FORMAT TAPE
- SX2 X3-/MTX/TFS
- ZR X2,CDT3 IF S FORMAT TAPE
- SX7 2
- SX2 X3-/MTX/TFL
- ZR X2,CDT3 IF L FORMAT TAPE
- SX7 -1
- SX2 X3-/MTX/TFF
- NZ X2,CDT5 IF NOT F FORMAT TAPE
- LX1 -18
- SX6 X1
- SA6 A0+PRU SET F TAPE PRU SIZE
- CDT3 SA7 A0+SLF SET S/L/F TAPE INDICATOR
- SA7 A0+ODF SET S/L/F/OD INDICATOR
- EQ CDT5 SET CONTROL WORD FLAG
- CDTA DATA C* FILE NOT FOUND - XXXXXXX.*
- CDTB VFD 42/0,6/CDTBL,12/1 *FILINFO* PARAMETER BLOCK
- BSS FIPBL-1
- CON FMTK TAPE FORMAT KEYWORD
- CON LTYK TAPE LABEL TYPE KEYWORD
- CON BSZK TAPE BLOCK SIZE, NOISE SIZE KEYWORD
- CDTBL EQU *-CDTB
- CFN SPACE 4,10
- ** CFN - CHECK FILE NAMES.
- *
- * EXIT SKIP FLAG SET IF INPUT FILE NAME SAME AS OUTPUT
- * FILE NAME.
- * TO *PER1*, IF ALTERNATE OUTPUT FILE NAME CONFLICT.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 5.
- * X - 0, 1, 2, 3, 4, 6, 7.
- CFN SUBR ENTRY/EXIT
- SA1 I COMPARE FILE NAMES
- SA4 O
- MX0 42
- BX1 X0*X1
- SA3 L
- BX4 X0*X4
- SA2 =10H SKIPPING SET SKIP FLAG AND MESSAGE
- BX7 X1-X4
- LX6 X2
- NZ X7,CFN1 IF INPUT .NE. OUTPUT FILE NAME
- SX7 B1
- SA6 DRNA
- SA7 SK
- SA6 PEFB
- CFN1 SA2 SEWI SKIP EOF WRITE INDICATOR
- SB5 PERE * FILE NAME CONFLICT.*
- ZR X2,CFN2 IF PO=M NOT SELECTED
- SA6 PEFB
- CFN2 SX6 A3 SET ALTERNATE OUTPUT FILE POINTER
- BX3 X0*X3
- SX7 A4 SET OUTPUT FILE POINTER
- BX6 X6+X3
- SA2 EL CHECK IF ALTERNATE OUTPUT FILE TO BE USED
- BX7 X7+X4
- R= A6,ARGR
- BX1 X1-X3
- SA7 A6+B1
- ZR X2,CFNX IF ERROR LIMIT = 0
- ZR X1,PER1 IF ALTERNATE OUTPUT = INPUT FILE NAME
- BX7 X4-X3
- ZR X7,PER1 IF ALTERNATE OUTPUT = OUTPUT FILE NAME
- EQ CFNX RETURN
- CIC SPACE 4,15
- ** CIC - CHECK FOR INDETERMINATE COPY.
- *
- * EXIT WARNING MESSAGE ISSUED IF S, L, OR F TAPE COPY.
- * L TAPE PRU SIZE LIMITED IF COPYBF OR COPYEI CALL.
- * TO *PER*, IF F TAPE PRU SIZE .GT. WORKING BUFFER SIZE.
- *
- * USES A - 1, 2, 3, 6.
- * B - 2, 3, 4.
- * X - 0, 1, 2, 3, 6.
- *
- * CALLS SYS=.
- CIC SUBR ENTRY/EXIT
- SA1 I+SLF
- SA2 O+SLF
- NZ X1,CIC1 IF S, L, OR F TAPE INPUT
- ZR X2,CICX IF OUTPUT NOT S, L, OR F TAPE
- CIC1 SA3 CRI GET CALLING ROUTINE INDICATOR
- SB4 X2
- SB2 X3
- SB3 X1+
- LE B2,CIC5 IF COPYBR OR COPYX CALL
- SX6 BUFL-3 LIMIT L TAPE PRU SIZE TO WORKING BUFFER
- LE B3,B1,CIC2 IF INPUT NOT L TAPE
- SA6 I+6 SET MLRS FIELD IN INPUT FET
- CIC2 LE B4,B1,CIC3 IF OUTPUT NOT L TAPE
- SA6 O+6 SET MLRS FIELD OF OUTPUT FET
- CIC3 SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
- GE B3,CIC4 IF INPUT NOT F TAPE
- SA2 I+PRU GET INPUT FILE PRU SIZE
- IX2 X6-X2
- SA1 I
- NG X2,PER IF F TAPE PRU SIZE EXCEEDS WORKING BUFFER
- CIC4 GE B4,CIC5 IF OUTPUT NOT F TAPE
- SA3 O+PRU GET OUTPUT FILE PRU SIZE
- SA1 O
- IX3 X6-X3
- NG X3,PER IF F TAPE PRU SIZE EXCEEDS WORKING BUFFER
- CIC5 MESSAGE CICA,3 * COPY INDETERMINATE.*
- EQ CICX RETURN
- CICA DATA C* COPY INDETERMINATE.*
- CNS SPACE 4,15
- ** CNS - CALCULATE NOISE SIZE.
- *
- * ENTRY (A0) = FWA FET.
- * ((A0)+NSZ) = NOISE SIZE IN FRAMES.
- *
- * EXIT ((A0)+NSZ) = 24/NOISE SIZE IN BITS,
- * 18/MINIMUM NUMBER OF CHARACTERS IN LAST WORD,
- * 18/MINIMUM NUMBER OF WORDS FOR NOISE SIZE,
- * IF S, L, OR F TAPE.
- * (X6) = NOISE SIZE IN BITS, IF S, L, OR F TAPE.
- *
- * USES A - 1, 2, 3, 7.
- * B - 7.
- * X - 1, 2, 3, 4, 6, 7.
- CNS SUBR ENTRY/EXIT
- SA3 A0+SLF
- SA1 A0+NSZ GET NOISE SIZE IN FRAMES
- ZR X3,CNSX IF NOT S, L, OR F TAPE
- SA2 A0+TRK GET TRACK BITS
- LX2 59-56
- NG X2,CNSX IF CT OR AT TAPE
- LX2 59-58-59+56
- SX6 6
- NG X2,CNS1 IF 7-TRACK
- SX6 8
- CNS1 IX6 X1*X6 CALCULATE NOISE SIZE IN BITS
- SX2 5 CALCULATE MINIMUM NUMBER OF CHARACTERS
- IX1 X6+X2
- SX2 X2+B1
- BX7 X6
- IX1 X1/X2
- SX2 9 CALCULATE MINIMUM NUMBER OF WORDS
- IX3 X1+X2
- SX2 X2+B1
- BX4 X2
- IX3 X3/X2
- LX7 18
- SX2 X3-1 CALCULATE CHARACTERS IN LAST WORD
- IX4 X2*X4
- IX4 X1-X4
- BX7 X7+X4
- LX7 18
- BX7 X7+X3
- SA7 A1
- EQ CNSX RETURN
- CPV SPACE 4,10
- ** CPV - CONVERT PARAMETER VALUES.
- *
- * EXIT TO *PER2*, IF CONVERSION ERROR.
- *
- * USES A - 1, 4, 5, 6, 7.
- * B - 6, 7.
- * X - 0, 1, 4, 5, 6, 7.
- *
- * CALLS DXB, RPV.
- CPV SUBR ENTRY/EXIT
- SX4 1RU CONVERT ERROR LIMIT
- SA5 EL
- LX4 -6
- SX6 -B1
- BX4 X4-X5
- SB7 B1
- ZR X4,CPV1 IF UNLIMITED ERROR LIMIT
- RJ DXB
- NZ X4,PER2 IF CONVERSION ERROR
- CPV1 SA6 A5+
- SA5 NS NOISE SIZE
- ZR X5,CPV1.1 IF NS NOT SPECIFIED
- RJ DXB
- NZ X4,PER2 IF CONVERSION ERROR
- SX1 MNSZ
- IX4 X1-X6
- NG X4,PER2 IF EXCEEDS MAXIMUM NS SIZE
- SA6 A5
- NZ X6,CPV1.1 IF NOT NS=0
- SX6 DFNS SET TO DEFAULT NOISE SIZE
- SA6 A5+
- CPV1.1 SA5 BS CONVERT BLOCK SIZE
- ZR X5,CPV2 IF BS NOT SPECIFIED
- RJ DXB
- NZ X4,PER2 IF CONVERSION ERROR
- ZR X6,PER2 IF BS=0 SPECIFIED
- SA6 A5+
- CPV2 SA5 CC CONVERT CHARACTER COUNT
- ZR X5,CPV3 IF CC NOT SPECIFIED
- RJ DXB
- NZ X4,PER2 IF CONVERSION ERROR
- ZR X6,PER2 IF CC=0 SPECIFIED
- SA6 A5+
- CPV3 SA4 TC CONVERT TERMINATION CONDITION
- SA1 TTCV TABLE OF TERMINATION CONDITION VALUES
- RJ RPV
- ZR X1,PER2 IF NOT LEGAL TERMINATION CONDITION
- SA6 A4
- SB6 X6
- SA5 DCT CONVERT COPY COUNT
- RJ DXB
- NZ X4,PER2 IF CONVERSION ERROR
- ZR X6,PER2 IF ZERO COPY COUNT SPECIFIED
- GE B6,CPV4 IF NOT COPY TO EOI
- SX6 -1 SET UNLIMITED COPY COUNT
- CPV4 SA6 CT
- SA4 CM CONVERT CODED MODE PARAMETER
- BX6 X6-X6
- ZR X4,CPV5 IF MODE PARAMETER NOT SPECIFIED
- SX6 -B1 SET DEFAULT VALUE
- SA1 TCMV TABLE OF CODED MODE VALUES
- RJ RPV
- CPV5 SA6 A4
- MX0 6
- SA4 CF CONVERT CONVERSION FORMAT
- SA5 PO
- SA1 TCFV TABLE OF CONVERSION FORMAT VALUES
- ZR X4,CPV6 IF CONVERSION FORMAT NOT SPECIFIED
- RJ RPV
- ZR X1,PER2 IF NOT LEGAL CONVERSION FORMAT
- SA6 A4+
- CPV6 SA4 CRI GET CALLING ROUTINE INDICATOR
- SA1 TCPO CONVERT PROCESSING OPTIONS
- NG X4,CPV7 IF *COPY* CALL
- SA1 TTPO
- CPV7 ZR X5,CPVX IF END OF PROCESSING OPTIONS
- BX4 X0*X5
- BX5 -X0*X5
- LX5 6
- SX7 -B1
- RJ RPV GET INDICATOR ADDRESS
- ZR X1,PER2 IF NOT LEGAL PROCESSING OPTION
- SA7 X6+
- EQ CPV6 CONTINUE CONVERTING PROCESSING OPTIONS
- TCFV SPACE 4,10
- ** TCFV - TABLE OF CONVERSION FORMAT VALUES.
- TCFV BSS 0
- VFD 42/0LI,18/-3 I CONVERSION FORMAT
- VFD 42/0LSI,18/-2 SI CONVERSION FORMAT
- VFD 42/0LX,18/-1 X CONVERSION FORMAT
- VFD 42/0LE,18/1 E CONVERSION FORMAT
- VFD 42/0LB,18/2 B CONVERSION FORMAT
- CON 0 END OF TABLE
- TCMV SPACE 4,10
- ** TCMV - TABLE OF CODED MODE VALUES.
- TCMV BSS 0
- VFD 42/0LC1,18/1 CODED MODE ON INPUT ONLY
- VFD 42/0LC2,18/2 CODED MODE ON OUTPUT ONLY
- CON 0 END OF TABLE
- TPOA SPACE 4,10
- ** TCPO - TABLE OF *COPY* PROCESSING OPTIONS.
- TCPO BSS 0
- VFD 42/0LE,18/ESPI PROCESS PARITY ERRORS
- VFD 42/0LD,18/NPDI DELETE NOISE BLOCKS
- VFD 42/0LR,18/RSAI ALLOW RECORD SPLIT
- VFD 42/0LM,18/SEWI SKIP EOF WRITE ON OUTPUT
- CON 0 END OF TABLE FOR COPY
- TTPO SPACE 4,10
- ** TTPO - TABLE OF *TCOPY* PROCESSING OPTIONS.
- TTPO BSS 0
- VFD 42/0LE,18/ESPI PROCESS PARITY ERRORS
- VFD 42/0LT,18/TLLI TRUNCATE LONG LINES
- CON 0
- TTCV SPACE 4,10
- ** TTCV - TABLE OF TERMINATION CONDITION VALUES.
- TTCV BSS 0
- VFD 42/0LI,18/-1 END OF INFORMATION
- VFD 42/0LEOI,18/-1
- VFD 42/0LD,18/0 DOUBLE END OF FILE
- VFD 42/0LEOD,18/0
- VFD 42/0LF,18/1 FILE COUNT
- VFD 42/0LEOF,18/1
- CON 0 END OF TABLE
- GPS SPACE 4,10
- ** GPS - GET PRU SIZES.
- *
- * ENTRY (A0) = FWA FET.
- *
- * EXIT (A0+PRU) = PRU SIZE, IF NOT PREVIOUSLY SET.
- *
- * USES A - 1, 4, 6.
- * X - 1, 4, 6.
- *
- * CALLS CIO=.
- GPS SUBR ENTRY/EXIT
- SA4 A0+PRU
- PL X4,GPSX IF PRU SIZE ALREADY SET
- OPEN A0,READNR,R
- SA1 A0+4 GET PRU SIZE
- LX1 -18
- SX6 X1
- SA6 A4
- EQ GPSX RETURN
- PER SPACE 4,10
- ** PER - PRESET ERROR PROCESSOR.
- *
- * ENTRY (B5) = FWA MESSAGE, IF ENTRY AT *PER* OR *PER1*.
- * (X1) = FILE NAME, IF ENTRY AT *PER*.
- *
- * USES B - 2, 5.
- * X - 1, 2.
- *
- * CALLS MSG=, SNM, SYS=.
- PER2 SB5 PERA * ARGUMENT ERROR.*
- EQ PER1 ISSUE ERROR MESSAGE
- PER MX2 42 SET NAME IN MESSAGE
- SB2 1RX
- BX1 X2*X1
- RJ SNM
- PER1 MESSAGE B5,0
- ABORT
- PERA DATA C* ARGUMENT ERROR.*
- PERB DATA C* BLOCK SIZE TOO LARGE ON XXXXXXX.*
- PERC DATA C* BLOCK SIZE TOO SMALL ON XXXXXXX.*
- PERD DATA C* COPY FL ABOVE USER LIMIT.*
- PERE DATA C* FILE NAME CONFLICT.*
- PERF DATA C* INCORRECT COPY.*
- PERG DATA C* INCORRECT NOISE SIZE ON XXXXXXX.*
- PERH DATA C* UNLABELED TAPE REQUIRED - XXXXXXX.*
- PERI DATA C* UNRECOGNIZED TERMINATION CONDITION.*
- PERJ DATA C* UNRECOGNIZED BACKSPACE CODE.*
- PERK DATA C* BLOCK SIZE NOT APPLICABLE.*
- PERL DATA C* PROCESSING OPTION NOT APPLICABLE.*
- RBL SPACE 4,40
- ** RBL - RESET BUFFER LENGTHS.
- *
- * WHEN NO MANIPULATION OF DATA IS REQUIRED (COMPATIBLE FILES
- * AND SAME PRU SIZE, DOES NOT APPLY TO *TCOPY*), A SINGLE
- * BUFFER COPY WILL BE USED. FOR *COPY* L TO L AND F TO F
- * TAPE COPIES, THE SINGLE BUFFER SIZE WILL BE SET TO PROVIDE
- * ROOM FOR AT LEAST 6 BLOCKS IN THE CIO BUFFER, OR A BUFFER
- * SIZE OF *SBUFL*, WHICHEVER IS GREATER. FOR ALL OTHER
- * SINGLE-BUFFER COPIES, A BUFFER SIZE OF *SBUFL* WILL BE USED.
- *
- * FOR ALL OTHER TYPES OF COPIES, A DOUBLE BUFFER COPY WILL
- * BE USED. FOR *COPY* L OR F TO MS/I/LI/SI-B OR MS/I/LI/SI-B
- * TO L OR F TAPE COPY, THE BUFFER SIZES WILL BE SET TO PROVIDE
- * ROOM FOR AT LEAST 3 BLOCKS IN EACH BUFFER, OR A BUFFER
- * SIZE OF *FBUFL*, WHICHEVER IS GREATER. FOR ALL OTHER
- * DOUBLE-BUFFER COPIES, A BUFFER SIZE OF *FBUFL* WILL BE USED.
- *
- * IF THE FL REQUIRED TO SUPPORT THESE BUFFER SIZES IS LESS
- * THAN THE MINIMUM OF THE CURRENT MAXIMUM FL (MAXFL) AND THE
- * LOWER OPTIMUM FL (LOFL), THE BUFFER SIZES WILL BE INCREASED
- * UNTIL THE FL REACHES THIS VALUE.
- *
- * IF THE FL REQUIRED TO SUPPORT THESE BUFFER SIZES EXCEEDS THE
- * MINIMUM OF THE CURRENT MAXIMUM FL (MAXFL) AND THE MAXIMUM FL
- * FACTOR (MFLF), THE BUFFER SIZES WILL BE REDUCED UNTIL THE FL
- * REACHES THIS VALUE.
- *
- * ENTRY (I+PRU) = INPUT FILE PRU SIZE.
- * (O+PRU) = OUTPUT FILE PRU SIZE.
- *
- * EXIT (WBL) = WORKING BUFFER LENGTH.
- * (IBL) = INPUT BUFFER LENGTH.
- * (OBL) = OUTPUT BUFFER LENGTH.
- *
- * USES A - 1, 2, 3, 4, 6, 7.
- * B - 3, 4.
- * X - ALL.
- *
- * CALLS SYS=.
- RBL SUBR ENTRY/EXIT
- MEMORY CM,STAT,R GET CURRENT MAXIMUM FL (MAXFL)
- SA3 STAT
- AX3 30
- SX0 MFLF MAXIMUM FL FACTOR
- SX6 X3
- SX5 LOFL LOWER OPTIMUM FL
- SX3 X3-2
- SA6 MAXFL
- IX7 X3-X0
- PL X7,RBL1 IF MAXFL .GE. MFLF
- IX2 X3-X5
- BX0 X3 (X0) = MINIMUM(MAXFL,MFLF)
- PL X2,RBL1 IF MAXFL .GE. LOFL
- BX5 X3 (X5) = MINIMUM(MAXFL,LOFL)
- RBL1 SA1 I+ODF
- SA2 O+ODF
- SB3 X1 (B3) = I+ODF
- SB4 X2 (B4) = O+ODF
- SA1 I+PRU GET INPUT FILE PRU SIZE
- SA2 O+PRU GET OUTPUT FILE PRU SIZE
- SX3 3 ALLOW FOR CONTROL WORDS
- IX1 X1+X3
- IX2 X2+X3
- SX6 X2-BUFL
- NG X6,RBL2 IF PRU SIZE SHORTER THAN DEFAULT WBL
- BX6 X2
- SA6 WBL SET WORKING BUFFER = OUTPUT PRU SIZE
- RBL2 SA4 CRI GET CALLING ROUTINE INDICATOR
- ZR X4,RBL10 IF *TCOPY*
- NE B3,B4,RBL7 IF NOT SAME FORMAT FILES
- SA3 NSFG
- NZ X3,RBL7 IF DOUBLE BUFFER REQUIRED
- SX7 SBUFL DEFAULT SINGLE BUFFER LENGTH
- IX3 X1-X2
- BX2 X7
- SX6 SBUF FWA SINGLE BUFFER
- LT B3,RBL3 IF F TO F TAPE COPY
- GT B3,B1,RBL3 IF L TO L TAPE COPY
- SA1 I+CWF
- ZR X1,RBL10 IF CONTROL WORD READ DISABLED
- SA1 O+CWF
- ZR X1,RBL10 IF CONTROL WORD WRITE DISABLED
- ZR X3,RBL4 IF SAME PRU SIZE
- EQ RBL10 CHECK CALCULATED FL
- * RESET BUFFER LENGTHS FOR SINGLE BUFFER COPY.
- RBL3 PL X4,RBL4 IF NOT *COPY*
- LX7 X1,B1 SINGLE BUFFER = INPUT BLOCK SIZE * 6
- IX7 X7+X1
- LX7 1
- SX4 X7-SBUFL
- PL X4,RBL4 IF BUFFER SIZE .GE. *SBUFL*
- SX7 SBUFL SET DEFAULT SINGLE BUFFER SIZE
- RBL4 IX3 X6+X7
- IX4 X5-X3
- NG X4,RBL5 IF CALCULATED FL .GT. MINIMUM(MAXFL,LOFL)
- IX7 X7+X4 INCREASE SINGLE BUFFER SIZE
- BX2 X7
- EQ RBL6 SET SINGLE BUFFER SIZE
- RBL5 IX4 X0-X3
- BX2 X7
- PL X4,RBL6 IF CALCULATED FL .LE. MINIMUM(MAXFL,MFLF)
- IX7 X7-X4 DECREASE SINGLE BUFFER SIZE
- BX2 X7
- LX3 X1,B1
- IX3 X3-X7
- NG X3,RBL6 IF BUFFER STILL AT LEAST TWO BLOCKS LONG
- BX2 X2-X2 FORCE BUFFER THRESHOLD = 0
- RBL6 SA6 FWWB SET FWA SINGLE BUFFER
- SX1 3 CALCULATE SINGLE BUFFER THRESHOLD
- SA7 OBL SET OUTPUT BUFFER LENGTH
- IX6 X2/X1
- BX7 X7-X7
- SA7 A7-B1 CLEAR INPUT BUFFER LENGTH
- SA6 SBT BUFFER THRESHOLD = 1/3(BUFFER SIZE)
- SA7 A7-B1 CLEAR WORKING BUFFER LENGTH
- EQ RBLX RETURN
- * RESET BUFFER LENGTHS FOR DOUBLE BUFFER COPY.
- RBL7 SX3 X1
- IX4 X3-X2
- PL X4,RBL8 IF IBL .GE. OBL
- SX3 X2 (X3) = MAXIMUM(IBL,OBL)
- RBL8 LX6 X3,B1 SET BUFFER SIZE = MAXIMUM(IBL,OBL) * 3
- IX6 X6+X3
- SX4 X6-FBUFL
- PL X4,RBL9 IF BUFFER SIZE .GE. *FBUFL*
- SX6 FBUFL SET DEFAULT BUFFER SIZE
- RBL9 SX7 X3 SET WORKING BUFFER = MAXIMUM(IBL,OBL)
- SA6 IBL SET INPUT BUFFER LENGTH
- SA7 WBL
- SA6 OBL SET OUTPUT BUFFER LENGTH
- * CHECK CALCULATED FL FOR DOUBLE BUFFER COPY.
- RBL10 SA1 IBL
- SA2 OBL
- SA3 WBL
- SX3 BUF1+1+X3
- IX3 X1+X3
- IX3 X3+X2
- IX4 X5-X3
- IX3 X3-X0
- PL X4,RBL11 IF CALCULATED FL .LE. MINIMUM(MAXFL,LOFL)
- NG X3,RBLX IF CALCULATED FL .LT. MINIMUM(MAXFL,MFLF)
- AX3 1 DECREASE FL TO USE MINIMUM(MAXFL,MFLF)
- IX6 X1-X3
- SA6 A1
- IX7 X2-X3
- SA7 A2
- EQ RBLX RETURN
- RBL11 AX4 1 INCREASE FL TO USE MINIMUM(MAXFL,LOFL)
- IX6 X1+X4
- SA6 A1
- IX7 X2+X4
- SA7 A2
- EQ RBLX RETURN
- RBP SPACE 4,20
- ** RBP - RESET BUFFER POINTERS.
- *
- * RESETS INPUT AND OUTPUT BUFFER POINTERS (FIRST, IN, OUT,
- * AND LIMIT) AND FIELD LENGTH AS REQUIRED, OVERLAYING
- * NON-APPLICABLE CODE.
- *
- * ENTRY (FWWB) = FWA WORKING BUFFER.
- * (WBL) = WORKING BUFFER LENGTH.
- * (IBL) = INPUT BUFFER LENGTH.
- * (OBL) = OUTPUT BUFFER LENGTH.
- * (MAXFL) = CURRENT MAXIMUM FIELD LENGTH.
- *
- * EXIT TO *PER1*, IF FL .GT. USER LIMIT.
- *
- * USES A - 1, 2, 3, 5, 6, 7.
- * B - 5.
- * X - 0, 1, 2, 3, 5, 6, 7.
- *
- * CALLS SYS=.
- RBP SUBR ENTRY/EXIT
- SA3 FWWB FWA WORKING BUFFER
- SA1 WBL WORKING BUFFER LENGTH
- SA2 I+1 SET INPUT FILE CIO BUFFER POINTERS
- MX0 42
- BX2 X0*X2
- IX7 X1+X3
- BX6 X2+X7
- SA6 A2
- SA7 A6+B1
- SA1 A1+B1 INPUT BUFFER LENGTH
- SA7 A7+B1
- SA2 A7+B1
- IX7 X7+X1
- BX2 X0*X2
- BX6 X2+X7
- NZ X1,RBP1 IF NOT SINGLE BUFFERING
- SA3 A1+1 SINGLE BUFFER LENGTH
- IX3 X7+X3
- BX6 X2+X3
- RBP1 SA3 O+1 SET OUTPUT FILE CIO BUFFER POINTERS
- SA6 A2
- BX3 X0*X3
- BX6 X3+X7
- SA6 A3
- SA7 A6+B1
- SA1 A1+B1 OUTPUT BUFFER LENGTH
- SA7 A7+B1
- SA2 A7+B1
- IX7 X7+X1
- BX2 X0*X2
- BX6 X2+X7
- SA6 A2
- SX1 B1+B1
- IX7 X7+X1
- SA5 MAXFL GET CURRENT MAXIMUM FL
- SB5 PERD * COPY FL ABOVE USER LIMIT.*
- IX1 X5-X7
- LX7 30
- NG X1,PER1 IF REQUIRED FL .GT. MAXIMUM FL
- SA7 STAT
- MEMORY CM,STAT,R INCREASE FL
- EQ RBPX RETURN
- RPV SPACE 4,15
- ** RPV - RETURN PARAMETER VALUE.
- *
- * ENTRY (A1) = FWA PARAMETER VALUE TABLE.
- * (X1) = FIRST ENTRY FROM PARAMETER VALUE TABLE.
- * (X4) = PARAMETER, LEFT-JUSTIFIED, ZERO FILLED.
- *
- * EXIT (X1) = 0, IF PARAMETER NOT FOUND IN TABLE.
- * (X6) = PARAMETER VALUE IF MATCH FOUND, OTHERWISE
- * UNCHANGED.
- *
- * USES A - 1.
- * X - 1, 2, 3, 6.
- RPV2 SX6 X1+ RETURN PARAMETER VALUE
- RPV SUBR ENTRY/EXIT
- RPV1 MX2 42
- ZR X1,RPVX IF PARAMETER NOT FOUND
- BX3 X2*X1
- BX3 X3-X4
- ZR X3,RPV2 IF MATCH
- SA1 A1+B1
- EQ RPV1 CONTINUE SEARCH
- SFM SPACE 4,10
- ** SFM - SET FILE MODE.
- *
- * EXIT CODED MODE SET ON INPUT, OUTPUT, OR BOTH FILES,
- * IF REQUESTED.
- *
- * USES A - 1, 2, 6.
- * B - 2.
- * X - 1, 2, 6.
- SFM SUBR ENTRY/EXIT
- SA2 CM GET MODE INDICATOR
- ZR X2,SFMX IF CODED MODE NOT REQUESTED
- SB2 X2
- SX2 B1+B1
- GT B2,B1,SFM1 IF SECOND FILE ONLY
- SA1 I
- BX6 -X2*X1
- SA6 A1
- SFM1 EQ B2,B1,SFMX IF FIRST FILE ONLY
- SA1 O
- BX6 -X2*X1
- SA6 A1
- EQ SFMX RETURN
- SPS SPACE 4,10
- ** SPS - SET PRU SIZE ON S AND L TAPES.
- *
- * ENTRY (A0) = FWA FET.
- *
- * EXIT MLRS FIELD OF S OR L TAPE FET SET TO PRU SIZE.
- * (A0+PRU) = PRU SIZE, IF S OR L TAPE.
- * TO *PER*, IF INCORRECT BLOCK SIZE.
- *
- * USES A - 1, 2, 6, 7.
- * B - 2, 5.
- * X - 0, 1, 2, 3, 4, 6, 7.
- SPS SUBR ENTRY/EXIT
- SA1 A0+SLF
- SB2 X1+
- LE B2,SPSX IF NOT S OR L TAPE
- SX6 DLPS DEFAULT L TAPE PRU SIZE
- GT B2,B1,SPS1 IF L TAPE
- SX6 DSPS DEFAULT S TAPE PRU SIZE
- SPS1 SA1 MCC MAXIMUM CHARACTER COUNT
- ZR X1,SPS2 IF CHARACTER COUNT NOT SPECIFIED
- SX2 9 CALCULATE PRU SIZE
- BX0 X1
- IX1 X1+X2
- SX2 X2+B1
- BX3 X2
- IX6 X1/X2
- IX7 X6*X3 CALCULATE UNUSED BIT COUNT
- SA2 A0+NSZ CHECK CHARACTER COUNT AGAINST NOISE SIZE
- IX7 X7-X0
- SX4 6
- AX2 36
- IX7 X7*X4
- SA1 A0
- IX4 X0*X4
- SB5 PERC * BLOCK SIZE TOO SMALL ON LFN.*
- IX4 X4-X2
- SA7 FUBC
- NG X4,PER IF BLOCK SIZE TOO SMALL
- GT B2,B1,SPS2 IF L TAPE
- SX2 MCBS CHECK CHARACTER COUNT AGAINST MAXIMUM
- SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
- IX2 X2-X0
- NG X2,PER IF BLOCK SIZE TOO LARGE
- SPS2 SA6 A0+6 SET MLRS FIELD OF FET
- SA6 A0+PRU SET PRU SIZE ON S OR L TAPE
- EQ SPSX RETURN
- STC SPACE 4,20
- ** STC - SET TERMINATION CONDITION.
- *
- * ENTRY (B7) = REMAINING ARGUMENT COUNT.
- * (A5) = ADDRESS OF PREVIOUS ARGUMENT.
- *
- * EXIT (B7) = UPDATED REMAINING ARGUMENT COUNT - 1.
- * (A5) = UPDATED ADDRESS OF PREVIOUS ARGUMENT.
- * (TM) = COPYX TERMINATION CONDITION (0 IF ZERO
- * RECORD, .GT. 0 IF RECORD NAME, .LT. 0 IF
- * RECORD COUNT).
- * (RN - RN+1) = COPYX TERMINATION RECORD NAME AND
- * TYPE, IF SPECIFIED.
- * (BK1) = COPYX LFN1 BACKSPACE CONTROL.
- * (BK2) = COPYX LFN2 BACKSPACE CONTROL.
- * TO *PER2*, IF ARGUMENT ERROR.
- *
- * USES X - 0, 1, 2, 3, 5, 6, 7.
- * B - 2, 5, 7.
- * A - 1, 2, 5, 6, 7.
- *
- * CALLS DXB.
- STC SUBR ENTRY/EXIT
- SA5 A5+B1
- MX0 42
- SA1 =2L00
- BX5 X0*X5
- BX6 X1-X5
- ZR X5,STC5 IF BLANK ARGUMENT
- ZR X6,STC4 IF *00*
- RJ DXB CONVERT NUMBER
- SB5 PERI * UNRECOGNIZED TERMINATION CONDITION.*
- NZ X4,STC1 IF ASSEMBLY ERROR
- ZR X6,PER1 IF COUNT = 0
- SA6 CT SET COUNT
- EQ STC5
- STC1 SA5 A5 SET NAME
- MX0 42
- SX3 X5-1R/ CHECK SEPARATOR
- BX6 X0*X5
- MX7 1
- NZ X3,STC3 IF NO TYPE SPECIFIED
- SB7 B7-B1
- SA5 A5+B1 RECORD NAME
- LX3 X6
- SA2 STCA CHECK TYPE
- BX6 X0*X5
- STC2 ZR X2,PER1 IF TYPE NOT IDENTIFIED
- BX7 X2-X3
- SA2 A2+B1
- NZ X7,STC2
- SX7 A2-STCA-1 SET TYPE
- STC3 SA6 RN SET RECORD NAME
- SA7 A6+B1 SET TYPE
- SX6 B1
- STC4 SA6 TM SET TERMINATION CONDITION
- SX7 -B1 SET NEGATIVE COUNT
- SA7 CT
- * PROCESS BACKSPACE CONTROL.
- STC5 EQ B7,B1,STCX IF END OF ARGUMENTS
- SB7 B7-B1
- SA5 A5+B1 CHECK BACKSPACE ARGUMENT
- MX1 42
- BX5 X1*X5
- LX5 6
- BX1 X1*X5
- SB5 PERJ * UNRECOGNIZED BACKSPACE CODE.*
- NZ X1,PER1 IF BACKSPACE CODE TOO LONG
- SB2 X5-1R0
- ZR X5,STCX IF NULL PARAMETER
- ZR B2,STCX IF ZERO ARGUMENT
- NG B2,PER1 IF ALPHABETIC CHARACTER
- SB2 B2-2
- GT B2,B1,PER1 IF BACKSPACE CODE .GT. 3
- SX6 B0
- ZR B2,STC6 IF BACKSPACE CODE = 2
- SX6 B1 SET FILE 1 BACKSPACE
- SX7 B0
- STC6 NG B2,STC7 IF BACKSPACE CODE = 1
- SX7 B1 SET FILE 2 BACKSPACE
- STC7 SA6 BK1
- SA7 BK2
- EQ STCX RETURN
- STCA BSS 0
- LOC 0
- .E ECHO ,RT=("RTMIC")
- .A IFC NE,/RT//
- DATA L/RT/
- .A ELSE
- DATA 1
- .A ENDIF
- .E ENDD
- CON 0 END OF TABLE
- LOC *O
- VCY SPACE 4,15
- ** VCY - VALIDATE COPY.
- *
- * EXIT TO *PER*, IF INCORRECT NOISE SIZE OR BLOCK SIZE.
- * TO *PER1*, IF INCORRECT COPY OR BLOCK SIZE OR
- * PROCESSING OPTION NOT APPLICABLE.
- *
- * USES A - 0, 1, 2, 3, 4, 6.
- * B - 3, 4, 5.
- * X - 0, 1, 2, 3, 4, 6, 7.
- *
- * CALLS CNS, SFM.
- VCY SUBR ENTRY/EXIT
- * VALIDATE COPY FILE TYPES.
- SA1 I+SLF
- SA2 O+SLF
- SB3 X1
- SB4 X2
- SB5 PERF * INCORRECT COPY.*
- ZR B4,VCY1 IF OUTPUT FILE NOT S, L, OR F TAPE
- EQ B3,B4,VCY1 IF INPUT = OUTPUT FILE TYPE
- LT B3,PER1 IF INPUT FILE IS F TAPE
- LT B4,PER1 IF OUTPUT FILE IS F TAPE
- GT B3,B1,PER1 IF INPUT FILE IS L TAPE
- NE B3,B1,VCY1 IF NOT S TO L TAPE COPY
- SX6 B1 PROCESS AS S TO S TAPE COPY
- SB4 B1
- SA6 A2+
- * SET FILE MODE.
- VCY1 RJ SFM
- * VALIDATE R AND D PROCESSING OPTIONS.
- SA1 RSAI RECORD SPLIT ALLOWED INDICATOR
- SA2 NPDI NOISE BLOCKS PADDED/DELETED INDICATOR
- BX1 X1+X2
- ZR X1,VCY2 IF R AND D PROCESSING OPTIONS NOT SELECTED
- SB5 PERL * PROCESSING OPTION NOT APPLICABLE.*
- NZ B3,PER1 IF INPUT NOT MS/I/LI/SI-B
- LE B4,PER1 IF OUTPUT NOT S OR L TAPE
- * CALCULATE NOISE SIZE FOR S, L, AND F TAPES. VERIFY NOISE
- * SIZES IF S TO S, L TO L, OR F TO F TAPE COPY.
- VCY2 SA0 I CALCULATE INPUT FILE NOISE SIZE
- RJ CNS
- SA2 NS NOISE SIZE IN CHARACTERS
- SX3 6
- IX1 X2*X3
- ZR X1,VCY2.1 IF NS PARAMETER NOT SPECIFIED
- IX7 X6-X1
- ZR B3,PER2 IF INPUT TAPE NOT S/L/F FORMAT
- PL X7,VCY2.1 IF NS PARAMETER .LE. INPUT TAPE NOISE SIZE
- BX6 X2 NOISE SIZE IN CHARACTERS
- SA6 A0+NSZ INCREASE INPUT TAPE NOISE SIZE TO NS
- SX6 B1 FLAG FOR NOISE SIZE PROCESSING
- SA6 NSFG
- RJ CNS
- VCY2.1 BX0 X6
- SA0 O CALCULATE OUTPUT FILE NOISE SIZE
- RJ CNS
- NE B3,B4,VCY3 IF INPUT .NE. OUTPUT FILE TYPE
- ZR B3,VCY3 IF NOT S, L, OR F TAPE COPY
- IX6 X0-X6
- PL X6,VCY2.2 IF INPUT NOISE SIZE .GT. OUTPUT NOISE SIZE
- SA1 O+NSZ SET INPUT NOISE SIZE = OUTPUT NOISE SIZE
- BX6 X1
- SA6 I+NSZ
- SA1 NS
- SX6 B1+ SET NOISE SIZE PROCESSING IN EFFECT
- SA6 NSFG
- ZR X1,VCY2.2 IF NOISE SIZE PARAMETER NOT SPECIFIED
- SX6 B1+B1 NOISE BLOCK SIZE AUTOMATICALLY INCREASED
- SA6 A6 SET NOISE SIZE FORCED UP FLAG
- * VALIDATE F TO F TAPE COPY BLOCK SIZE.
- VCY2.2 GE B3,VCY3 IF NOT F TO F TAPE COPY
- SA2 I+PRU GET INPUT FILE BLOCK SIZE
- SA3 O+PRU GET OUTPUT FILE BLOCK SIZE
- IX3 X3-X2
- SB5 PERC * BLOCK SIZE TOO SMALL ON LFN.*
- NG X3,PER IF INPUT .GT. OUTPUT BLOCK SIZE
- * VALIDATE BS AND CC PARAMETER USAGE.
- VCY3 SA1 BS
- SA2 CC
- SX3 10
- BX4 X1+X2
- IX6 X1*X3
- ZR X2,VCY4 IF CC NOT SPECIFIED
- NZ X1,PER2 IF BS AND CC SPECIFIED
- BX6 X2
- VCY4 ZR X4,VCY5 IF BS AND CC NOT SPECIFIED
- SA6 MCC
- GE B3,B1,VCY5 IF S OR L INPUT TAPE
- SB5 PERK * BLOCK SIZE NOT APPLICABLE.*
- LE B4,PER1 IF NOT S OR L TAPE
- VCY5 SA1 NSFG
- ZR X1,VCYX IF NO NOISE PROCESSING
- SB2 X1
- SB5 VCYA * INSUFFICIENT NOISE SIZE.*
- NE B2,B1,VCY6 IF NOISE SIZE AUTOMATICALLY INCREASED
- SA1 NS
- NZ X1,VCYX IF NOISE SIZE PARAMETER SPECIFIED
- SB5 VCYB * NOISE BLOCK PROCESSING IN EFFECT.*
- VCY6 MESSAGE B5,3
- EQ VCYX RETURN
- VCYA DATA C* INSUFFICIENT NOISE SIZE, AUTOMATICALLY INCREASED.*
- VCYB DATA C* NOISE BLOCK PROCESSING IN EFFECT.*
- VTY SPACE 4,15
- ** VTY - VALIDATE TCOPY.
- *
- * EXIT TO *PER*, IF LABELED TAPE NOT ALLOWED OR INCORRECT
- * NOISE SIZE, OR INCORRECT BLOCK SIZE.
- * TO *PER1* IF INCORRECT FILE/CONVERSION TYPES FOR COPY.
- * TO *PER2*, IF ARGUMENT ERROR.
- *
- * USES A - 0, 1, 2, 3, 4, 6, 7.
- * B - 2, 3, 4, 5, 6, 7.
- * X - 1, 2, 3, 4, 6, 7.
- *
- * CALLS CNS, SFM.
- VTY8 SB2 O DISABLE CONTROL WORD WRITE FOR E/B TO MS
- SX7 B0+
- NZ B3,VTY9 IF NOT MS/I/LI/SI-B INPUT FILE
- SB2 I DISABLE CONTROL WORD READ FOR MS TO E/B
- VTY9 SA7 B2+CWF DISABLE CONTROL WORD READ/WRITE
- VTY SUBR ENTRY/EXIT
- * VALIDATE TCOPY FILE TYPES AND CONVERSION FORMAT.
- SA1 I+SLF
- SA2 O+SLF
- SA3 CF
- SB3 X1
- SB4 X2
- SB5 PERF * INCORRECT COPY.*
- LT B3,B1,VTY1 IF NOT S/L INPUT TAPE
- SA2 TLLI CHECK FOR INCORRECT PROCESSING OPTION
- SB5 PERL * PROCESSING OPTION NOT APPLICABLE.*
- NZ X2,PER1 IF *PO=T* PROCESSING OPTION SPECIFIED
- SA1 SK
- SA0 I
- NZ X1,VTY2 IF SKIP SET
- NZ B4,PER1 IF OUTPUT FILE NOT MS/OD/I/LI/SI-B
- EQ VTY2 CONTINUE TCOPY VALIDATION
- VTY1 NZ B3,PER1 IF INPUT FILE NOT MS/OD/I/LI/SI-B
- NE B4,B1,PER1 IF OUTPUT FILE IS NOT S TAPE
- NG X3,PER1 IF NOT E OR B CONVERSION FORMAT
- SA0 O
- * ENFORCE UNLABELED S TAPE FOR E, B, AND X CONVERSION.
- VTY2 BX6 X3 SET CONVERSION FORMAT ON S TAPE
- SB7 -B1
- SA6 A0+TCF
- SB6 X3+
- LT B6,B7,VTY3 IF SI-C CONVERSION
- SA2 A0+TRK CHECK LABEL TYPE
- SA1 A0
- SX2 X2
- SB5 PERH * UNLABELED TAPE REQUIRED - LFN.*
- NZ X2,PER IF LABELED S TAPE
- * VALIDATE CC PARAMETER USAGE AND SET MAXIMUM CHARACTER COUNT.
- VTY3 SA3 CC
- SA4 TTCD+B6 DEFAULT MAXIMUM CHARACTER COUNT
- SX6 X4
- ZR X3,VTY5 IF CC PARAMETER NOT SPECIFIED
- BX6 X3
- SB5 PERK * BLOCK SIZE NOT APPLICABLE.*
- LE B6,PER1 IF NOT E OR B CONVERSION
- SX2 MCBS
- SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
- IX2 X2-X3
- SA1 A0
- NG X2,PER IF EXCEEDS MAXIMUM BLOCK SIZE
- GT B6,B1,VTY4 IF B CONVERSION
- SX2 A0-I
- ZR X2,VTY4 IF READING E TAPE
- LX3 -1 TRUNCATE CC VALUE TO EVEN NUMBER
- PL X3,VTY5 IF EVEN NUMBER
- SX6 X6-1
- EQ VTY5 SET MODE ON S TAPE
- VTY4 SX2 10 ROUND UP CC VALUE TO MULTIPLE OF 10
- SX6 X6+9
- BX1 X2
- IX6 X6/X2
- IX6 X6*X1
- * GENERATE CODED MODE FLAG.
- VTY5 AX4 18
- SA6 MCC
- SB2 X4
- BX6 X6-X6
- EQ B2,VTY7 IF BINARY MODE
- SX6 B1
- EQ B3,B1,VTY6 IF S INPUT TAPE
- SX6 B1+1
- VTY6 EQ B2,B1,VTY7 IF CODED MODE
- SA1 A0+TRK GET TRACK BITS
- LX1 59-58
- NG X1,VTY7 IF 7-TRACK TAPE
- SX6 B0
- VTY7 SA6 CM
- RJ SFM SET FILE MODE
- * CALCULATE NOISE SIZE AND VALIDATE NOISE FOR X, SI-CODED, AND
- * I FILES (REQUIRED NOISE SIZE OF EIGHT FOR 7-TRACK, SIX FOR
- * 9-TRACK). CALCULATE NOISE SIZE FOR E/B TAPE AND SET TO THROW
- * AWAY BLOCKS LESS THAN THE NS PARAMETER WHICH THE USER
- * SPECIFIED.
- RJ CNS CALCULATE NOISE SIZE ON S TAPE
- SA2 NS CHECK NOISE SIZE PARAMETER
- PL B6,VTY7.2 IF NOT X, SI-C, OR I CONVERSION
- NZ X2,PER2 IF NOISE SIZE PARAMETER SPECIFIED
- SA1 A0+
- SX6 X6-48
- SB5 PERG * INCORRECT NOISE SIZE ON LFN.*
- ZR X6,VTYX IF CORRECT NOISE SIZE
- PL X6,PER IF INCORRECT NOISE SIZE
- SA2 A0+TRK GET TRACK BIT
- SX6 8
- PL X2,VTY7.1 IF 7 TRACK
- SX6 6
- VTY7.1 SA6 A0+NSZ FORCE IT UP TO 48 BITS
- RJ CNS
- SX6 B1+B1 SET FLAG FOR INSUFFICIENT NOISE SIZE
- SA6 NSFG
- EQ VTYX RETURN
- VTY7.2 SX3 6
- IX1 X3*X2
- ZR X1,VTY8 IF NS PARAMETER NOT SPECIFIED
- IX6 X6-X1
- PL X6,VTY8 IF NS PARAMETER .LE. INPUT TAPE NOISE SIZE
- BX6 X2
- SA6 A0+NSZ THROW AWAY BLOCKS .LT. NS PARAMETER
- RJ CNS
- SX6 B1+ SET FLAG FOR NOISE SIZE PROCESSING
- SA6 NSFG
- EQ VTY8 DISABLE CONTROL WORD WRITE FOR E/B TO MS
- TTCD SPACE 4,10
- ** TTCD - TABLE OF TCOPY DEFAULTS FOR CONVERSION TYPE.
- *
- *T 42/MODE, 18/CHCNT
- * MODE 0=BINARY, 1=CODED, 2=CODED 7-TRACK, BINARY 9-TRACK
- * CHCNT DEFAULT MAXIMUM CHARACTER COUNT
- *
- * NOTE - THIS TABLE IS BOTH POSITIVELY AND NEGATIVELY INDEXED.
- VFD 42/0,18/1001B*10 I
- VFD 42/2,18/200B*10 SI-C
- VFD 42/0,18/1000B*10 X
- TTCD CON 0
- VFD 42/1,18/136 E
- VFD 42/1,18/150 B
- SPACE 4,10
- ** PRESET DATA STORAGE.
- BS CON 0 BLOCK SIZE
- CC CON 0 CHARACTER COUNT
- CF CON 0 CONVERSION FORMAT
- CM CON 0 CODED MODE (-1=BOTH,0=NEITHER,1=1ST,2=2ND)
- DCT CON 1L1 DISPLAY CODE COPY COUNT
- MAXFL CON 0 CURRENT MAXIMUM FIELD LENGTH
- MCC CON 0 MAXIMUM CHARACTER COUNT
- PO CON 0 PROCESSING OPTIONS
- STAT VFD 30/-1,30/0 FIELD LENGTH STATUS WORD
- * THE ORDER OF THE FOLLOWING MUST BE PRESERVED.
- WBL CON BUFL WORKING BUFFER LENGTH
- IBL CON FBUFL INPUT BUFFER LENGTH
- OBL CON FBUFL OUTPUT BUFFER LENGTH
- SPACE 4,10
- ** COMMON DECKS.
- *CALL COMCARM
- *CALL COMCCPA
- *CALL COMCDXB
- *CALL COMCLFM
- *CALL COMCPOP
- *CALL COMCUSB
- SPACE 4,10
- ** PRESET BUFFERS.
- PASB EQU * POSITIONAL ARGUMENT STRING BUFFER
- ERRNG RFL=-PASB-200 CHECK FOR BUFFER OVERFLOW FL
- SPACE 4,10
- END
cdc/nos2.source/opl871/copyb.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator