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
  1. IDENT COPYB,FETS
  2. ABS
  3. ENTRY COPY
  4. ENTRY COPYBF
  5. ENTRY COPYEI
  6. ENTRY COPYBR
  7. ENTRY COPYX
  8. ENTRY TCOPY
  9. ENTRY NPC=
  10. ENTRY RFL=
  11. ENTRY SSM=
  12. SYSCOM B1 DEFINE (B1) = 1
  13. TITLE COPYB - BINARY FILE COPIES.
  14. *COMMENT COPYB - BINARY FILES COPIES.
  15. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  16. SPACE 4,10
  17. ***** COPYB - BINARY FILE COPIES.
  18. *
  19. * G. R. MANSFIELD. 70/12/20.
  20. *
  21. * J. C. BOHNHOFF. 73/03/01.
  22. * R. E. TATE. 73/04/03.
  23. * J. L. LARSON. 77/03/16.
  24. *
  25. * THE COPYB DECK CONTAINS THE BINARY FILE AND RECORD COPY
  26. * UTILITIES, INCLUDING COPY, COPYBF, COPYEI, TCOPY, COPYBR,
  27. * AND COPYX.
  28. SPACE 4,10
  29. *** THE COPY UTILITY COPIES DATA FROM ONE FILE TO ANOTHER UNTIL
  30. * THE SPECIFIED TERMINATION CONDITION IS MET. THE FOLLOWING
  31. * TABLE DESCRIBES THE CAPABILITIES OF THE COPY UTILITY -
  32. *
  33. * OUTPUT MEDIA FORMAT
  34. * +------+------+------+------+------+------+------+
  35. * + MS + I + SI + S + L + F + LI +
  36. * +------+------+------+------+------+------+------+------+
  37. * + MS + YES* + YES* + YES* + YES + YES + NO + YES* +
  38. * +------+------+------+------+------+------+------+------+
  39. * + I + YES* + YES* + YES* + YES + YES + NO + YES* +
  40. * INPUT +------+------+------+------+------+------+------+------+
  41. * + SI + YES* + YES* + YES* + YES + YES + NO + YES* +
  42. * MEDIA +------+------+------+------+------+------+------+------+
  43. * + S + YES + YES + YES + YES* + YES + NO + YES +
  44. * FORMAT +------+------+------+------+------+------+------+------+
  45. * + L + YES + YES + YES + NO + YES* + NO + YES +
  46. * +------+------+------+------+------+------+------+------+
  47. * + F + YES + YES + YES + NO + NO + YES* + YES +
  48. * +------+------+------+------+------+------+------+------+
  49. * + LI + YES* + YES* + YES* + YES + YES + NO + YES* +
  50. * +------+------+------+------+------+------+------+------+
  51. *
  52. * MS REFERS TO MASS STORAGE, TERMINAL, OPTICAL DISK OR
  53. * UNIT RECORD EQUIPMENT. I, SI, S, L, F AND LI REFER
  54. * TO TAPE FORMATS. COPIES MARKED WITH (*) INDICATE
  55. * VERIFY IS MEANINGFUL, SINCE LOGICAL STRUCTURE OF
  56. * FILES IS COMPATIBLE.
  57. *
  58. *
  59. * COPY ( LFN1, LFN2, X, C, TC, COPYCNT, BSIZE, CHARCNT,
  60. * ERLIMIT, PO, LFN3, NSC )
  61. *
  62. * COPY ( I=LFN1, O=LFN2, V=X, M=C, TC=TC, N=COPYCNT, BS=BSIZE,
  63. * CC=CHARCNT, EL=ERLIMIT, PO=PO, L=LFN3, NS=NSC )
  64. *
  65. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  66. *
  67. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  68. * IF LFN1 = LFN2, FILES ARE SKIPPED.
  69. *
  70. * X IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS), FILES
  71. * ARE REWOUND BEFORE COPY, AND REWOUND, VERIFIED, AND
  72. * REWOUND AGAIN AFTER COPY. DEFAULT = NO VERIFY.
  73. * IF LFN1 = LFN2, FILE WILL BE REWOUND BEFORE
  74. * SKIPPING, BUT VERIFY WILL NOT BE DONE.
  75. *
  76. * C CODED FILE MODE SELECTION -
  77. * C1 = INPUT FILE ONLY, C2 = OUTPUT FILE ONLY,
  78. * OTHER (1 TO 7 ALPHANUMERIC CHARACTERS) = BOTH FILES.
  79. * APPLIES TO S, L, AND SI FORMAT TAPES.
  80. * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
  81. *
  82. * TC COPY TERMINATION CONDITION. DEFINES MEANING OF
  83. * COPYCNT PARAMETER -
  84. * F OR EOF = COPYCNT DEFINES NUMBER OF FILES TO COPY.
  85. * I OR EOI = COPY TO EOI. COPYCNT MEANINGLESS.
  86. * D OR EOD = COPYCNT DEFINES NUMBER OF DOUBLE EOF,S
  87. * TO COPY TO.
  88. * DEFAULT = EOD.
  89. *
  90. * COPYCNT COPY COUNT, AS FURTHER DEFINED BY TC PARAMETER.
  91. * DEFAULT = 1.
  92. *
  93. * BSIZE MAXIMUM BLOCK SIZE IN CM WORDS FOR S OR L TAPE.
  94. * BSIZE CANNOT BE SPECIFIED TOGETHER WITH CHARCNT
  95. * PARAMETER. DEFAULT = 1000B FOR S TAPE, 2000B
  96. * FOR L TAPE.
  97. *
  98. * CHARCNT MAXIMUM NUMBER OF CHARACTERS IN BLOCK FOR S OR L
  99. * TAPE. PRU SIZE AND UNUSED BIT COUNT ARE CALCULATED
  100. * FROM CHARCNT, HOWEVER, UNUSED BIT COUNT IS USED
  101. * ONLY WHEN WRITING A FULL BLOCK DURING GENERATION
  102. * OF AN S OR L TAPE FROM A MASS STORAGE, I, LI OR
  103. * SI-BINARY FILE. CHARCNT CANNOT BE SPECIFIED
  104. * TOGETHER WITH BSIZE PARAMETER. NO DEFAULT
  105. * (BSIZE DEFAULT USED).
  106. *
  107. * ERLIMIT ERROR LIMIT. MAXIMUM NUMBER OF NON-FATAL TAPE
  108. * ERRORS TO ALLOW BEFORE ABORT. INCLUDES *PARITY*
  109. * AND *BLOCK TOO LARGE* ERRORS, AS RETURNED BY THE
  110. * SYSTEM AFTER RECOVERY ATTEMPTS FAILED.
  111. * IF EL=U IS SPECIFIED, UNLIMITED ERROR PROCESSING
  112. * IS ALLOWED. ERROR LIMIT DOES NOT APPLY (IGNORED)
  113. * IF CONTROL WORDS ARE NOT SUPPORTED ON THE INPUT
  114. * DEVICE TYPE (TERMINAL AND UNIT RECORD EQUIPMENT),
  115. * IN WHICH CASE, ANY ERROR WILL ABORT THE JOB.
  116. * DEFAULT = 0.
  117. *
  118. * PO ONE OR MORE OF THE FOLLOWING PROCESSING OPTIONS -
  119. *
  120. * E INPUT BLOCKS WITH *PARITY* OR *BLOCK TOO
  121. * LARGE* ERRORS ARE TO BE PROCESSED. DEFAULT =
  122. * ERROR BLOCKS ARE SKIPPED.
  123. *
  124. * D NOISE BLOCKS GENERATED DURING MASS STORAGE, I,
  125. * LI OR SI COPY TO S OR L TAPE ARE DELETED.
  126. * DEFAULT = NOISE BLOCKS ARE PADDED TO NOISE SIZE
  127. * WITH BINARY ZEROS IF BINARY S OR L TAPE OR WITH
  128. * BLANKS IF CODED MODE. PO=D ALLOWED ONLY ON
  129. * COPY FROM MASS STORAGE, I, LI OR SI-BINARY TAPE
  130. * TO S OR L TAPE.
  131. *
  132. * R RECORD SPLITTING ALLOWED DURING GENERATION OF S
  133. * OR L TAPE FROM MASS STORAGE, I, LI OR SI-BINARY
  134. * FILE. INPUT RECORDS GREATER THAN OUTPUT FILE
  135. * PRU SIZE WILL BE SPLIT INTO MULTIPLE BLOCKS ON
  136. * OUTPUT. DEFAULT = NO RECORD SPLITTING ALLOWED,
  137. * ABORT IF RECORD TOO LARGE ENCOUNTERED. ALLOWED
  138. * ONLY ON COPY FROM MASS STORAGE, I, LI OR
  139. * SI-BINARY TAPE TO S OR L TAPE.
  140. *
  141. * M COPY FILES AS SPECIFIED BY COPY TERMINATION
  142. * CONDITION, ELIMINATING EOF ON OUTPUT. PRIMARILY
  143. * PROVIDED FOR USE WITH LABELED S AND L OUTPUT
  144. * TAPES, SINCE TAPE MARK HAS DOUBLE MEANING
  145. * (EOF AND LABEL GROUP DELIMITER).
  146. * DEFAULT = FILES ARE COPIED WITH EOF SEPARATORS.
  147. *
  148. * LFN3 ALTERNATE OUTPUT FILE TO RECEIVE PARITY ERROR
  149. * MESSAGES WHEN NON-ZERO ERLIMIT SPECIFIED, IN
  150. * WHICH CASE, FILE NAME LFN3 CANNOT BE THE SAME AS
  151. * LFN1 OR LFN2. DEFAULT = OUTPUT.
  152. *
  153. * NSC NOISE SIZE. ANY INPUT BLOCK CONTAINING FEWER THAN
  154. * NSC CHARACTERS IS CONSIDERED NOISE AND IS DISCARDED.
  155. * ALLOWED ONLY WHEN INPUT TAPE IS S, L, OR F FORMAT.
  156. * MAXIMUM VALUE IS 41 CHARACTERS. IF NS=0 IS SPECIFIED,
  157. * THE DEFAULT OF 18 CHARACTERS IS USED.
  158. *
  159. *
  160. * THE PARAMETERS ON THE COPY COMMAND ARE BOTH POSITIONAL
  161. * AND EQUIVALENCED. ANY COMBINATION OF POSITIONAL AND
  162. * EQUIVALENCED ARGUMENTS MAY BE SPECIFIED, HOWEVER, POSITIONAL
  163. * ARGUMENTS ARE INTERPRETTED SOLELY ON THE NUMBER OF PRECEDING
  164. * PARAMETERS. ALL PARAMETERS ARE OPTIONAL. UNLESS EXPLICITLY
  165. * STATED OTHERWISE IN THE PARAMETER DESCRIPTION, SPECIFICATION
  166. * OF NON-APPLICABLE PARAMETERS FOR A PARTICULAR TYPE OF COPY
  167. * IS INCORRECT.
  168. *
  169. * FOR IDENTICAL COPIES (MASS STORAGE TO MASS STORAGE, I TO I,
  170. * SI TO SI, S TO S, L TO L, F TO F, AND LI TO LI TAPE COPIES)
  171. * AND FOR INTERCHANGEABLE COPIES (I TO SI-BINARY, SI-BINARY TO
  172. * I, AND S TO L), WHERE DATA MANIPULATION IS NOT REQUIRED, A
  173. * SINGLE BUFFER COPY IS USED. ALL OTHER TYPES OF COPIES
  174. * REQUIRE TWO I/O BUFFERS AND A WORKING STORAGE BUFFER. COPY
  175. * WILL RFL UP FOR ADDITIONAL FIELD LENGTH NEEDED TO PROCESS L
  176. * AND F TAPE COPIES.
  177. *
  178. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND
  179. * LFN2, UNLESS THE VERIFY OPTION IS SPECIFIED, AND CONTINUES
  180. * UNTIL THE COPY TERMINATION CONDITION IS MET OR EOI IS
  181. * ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED. IF PO=M
  182. * OPTION IS SELECTED, CORRESPONDING EOF,S ARE NOT GENERATED
  183. * ON LFN2. WHEN THE COPY IS TERMINATED BY A DOUBLE EOF (FOR
  184. * TC=EOD OPTION), THE SECOND EOF IS NOT TRANSFERRED TO LFN2.
  185. * FOR A COPY WITH A FILE COUNT SPECIFIED (TC=EOF), IF EOI IS
  186. * ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS SATISFIED, AN
  187. * ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF DATA OR RECORDS
  188. * HAVE BEEN TRANSFERRED SINCE THE PREVIOUS EOF WAS WRITTEN.
  189. SPACE 4,10
  190. *** THE COPYBF UTILITY COPIES A SPECIFIED NUMBER OF FILES FROM
  191. * ONE FILE TO ANOTHER.
  192. *
  193. *
  194. * COPYBF ( LFN1, LFN2, N, C )
  195. *
  196. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  197. *
  198. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  199. * IF LFN1 = LFN2, FILES ARE SKIPPED.
  200. *
  201. * N NUMBER OF FILES TO COPY. DEFAULT = 1.
  202. *
  203. * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
  204. * CODED MODE SET ON BOTH FILES.
  205. * APPLIES TO S, L, AND SI FORMAT TAPES.
  206. * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
  207. *
  208. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
  209. * AND CONTINUES UNTIL THE SPECIFIED NUMBER OF FILES ARE COPIED
  210. * OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED.
  211. * IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS
  212. * SATISFIED, AN ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF
  213. * DATA OR RECORDS HAVE BEEN TRANSFERRED SINCE THE PREVIOUS
  214. * EOF WAS WRITTEN.
  215. SPACE 4,10
  216. *** THE COPYEI UTILITY COPIES ONE FILE TO ANOTHER UNTIL END
  217. * OF INFORMATION IS ENCOUNTERED.
  218. *
  219. *
  220. * COPYEI ( LFN1, LFN2, V, C )
  221. *
  222. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  223. *
  224. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  225. * IF LFN1 = LFN2, THE FILE IS SKIPPED TO EOI.
  226. *
  227. * V IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS), FILES
  228. * ARE REWOUND BEFORE COPY, AND REWOUND, VERIFIED, AND
  229. * REWOUND AGAIN AFTER COPY. DEFAULT = NO VERIFY.
  230. * IF LFN1 = LFN2, FILE WILL BE REWOUND BEFORE
  231. * SKIPPING, BUT VERIFY WILL NOT BE DONE.
  232. *
  233. * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
  234. * CODED MODE SET ON BOTH FILES.
  235. * APPLIES TO S, L, AND SI FORMAT TAPES.
  236. * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
  237. *
  238. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND
  239. * LFN2, UNLESS THE VERIFY OPTION IS SELECTED, AND CONTINUES
  240. * UNTIL EOI IS ENCOUNTERED. IF LFN1 = LFN2, THE FILE IS
  241. * SKIPPED TO EOI.
  242. SPACE 4,10
  243. *** THE COPYBR UTILITY COPIES A SPECIFIED NUMBER OF RECORDS FROM
  244. * ONE FILE TO ANOTHER.
  245. *
  246. *
  247. * COPYBR ( LFN1, LFN2, N, C )
  248. *
  249. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  250. *
  251. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  252. * IF LFN1 = LFN2, RECORDS ARE SKIPPED.
  253. *
  254. * N NUMBER OF RECORDS TO COPY. DEFAULT = 1.
  255. * EACH EOF IS COUNTED AS AN ADDITIONAL RECORD.
  256. *
  257. * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
  258. * CODED MODE SET ON BOTH FILES.
  259. * APPLIES TO S, L, AND SI FORMAT TAPES.
  260. * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
  261. *
  262. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
  263. * AND CONTINUES UNTIL THE SPECIFIED NUMBER OF RECORDS ARE
  264. * COPIED OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, RECORDS ARE
  265. * SKIPPED. IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE RECORD
  266. * COUNT IS SATISFIED, AN ADDITIONAL EOR WILL BE GENERATED
  267. * ON LFN2 IF ANY DATA HAS BEEN TRANSFERRED SINCE THE PREVIOUS
  268. * EOR/EOF WAS WRITTEN.
  269. SPACE 4,10
  270. *** THE COPYX UTILITY COPIES LOGICAL RECORDS FROM ONE FILE TO
  271. * ANOTHER UNTIL THE SPECIFIED TERMINATION CONDITION IS MET.
  272. *
  273. *
  274. * COPYX ( LFN1, LFN2, TERM, BKSP, C )
  275. *
  276. * COPYX ( LFN1, LFN2, TYPE / NAME, BKSP, C )
  277. *
  278. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  279. *
  280. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  281. * IF LFN1 = LFN2, RECORDS ARE SKIPPED.
  282. *
  283. * TERM TERMINATION CONDITION. DEFAULT = 1.
  284. * *00* = COPY TO ZERO RECORD.
  285. * N = NUMBER OF RECORDS TO COPY.
  286. * NAME = NAME OF LAST RECORD TO COPY.
  287. *
  288. * TYPE MNEMONIC FOR RECORD TYPE.
  289. * *ABS* = MULTIPLE ENTRY POINT OVERLAY
  290. * *CAP* = FAST DYNAMIC LOAD CAPSULE
  291. * *OPL* = MODIFY OLD PROGRAM LIBRARY DECK
  292. * *OPLC* = MODIFY OLD PROGRAM LIBRARY COMMON DECK
  293. * *OPLD* = MODIFY OLD PROGRAM LIBRARY DIRECTORY
  294. * *OVL* = CENTRAL PROCESSOR OVERLAY
  295. * *PP* = 6000 SERIES PERIPHERAL PROCESSOR PROGRAM
  296. * *PPL* = 16-BIT PERIPHERAL PROCESSOR PROGRAM
  297. * *PPU* = 7600 PERIPHERAL PROCESSOR PROGRAM
  298. * *PROC* = PROCEDURE TYPE RECORD
  299. * *REL* = RELOCATABLE CENTRAL PROCESSOR PROGRAM
  300. * *TEXT* = UNRECOGNIZABLE AS A PROGRAM
  301. * *ULIB* = USER LIBRARY PROGRAM
  302. *
  303. * NAME RECORD NAME.
  304. *
  305. * BKSP BACKSPACE CONTROL. DEFAULT = 0.
  306. * *0* = NO BACKSPACE
  307. * *1* = BACKSPACE LFN1 ONLY
  308. * *2* = BACKSPACE LFN2 ONLY
  309. * *3* = BACKSPACE BOTH FILES
  310. *
  311. * C IF SPECIFIED (1 TO 7 ALPHANUMERIC CHARACTERS),
  312. * CODED MODE SET ON BOTH FILES.
  313. * APPLIES TO S, L, AND SI FORMAT TAPES.
  314. * DEFAULT = BINARY MODE SELECTED ON BOTH FILES.
  315. *
  316. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
  317. * AND CONTINUES UNTIL THE SPECIFIED TERMINATION CONDITION IS
  318. * MET OR EOF OR EOI IS ENCOUNTERED. IF LFN1 = LFN2, RECORDS
  319. * ARE SKIPPED. IF EOI IS ENCOUNTERED ON LFN1 BEFORE THE
  320. * TERMINATION CONDITION IS SATISFIED, AN ADDITIONAL EOR WILL
  321. * BE GENERATED ON LFN2 IF ANY DATA HAS BEEN TRANSFERRED SINCE
  322. * THE PREVIOUS EOR WAS WRITTEN.
  323. SPACE 4,10
  324. *** THE TCOPY UTILITY PROVIDES CONVERSION SUPPORT FOR E, B,
  325. * X, AND SI-CODED FORMAT TAPES. TAPES WRITTEN IN THESE
  326. * FORMATS SHOULD BE ASSIGNED IN S (STRANGER TAPE) FORMAT.
  327. * TCOPY WILL CONVERT THE DATA RECEIVED FROM THE S FORMAT
  328. * DRIVER AS NECESSARY TO MATCH THE SPECIFIED FORMAT
  329. * (PARAMETER ON TCOPY COMMAND) AND COPY IT TO A MASS
  330. * STORAGE FILE OR ITS EQUIVALENT (I, LI OR SI-BINARY TAPE).
  331. * TCOPY ALSO PROVIDES THE CAPABILITY OF GENERATING E AND B
  332. * TAPES, VIA S FORMAT, FROM A MASS STORAGE, I, LI OR SI-BINARY
  333. * FILE.
  334. *
  335. *
  336. * TCOPY ( LFN1, LFN2, FORMAT, TC, COPYCNT, CHARCNT, ERLIMIT,
  337. * PO, LFN3, NSC )
  338. *
  339. * TCOPY ( I=LFN1, O=LFN2, F=FORMAT, TC=TC, N=COPYCNT,
  340. * CC=CHARCNT, EL=ERLIMIT, PO=PO, L=LFN3, NS=NSC )
  341. *
  342. * LFN1 FILE TO COPY FROM. DEFAULT = INPUT.
  343. *
  344. * LFN2 FILE TO COPY TO. DEFAULT = OUTPUT.
  345. * IF LFN1 = LFN2, FILES ARE SKIPPED.
  346. *
  347. * FORMAT OBSOLETE TAPE FORMAT SPECIFYING THE TYPE OF
  348. * CONVERSION FOR THE COPY. DEFAULT = X.
  349. *
  350. * E COPY E FORMAT TAPE TO MASS STORAGE, I, LI OR
  351. * SI-BINARY FILE, OR GENERATE NEW E TAPE FROM
  352. * MASS STORAGE, I, LI OR SI-BINARY FILE. THE E
  353. * TAPE MUST BE UNLABELED AND ASSIGNED AS S FORMAT.
  354. *
  355. * B COPY B FORMAT TAPE TO MASS STORAGE, I, LI OR
  356. * SI-BINARY FILE OR GENERATE A NEW B TAPE FROM
  357. * A MASS STORAGE, I, LI OR SI-BINARY FILE.
  358. * THE B TAPE MUST BE UNLABELED AND ASSIGNED AS
  359. * S FORMAT.
  360. *
  361. * X COPY X FORMAT TAPE TO MASS STORAGE, I, LI OR
  362. * SI-BINARY FILE. THE X TAPE MUST BE UNLABELED
  363. * AND ASSIGNED AS S FORMAT.
  364. *
  365. * SI COPY SI-CODED FORMAT TAPE TO MASS STORAGE,
  366. * I, LI OR SI-BINARY FILE. THE SI-CODED TAPE MUST
  367. * BE ASSIGNED AS S FORMAT AND MAY BE LABELED OR
  368. * UNLABELED.
  369. * NOTE - IF FILE COUNT WAS SPECIFIED, THE POSITION
  370. * OF THE INPUT TAPE AFTER THE COPY IS INDETERMI-
  371. * NATE SINCE CONTROL WORDS ARE USED ON THE SI-
  372. * CODED FILE READ VIA S FORMAT (EOF ON SI-CODED
  373. * TAPE IS LEVEL 17B BLOCK TERMINATOR BUT EOF ON
  374. * S TAPE IS A TAPE MARK).
  375. *
  376. * I COPY I FORMAT TAPE TO MASS STORAGE, I, LI OR
  377. * SI-BINARY FILE. THE I FORMAT TAPE MUST BE
  378. * ASSIGNED AS L FORMAT AND MAY BE LABELED OR
  379. * UNLABELED. I FORMAT IS NOT AN OBSOLETE FORMAT.
  380. * THIS OPTION HAS BEEN INCLUDED TO SIMPLIFY THE
  381. * RECOVERY OF DATA FROM OVERWRITTEN TAPES.
  382. * NOTE - IF THE TERMINATING CONDITION IS OTHER
  383. * THAN *EOI*, THEN THE POSITION OF THE INPUT TAPE
  384. * AFTER THE COPY IS INDETERMINATE, SINCE CONTROL
  385. * WORD READS ARE USED ON THE I FORMAT TAPE READ
  386. * VIA L FORMAT (EOF ON AN I FORMAT TAPE IS A
  387. * LEVEL 17B BLOCK TERMINATOR BUT EOF ON AN L
  388. * TAPE IS A TAPE MARK).
  389. *
  390. * TC COPY TERMINATION CONDITION. DEFINES MEANING OF
  391. * COPYCNT PARAMETER -
  392. * F OR EOF = COPYCNT DEFINES NUMBER OF FILES TO COPY.
  393. * I OR EOI = COPY TO EOI. COPYCNT MEANINGLESS.
  394. * D OR EOD = COPYCNT DEFINES NUMBER OF DOUBLE EOF,S
  395. * TO COPY TO.
  396. * DEFAULT = EOD.
  397. *
  398. * COPYCNT COPY COUNT, AS FURTHER DEFINED BY TC PARAMETER.
  399. * DEFAULT = 1.
  400. *
  401. * CHARCNT CHARACTER COUNT. DETERMINES MAXIMUM BLOCK SIZE
  402. * (LINE LENGTH) IN CHARACTERS TO BE READ OR WRITTEN
  403. * AND PRU SIZE. APPLIES ONLY TO E AND B TAPE COPIES.
  404. * DEFAULT = 136 CHARACTERS FOR E TAPE, 150 CHARACTERS
  405. * FOR B TAPE.
  406. *
  407. * ERLIMIT ERROR LIMIT. MAXIMUM NUMBER OF NON-FATAL TAPE
  408. * ERRORS TO ALLOW BEFORE ABORT. INCLUDES *PARITY*
  409. * AND *BLOCK TOO LARGE* ERRORS, AS RETURNED BY THE
  410. * SYSTEM AFTER RECOVERY ATTEMPTS FAILED. FOR X, SI-
  411. * CODED AND I TAPES IT ALSO INCLUDES *INCORRECT BLOCK
  412. * FORMAT* ERRORS (INCORRECT BYTE COUNT AND/OR UNUSED
  413. * BIT COUNT FOR THIS FORMAT). IF EL=U IS SPECIFIED,
  414. * UNLIMITED ERROR PROCESSING IS ALLOWED. ERROR LIMIT
  415. * DOES NOT APPLY (IGNORED) WHEN GENERATING AN E OR B
  416. * TAPE FROM A MASS STORAGE, I, LI OR SI-BINARY FILE
  417. * (SINCE CONTROL WORDS ARE NOT USED) OR IF CONTROL
  418. * WORDS ARE NOT SUPPORTED ON THE INPUT FILE DEVICE
  419. * TYPE (TERMINAL OR UNIT RECORD EQUIPMENT), IN WHICH
  420. * CASE, ANY ERROR WILL ABORT THE JOB. DEFAULT = 0.
  421. *
  422. * PO PROCESSING OPTION -
  423. *
  424. * E INPUT BLOCKS WITH *PARITY* OR *BLOCK TOO
  425. * LARGE* ERRORS ARE TO BE PROCESSED. DEFAULT =
  426. * ERROR BLOCKS ARE SKIPPED.
  427. *
  428. * T WHEN GENERATING AN E OR B FORMAT TAPE, TRUNCATE
  429. * DATA IN LINE BEYOND THE MAXIMUM E/B TAPE LINE
  430. * SIZE (AS DEFINED BY CC= PARAMETER OR DEFAULT).
  431. * LEGAL ONLY WHEN GENERATING AN E OR B TAPE FROM
  432. * A MASS STORAGE, I, LI OR SI-BINARY TAPE FILE.
  433. *
  434. * LFN3 ALTERNATE OUTPUT FILE TO RECEIVE PARITY ERROR
  435. * MESSAGES WHEN NON-ZERO ERLIMIT SPECIFIED, IN
  436. * WHICH CASE, FILE NAME LFN3 CANNOT BE THE SAME AS
  437. * LFN1 OR LFN2. DEFAULT = OUTPUT.
  438. *
  439. * NSC NOISE SIZE. ANY BLOCK CONTAINING FEWER THAN NSC
  440. * CHARACTERS IS CONSIDERED NOISE AND IS DISCARDED.
  441. * ALLOWED ONLY FOR E/B FORMAT CONVERSION.
  442. * IF NS=0 IS SPECIFIED, THE DEFAULT OF 18
  443. * CHARACTERS IS USED.
  444. *
  445. *
  446. * THE PARAMETERS ON THE TCOPY COMMAND ARE BOTH POSITIONAL
  447. * AND EQUIVALENCED. ANY COMBINATION OF POSITIONAL AND
  448. * EQUIVALENCED ARGUMENTS MAY BE SPECIFIED, HOWEVER, POSITIONAL
  449. * ARGUMENTS ARE INTERPRETTED SOLELY ON THE NUMBER OF PRECEDING
  450. * PARAMETERS. ALL PARAMETERS ARE OPTIONAL. UNLESS EXPLICITLY
  451. * STATED OTHERWISE IN THE PARAMETER DESCRIPTION, SPECIFICATION
  452. * OF NON-APPLICABLE PARAMETERS FOR A PARTICULAR TYPE OF COPY
  453. * IS INCORRECT.
  454. *
  455. * WHEN GENERATING A NEW B TAPE FROM A MASS STORAGE, I, LI OR
  456. * SI-BINARY FILE, LINES MAY BE ENCOUNTERED THAT ARE TOO SMALL
  457. * TO BE COPIED DIRECTLY TO THE TAPE. SMALL BLOCKS MAY ALSO
  458. * RESULT WHEN A LINE IS ENCOUNTERED THAT EXCEEDS THE MAXIMUM
  459. * LINE SIZE FOR THE B TAPE, SINCE IT IS SPLIT INTO MULTIPLE
  460. * LINES. IF THE LINE LENGTH IS LESS THAN THE B TAPE NOISE
  461. * SIZE, IT WILL BE BLANK FILLED TO THE NOISE SIZE.
  462. * IF THE *PO=T* OPTION IS SPECIFIED, LINES THAT WOULD
  463. * NORMALLY BE SPLIT INTO MULTIPLE LINES WILL BE TRUNCATED
  464. * AT THE MAXIMUM LINE SIZE.
  465. *
  466. * WHEN GENERATING A NEW E TAPE FROM A MASS STORAGE, I, LI OR
  467. * SI-BINARY TAPE FILE, LINES THAT EXCEED THE MAXIMUM LINE
  468. * SIZE WILL BE SPLIT INTO MULTIPLE LINES. A CONTINUATION
  469. * LINE CONSISTING OF AN EOL ONLY WILL BE DISCARDED (WILL NOT
  470. * GENERATE EXTRANEOUS BLANK BLOCK). IF THE *PO=T* OPTION
  471. * IS SPECIFIED, LINES ARE TRUNCATED AT THE MAXIMUM LINE SIZE
  472. * (ALL CONTINUATION LINES ARE DISCARDED).
  473. *
  474. * THE DATA COPY BEGINS AT THE CURRENT POSITION OF LFN1 AND LFN2
  475. * AND CONTINUES UNTIL THE COPY TERMINATION CONDITION IS MET OR
  476. * EOI IS ENCOUNTERED. IF LFN1 = LFN2, FILES ARE SKIPPED.
  477. * WHEN THE COPY IS TERMINATED BY A DOUBLE EOF (FOR TC=EOD
  478. * OPTION), THE SECOND EOF IS NOT TRANSFERRED TO LFN2.
  479. * FOR A COPY WITH A FILE COUNT SPECIFIED (TC=EOF), IF EOI IS
  480. * ENCOUNTERED ON LFN1 BEFORE THE FILE COUNT IS SATISFIED, AN
  481. * ADDITIONAL EOF WILL BE GENERATED ON LFN2 IF ANY DATA OR
  482. * RECORDS HAVE BEEN TRANSFERRED SINCE THE PREVIOUS EOF WAS
  483. * WRITTEN.
  484. SPACE 4,10
  485. *** DAYFILE ERROR MESSAGES.
  486. *
  487. *
  488. * * ARGUMENT ERROR.* - COMMAND CONTAINS INCORRECT OR
  489. * NON-APPLICABLE PARAMETERS.
  490. *
  491. * * BLOCK SIZE NOT APPLICABLE.* - SPECIFICATION OF *CC* OR
  492. * *BS* PARAMETER ON *COPY* IS ALLOWED ONLY WHEN COPYING
  493. * TO OR FROM AN S OR L FORMAT TAPE. SPECIFICATION OF
  494. * *CC* PARAMETER ON *TCOPY* LEGAL ONLY WHEN CONVERTING
  495. * OR GENERATING AN E OR B FORMAT TAPE.
  496. *
  497. * * BLOCK SIZE TOO LARGE ON LFN.* - FOR *COPY*, BLOCK SIZE FOR
  498. * S COPY EXCEEDS MAXIMUM FOR THAT FORMAT (1000B WORDS).
  499. * FOR *TCOPY*, CHARACTER COUNT FOR E OR B TAPE COPY EXCEEDS
  500. * MAXIMUM FOR THAT FORMAT (5120 CHARACTERS).
  501. * FOR *COPYBF* AND *COPYEI*, F TAPE BLOCK SIZE EXCEEDS WORKING
  502. * BUFFER LENGTH (ONLY *COPY* SUPPORTS S, L, AND F TAPES).
  503. *
  504. * * BLOCK SIZE TOO SMALL ON LFN.* - FOR *COPY*, ON F TO F TAPE
  505. * COPY, MAXIMUM FRAME COUNT FOR THE FIRST FILE (AS SPECIFIED
  506. * DURING TAPE ASSIGNMENT) EXCEEDS THAT SPECIFIED FOR THE SECOND
  507. * FILE. ON S AND L TAPE COPIES, BLOCK SIZE (AS SPECIFIED BY
  508. * *BS* PARAMETER OR CALCULATED FROM *CC* PARAMETER) IS LESS
  509. * THAN NOISE SIZE. FOR *TCOPY*, ON E AND B TAPE COPIES, BLOCK
  510. * SIZE (AS CALCULATED FROM *CC* PARAMETER) IS LESS THAN THE
  511. * CORRESPONDING S TAPE NOISE SIZE.
  512. *
  513. * * COPY FL ABOVE USER LIMIT.* - FOR *COPY*, FIELD LENGTH
  514. * REQUIRED FOR F OR L TAPE COPY EXCEEDS THE USER,S CURRENT
  515. * MAXIMUM FL.
  516. *
  517. * * ERROR LIMIT EXCEEDED.* - FOR *COPY* AND *TCOPY*, NUMBER
  518. * OF *PARITY*, *BLOCK TOO LARGE* AND *INCORRECT BLOCK FORMAT*
  519. * ERRORS DETECTED ON THE INPUT FILE EXCEEDS THE ERROR LIMIT
  520. * (AS SPECIFIED BY EL PARAMETER).
  521. *
  522. * * FILE NAME CONFLICT.* - FOR *COPY* AND *TCOPY*, WITH
  523. * EXTENDED ERROR PROCESSING IN EFFECT (NONZERO *EL* SPECIFIED),
  524. * ALTERNATE OUTPUT FILE NAME IS SAME AS INPUT OR OUTPUT FILE
  525. * NAME.
  526. *
  527. * * INCORRECT COPY.* - FOR *COPY*, THE FILE TYPES (TAPE FORMAT
  528. * OR DEVICE TYPE) DO NOT MEET COPY REQUIREMENTS (REFER TO
  529. * CAPABILITY TABLE IN *COPY* DOCUMENTATION). FOR *TCOPY*,
  530. * THE CONVERSION TYPE (E, B, X, SI) AND THE FILE TYPES
  531. * (TAPE FORMAT OR DEVICE TYPE) DO NOT MEET COPY REQUIRE-
  532. * MENTS (REFER TO *TCOPY* CAPABILITY DOCUMENTATION).
  533. *
  534. * * INCORRECT NOISE SIZE ON LFN.* - FOR *COPY*, ON S TO S, L TO
  535. * L, AND F TO F TAPE COPIES, THE NOISE SIZE FOR THE SECOND FILE
  536. * (AS SPECIFIED DURING TAPE ASSIGNMENT) EXCEEDS THAT DEFINED
  537. * FOR THE FIRST FILE. FOR *TCOPY*, ON X AND SI-CODED TAPE
  538. * COPIES, INCORRECT NOISE SIZE HAS BEEN SPECIFIED WHEN THE S
  539. * FORMAT TAPE WAS ASSIGNED (REQUIRED NOISE SIZE IS 8 FRAMES FOR
  540. * 7-TRACK, 6 FRAMES FOR 9-TRACK).
  541. *
  542. * * PROCESSING OPTION NOT APPLICABLE.* - *PO=R* OR *PO=D*
  543. * SPECIFICATION ALLOWED ONLY ON *COPY* FROM MASS STORAGE, I,
  544. * LI OR SI-BINARY FILE TO S OR L TAPE. *PO=T* SPECIFICATION
  545. * ALLOWED ON *TCOPY* ONLY WHEN GENERATING AN E OR B TAPE.
  546. *
  547. * * RECORD TOO LARGE ON LFN.* - FOR *COPY* WHEN RECORD
  548. * SPLITTING PROCESSING OPTION NOT SPECIFIED, *COPYBF*, AND
  549. * *COPYEI*, DURING GENERATION OF S OR L TAPE FROM MASS
  550. * STORAGE, I, LI OR SI-BINARY FILE, AN INPUT RECORD WAS
  551. * ENCOUNTERED THAT WAS LARGER THAN THE OUTPUT FILE PRU SIZE.
  552. *
  553. * * UNLABELED TAPE REQUIRED - LFN.* - FOR *TCOPY*, THE
  554. * S FORMAT TAPE FOR AN E, B, OR X COPY MUST BE UNLABELED.
  555. *
  556. * * UNRECOVERABLE ERROR ON LFN.* - FOR *COPY* AND *TCOPY*, AN
  557. * UNRECOVERABLE ERROR WAS DETECTED ON THE INPUT FILE (WRONG
  558. * PARITY, DENSITY CHANGE, READY DROP, ETC.).
  559. *
  560. * * UNRECOGNIZED TERMINATION CONDITION.* - THE *COPYX*
  561. * TERMINATION RECORD COUNT OR RECORD TYPE WAS NOT RECOGNIZED.
  562. *
  563. * * UNRECOGNIZED BACKSPACE CODE.* - THE BACKSPACE CODE
  564. * SPECIFIED TO *COPYX* WAS NOT 0, 1, 2, OR 3.
  565. SPACE 4,10
  566. *** DAYFILE INFORMATIVE MESSAGES.
  567. *
  568. *
  569. * * CHECK DAYFILE FOR ERRORS.* - ALERTS TERMINAL USER THAT SOME
  570. * ERROR SUMMARY OR WARNING MESSAGES WERE ISSUED TO THE DAYFILE.
  571. *
  572. * * COPY COMPLETE.* - COPY COUNT WAS EXHAUSTED BEFORE EOI
  573. * ENCOUNTERED.
  574. *
  575. * * COPY INDETERMINATE.* - WARNING MESSAGE ISSUED BY *COPYBF*,
  576. * *COPYEI*, *COPYBR*, AND *COPYX* WHEN COPY INVOLVES AN S, L,
  577. * OR F FORMAT TAPE (ONLY *COPY* UTILITY PROVIDES SUPPORT
  578. * FOR THESE FORMAT TAPES).
  579. *
  580. * * EOF ENCOUNTERED.* - END OF FILE WAS ENCOUNTERED BEFORE
  581. * *COPYX* TERMINATION CONDITION SATISFIED.
  582. *
  583. * * EOI ENCOUNTERED.* - END OF INFORMATION WAS ENCOUNTERED
  584. * BEFORE THE COPY COUNT WAS EXHAUSTED.
  585. *
  586. * * FILE NOT FOUND - LFN.* - INPUT FILE DID NOT EXIST PRIOR
  587. * TO COPY.
  588. *
  589. * * N BAD FORMAT BLOCKS.* - *TCOPY* ERROR SUMMARY MESSAGE
  590. * ISSUED BEFORE ENDING OR ABORTING. ALTERNATE OUTPUT FILE
  591. * CONTAINS DETAILED ERROR MESSAGES.
  592. *
  593. * * N NOISE BLOCKS DELETED.* - DURING S OR L TAPE *COPY* FROM
  594. * MASS STORAGE, I, LI OR SI-BINARY FILE, N OUTPUT FILE BLOCKS
  595. * WERE DELETED SINCE THEY WERE LESS THAN NOISE SIZE.
  596. * DURING *TCOPY* WITH S FORMAT INPUT TAPE FOR E/B FORMAT
  597. * CONVERSION OR FOR *COPY* FROM S/L/F FORMAT INPUT TAPE,
  598. * N INPUT BLOCKS WERE DELETED (NOT WRITTEN TO OUTPUT)
  599. * SINCE THEY WERE LESS THAN NOISE SIZE.
  600. *
  601. * * NOISE BLOCK PROCESSING IN EFFECT.* - IN *COPY* WHEN
  602. * USER DOES NOT SPECIFY *NS* PARAMETER FOR S TO S/L, L TO L,
  603. * OR F TO F TAPE COPY, NOISE PROCESSING IS AUTOMATICALLY
  604. * SELECTED WHEN THE OUTPUT TAPE NOISE SIZE EXCEEDS THE INPUT
  605. * TAPE NOISE SIZE. THIS WILL SLOW PROCESSING, SINCE DOUBLE
  606. * BUFFER DATA MANIPULATION MUST THEN BE USED TO REMOVE INPUT
  607. * NOISE BLOCKS.
  608. *
  609. * * INSUFFICIENT NOISE SIZE, AUTOMATICALLY INCREASED.* -
  610. * WARNING MESSAGE ISSUED IN *COPY* IF *NS* PARAMETER IS
  611. * SPECIFIED BUT NOT LARGE ENOUGH FOR S TO S/L, L TO L, OR F TO
  612. * F TAPE COPY (THE NOISE SIZE USED FOR THE INPUT TAPE MUST BE
  613. * GREATER THAN OR EQUAL TO THAT OF THE OUTPUT TAPE).
  614. *
  615. * * N NOISE BLOCKS PADDED.* - DURING S OR L TAPE *COPY* FROM
  616. * MASS STORAGE, I, LI OR SI-BINARY FILE, N OUTPUT FILE BLOCKS
  617. * HAD TO BE PADDED SINCE THEY WERE LESS THAN NOISE SIZE.
  618. *
  619. * * N PARITY/BLOCK TOO LARGE ERRORS.* - *COPY* AND *TCOPY*
  620. * ERROR SUMMARY MESSAGE ISSUED BEFORE ENDING OR ABORTING.
  621. * ALTERNATE OUTPUT FILE CONTAINS DETAILED ERROR MESSAGES.
  622. *
  623. * * N RECORD SPLITS OCCURRED.* - DURING S OR L TAPE *COPY* FROM
  624. * MASS STORAGE, I, LI OR SI-BINARY FILE, MULTIPLE BLOCKS PER
  625. * RECORD WERE WRITTEN FOR N INPUT RECORDS.
  626. SPACE 4,10
  627. *** ALTERNATE OUTPUT FILE MESSAGES.
  628. *
  629. * * INCORRECT FORMAT IN BLOCK N.* - FOR *TCOPY* WITH EXTENDED
  630. * ERROR PROCESSING IN EFFECT, AN *INCORRECT BLOCK FORMAT* ERROR
  631. * (INCORRECT BYTE COUNT AND/OR UNUSED BIT COUNT IN THIS FORMAT)
  632. * WAS DETECTED IN THIS BLOCK WITHOUT THE *PARITY* ERROR
  633. * INDICATOR SET. N SPECIFIES BLOCK COUNT OF BLOCK IN
  634. * ERROR, AND IS INITIALLY SET TO 0 (FIRST BLOCK FROM INITIAL
  635. * POSITION OF INPUT FILE).
  636. *
  637. * * PARITY/BLOCK TOO LARGE ERROR IN BLOCK N.* - FOR *COPY*
  638. * AND *TCOPY*, WITH EXTENDED ERROR PROCESSING IN EFFECT,
  639. * A *PARITY* OR *BLOCK TOO LARGE* ERROR WAS DETECTED ON THIS
  640. * BLOCK (ERROR INDICATOR SET IN CONTROL WORD HEADER).
  641. * N SPECIFIES BLOCK COUNT OF BLOCK IN ERROR, AND IS INITIALLY
  642. * SET TO 0 (FIRST BLOCK FROM INITIAL POSITION OF INPUT FILE).
  643. SPACE 4,10
  644. **** ASSEMBLY CONSTANTS.
  645.  
  646.  
  647. DPRS EQU 1003B DEFAULT PRU SIZE WITH CONTROL WORDS
  648. BUFL EQU DPRS DEFAULT WORKING STORAGE BUFFER LENGTH
  649. FBUFL EQU DPRS*30B DEFAULT CIO BUFFER LENGTH
  650. LBUFL EQU 102B ALTERNATE OUTPUT CIO BUFFER LENGTH
  651. RBFL EQU 1000B RECORD COPY WORKING BUFFER LENGTH
  652. SBUFL EQU FBUFL*2 SINGLE BUFFER COPY DEFAULT BUFFER LENGTH
  653.  
  654. FETL EQU 9 FET LENGTH
  655. FETODL EQU 16 OPTICAL DISK FET EXTENSION LENGTH
  656.  
  657. DFNS EQU 18 DEFAULT NOISE SIZE
  658. MNSZ EQU 41 MAXIMUM NS PARAMETER IN CHARACTERS
  659. DSPS EQU 1000B DEFAULT S TAPE PRU SIZE FOR *COPY*
  660. DLPS EQU 2000B DEFAULT L TAPE PRU SIZE FOR *COPY*
  661. MCBS EQU 5120 MAXIMUM BLOCK SIZE (IN CHARACTERS)
  662.  
  663. MFLF EQU 73000B-2 MAXIMUM FIELD LENGTH FACTOR
  664. LOFL EQU 43000B-2 LOWER OPTIMUM FL FOR L AND F TAPE COPIES
  665. ****
  666. SPACE 4,10
  667. * SPECIAL ENTRY POINTS.
  668.  
  669. NPC= EQU 0 FORCE OPERATING SYSTEM PARAMETER FORMAT
  670. SSM= EQU 0 SUPPRESS DUMPS OF FIELD LENGTH
  671. TITLE MACRO DEFINITIONS.
  672. CWRW SPACE 4,15
  673. ** CWRW - CONTROL WORD READ WORDS TO WORKING BUFFER.
  674. *
  675. * CWRW FILE,BUF,N
  676. *
  677. * FILE FWA FET. PARAMETER PROVIDED ONLY FOR
  678. * COMPATIBILITY WITH READW MACRO. INPUT
  679. * FET IS ALWAYS USED BY CWR ROUTINE.
  680. * BUF FWA WORKING BUFFER. PARAMETER PROVIDED
  681. * ONLY FOR COMPATIBILITY WITH READW MACRO.
  682. * (FWWB) IS ALWAYS USED BY CWR ROUTINE.
  683. * N NUMBER OF WORDS TO TRANSFER.
  684. *
  685. * CALLS CWR.
  686.  
  687.  
  688. CWRW MACRO F,S,N
  689. R= X7,N
  690. RJ CWR
  691. ENDM
  692. CWWW SPACE 4,15
  693. ** CWWW - CONTROL WORD WRITE WORDS FROM WORKING BUFFER.
  694. *
  695. * CWWW FILE,BUF,N
  696. *
  697. * FILE FWA FET.
  698. * BUF FWA WORKING BUFFER.
  699. * N NUMBER OF WORDS TO TRANSFER.
  700. *
  701. * CALLS CWW.
  702.  
  703.  
  704. CWWW MACRO F,S,N
  705. R= B7,N
  706. R= B6,S
  707. R= X2,F
  708. RJ CWW
  709. ENDM
  710. SPACE 4,10
  711. *CALL COMCMAC
  712. *CALL COMSLFM
  713. QUAL MTX
  714. *CALL COMSMTX
  715. QUAL *
  716. *CALL COMSSRT
  717. TITLE FETS.
  718. ORG 120B
  719. FETS BSS 0
  720.  
  721.  
  722. I BSS 0 INPUT FILE
  723. INPUT FILEB IBUF,FBUFL,FET=FETL
  724. BSSZ FETODL OPTICAL DISK FET EXTENSION
  725. CWF EQU *-I CONTROL WORD FLAG
  726. CON 0 NONZERO IF CONTROL WORDS ENABLED ON INPUT
  727. SLF EQU *-I FORMAT FLAG
  728. CON 0 1= S TAPE, 2= L TAPE, -1= F TAPE, 0= OTHER
  729. TCF EQU *-I TCOPY CONVERSION FORMAT
  730. CON 0 -3=I,-2=SI,-1=X,1=E,2=B,0=NO CONVERSION
  731. PRU EQU *-I PRU SIZE (IN CM WORDS)
  732. CON -1
  733. NSZ EQU *-I NOISE SIZE (24/BITS, 18/UBC, 18/LENGTH)
  734. CON 0
  735. TRK EQU *-I TRACK BITS, TAPE TYPE AND LABEL TYPE
  736. CON 0 1/NT,1/MT,2/TAPE TYPE,50/0,6/LABEL TYPE
  737. ODF EQU *-I FORMAT FLAG (OD SIMILAR TO L)
  738. CON 0
  739.  
  740.  
  741. O BSS 0 OUTPUT FILE
  742. OUTPUT FILEB OBUF,FBUFL,FET=FETL
  743. BSSZ FETODL OPTICAL DISK FET EXTENSION
  744. CON 0 NONZERO IF CONTROL WORDS ENABLED ON OUTPUT
  745. CON 0 1= S TAPE, 2= L TAPE, -1= F TAPE, 0= OTHER
  746. CON 0 1=E, 2=B, 0=NO CONVERSION
  747. CON -1 PRU SIZE (IN CM WORDS)
  748. CON 0 NOISE SIZE (24/BITS, 18/UBC, 18/LENGTH)
  749. CON 0 1/NT,1/MT,2/TAPE TYPE,50/0,6/LABEL TYPE
  750. CON 0 FORMAT FLAG (OD SIMILAR TO L)
  751.  
  752.  
  753. L FILEB LBUF,LBUFL ALTERNATE OUTPUT FILE
  754. ORG L
  755. VFD 42/0LOUTPUT,17/1,1/1
  756. ORG L+FETL
  757. TITLE DATA STORAGE.
  758. ** DATA STORAGE.
  759.  
  760.  
  761. BTSK CON 0 BLOCK TERMINATOR/SKIP WORD INDICATOR
  762. CWBC CON 0 READCW BYTE COUNT
  763. CRI CON -2 CALLING ROUTINE INDICATOR
  764. CT CON 1 COPY COUNT
  765. EL CON 0 ERROR LIMIT
  766. EORF CON 1 CURRENT BLOCK EOR FLAG
  767. ERRF CON 0 CURRENT BLOCK ERROR FLAG
  768. FUBC CON 0 FULL BLOCK UNUSED BIT COUNT (S, L TAPES)
  769. FWWB CON BUF1+1 FWA WORKING BUFFER
  770. LVL CON 0 EOR LEVEL NUMBER
  771. LWDB CON 0 LWA+1 DATA TRANSFERRED TO WORKING BUFFER
  772. NS CON 0 NOISE SIZE
  773. NSFG CON 0 NOISE SIZE FORCED UP FLAG
  774. RWCB VFD 1/1,59/0 REMAINING WORDS IN CURRENT BLOCK
  775. RWTT CON 0 REMAINING WORDS TO TRANSFER
  776. SBT CON -1 SINGLE BUFFER READ/WRITE THRESHOLD
  777. SK CON 0 SKIP FLAG
  778. TC CON 1 TERMINATION CONDITION (-1=EOI,0=EOD,1=EOF)
  779. UBC CON 0 UNUSED BIT COUNT FOR CURRENT WRITE
  780. UBCB CON 0 UNUSED BIT COUNT FOR CURRENT BLOCK
  781. VF CON 0 VERIFY FLAG
  782.  
  783. BC CON -1 BLOCK COUNT
  784. RC CON 0 RECORD COUNT
  785.  
  786. ESPI CON 0 ERROR BLOCKS SKIPPED/PROCESSED INDICATOR
  787. NPDI CON 0 NOISE BLOCKS PADDED/DELETED INDICATOR
  788. RSAI CON 0 RECORD SPLIT ALLOWED INDICATOR
  789. SEWI CON 0 SKIP EOF WRITE INDICATOR
  790. TLLI CON 0 TRUNCATE LONG LINES INDICATOR
  791.  
  792. BFCT CON 0 BAD FORMAT BLOCK COUNT
  793. NZCT CON 0 NOISE BLOCK COUNT
  794. PBCT CON 0 PARITY/BLOCK TOO LARGE ERROR COUNT
  795. RSCT CON 0 RECORD SPLIT COUNT
  796.  
  797. FCPY CON 0 FILE COPY COUNT
  798. RCPY CON 0 RECORD COPY COUNT
  799. WCPY CON 0 WORD COPY COUNT
  800. SPACE 4,10
  801. ** TECA - TABLE OF ERROR COUNT ADDRESSES.
  802. *
  803. *T 6/ EF, 18/ DMSA, 18/ OMSA, 18/ ERCA
  804. *
  805. * EF ERROR FLAG VALUE.
  806. * DMSA DAYFILE ERROR SUMMARY MESSAGE ADDRESS.
  807. * OMSA ALTERNATE OUTPUT FILE ERROR MESSAGE ADDRESS.
  808. * ERCA ERROR COUNT ADDRESS.
  809.  
  810.  
  811. TECA BSS 0
  812. VFD 6/-1,18/IESA,18/PDED,18/PBCT PARITY/BLOCK TOO LARGE
  813. VFD 6/1,18/IESC,18/PDEF,18/BFCT BAD FORMAT BLOCK ERROR
  814. TECAL1 EQU *-TECA
  815. VFD 6/0,18/IESD,18/0,18/NZCT NOISE BLOCKS PROCESSED
  816. VFD 6/0,18/IESE,18/0,18/RSCT RECORD SPLITS PROCESSED
  817. TECAL2 EQU *-TECA
  818. TITLE COPY/COPYBF/COPYEI.
  819. COPY SPACE 4,10
  820. ** COPY - COPY ONE FILE TO ANOTHER UNTIL SPECIFIED TERMINATION
  821. * CONDITION IS MET.
  822. *
  823. * EXIT TO *CPY*.
  824.  
  825.  
  826. COPY SX6 -1 INDICATE *COPY* CALL
  827. RJ CTP COPY/TCOPY PRESET PROGRAM
  828. EQ CPY PROCESS FILE COPY
  829. COPYBF SPACE 4,10
  830. ** COPYBF - COPY SPECIFIED NUMBER OF FILES FROM ONE FILE TO
  831. * ANOTHER.
  832. *
  833. * EXIT TO *CPY*.
  834.  
  835.  
  836. COPYBF SX6 1 INDICATE *COPYBF* CALL
  837. RJ PRS PRESET PROGRAM
  838. EQ CPY PROCESS FILE COPY
  839. COPYEI SPACE 4,10
  840. ** COPYEI - COPY ONE FILE TO ANOTHER UNTIL END OF INFORMATION
  841. * IS ENCOUNTERED.
  842. *
  843. * EXIT TO *CPY*.
  844.  
  845.  
  846. COPYEI SX7 -1 SET TERMINATION CONDITION
  847. SX6 2 INDICATE *COPYEI* CALL
  848. SA7 TC
  849. RJ PRS PRESET PROGRAM
  850. * EQ CPY PROCESS COPY TO EOI
  851. CPY SPACE 4,10
  852. ** CPY - COPY FILES.
  853. *
  854. * EXIT TO *SBC*, IF SINGLE BUFFER COPY.
  855. * TO *END*, IF COPY COMPLETE.
  856. * TO *END5*, IF EOI ENCOUNTERED.
  857. *
  858. * USES A - 0, 1, 2.
  859. * X - 1, 2.
  860. *
  861. * CALLS CPF, WNB=.
  862.  
  863.  
  864. CPY SA2 SBT GET SINGLE BUFFER COPY INDICATOR
  865. PL X2,SBC IF NO DATA MANIPULATION REQUIRED
  866. SA1 O+CWF
  867. SA0 BUFL-3 DEFAULT WORKING BUFFER LENGTH
  868. ZR X1,CPY1 IF CONTROL WORD WRITE DISABLED
  869. RECALL O
  870. WRITECW O,* PRESET CONTROL WORD WRITE FUNCTION
  871. SA2 O+PRU GET OUTPUT PRU SIZE
  872. SA0 X2+
  873. CPY1 RJ CPF COPY FILE
  874. SA1 CT
  875. NG X0,END5 IF EOI ENCOUNTERED
  876. ZR X1,END IF COPY COMPLETE
  877. EQ CPY1 CONTINUE COPY
  878. SBC SPACE 4,10
  879. ** SBC - SINGLE BUFFER COPY.
  880. *
  881. * EXIT TO *END*, IF COPY COMPLETE.
  882. * TO *END5*, IF EOI ENCOUNTERED.
  883. *
  884. * USES A - 0, 1, 2, 3, 4, 6, 7.
  885. * B - 3, 6, 7.
  886. * X - ALL.
  887. *
  888. * CALLS ABP, CIO=, DRN, PDE, PEF, SYS=, WNB=.
  889. *
  890. * PROGRAMMER,S NOTE - WHEN CHECKING FOR FET COMPLETE AND
  891. * DATA IN THE BUFFER, THE FET STATUS MUST BE PICKED UP
  892. * BEFORE THE BUFFER POINTER.
  893.  
  894.  
  895. SBC RECALL O
  896. WRITECW O,* PRESET CONTROL WORD WRITE
  897. SA2 I+3
  898. BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  899. SA0 X2+ INITIALIZE INPUT PSEUDO OUT POINTER
  900. BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
  901. EQ SBC13 INITIATE CONTROL WORD READ
  902.  
  903. * CHECK FOR INPUT BLOCK AVAILABLE.
  904.  
  905. SBC1 SA2 I CHECK INPUT FILE STATUS
  906. SA3 I+2 CHECK INPUT IN = PSEUDO OUT POINTER
  907. BX0 X0-X0 INDICATE NO BLOCKS AVAILABLE OR COMPLETE
  908. SX1 A0
  909. IX1 X3-X1
  910. LX2 59-0
  911. NZ X1,SBC3 IF INPUT BLOCK AVAILABLE
  912. PL X2,SBC7 IF BUFFER BUSY
  913. LX2 59-11-59+0
  914. NG X2,SBC17 IF PARITY ERROR STATUS IN FET
  915. LX2 59-3-59+11
  916. PL X2,SBC7 IF NOT EOF
  917. LX2 59-9-59+3
  918. PL X2,SBC2 IF NOT EOI
  919. SX0 -1 INDICATE EOI ENCOUNTERED
  920.  
  921. * PROCESS EOF OR EOI.
  922.  
  923. SBC2 RJ PEF PROCESS EOF
  924. SA1 CT
  925. NG X0,END5 IF EOI ENCOUNTERED
  926. ZR X1,END IF COPY COMPLETE
  927. SA2 O+2 UPDATE INPUT IN = OUTPUT IN
  928. LX6 X2
  929. BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  930. SA6 I+2
  931. SA0 X2 UPDATE INPUT PSEUDO OUT POINTER
  932. SX0 B1 FORCE CHECK ON OUTPUT
  933. SA3 SBT
  934. NZ X3,SBC13 IF NOT LARGE L OR F TAPE COPY
  935. SA2 SK
  936. NZ X2,SBC13 IF SKIP SET
  937. SA6 A6+B1 UPDATE INPUT OUT = OUTPUT IN
  938. WRITECW O,R FORCE WRITE ON LARGE L OR F TAPE
  939. EQ SBC13 REINITIATE CONTROL WORD READ
  940.  
  941. * PROCESS INPUT BLOCK.
  942.  
  943. SBC3 SX0 B1 INDICATE INPUT BLOCK TRANSFERRED
  944. SA3 BC INCREMENT BLOCK COUNT
  945. SX5 B1 INDICATE DATA TRANSFERRED
  946. IX6 X3+X5
  947. SA4 A0 CRACK CONTROL WORD HEADER
  948. MX7 -24
  949. SA6 A3
  950. BX7 -X7*X4 BYTE COUNT
  951. SX2 4 CALCULATE WORD COUNT
  952. IX7 X7+X2
  953. SX2 X2+B1
  954. IX7 X7/X2
  955. AX4 36
  956. SB6 X7
  957. SA2 EORF CHECK FOR PREVIOUS EOR
  958. SB7 X4 PRU SIZE
  959. ZR X2,SBC4 IF PREVIOUS BLOCK NOT EOR
  960. SA2 I+4 GET FWA DATA IN BLOCK
  961. SX3 B1
  962. SX1 A0
  963. RJ ABP
  964. BX2 -X6 INDICATE BLOCK IN CIO BUFFER
  965. SX1 X6+B6
  966. RJ DRN DISPLAY RECORD NAME
  967. SBC4 SA4 I+SLF
  968. SA2 I+4
  969. SX6 -B1 INDICATE EOR STATUS FOR S, L, F TAPE
  970. NZ X4,SBC5 IF S, L, OR F INPUT TAPE
  971. SX6 B6-B7 NO EOR IF FULL BLOCK
  972. SBC5 SA1 WCPY
  973. SA6 EORF SAVE EOR FLAG
  974. SX7 B6
  975. IX7 X1+X7 INCREMENT WORD COPY COUNT
  976. SA7 A1
  977. SX1 A0
  978. ZR X6,SCB5.1 IF NOT EOR/EOF
  979. SX3 B6+1
  980. RJ ABP FIND POSITION TRAILER CONTROL WORD
  981. SA1 RCPY
  982. SA2 I+4
  983. SA4 X6 TRAILER CONTROL WORD
  984. MX7 -12
  985. LX4 12
  986. SX6 X1+B1 INCREMENT RECORD COPY COUNT
  987. SA6 A1
  988. SA1 FCPY
  989. BX7 -X7*X4
  990. SX7 X7-17B CHECK FOR EOF
  991. NZ X7,SCB5.1 IF NOT EOF
  992. SX6 X1+1 INCREMENT FILE COUNT
  993. SA6 A1+
  994. SCB5.1 SX3 B6+2 ADVANCE OVER BLOCK AND CONTROL WORDS
  995. SX1 A0
  996. RJ ABP
  997. SA1 A0+ GET CONTROL WORD HEADER
  998. NG X1,SBC16 IF ERROR OCCURRED ON THIS BLOCK
  999.  
  1000. * TRANSFER BLOCK TO OUTPUT.
  1001.  
  1002. SBC6 SA6 O+2 ADVANCE OUTPUT IN POINTER
  1003. SA1 SK
  1004. SA0 X6 ADVANCE INPUT PSEUDO OUT POINTER
  1005. ZR X1,SBC7 IF SKIP NOT SET
  1006. SA6 A6+B1 ADVANCE OUTPUT OUT POINTER
  1007. SA6 I+3 ADVANCE INPUT OUT POINTER
  1008. EQ SBC11 CONTINUE CONTROL WORD READ
  1009.  
  1010. * CHECK FOR REINITIATE CONTROL WORD WRITE.
  1011.  
  1012. SBC7 SA1 SK
  1013. NZ X1,SBC11 IF SKIP SET
  1014. SA2 O CHECK OUTPUT FILE STATUS
  1015. SA1 O+2
  1016. LX2 59-0
  1017. PL X2,SBC10 IF BUFFER BUSY
  1018. SA2 A1+B1 CHECK BUFFER THRESHOLD
  1019. SA3 SBT
  1020. IX1 X1-X2 (IN-OUT)
  1021. IX2 X1-X3 (IN-OUT) - 1/3(BUFFER SIZE)
  1022. ZR X1,SBC10 IF BUFFER EMPTY
  1023. ZR X3,SBC9 IF FORCE WRITE ON LARGE L OR F TAPE
  1024. PL X1,SBC8 IF IN .GT. OUT
  1025. LX3 1
  1026. IX2 X3+X1 2/3(BUFFER SIZE) - (OUT-IN)
  1027. SBC8 NG X2,SBC10 IF BUFFER THRESHOLD NOT REACHED
  1028. SBC9 WRITECW O REINITIATE CONTROL WORD WRITE
  1029.  
  1030. * CHECK FOR OUTPUT BLOCK WRITTEN.
  1031.  
  1032. SBC10 SA1 O+3 CHECK OUTPUT OUT = INPUT OUT
  1033. SA2 I+3
  1034. IX3 X1-X2
  1035. ZR X3,SBC11 IF BLOCK NOT WRITTEN
  1036. BX6 X1
  1037. SX0 X0+B1 INDICATE OUTPUT BLOCK COMPLETE
  1038. SA6 A2 UPDATE INPUT OUT = OUTPUT OUT
  1039.  
  1040. * CHECK FOR REINITIATE CONTROL WORD READ.
  1041.  
  1042. SBC11 SA4 I CHECK INPUT FILE STATUS
  1043. LX4 59-0
  1044. PL X4,SBC15 IF BUFFER BUSY
  1045. SA1 I+2
  1046. LX4 59-11-59+0
  1047. NG X4,SBC15 IF PARITY ERROR STATUS IN FET
  1048. LX4 59-3-59+11
  1049. NG X4,SBC15 IF EOF/EOI ENCOUNTERED
  1050. SA3 SBT CHECK BUFFER THRESHOLD
  1051. SA2 A1+B1
  1052. IX1 X1-X2 (IN-OUT)
  1053. IX2 X3+X1 1/3(BUFFER SIZE) + (IN-OUT)
  1054. ZR X1,SBC13 IF BUFFER EMPTY
  1055. ZR X3,SBC15 IF WAIT FOR WRITE ON LARGE L OR F TAPE
  1056. NG X1,SBC12 IF OUT .GT. IN
  1057. LX3 1
  1058. IX2 X1-X3 (IN-OUT) - 2/3(BUFFER SIZE)
  1059. SBC12 PL X2,SBC15 IF BUFFER THRESHOLD NOT REACHED
  1060. SBC13 SA1 TC CHECK TERMINATION CONDITION
  1061. PL X1,SBC14 IF NOT COPY TO EOI
  1062. SA2 SEWI CHECK SKIP EOF WRITE INDICATOR
  1063. NZ X2,SBC14 IF PO=M OPTION SELECTED
  1064. READCW I,0 INITIATE CONTROL WORD READ TO EOI
  1065. EQ SBC15 CHECK FOR RECALL
  1066.  
  1067. SBC14 READCW I,17B INITIATE CONTROL WORD READ TO EOF
  1068.  
  1069. * CHECK FOR RECALL.
  1070.  
  1071. SBC15 NZ X0,SBC1 IF INPUT AND/OR OUTPUT BLOCKS TRANSFERRED
  1072. RECALL WAIT FOR DATA TRANSFER
  1073. EQ SBC1 CHECK FOR INPUT BLOCKS
  1074.  
  1075. * PROCESS PARITY OR BLOCK TOO LARGE ERROR.
  1076.  
  1077. SBC16 BX5 X6 SAVE ADVANCED POINTER VALUE
  1078. SB3 B0 INDICATE PARITY/BLOCK TOO LARGE ERROR
  1079. RJ PDE PROCESS ERROR
  1080. BX6 X5
  1081. SA2 ESPI CHECK ERROR BLOCKS SKIPPED OR PROCESSED
  1082. SX7 A0
  1083. NZ X2,SBC6 IF BLOCK TO BE PROCESSED
  1084. SA7 I+2 BACKUP INPUT IN POINTER
  1085. RECALL I WAIT FOR ERROR STATUS COMPLETION
  1086. SBC17 SX2 I
  1087. RJ CUE CHECK FOR UNRECOVERABLE ERROR
  1088. SX0 B1+ FORCE CHECK ON OUTPUT
  1089. SA3 SBT
  1090. NZ X3,SBC13 IF NOT LARGE L OR F TAPE COPY
  1091. RECALL O WAIT FOR WRITE TO COMPLETE
  1092. EQ SBC13 REINITIATE CONTROL WORD READ
  1093. TITLE COMMON COPY ROUTINES.
  1094. ABP SPACE 4,15
  1095. ** ABP - ADVANCE BUFFER POINTER.
  1096. *
  1097. * EXIT (A2) = ADDRESS OF LIMIT POINTER.
  1098. * (X1) = IN OR OUT POINTER TO BE UPDATED.
  1099. * (X2) = LIMIT POINTER.
  1100. * (X3) = NUMBER OF WORDS TO ADVANCE.
  1101. *
  1102. * EXIT (X6) = ADVANCED IN OR OUT POINTER VALUE.
  1103. *
  1104. * USES A - 2.
  1105. * X - 1, 2, 3, 6.
  1106.  
  1107.  
  1108. ABP SUBR ENTRY/EXIT
  1109. SX2 X2+
  1110. IX2 X2-X1
  1111. IX6 X3-X2
  1112. NG X6,ABP1 IF NO WRAP AROUND
  1113. SA2 A2-3 FIRST
  1114. BX3 X6
  1115. SX1 X2
  1116. ABP1 IX6 X1+X3
  1117. EQ ABPX RETURN
  1118. ABT SPACE 4,15
  1119. ** ABT - ABORT ROUTINE.
  1120. *
  1121. * FLUSHES OUTPUT FILE BUFFER. FLUSHES ALTERNATE OUTPUT FILE
  1122. * BUFFER, IF NECESSARY. ISSUES DAYFILE MESSAGES.
  1123. *
  1124. * ENTRY (B5) = FWA MESSAGE, IF ENTRY AT *ABT4*.
  1125. *
  1126. * USES A - 1, 2, 6.
  1127. * B - 2.
  1128. * X - 1, 2, 6.
  1129. *
  1130. * CALLS CIO=, IES, MSG=, SNM, SYS=.
  1131.  
  1132.  
  1133. ABT4 SX6 B5+ SAVE ABORT MESSAGE ADDRESS
  1134. SA1 I SET NAME IN MESSAGE
  1135. MX2 42
  1136. SA6 ABTA
  1137. BX1 X2*X1
  1138. SB2 1RX
  1139. RJ SNM
  1140. * EQ ABT
  1141.  
  1142. ABT SA1 SK
  1143. NZ X1,ABT2 IF SKIP SET
  1144. SA1 O+CWF
  1145. ZR X1,ABT1 IF CONTROL WORDS DISABLED ON OUTPUT
  1146. WRITECW O FLUSH OUTPUT BUFFER
  1147. EQ ABT2 ABORT
  1148.  
  1149. ABT1 WRITER O FLUSH OUTPUT BUFFER
  1150.  
  1151. ABT2 SA1 EL
  1152. ZR X1,ABT3 IF EXTENDED ERROR PROCESSING NOT IN EFFECT
  1153. WRITER L FLUSH ALTERNATE OUTPUT FILE BUFFER
  1154. ABT3 RECALL I FORCE 1MT ERROR MESSAGES TO DAYFILE FIRST
  1155. RJ IES ISSUE ERROR SUMMARY MESSAGES
  1156. SA2 ABTA ISSUE ABORT MESSAGE
  1157. MESSAGE X2,0
  1158. ABORT
  1159.  
  1160.  
  1161. ABTA CON ABTB ABORT MESSAGE ADDRESS
  1162.  
  1163. ABTB DATA C* ERROR LIMIT EXCEEDED.*
  1164. ABTC DATA C* RECORD TOO LARGE ON XXXXXXX.*
  1165. ABTD DATA C* UNRECOVERABLE ERROR ON XXXXXXX.*
  1166. BFL SPACE 4,15
  1167. ** BFL - BLANK FILL LINE.
  1168. *
  1169. * ENTRY (B6) = LWA+1 CODED LINE.
  1170. * (B7) = LENGTH OF FULL LINE.
  1171. * (FWWB) = FWA WORKING BUFFER.
  1172. *
  1173. * EXIT (B6) = LWA+1 BLANK FILLED LINE.
  1174. *
  1175. * USES A - 1, 2, 6.
  1176. * B - 4, 6.
  1177. * X - 1, 2, 3, 6.
  1178. *
  1179. * CALLS SFN.
  1180.  
  1181.  
  1182. BFL SUBR ENTRY/EXIT
  1183. SA2 FWWB FWA WORKING BUFFER
  1184. SA1 B6-B1 GET LAST WORD OF LINE
  1185. SB4 X2+B7
  1186. NZ X1,BFL1 IF LAST WORD NOT ZERO
  1187. SB6 B6-B1 GET PREVIOUS WORD OF LINE
  1188. SA1 B6-B1
  1189. BFL1 RJ SFN BLANK FILL LAST DATA WORD
  1190. SA6 A1
  1191. SA2 =10H
  1192. BX6 X2
  1193. BFL2 GE B6,B4,BFLX IF AT LINE LIMIT
  1194. SA6 B6 BLANK FILL TO LINE LIMIT
  1195. SB6 B6+B1
  1196. EQ BFL2 CONTINUE BLANK FILL
  1197. CPF SPACE 4,15
  1198. ** CPF - COPY FILE.
  1199. *
  1200. * ENTRY (A0) = WORD COUNT FOR READ.
  1201. * (FWWB) = FWA WORKING BUFFER.
  1202. *
  1203. * EXIT (X0) .LT. 0, IF EOI ENCOUNTERED.
  1204. * (CT) = 0, IF COPY COMPLETE.
  1205. *
  1206. * USES A - 1, 2, 4.
  1207. * B - 2, 3, 4, 5, 6, 7.
  1208. * X - 0, 1, 2, 4, 5.
  1209. *
  1210. * CALLS CIO=, CWR, CWW, DRN, PEF, RDW=, SSL, WNB=, WTW=.
  1211.  
  1212.  
  1213. CPF9 SX0 X1+B1 PROCESS END OF FILE
  1214. RJ PEF
  1215.  
  1216. CPF SUBR ENTRY/EXIT
  1217. BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  1218. SA1 I+CWF
  1219. SX0 B1 INDICATE READ TO BE REINITIATED
  1220. ZR X1,CPF1 IF CONTROL WORD READ DISABLED
  1221. SA2 I+TCF
  1222. SB3 -B1
  1223. SB2 X2
  1224. LT B2,B3,CPF1 IF I OR SI-C TAPE READ VIA S/L FORMAT
  1225. READCW I,17B INITIATE CONTROL WORD READ
  1226. CPF1 SA1 O+CWF
  1227. NZ X1,CPF2 IF CONTROL WORD WRITE ENABLED
  1228. RECALL O
  1229. WRITE O,* PRESET STANDARD WRITE
  1230. CPF2 SA1 I+CWF
  1231. ZR X1,CPF3 IF CONTROL WORD READ DISABLED
  1232. CWRW I,(FWWB),A0
  1233. EQ CPF5 CHECK READ STATUS
  1234.  
  1235. CPF3 ZR X0,CPF4 IF PREVIOUS READ STATUS NOT EOR
  1236. READ I INITIATE STANDARD READ
  1237. CPF4 SA4 FWWB FWA WORKING BUFFER
  1238. READW I,X4,A0
  1239. CPF5 NG X1,CPF9 IF EOF/EOI ENCOUNTERED
  1240. SX5 B1+ INDICATE DATA TRANSFERRED
  1241. SB4 X0 SAVE PREVIOUS READ STATUS
  1242. SB5 X1 SAVE CURRENT READ STATUS
  1243. ZR X0,CPF6 IF PREVIOUS READ STATUS NOT EOR
  1244. RJ VNS VERIFY NOISE SIZE BLOCK
  1245. SX0 B5 RESTORE CURRENT READ STATUS
  1246. NG X4,CPF2 IF NOISE BLOCK
  1247. SA2 FWWB DISPLAY RECORD NAME
  1248. RJ DRN
  1249. CPF6 SA1 FWWB FWA WORKING BUFFER
  1250. SA2 SK
  1251. SX0 B5 RESTORE CURRENT READ STATUS
  1252. SB3 X1
  1253. SA3 WCPY
  1254. NZ X2,CPF10 IF SKIP SET
  1255. SA2 O+SLF
  1256. SA1 O+CWF
  1257. SB7 B6-B3
  1258. SB2 X2
  1259. SX4 B7
  1260. IX6 X4+X3 ADD CURRENT WORD COPY COUNT
  1261. SA6 A3+
  1262. ZR X1,CPF8 IF CONTROL WORD WRITE DISABLED
  1263. LE B2,CPF7 IF NOT S OR L OUTPUT TAPE
  1264. RJ SSL SPECIAL PROCESSING FOR S OR L OUTPUT TAPE
  1265. CPF7 CWWW O,B3,B7
  1266. EQ CPF2 CONTINUE COPY
  1267.  
  1268. CPF8 WRITEW O,B3,B7
  1269. ZR X0,CPF2 IF CURRENT READ STATUS NOT EOR
  1270. WRITER O
  1271. SA1 RCPY INCREMENT RECORD COUNT
  1272. SX6 X1+B1
  1273. SA6 A1
  1274. EQ CPF1 PRESET STANDARD WRITE
  1275.  
  1276. CPF10 SX4 B6-B3
  1277. IX6 X4+X3 ADD WORDS COPIED
  1278. SA6 A3+
  1279. ZR X0,CPF2 IF NOT EOR
  1280. SA1 RCPY INCREMENT RECORD COUNT
  1281. SX6 X1+B1
  1282. SA6 A1
  1283. EQ CPF2 CONTINUE COPY
  1284. CUE SPACE 4,15
  1285. ** CUE - CHECK UNRECOVERABLE ERROR.
  1286. *
  1287. * CLEARS ERROR STATUS FROM FET AND CLEARS BLOCK ERROR FLAG.
  1288. * ABORTS IF UNRECOVERABLE ERROR IS DETECTED (IF LAST BLOCK
  1289. * PROCESSED DID NOT HAVE A PARITY OR BLOCK TOO LARGE ERROR).
  1290. *
  1291. * ENTRY (X2) = FWA FET.
  1292. * (ERRF) = ERROR FLAG FOR LAST BLOCK PROCESSED.
  1293. *
  1294. * EXIT TO *ABT4*, IF UNRECOVERABLE ERROR DETECTED.
  1295. *
  1296. * USES A - 1, 3, 6, 7.
  1297. * B - 5.
  1298. * X - 1, 3, 6, 7.
  1299.  
  1300.  
  1301. CUE SUBR ENTRY/EXIT
  1302. SA3 ERRF LAST BLOCK ERROR FLAG
  1303. SB5 ABTD * UNRECOVERABLE ERROR ON LFN.*
  1304. SA1 X2
  1305. PL X3,ABT4 IF NO PARITY ERROR ON LAST BLOCK
  1306. MX6 4 CLEAR ERROR STATUS FROM FET+0 BITS 10 - 13
  1307. LX6 14
  1308. SX7 B0 CLEAR BLOCK ERROR FLAG
  1309. BX6 -X6*X1
  1310. SA7 A3
  1311. SA6 A1
  1312. EQ CUEX RETURN
  1313. CWR SPACE 4,20
  1314. ** CWR - CONTROL WORD READ WORDS.
  1315. *
  1316. * ENTRY (FWWB) = FWA WORKING BUFFER.
  1317. * (X7) = NUMBER OF WORDS TO TRANSFER.
  1318. *
  1319. * EXIT (X1) = -1, IF EOF ENCOUNTERED.
  1320. * = -2, IF EOI ENCOUNTERED.
  1321. * = 0, IF TRANSFER COMPLETE AND NO EOR DETECTED.
  1322. * = (B6), IF EOR WAS DETECTED ON INPUT BEFORE OR
  1323. * IMMEDIATELY AFTER TRANSFER WAS COMPLETED.
  1324. * (B6) = LWA+1 DATA TRANSFERRED.
  1325. * (LVL) = EOR LEVEL NUMBER.
  1326. * (UBC) = UNUSED BIT COUNT FOR LAST WORD TRANSFERRED.
  1327. *
  1328. * USES A - 1, 2, 3, 4, 6, 7.
  1329. * B - 2, 3, 6, 7.
  1330. * X - 1, 2, 3, 4, 6, 7.
  1331. *
  1332. * CALLS CEL, INB, RDW=.
  1333.  
  1334.  
  1335. CWR SUBR ENTRY/EXIT
  1336. SA1 FWWB FWA WORKING BUFFER
  1337. SA7 RWTT SAVE NUMBER OF WORDS TO TRANSFER
  1338. BX6 X6-X6
  1339. LX7 X1
  1340. SA2 RWCB
  1341. SA7 LWDB
  1342. SA6 LVL CLEAR EOR LEVEL NUMBER
  1343. SA6 UBC CLEAR UNUSED BIT COUNT
  1344. PL X2,CWR1 IF WORDS REMAINING IN CURRENT BLOCK
  1345. RJ INB INITIALIZE NEW BLOCK
  1346. NG X1,CWRX IF EOF/EOI ENCOUNTERED
  1347. CWR1 SA1 RWCB REMAINING WORDS IN CURRENT BLOCK
  1348. SA2 RWTT REMAINING WORDS TO TRANSFER
  1349. IX6 X2-X1
  1350. SA4 BTSK BLOCK TERMINATOR/SKIP WORD INDICATOR
  1351. BX3 X2
  1352. SB7 X2
  1353. NG X6,CWR2 IF MORE THAN ENOUGH DATA TO FILL BUFFER
  1354. BX3 X1
  1355. SB7 X1+B1 ALSO TRANSFER CONTROL WORD TRAILER
  1356. ZR X4,CWR2 IF NO BLOCK TERMINATOR OR EXTRA WORD
  1357. SB7 B7+B1 ALSO TRANSFER BLOCK TERMINATOR/EXTRA WORD
  1358. CWR2 SA4 LWDB LWA+1 DATA IN WORKING BUFFER
  1359. ZR B7,CWR3 IF NO DATA REQUESTED
  1360. IX6 X1-X3 DECREMENT NUMBER OF WORDS IN CURRENT BLOCK
  1361. SA6 A1
  1362. IX7 X2-X3 DECREMENT NUMBER OF WORDS TO TRANSFER
  1363. SA7 A2
  1364. IX6 X4+X3 INCREMENT WORKING BUFFER ADDRESS
  1365. SA6 A4
  1366. READW I,X4,B7
  1367. CWR3 SA4 RWCB
  1368. NZ X4,CWR7 IF TRANSFER COMPLETE AND NO EOR
  1369. SA3 LWDB PROCESS TRAILER CONTROL WORD
  1370. SA4 BTSK CHECK FOR BLOCK TERMINATOR OR EXTRA WORD
  1371. SA1 X3 GET TRAILER CONTROL WORD
  1372. ZR X4,CWR4 IF NO BLOCK TERMINATOR OR EXTRA WORD
  1373. SA1 A1+B1
  1374. CWR4 LX7 X1
  1375. SA2 UBCB SET UNUSED BIT COUNT FOR BLOCK
  1376. AX7 48
  1377. BX6 X2
  1378. SA7 LVL
  1379. MX7 1 SET INITIALIZE NEW BLOCK FLAG
  1380. SA6 UBC
  1381. SA7 RWCB
  1382. ZR X2,CWR5 IF NO UNUSED BIT COUNT
  1383. SB3 59 CLEAR EXTRANEOUS DATA FROM LAST DATA WORD
  1384. SB2 X2
  1385. MX2 1
  1386. SA1 X3-1
  1387. SB2 B3-B2
  1388. AX2 B2
  1389. BX6 X2*X1
  1390. SA6 A1
  1391. CWR5 SB2 X4
  1392. LE B2,CWR6 IF NOT I OR SI-C BLOCK TERMINATOR
  1393. SA1 I+TCF
  1394. SB2 B1+B1
  1395. SB2 -B2
  1396. SB3 X1
  1397. NE B2,B3,CWR5.1 IF NOT SI-CODED TAPE
  1398. SA2 X3 PROCESS SI-CODED BLOCK TERMINATOR
  1399. RJ SIT
  1400. PL X1,CWR6 IF NOT SI-CODED EOF
  1401. EQ CWRX RETURN
  1402.  
  1403. CWR5.1 SB2 B2-B1
  1404. NE B2,B3,CWR6 IF NOT I FORMAT VIA L FORMAT
  1405. SA2 X3 PROCESS I BLOCK TERMINATOR
  1406. RJ IBT
  1407. NG X1,CWRX IF I FORMAT EOF ENCOUNTERED
  1408. CWR6 SA2 RWTT
  1409. ZR X2,CWR7 IF TRANSFER COMPLETE
  1410. SA3 EORF
  1411. NZ X3,CWR7 IF EOR ON CURRENT BLOCK
  1412. RJ INB INITIALIZE NEW BLOCK
  1413. PL X1,CWR1 IF EOF/EOI NOT ENCOUNTERED
  1414. CWR7 SA1 I+TCF
  1415. SB2 B1+B1
  1416. SB2 -B2
  1417. SB3 X1
  1418. NE B2,B3,CWR8 IF NOT SI-CODED TAPE
  1419. RJ CEL CONVERT END OF LINES
  1420. CWR8 SA3 LWDB LWA+1 DATA TRANSFERRED
  1421. SA4 RWCB REMAINING WORDS IN CURRENT BLOCK
  1422. SB6 X3
  1423. BX1 X1-X1
  1424. SA2 EORF EOR FLAG
  1425. PL X4,CWRX IF CURRENT BLOCK NOT DEPLETED
  1426. ZR X2,CWRX IF NO EOR ON CURRENT BLOCK
  1427. SX1 B6
  1428. EQ CWRX RETURN
  1429. CWW SPACE 4,20
  1430. ** CWW - CONTROL WORD WRITE WORDS.
  1431. *
  1432. * ENTRY (X0) .NE. 0, IF EOR TO BE GUARANTEED IF MS/I/LI/SI-B
  1433. * OUTPUT.
  1434. * (X2) = FWA FET.
  1435. * (B6) = FWA WORKING BUFFER.
  1436. * (B7) = NUMBER OF WORDS TO TRANSFER.
  1437. * IF (B7) = 0, EOR ONLY WILL BE WRITTEN IF MS/I/LI/SI-B
  1438. * OUTPUT.
  1439. * (UBC) = UNUSED BIT COUNT FOR BLOCK.
  1440. * (LVL) = EOR LEVEL NUMBER.
  1441. *
  1442. * EXIT (X2) = FWA FET.
  1443. *
  1444. * USES A - 1, 3, 4, 6, 7.
  1445. * B - 5, 6, 7.
  1446. * X - 1, 3, 4, 6, 7.
  1447. *
  1448. * CALLS WTW=.
  1449.  
  1450.  
  1451. CWW3 SA1 RCPY EOR VIA NON-FULL PRU
  1452. SX6 X1+B1
  1453. SA6 A1
  1454.  
  1455. CWW SUBR ENTRY/EXIT
  1456. ZR B7,CWW2 IF WORKING BUFFER EMPTY
  1457. SX6 B7 SAVE NUMBER OF WORDS
  1458. SB5 B7
  1459. SA6 CWWA
  1460. SX3 5 BUILD CONTROL WORD HEADER
  1461. SA4 X2+ODF
  1462. SA1 UBC GET UNUSED BIT COUNT FOR BLOCK
  1463. IX6 X6*X3 CALCULATE NUMBER OF BYTES
  1464. ZR X4,CWW1 IF MS/I/LI/SI-B OUTPUT
  1465. BX3 X1
  1466. ZR X1,CWW1 IF NO UNUSED BIT COUNT
  1467. SX4 12 CALCULATE UNUSED BIT COUNT FOR BYTE
  1468. LX7 X4
  1469. IX3 X3/X4
  1470. IX6 X6-X3
  1471. IX3 X3*X7
  1472. IX1 X1-X3
  1473. LX1 24
  1474. BX6 X1+X6 MERGE UNUSED BIT COUNT AND BLOCK LENGTH
  1475. CWW1 SB6 B6-B1 RESET FWA WORKING BUFFER
  1476. SA3 LVL GET EOR LEVEL NUMBER
  1477. SA6 B6 STORE HEADER CONTROL WORD
  1478. BX7 X3
  1479. SB7 B5+B1 INCREMENT LENGTH OF WORKING BUFFER
  1480. LX7 -12
  1481. SA7 B6+B7 STORE TRAILER CONTROL WORD
  1482. SB7 B7+B1
  1483. WRITEW X2,B6,B7 WRITE CONTROL WORD BLOCK
  1484. SA3 CWWA CHECK IF FULL PRU WRITTEN
  1485. SA1 X2+PRU
  1486. IX1 X1-X3
  1487. NZ X1,CWW3 IF LAST BLOCK NOT FULL PRU
  1488. CWW2 SA3 LVL BUILD TRAILER CONTROL WORD
  1489. SA1 X2+SLF
  1490. BX7 X3
  1491. ZR X0,CWWX IF NOT EOR STATUS
  1492. SA3 RCPY INCREMENT RECORD COUNT
  1493. SX6 X3+B1
  1494. SA6 A3
  1495. LX7 -12
  1496. SB6 CWWB
  1497. NZ X1,CWWX IF NOT MS/OD/I/LI/SI-B OUTPUT
  1498. SA7 B6+B1
  1499. WRITEW X2,B6,B1+B1 WRITE EOR ONLY
  1500. EQ CWWX RETURN
  1501.  
  1502.  
  1503. CWWA CON 0 BLOCK SIZE IN WORDS
  1504.  
  1505. CWWB CON 0 CONTROL WORD EOR
  1506. CON 0
  1507. DRN SPACE 4,15
  1508. ** DRN - DISPLAY RECORD NAME.
  1509. *
  1510. * ENTRY (X2) = FWA RECORD. IF (X2) .LT. 0, IT IS THE
  1511. * COMPLEMENT OF FWA RECORD IN INPUT CIO BUFFER.
  1512. * (X1) = FWA RECORD, IF ZERO LENGTH RECORD.
  1513. *
  1514. * EXIT (RC) = UPDATED RECORD COUNT.
  1515. *
  1516. * USES A - 1, 2, 3, 6, 7.
  1517. * X - 1, 2, 3, 6, 7.
  1518. *
  1519. * CALLS MSG=.
  1520.  
  1521.  
  1522. DRN SUBR ENTRY/EXIT
  1523. SA3 RC INCREMENT RECORD COUNT
  1524. SX7 B1
  1525. IX6 X3+X7
  1526. PL X2,DRN1 IF NOT DISPLAY FROM CIO BUFFER
  1527. IX7 X2-X7
  1528. BX2 -X2
  1529. DRN1 IX1 X1-X2
  1530. SA6 A3
  1531. ZR X1,DRN2 IF ZERO LENGTH RECORD
  1532. SA1 X2 GET RECORD NAME
  1533. MX6 12
  1534. BX6 X6*X1
  1535. LX6 12
  1536. SX6 X6-7700B
  1537. NZ X6,DRN2 IF NOT 77 TABLE
  1538. SA3 I+4
  1539. SA1 A1+B1
  1540. SX3 X3
  1541. PL X7,DRN2 IF NOT DISPLAY FROM CIO BUFFER
  1542. SA2 I+1
  1543. IX6 X3+X7 CHECK FOR WRAP AROUND
  1544. NZ X6,DRN2 IF NO WRAP AROUND
  1545. SA1 X2
  1546. DRN2 MX7 42
  1547. BX7 X7*X1
  1548. SA7 DRNA+1 ENTER NAME IN MESSAGE
  1549. MESSAGE A7-B1,1 DISPLAY RECORD NAME
  1550. EQ DRNX RETURN
  1551.  
  1552.  
  1553. DRNA DATA 10H COPYING
  1554. CON 0,0
  1555. END SPACE 4,15
  1556. ** END - END ROUTINE.
  1557. *
  1558. * FLUSHES OUTPUT BUFFER, IF NECESSARY. FLUSHES ALTERNATE
  1559. * OUTPUT FILE BUFFER, IF NECESSARY. ISSUES DAYFILE MESSAGES.
  1560. *
  1561. * ENTRY AT *END5*, IF EOI ENCOUNTERED BEFORE COPY COMPLETE.
  1562. *
  1563. * EXIT TO *VFY*, IF VERIFY REQUESTED.
  1564. *
  1565. * USES A - 1, 2, 6.
  1566. * X - 1, 2, 6.
  1567. *
  1568. * CALLS CIO=, IES, MSG=, SYS=.
  1569.  
  1570.  
  1571. END5 SX6 ENDC *EOI ENCOUNTERED* OR *FILE NOT FOUND*
  1572. SA1 ENDG
  1573. NZ X1,END3.4 IF *FILE NOT FOUND*
  1574. SA6 ENDA
  1575. * EQ END
  1576.  
  1577. END SA1 SK
  1578. NZ X1,END2 IF SKIP SET
  1579. RECALL O
  1580. SA1 O+2 CHECK *IN* = *OUT*
  1581. SA2 A1+B1
  1582. IX1 X1-X2
  1583. ZR X1,END2 IF OUTPUT BUFFER EMPTY
  1584. SA2 O+CWF
  1585. ZR X2,END1 IF CONTROL WORD WRITE DISABLED
  1586. WRITECW O FLUSH OUTPUT BUFFER
  1587. EQ END2 ISSUE COMPLETION MESSAGE
  1588.  
  1589. END1 WRITE O FLUSH OUTPUT BUFFER
  1590. END2 SA1 EL
  1591. ZR X1,END3 IF EXTENDED ERROR PROCESSING NOT IN EFFECT
  1592. WRITER L FLUSH ALTERNATE OUTPUT FILE BUFFER
  1593. END3 RECALL I FORCE 1MT ERROR MESSAGES TO DAYFILE FIRST
  1594. RECALL O
  1595. RECALL L
  1596. SA2 ENDA ISSUE ENDING MESSAGE
  1597. MESSAGE X2,0
  1598. SA2 ENDA
  1599. SA1 X2+2 COPY STATUS
  1600. SB2 1R/
  1601. SB5 ENDF
  1602. RJ SNM SET TERMINATION TYPE INTO MESSAGE
  1603. SA1 FCPY FILE COUNT
  1604. RJ CDD CONVERT TO DISPLAY
  1605. SB2 B2-B1
  1606. MX0 1
  1607. AX1 X0,B2
  1608. BX1 X1*X4 ZERO FILL
  1609. SB2 1R+
  1610. RJ SNM SET FILE COUNT INTO MESSAGE
  1611. SA1 FCPY
  1612. SX1 X1-1
  1613. ZR X1,END3.1 IF JUST ONE FILE
  1614. SA1 =1LS
  1615. END3.1 SB2 1R#
  1616. RJ SNM SET PLURAL INTO MESSAGE
  1617. SA1 RCPY RECORD COUNT
  1618. RJ CDD CONVERT TO DISPLAY
  1619. SB2 B2-B1
  1620. AX1 X0,B2
  1621. BX1 X1*X4 ZERO FILL
  1622. SB2 1R-
  1623. RJ SNM SET FILE COUNT INTO MESSAGE
  1624. SA1 RCPY
  1625. SX1 X1-1
  1626. ZR X1,END3.2 IF JUST ONE RECORD
  1627. SA1 =1LS
  1628. END3.2 SB2 1R$
  1629. RJ SNM SET PLURAL INTO MESSAGE
  1630. SA1 WCPY WORD COUNT
  1631. RJ CDD CONVERT TO DISPLAY
  1632. SB2 B2-B1
  1633. AX1 X0,B2
  1634. BX1 X1*X4 ZERO FILL
  1635. SB2 1R,
  1636. RJ SNM SET WORD COUNT INTO MESSAGE
  1637. SA1 WCPY
  1638. SX1 X1-1
  1639. ZR X1,END3.3 IF JUST ONE WORD
  1640. SA1 =1LS
  1641. END3.3 SB2 1R=
  1642. RJ SNM SET PLURAL INTO MESSAGE
  1643. END3.4 MESSAGE ENDF
  1644. RJ IES ISSUE ERROR SUMMARY MESSAGES
  1645. SA1 VF
  1646. NZ X1,VFY IF VERIFY REQUESTED
  1647. ZR X0,END4 IF NO WARNING MESSAGES ISSUED
  1648. MESSAGE ENDE,3 * CHECK DAYFILE FOR ERRORS.*
  1649. END4 ENDRUN
  1650.  
  1651.  
  1652. ENDA CON ENDB ENDING MESSAGE ADDRESS
  1653.  
  1654. ENDB DATA C* COPY COMPLETE.*
  1655. DATA L*END*
  1656. ENDC DATA C* EOI ENCOUNTERED.*
  1657. DATA L*EOI*
  1658. ENDD DATA C* EOF ENCOUNTERED.*
  1659. DATA L*EOF*
  1660. ENDE DATA C* CHECK DAYFILE FOR ERRORS.*
  1661. ENDF DATA C* ///. ++++++++++ FILE#; ---------- RECORD$; ,,,,,,,,,
  1662. ,, WORD=.*
  1663. ENDG CON 0 FILE NOT FOUND FLAG
  1664. ERP$ SPACE 4,35
  1665. ** ERP$ - ERROR PROCESSING ROUTINE.
  1666. *
  1667. * WHEN A NON-FATAL ERROR (ERROR STATUS 02 IN BITS 10-13 OF
  1668. * FET+0) IS DETECTED, CIO= EXITS TO ERP$. SINCE ERROR
  1669. * PROCESSING MUST BE ENABLED IN ORDER TO GET CONTROL BACK AFTER
  1670. * A NON-FATAL ERROR HAS OCCURRED, AND EP BIT IS SET ONLY WHEN
  1671. * CONTROL WORD READ IS ENABLED, THE ERROR PROCESSING ROUTINE
  1672. * IS ENTERED AT ERP$ ONLY VIA CWR ROUTINE (CWR CALLS RDW=
  1673. * WHICH CALLS CIO= WHEN BUFFER IS EMPTY OR THRESHOLD IS
  1674. * REACHED, WHICH EXITS TO ERP$ UPON DETECTING 02 ERROR STATUS).
  1675. *
  1676. * WHEN A PARITY OR BLOCK TOO LARGE ERROR OCCURS, BIT 59 OF THE
  1677. * HEADER CONTROL WORD OF THE BLOCK IN ERROR IS SET IN ADDITION
  1678. * TO THE ERROR STATUS IN THE FET, AND THE CONTROL WORD READ
  1679. * OPERATION TERMINATES SO THAT THE LAST BLOCK IN THE CIO BUFFER
  1680. * IS THE ONE IN ERROR. WHEN SOME OTHER NON-FATAL ERROR SUCH AS
  1681. * WRONG PARITY, DENSITY CHANGE, OR READY DROP OCCURS, ONLY THE
  1682. * ERROR STATUS IS SET IN THE FET. THEREFORE, AFTER THE CIO
  1683. * BUFFER IS EMPTIED, THE JOB MUST BE ABORTED WITH
  1684. * *UNRECOVERABLE ERROR ON LFN.* IF THE LAST BLOCK PROCESSED
  1685. * DID NOT HAVE A PARITY OR BLOCK TOO LARGE ERROR.
  1686. *
  1687. * ENTRY (X2) = FWA FET.
  1688. * (ERRF) = ERROR FLAG FOR LAST BLOCK PROCESSED.
  1689. *
  1690. * EXIT (X7) = 0, IF EXIT TO *CIO=*.
  1691. * (X7) = PREVIOUS READ FUNCTION CODE, IF EXIT
  1692. * TO *CIO=+1*.
  1693. * TO *CIO=*, IF CIO BUFFER NOT EMPTY (RETURN TO RDW=
  1694. * WITHOUT REISSUING CIO FUNCTION).
  1695. * TO *ERPX$* WHEN A RECOVERABLE ERROR OCCURS.
  1696. *
  1697. * USES A - 1, 3.
  1698. * X - 1, 3, 7.
  1699. *
  1700. * CALLS CUE.
  1701.  
  1702.  
  1703. ERP$ SA1 X2+2 IN POINTER
  1704. SA3 A1+B1 OUT POINTER
  1705. IX1 X1-X3
  1706. BX7 X7-X7 CLEAR CIO ERROR STATUS
  1707. NZ X1,CIO= IF BUFFER NOT EMPTY
  1708. RJ CUE CHECK UNRECOVERABLE ERROR
  1709. EQ ERPX$ RESUME *CIO* FUNCTION
  1710. IES SPACE 4,10
  1711. ** IES - ISSUE ERROR SUMMARY MESSAGES.
  1712. *
  1713. * EXIT (X0) = NUMBER OF ERROR SUMMARY MESSAGES ISSUED.
  1714. *
  1715. * USES A - 1, 2, 6.
  1716. * B - 5, 6, 7.
  1717. * X - 0, 1, 2, 6.
  1718. *
  1719. * CALLS INM, MSG=.
  1720.  
  1721.  
  1722. IES SUBR ENTRY/EXIT
  1723. SB6 B0
  1724. BX0 X0-X0
  1725. SB7 TECAL2
  1726. IES1 GE B6,B7,IESX IF END OF ERROR COUNTS
  1727. SA2 TECA+B6
  1728. SB6 B6+B1
  1729. SA1 X2
  1730. ZR X1,IES1 IF NO ERRORS OF THIS TYPE OCCURRED
  1731. AX2 36
  1732. SX0 X0+B1
  1733. SB5 X2+
  1734. RJ INM INSERT NUMBER IN MESSAGE
  1735. MESSAGE B5,3 ISSUE MESSAGE TO USERS DAYFILE
  1736. EQ IES1 CONTINUE ERROR SUMMARY PROCESSING
  1737.  
  1738.  
  1739. IESA DATA C* XXXXXXXXXX PARITY/BLOCK TOO LARGE ERRORS.*
  1740. IESC DATA C* XXXXXXXXXX BAD FORMAT BLOCKS.*
  1741. IESD DATA C* XXXXXXXXXXXXXXX NOISE BLOCKS PADDED.*
  1742. IESE DATA C* XXXXXXXXXX RECORD SPLITS OCCURRED.*
  1743. INB SPACE 4,15
  1744. ** INB - INITIALIZE NEW BLOCK.
  1745. *
  1746. * EXIT CONTROL WORD HEADER CRACKED AND FLAGS/COUNTS SET.
  1747. * (X1) = 0, IF INITIALIZATION COMPLETE.
  1748. * = -1, IF EOF ENCOUNTERED.
  1749. * = -2, IF EOI ENCOUNTERED.
  1750. *
  1751. * USES A - 1, 2, 3, 4, 6, 7.
  1752. * X - 1, 2, 3, 4, 6, 7.
  1753. *
  1754. * CALLS ABP, ISI, IXB, PDE, RDW=.
  1755.  
  1756.  
  1757. INB8 SA2 I+TCF
  1758. SX2 X2+1
  1759. PL X2,INBX IF NOT I OR SI-C VIA S/L FORMAT
  1760. SX1 -2 RETURN EOI IF TAPE MARK ENCOUNTERED
  1761.  
  1762. INB SUBR ENTRY/EXIT
  1763. INB1 READW I,INBA,B1 READ HEADER CONTROL WORD
  1764. NG X1,INB8 IF EOF/EOI ENCOUNTERED
  1765. SA2 BC INCREMENT BLOCK COUNT
  1766. SX6 B1
  1767. BX7 X7-X7 CLEAR BLOCK ERROR FLAG
  1768. IX6 X2+X6
  1769. SA6 A2
  1770. SA7 ERRF
  1771. SA4 INBA GET CONTROL WORD HEADER
  1772. SA7 BTSK CLEAR BLOCK TERMINATOR/SKIP WORD INDICATOR
  1773. MX3 -24 CRACK CONTROL WORD HEADER
  1774. BX7 -X3*X4 BYTE COUNT
  1775. SA7 CWBC READCW BYTE COUNT
  1776. AX4 24
  1777. MX2 -6
  1778. LX3 X7
  1779. BX6 -X2*X4 UNUSED BIT COUNT FOR BYTE
  1780. SX1 4
  1781. IX7 X7+X1 ROUND UP BYTE COUNT
  1782. SX1 X1+B1
  1783. BX2 X1
  1784. IX7 X7/X1 CALCULATE WORD COUNT
  1785. AX4 12
  1786. IX2 X7*X2 CALCULATE UNUSED BIT COUNT FOR WORD
  1787. SX1 12
  1788. IX2 X2-X3
  1789. ZR X2,INB2 IF NO EXTRA DATA BYTES
  1790. IX2 X2*X1
  1791. IX6 X2+X6
  1792. INB2 SA6 UBCB SAVE UNUSED BIT COUNT FOR BLOCK
  1793. SA7 RWCB SAVE WORD COUNT FOR BLOCK
  1794. SA1 I+SLF
  1795. SX6 -1 INDICATE EOR STATUS FOR S, L, F TAPE
  1796. SX3 X4 PRU SIZE
  1797. NZ X1,INB3 IF S, L, OR F TAPE
  1798. IX6 X7-X3 NO EOR IF FULL BLOCK
  1799. INB3 SA6 EORF SAVE EOR FLAG
  1800. NG X4,INB6 IF ERROR OCCURRED ON THIS BLOCK
  1801. INB4 SA2 I+TCF
  1802. BX1 X1-X1
  1803. SX3 X2+B1
  1804. PL X2,INBX IF NOT TCOPY X, SI-CODED TO I INPUT TAPE
  1805. NZ X3,INB5 IF NOT X BLOCK
  1806. RJ IXB INITIALIZE X FORMAT TAPE BLOCK
  1807. BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
  1808. EQ INBX RETURN
  1809.  
  1810. INB5 SX3 X3+1
  1811. NZ X3,INB5.1 IF NOT SI-CODED BLOCK
  1812. RJ ISI INITIALIZE SI-CODED TAPE BLOCK
  1813. BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
  1814. EQ INBX RETURN
  1815.  
  1816. INB5.1 RJ IIB INITIALIZE I FORMAT TAPE BLOCK
  1817. BX1 X1-X1 INDICATE INITIALIZATION COMPLETE
  1818. EQ INBX RETURN
  1819.  
  1820. * PROCESS PARITY OR BLOCK TOO LARGE ERROR.
  1821.  
  1822. INB6 SB3 B0 INDICATE PARITY/BLOCK TOO LARGE ERROR
  1823. RJ PDE PROCESS ERROR
  1824. SA1 ESPI ERROR BLOCKS SKIPPED/PROCESSED INDICATOR
  1825. NZ X1,INB4 IF ERROR BLOCKS TO BE PROCESSED
  1826. SA1 I+3 REMOVE BLOCK FROM BUFFER
  1827. SA3 RWCB GET BLOCK WORD COUNT
  1828. SX3 X3+B1 REMOVE BLOCK AND TRAILER CONROL WORD
  1829. SA2 A1+B1 LIMIT
  1830. RJ ABP ADVANCE INPUT OUT POINTER
  1831. MX7 1 SET INITIALIZE NEW BLOCK FLAG
  1832. SA6 A1
  1833. SA7 A3+
  1834. EQ INB1 PROCESS NEXT BLOCK
  1835.  
  1836.  
  1837. INBA CON 0 CONTROL WORD HEADER
  1838. INM SPACE 4,15
  1839. ** INM - INSERT NUMBER IN MESSAGE.
  1840. *
  1841. * ENTRY (B5) = FWA MESSAGE TO BE ISSUED.
  1842. * (X1) = NUMBER TO BE CONVERTED FOR MESSAGE.
  1843. *
  1844. * EXIT NUMBER CONVERTED TO DECIMAL DISPLAY AND ENTERED INTO
  1845. * MESSAGE.
  1846. *
  1847. * USES B - 2.
  1848. * X - 1.
  1849. *
  1850. * CALLS CDD, SNM.
  1851.  
  1852.  
  1853. INM SUBR ENTRY/EXIT
  1854. RJ CDD CONVERT NUMBER TO DECIMAL DISPLAY
  1855. SB2 B2-B1 CLEAR BLANK FILL
  1856. MX1 1
  1857. AX1 B2
  1858. BX1 X1*X4
  1859. SB2 1RX
  1860. RJ SNM ENTER NUMBER IN MESSAGE
  1861. EQ INMX RETURN
  1862. PDE SPACE 4,15
  1863. ** PDE - PROCESS DATA BLOCK ERROR.
  1864. *
  1865. * ENTRY (B3) = 0, IF PARITY OR BLOCK TOO LARGE ERROR.
  1866. * = 1, IF DATA ERROR.
  1867. *
  1868. * EXIT IF BLOCK ERROR FLAG NOT ALREADY SET, PARITY/BLOCK
  1869. * TOO LARGE, OR DATA ERROR COUNT INCREMENTED, AND
  1870. * IF ERROR LIMIT NONZERO, ERROR MESSAGE ISSUED TO
  1871. * ALTERNATE OUTPUT FILE.
  1872. * TO *ABT*, IF ERROR LIMIT EXCEEDED.
  1873. *
  1874. * USES A - 1, 2, 3, 4, 6, 7.
  1875. * B - 2, 3, 5, 7.
  1876. * X - 1, 2, 3, 4, 6, 7.
  1877. *
  1878. * CALLS INM, SNM, SYS=, WTC=, WTW=.
  1879.  
  1880.  
  1881. PDE SUBR ENTRY/EXIT
  1882. SA1 ERRF
  1883. SA2 TECA+B3
  1884. NZ X1,PDEX IF BLOCK ERROR FLAG ALREADY SET
  1885. SA3 X2 INCREMENT CORRESPONDING ERROR COUNT
  1886. SX6 B1
  1887. IX7 X3+X6
  1888. SA4 EL
  1889. AX2 18
  1890. SA7 A3
  1891. ZR X4,ABT IF ZERO ERROR LIMIT
  1892. SX7 X2 SAVE ERROR MESSAGE ADDRESS
  1893. AX2 36
  1894. SA7 PDEA
  1895. BX6 X2
  1896. SA6 A1 SET BLOCK ERROR FLAG
  1897. SB2 TECAL1-1
  1898. SX6 -B1
  1899. PDE1 SA1 TECA+B2 CALCULATE TOTAL ERROR COUNT
  1900. SA2 X1
  1901. SB2 B2-B1
  1902. IX6 X6+X2
  1903. GE B2,PDE1 IF MORE ERROR COUNTS
  1904. BX7 X4
  1905. NG X4,PDE2 IF UNLIMITED ERROR PROCESSING
  1906. IX7 X6-X4
  1907. PDE2 SA7 A7+B1 SAVE ABORT INDICATOR
  1908. NZ X6,PDE3 IF NOT FIRST ERROR
  1909. WRITE L,* PRESET STANDARD WRITE
  1910. WRITEW L,PDEC,B1+B1 WRITE HEADER LINE
  1911. WRITEW X2,CCDR,8
  1912. DATE PDEC
  1913. CLOCK PDEC+1
  1914. WRITEW X2,PDEC,5
  1915. PDE3 SA2 PDEA GET ERROR MESSAGE ADDRESS
  1916. SB3 B0
  1917. SB2 X2
  1918. SB7 PDECL
  1919. SB5 PDEC
  1920. PDE4 SA2 B2+B3 MOVE MESSAGE TO BUFFER
  1921. BX6 X2
  1922. SA6 B5+B3
  1923. SB3 B3+B1
  1924. LT B3,B7,PDE4 IF MORE WORDS IN MESSAGE
  1925. SA1 BC BLOCK COUNT
  1926. RJ INM INSERT NUMBER IN MESSAGE
  1927. WRITEC L,B5
  1928. SA1 PDEB GET ABORT INDICATOR
  1929. NG X1,PDEX IF ERROR LIMIT NOT REACHED
  1930. EQ ABT ABORT
  1931.  
  1932.  
  1933. PDEA CON 0 ERROR MESSAGE ADDRESS
  1934. PDEB CON 0 ABORT INDICATOR
  1935.  
  1936. PDECL EQU 6
  1937. PDEC BSS 0 HEADER LINE AND MESSAGE BUFFER
  1938. CON 10H1- ERROR S
  1939. CON 10HUMMARY -
  1940. BSSZ PDECL-2
  1941.  
  1942. PDED DATA C* PARITY/BLOCK TOO LARGE ERROR IN BLOCK XXXXXXXXXX.*
  1943. PDEF DATA C* INCORRECT FORMAT IN BLOCK XXXXXXXXXX.*
  1944. PEF SPACE 4,20
  1945. ** PEF - PROCESS END OF FILE.
  1946. *
  1947. * GENERATES AN EOF ON OUTPUT WITH OR WITHOUT CONTROL WORDS
  1948. * UNLESS ONE OF THE FOLLOWING CONDITIONS EXIST -
  1949. * 1. SKIP FLAG IS SET.
  1950. * 2. PO=M OPTION (SKIP EOF WRITE) IS SELECTED.
  1951. * 3. LAST DOUBLE EOF (FOR TC=EOD COPY) IS ENCOUNTERED.
  1952. * 4. FOR A COPY WITH A FILE COUNT SPECIFIED (COPYBF
  1953. * OR COPY/TCOPY WITH TC=EOF PARAMETER), WHEN EOI
  1954. * IS ENCOUNTERED ON INPUT AND NO DATA TRANSFER HAS
  1955. * OCCURRED SINCE PREVIOUS EOF.
  1956. * THE COPY COUNT IS DECREMENTED WHEN APPLICABLE.
  1957. *
  1958. * ENTRY (X0) .LT. 0, IF EOI ENCOUNTERED.
  1959. * (X5) = 0, IF EMPTY FILE ENCOUNTERED.
  1960. *
  1961. * EXIT (X0) .LT. 0, IF EOI ENCOUNTERED.
  1962. * (CT) = 0, IF COPY COMPLETE.
  1963. *
  1964. * USES A - 1, 2, 3, 4, 6.
  1965. * B - 2.
  1966. * X - 0, 1, 2, 3, 4, 6.
  1967. *
  1968. * CALLS CIO=, MSG=, WTW=.
  1969.  
  1970.  
  1971. PEF3 WRITEF O GENERATE EOF AND FLUSH BUFFER
  1972. PEF4 SA1 TC GET TERMINATION CONDITION
  1973. NG X0,PEFX IF EOI ENCOUNTERED
  1974. NG X1,PEFX IF COPY TO EOI
  1975. SB2 X0+
  1976. NZ X1,PEF5 IF COPY TO FILE COUNT
  1977. EQ B2,B1,PEFX IF EMPTY FILE NOT ENCOUNTERED
  1978. PEF5 SX1 B1 DECREMENT COPY COUNT
  1979. SA2 CT
  1980. IX6 X2-X1
  1981. SA6 A2+
  1982.  
  1983. PEF SUBR ENTRY/EXIT
  1984. SA2 TC
  1985. SA4 SK
  1986. SA1 BC INCREMENT BLOCK COUNT
  1987. SA3 CT
  1988. SB2 X2
  1989. NG X0,PEF2 IF EOI ENCOUNTERED
  1990. SX0 B1
  1991. IX6 X1+X0
  1992. SA6 A1
  1993. NZ X5,PEF1 IF DATA TRANSFERRED
  1994. NZ B2,PEF1 IF NOT COPY TO DOUBLE EOF
  1995. SA2 RC
  1996. IX1 X3-X0
  1997. ZR X2,PEF1 IF NO RECORDS COPIED
  1998. SX0 B1+B1
  1999. NZ X1,PEF1 IF NOT LAST DOUBLE EOF
  2000. SA1 =10H SKIPPING SKIP LAST EOF
  2001. BX0 X0-X0
  2002. LX6 X1
  2003. SA6 PEFB
  2004. PEF1 SA1 RC ADVANCE RECORD COUNT
  2005. SX6 B1
  2006. IX6 X1+X6
  2007. SA6 A1+
  2008. MESSAGE PEFB,1 DISPLAY EOF MESSAGE
  2009. ZR X0,PEF5 IF LAST DOUBLE EOF ENCOUNTERED
  2010. SA3 SEWI SKIP EOF WRITE INDICATOR
  2011. NZ X3,PEF4 IF PO=M OPTION SELECTED
  2012. SA1 FCPY INCREMENT FILE COUNT
  2013. SX6 X1+B1
  2014. SA6 A1
  2015. SA2 O+CWF
  2016. NZ X4,PEF4 IF SKIP SET
  2017. ZR X2,PEF3 IF CONTROL WORD WRITE DISABLED
  2018. WRITEW O,PEFA,B1+B1 WRITE CONTROL WORD EOF
  2019. EQ PEF4 DECREMENT COPY COUNT
  2020.  
  2021. PEF2 NZ X4,PEFX IF SKIP SET
  2022. LE B2,PEFX IF NOT COPY TO FILE COUNT
  2023. ZR X5,PEFX IF NO DATA TRANSFERRED
  2024. EQ PEF1 WRITE EOF
  2025.  
  2026.  
  2027. PEFA VFD 60/0 CONTROL WORD EOF
  2028. VFD 12/17B,48/0
  2029.  
  2030. PEFB DATA C* COPYING EOF.*
  2031. SSL SPACE 4,20
  2032. ** SSL - SPECIAL PROCESSOR FOR S AND L OUTPUT TAPES.
  2033. *
  2034. * ENTRY (B4) = PREVIOUS READ STATUS.
  2035. * (B6) = LWA+1 DATA IN WORKING BUFFER.
  2036. * (B7) = NUMBER OF WORDS IN WORKING BUFFER.
  2037. * (FWWB) = FWA WORKING BUFFER.
  2038. *
  2039. * EXIT (B6) = UPDATED LWA+1 DATA IN WORKING BUFFER.
  2040. * (B7) = UPDATED NUMBER OF WORDS IN WORKING BUFFER.
  2041. * TO *ABT4*, IF RECORD TOO LARGE ENCOUNTERED AND RECORD
  2042. * SPLIT NOT ALLOWED.
  2043. *
  2044. * USES A - 1, 2, 3, 4, 6.
  2045. * B - 5, 6, 7.
  2046. * X - 1, 2, 3, 4, 6.
  2047. *
  2048. * CALLS BFL.
  2049.  
  2050.  
  2051. SSL3 SA6 B6 ZERO FILL BLOCK TO NOISE SIZE
  2052. SB6 B6+B1
  2053. LT B6,B5,SSL3 IF MORE WORDS TO ZERO
  2054. SSL4 SA1 O+PRU GET OUTPUT PRU SIZE
  2055. SA3 UBC
  2056. SX2 B7
  2057. SA4 FUBC
  2058. IX1 X1-X2
  2059. BX6 X4
  2060. IX3 X3-X4
  2061. NZ X1,SSLX IF NOT FULL BLOCK
  2062. PL X3,SSLX IF LARGER UNUSED BIT COUNT ALREADY SET
  2063. SA6 A3+
  2064.  
  2065. SSL SUBR ENTRY/EXIT
  2066. ZR B7,SSLX IF EOR ONLY
  2067. NZ B4,SSL1 IF PREVIOUS READ STATUS EOR
  2068. SA1 RSAI RECORD SPLIT ALLOWED INDICATOR
  2069. SB5 ABTC * RECORD TOO LARGE ON LFN.*
  2070. SA2 RSCT INCREMENT RECORD SPLIT COUNT
  2071. ZR X1,ABT4 IF RECORD SPLIT NOT ALLOWED
  2072. SX6 X2+B1
  2073. SA6 A2
  2074. SSL1 SA2 CRI
  2075. SA1 O+NSZ GET OUTPUT NOISE SIZE
  2076. PL X2,SSLX IF NOT *COPY*
  2077. SA3 FWWB FWA WORKING BUFFER
  2078. SB5 X3
  2079. SB5 B5+X1 LWA+1 MINIMUM SIZE BLOCK
  2080. SA2 NZCT
  2081. SX6 X2+B1 INCREMENT NOISE BLOCK COUNT
  2082. GE B6,B5,SSL4 IF BLOCK AT LEAST MINIMUM SIZE
  2083. SA6 A2
  2084. SA3 NPDI NOISE BLOCKS PADDED/DELETED INDICATOR
  2085. ZR X3,SSL2 IF NOISE BLOCK TO BE PADDED
  2086. SB7 B0 DELETE BLOCK
  2087. EQ SSLX RETURN
  2088.  
  2089. SSL2 SA2 O CHECK OUTPUT MODE
  2090. BX6 X6-X6
  2091. LX2 59-1
  2092. SB7 X1+
  2093. NG X2,SSL3 IF BINARY MODE
  2094. RJ BFL BLANK FILL LINE TO NOISE SIZE
  2095. EQ SSL4 CHECK FOR FULL BLOCK
  2096. VFY SPACE 4,10
  2097. ** VFY - VERIFY FILES.
  2098. *
  2099. * LOADS AND EXECUTES VERIFY UTILITY.
  2100. *
  2101. * USES A - 1, 2, 6, 7.
  2102. * X - 0, 1, 2, 6, 7.
  2103. *
  2104. * CALLS MSG=, SYS=, WNB=.
  2105.  
  2106.  
  2107. VFY BSS 0
  2108. RECALL I
  2109. RECALL O
  2110. MX0 42 TRANSFER VERIFY ARGUMENTS TO RA+2
  2111. SA1 I
  2112. BX7 X0*X1
  2113. SA2 O
  2114. R= A7,ARGR
  2115. BX6 X0*X2
  2116. SA1 VFYA-1
  2117. SA6 A7+B1
  2118. SX7 B1 ARGUMENT COUNT - 1
  2119. VFY1 SA1 A1+B1
  2120. BX6 X1
  2121. SX7 X7+B1 INCREMENT ARGUMENT COUNT
  2122. SA6 A6+B1
  2123. NZ X1,VFY1 IF MORE ARGUMENTS
  2124. SA7 ACTR
  2125. MESSAGE VFYC,3,R ISSUE VERIFY COMMAND TO DAYFILE
  2126. SYSTEM LDR,R,VFYB LOAD AND EXECUTE VERIFY UTILITY
  2127. PS 0
  2128.  
  2129.  
  2130. VFYA CON 0LA ABORT ON ERROR
  2131. CON 0LR REWIND
  2132. CON 1LL+1R= ALTERNATE OUTPUT FILE
  2133. CON 0
  2134. CON 1LN+1R= FILE COUNT
  2135. CON 0
  2136. CON 0 CODED PARAMETER
  2137. CON 0 BLOCK SIZE PARAMETER FOR S AND L TAPES
  2138. CON 0
  2139. CON 0 END OF ARGUMENTS
  2140.  
  2141. VFYB CON 0LVERIFY
  2142. CON 140BS36
  2143.  
  2144. VFYC DATA C-* VERIFY,XXXXXXX,+++++++,A,R,L=///////,N(((((((($$$)
  2145. ,)))))))))).-
  2146.  
  2147.  
  2148. VNS SPACE 4,15
  2149. ** VNS - VERIFY NOISE SIZE BLOCK FOR *COPY* OR *TCOPY*.
  2150. *
  2151. * ENTRY (B6) = LWA+1 DATA IN WORKING BUFFER.
  2152. * (FWWB) = FWA WORKING BUFFER.
  2153. * (I+NSZ) = INPUT TAPE NOISE SIZE.
  2154. * (NZCT) = NOISE BLOCK DELETED COUNT.
  2155. * (BTSK) = ZERO IF NO BLOCK TERMINATOR OR EXTRA WORD
  2156. *
  2157. * EXIT (X4) = BLOCK SIZE - NOISE SIZE.
  2158. *
  2159. * USES A - 1, 2, 4, 6.
  2160. * B - 3.
  2161. * X - 0, 1, 2, 4, 6.
  2162.  
  2163.  
  2164. VNS SUBR ENTRY/EXIT
  2165. SA4 I+NSZ
  2166. SA1 NSFG
  2167. ZR X1,VNSX IF NO SPECIAL NOISE PROCESSING IN EFFECT
  2168. SA2 FWWB FWA WORKING BUFFER
  2169. SB3 X2
  2170. SX1 B6-B3 NUMBER OF DATA WORDS IN LINE
  2171. SA2 BTSK
  2172. ZR X2,VNS1 IF NO BLOCK TERMINATOR OR EXTRA WORD
  2173. SX1 X1+1
  2174. VNS1 SX2 60
  2175. IX1 X2*X1 NUMBER OF DATA BITS IN LINE
  2176. SA2 UBC UNUSED BIT COUNT FOR LAST WORD TRANSFERED
  2177. IX1 X1-X2 BLOCK SIZE
  2178. MX0 24
  2179. BX4 X0*X4 NOISE SIZE
  2180. LX4 24
  2181. IX4 X1-X4
  2182. PL X4,VNSX IF NOT NOISE BLOCK
  2183. SA1 NZCT INCREMENT NOISE BLOCK DELETED COUNT
  2184. SX6 B1
  2185. IX6 X6+X1
  2186. SA6 A1
  2187. EQ VNSX RETURN
  2188. SPACE 4,10
  2189. ** COMMON DECKS.
  2190.  
  2191.  
  2192. *CALL COMCCDD
  2193. WRIF$ EQU 1 SELECT *RE-ISSUE CURRENT WRITE*
  2194. *CALL COMCCIO
  2195. *CALL COMCRDW
  2196. *CALL COMCSFN
  2197. *CALL COMCSNM
  2198. *CALL COMCSYS
  2199. *CALL COMCWTC
  2200. *CALL COMCWTW
  2201. SPACE 4,10
  2202. ** COPY/COPYBF/COPYEI BUFFERS.
  2203.  
  2204.  
  2205. USE BUFFERS
  2206. LBUF BSS 0 ALTERNATE OUTPUT FILE CIO BUFFER
  2207.  
  2208. * SINGLE BUFFER COPY ALLOCATIONS.
  2209.  
  2210. SBUF EQU LBUF+LBUFL SINGLE CIO BUFFER
  2211. SRFL EQU SBUF+SBUFL FL FOR SINGLE BUFFER COPY
  2212.  
  2213. * DOUBLE BUFFER COPY ALLOCATIONS.
  2214.  
  2215. BUF1 EQU LBUF+LBUFL WORKING STORAGE BUFFER
  2216. IBUF1 EQU BUF1+BUFL INPUT FILE CIO BUFFER
  2217. OBUF1 EQU IBUF1+FBUFL OUTPUT FILE CIO BUFFER
  2218. RFL1 EQU OBUF1+FBUFL FL FOR DOUBLE BUFFER COPY
  2219. ERRNG TCOPY-BUF1 IF LBUF OVERFLOWS INTO TCOPY
  2220. TITLE COPYBR/COPYX.
  2221. COPYBR SPACE 4,10
  2222. ** COPYBR - COPY SPECIFIED NUMBER OF RECORDS FROM ONE FILE TO
  2223. * ANOTHER.
  2224. *
  2225. * EXIT TO *END*, IF COPY COMPLETE.
  2226. * TO *END5*, IF EOI ENCOUNTERED.
  2227.  
  2228.  
  2229. COPYBR SX6 B0 INDICATE *COPYBR* CALL
  2230. RJ PRS PRESET PROGRAM
  2231.  
  2232. CBR1 READ I BEGIN READ
  2233. RECALL O
  2234. WRITE O,* PRESET WRITE FUNCTION
  2235. READW I,BUF,RBFL
  2236. RJ CPR COPY RECORD
  2237. NG X0,END5 IF EOI ENCOUNTERED
  2238. SA2 CT DECREMENT COUNT
  2239. SX6 X2-1
  2240. SA6 A2
  2241. NZ X6,CBR1 LOOP FOR ALL RECORDS
  2242. EQ END TERMINATE PROGRAM
  2243. COPYX SPACE 4,10
  2244. ** COPYX - COPY LOGICAL RECORDS FROM ONE FILE TO ANOTHER UNTIL
  2245. * SPECIFIED TERMINATION CONDITION IS MET.
  2246. *
  2247. * EXIT TO *END*, IF COPY COMPLETE.
  2248. * TO *END5*, IF EOI ENCOUNTERED.
  2249.  
  2250.  
  2251. COPYX SX6 -1 INDICATE *COPYX* CALL
  2252. RJ PRS PRESET PROGRAM
  2253.  
  2254. CPX1 READ I BEGIN READ
  2255. RECALL O
  2256. WRITE O,* PRESET WRITE FUNCTION
  2257. READW I,BUF,RBFL
  2258. PL X1,CPX2 IF NOT EOF OR EOI
  2259. RJ CPR PROCESS EOF/EOI
  2260. CPX1.1 NG X0,END5 IF EOI ENCOUNTERED
  2261. SX6 ENDD SET *EOF ENCOUNTERED.* ENDING MESSAGE
  2262. SA6 ENDA
  2263. EQ END ISSUE DAYFILE MESSAGE AND ENDRUN
  2264.  
  2265. CPX2 BX5 X1 SAVE EOR STATUS
  2266. SA2 TM CHECK TERMINATION CONDITION
  2267.  
  2268. * PROCESS ZERO RECORD.
  2269.  
  2270. NZ X2,CPX3 IF NOT ZERO RECORD REQUEST
  2271. SX2 X1-BUF
  2272. ZR X2,CPX4 IF ZERO RECORD
  2273. EQ CPX5 COPY RECORD
  2274.  
  2275. * PROCESS RECORD NAME.
  2276.  
  2277. CPX3 NG X2,CPX5 IF NOT RECORD NAME
  2278. SX2 BUF
  2279. SX1 B6 LWA+1 OF DATA READ
  2280. RJ SRT SET RECORD TYPE
  2281. SA1 RN CHECK RECORD NAME
  2282. BX2 X7-X1
  2283. SA3 A1+B1
  2284. NZ X2,CPX5 IF NO MATCH
  2285. NG X3,CPX4 IF NO TYPE REQUESTED
  2286. SX2 X6 CHECK TYPE
  2287. BX7 X2-X3
  2288. NZ X7,CPX5 IF NO MATCH
  2289. CPX4 SX6 B1+ SET TERMINATION
  2290. SA6 CT
  2291.  
  2292. * COPY RECORD.
  2293.  
  2294. CPX5 BX1 X5 RESTORE EOR STATUS
  2295. RJ CPR COPY RECORD
  2296. NZ X0,CPX1.1 IF EOF OR EOI ENCOUNTERED
  2297. SA1 CT DECREMENT COUNT
  2298. SX6 X1-1
  2299. SA6 A1+
  2300. NZ X6,CPX1 LOOP FOR ALL RECORDS
  2301. SA1 BK1
  2302. ZR X1,CPX6 IF NO BACKSPACE FOR FILE 1
  2303. BKSP I
  2304. CPX6 SA2 SK
  2305. SA1 BK2
  2306. NZ X2,END IF SKIPPING RECORDS
  2307. ZR X1,END IF NO BACKSPACE FOR FILE 2
  2308. BKSP O
  2309. EQ END
  2310.  
  2311.  
  2312. TM CON 1S59 COPYX TERMINATION
  2313. RN CON 0 RECORD NAME
  2314. CON 1S59 RECORD TYPE
  2315. BK1 CON 0 FILE 1 BACKSPACE
  2316. BK2 CON 0 FILE 2 BACKSPACE
  2317. TITLE RECORD COPY ROUTINES.
  2318. CPR SPACE 4,15
  2319. ** CPR - COPY RECORD.
  2320. *
  2321. * ENTRY (X1) = FIRST BLOCK READ STATUS.
  2322. * (B6) = LWA+1 DATA TRANSFERRED TO WORKING BUFFER.
  2323. *
  2324. * EXIT (X0) .LT. 0, IF EOI.
  2325. * (X0) = 0, IF EOR.
  2326. * (X0) .GT. 0, IF EOF.
  2327. *
  2328. * USES A - 1, 2.
  2329. * X - 0, 1, 2, 5.
  2330. *
  2331. * CALLS CIO=, DRN, MSG=, RDW=, WTW=.
  2332.  
  2333.  
  2334. CPR4 MESSAGE PEFB,1 DISPLAY EOF MESSAGE
  2335. SA1 FCPY
  2336. SA2 WCPY
  2337. SX6 X1+B1 INCREMENT FILE COPY COUNT
  2338. IX7 X2+X5
  2339. SA6 A1
  2340. SA7 A2 INCREMENT WORD COPY COUNT
  2341. SA1 RC ADVANCE RECORD COUNT
  2342. SX0 B1+ SET EOF STATUS
  2343. SA2 SK
  2344. IX6 X1+X0
  2345. SA6 A1
  2346. NZ X2,CPRX IF SKIP SET
  2347. WRITEF O GENERATE EOF
  2348.  
  2349. CPR SUBR ENTRY/EXIT
  2350. SX0 X1+B1
  2351. SA0 X1
  2352. SX5 0 CLEAR WORD COUNT
  2353. PL X1,CPR0 IF NOT EOF OR EOI
  2354. SX2 B6-BUF
  2355. NZ X2,CPR1 IF DATA IN BUFFER
  2356. NG X0,CPRX IF EOI ENCOUNTERED
  2357. EQ CPR4 EOF ENCOUNTERED
  2358.  
  2359. CPR0 SX2 BUF
  2360. RJ DRN DISPLAY RECORD NAME
  2361. CPR1 SA2 SK
  2362. SB7 B6-BUF
  2363. SX1 B7
  2364. IX5 X5+X1 SHOW WORDS COPIED
  2365. NZ X2,CPR2 IF SKIP SET
  2366. WRITEW O,BUF,B7
  2367. CPR2 SX0 B0 CLEAR EOR STATUS
  2368. SX2 A0
  2369. NZ X2,CPR3 IF EOR
  2370. READW I,BUF,RBFL
  2371. SX0 X1+B1
  2372. SA0 X1
  2373. PL X1,CPR1 IF NOT EOF OR EOI
  2374. SX2 B6-BUF
  2375. NZ X2,CPR1 IF DATA IN BUFFER
  2376. PL X0,CPR4 IF EOF
  2377. CPR3 SA1 RCPY
  2378. SA2 WCPY
  2379. SA3 SK
  2380. SX6 X1+B1
  2381. IX7 X2+X5 ADD WORDS COPIED TO COUNT
  2382. SA6 A1
  2383. SA7 A2
  2384. NZ X3,CPRX IF SKIP SET
  2385. WRITER O END RECORD
  2386. EQ CPRX RETURN WITH EOR OR EOI STATUS
  2387. SPACE 4,10
  2388. ** COMMON DECKS.
  2389.  
  2390.  
  2391. *CALL COMCSRT
  2392. SPACE 4,10
  2393. ** COPYBR/COPYX BUFFERS.
  2394.  
  2395.  
  2396. BUF BSS 0 WORKING STORAGE BUFFER
  2397. IBUF EQU BUF+RBFL INPUT FILE CIO BUFFER
  2398. OBUF EQU IBUF+FBUFL OUTPUT FILE CIO BUFFER
  2399. RFL= EQU OBUF+FBUFL FIELD LENGTH FOR COPYBR AND COPYX
  2400. TITLE TCOPY.
  2401. TCOPY SPACE 4,10
  2402. ** TCOPY - COPY E, B, X, SI-CODED OR I TAPE VIA S/L FORMAT TO
  2403. * MASS STORAGE, I, LI, OR SI-BINARY FILE, OR GENERATE E OR B
  2404. * TAPE VIA S/L FORMAT FROM MASS STORAGE, I, LI, OR SI-BINARY
  2405. * FILE.
  2406. *
  2407. * EXIT TO *CPY*, IF X, SI-C, OR I TO MS/I/LI/SI-B COPY.
  2408. * TO *CEB*, IF E OR B TO MS/I/LI/SI-B COPY.
  2409. * TO *GEB*, IF MS/I/LI/SI-B TO E OR B COPY.
  2410.  
  2411.  
  2412. TCOPY SX6 B0 INDICATE *TCOPY* CALL
  2413. RJ CTP COPY/TCOPY PRESET PROGRAM
  2414. SA1 I+TCF
  2415. SB3 -B1
  2416. SB2 X1
  2417. GE B2,B1,CEB IF E OR B TO MS/I/LI/SI-B COPY
  2418. ZR B2,GEB IF MS/I/LI/SI-B TO E OR B COPY
  2419. EQ B2,B3,CPY IF X TO MS/I/LI/SI-B COPY
  2420. READCW I,17B INITIATE CONTROL WORD READ
  2421. EQ CPY SI-C OR I TO MS/I/LI/SI-B COPY
  2422. CEB SPACE 4,10
  2423. ** CEB - COPY E OR B TAPE TO MASS STORAGE, I, LI OR SI-B TAPE.
  2424. *
  2425. * EXIT TO *END*, IF COPY COMPLETE.
  2426. * TO *END5*, IF EOI ENCOUNTERED.
  2427. *
  2428. * USES A - 0, 1, 2, 3, 4, 6.
  2429. * B - 2, 6, 7.
  2430. * X - 0, 1, 2, 3, 4, 5, 6.
  2431. *
  2432. * CALLS CIO=, CWR, DRN, PEF, WTC=, WTH=.
  2433.  
  2434.  
  2435. CEB BSS 0
  2436. SA1 I+PRU GET E OR B TAPE PRU SIZE
  2437. SA0 X1+
  2438. CEB1 BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  2439. READCW I,17B INITIATE CONTROL WORD READ
  2440. RECALL O
  2441. WRITE O,* PRESET STANDARD WRITE FUNCTION
  2442. CEB2 CWRW I,(FWWB),A0
  2443. NG X1,CEB5 IF EOF/EOI ENCOUNTERED
  2444. NZ X5,CEB3 IF PREVIOUS READ STATUS NOT EOF
  2445. RJ VNS VERIFY NOISE SIZE BLOCK
  2446. NG X4,CEB2 IF NOISE BLOCK
  2447. SA2 FWWB FWA WORKING BUFFER
  2448. RJ DRN DISPLAY FILE NAME
  2449. CEB3 SA1 I+TCF
  2450. SA2 SK
  2451. SX5 B1 INDICATE DATA TRANSFERRED
  2452. SB2 X1
  2453. NZ X2,CEB2 IF SKIP SET
  2454. SA4 FWWB FWA WORKING BUFFER
  2455. GT B2,B1,CEB4 IF B TO MS/I/LI/SI-B COPY
  2456. SB7 X4
  2457. SB7 B6-B7 LENGTH OF LINE
  2458. SA1 B6-B1
  2459. RJ SFN BLANK FILL LAST WORD
  2460. SA6 A1
  2461. RJ CWH COUNT WORDS
  2462. WRITEH O,X4,B7
  2463. EQ CEB2 CONTINUE COPY
  2464.  
  2465. CEB4 BX6 X6-X6 GUARANTEE END OF LINE
  2466. SA6 B6+
  2467. RJ CWC COUNT WORDS
  2468. WRITEC O,X4
  2469. EQ CEB2 CONTINUE COPY
  2470.  
  2471. CEB5 SX0 X1+B1 SET TERMINATION CONDITION
  2472. RJ PEF PROCESS END OF FILE
  2473. SA2 RCPY INCREMENT RECORD COUNT
  2474. SX6 X2+B1
  2475. SA6 A2
  2476. SA1 CT
  2477. NG X0,END5 IF EOI ENCOUNTERED
  2478. ZR X1,END IF COPY COMPLETE
  2479. EQ CEB1 REINITIATE CONTROL WORD READ
  2480. GEB SPACE 4,15
  2481. ** GEB - GENERATE E OR B TAPE FROM MASS STORAGE, I, LI OR SI-B
  2482. * TAPE.
  2483. *
  2484. * EXIT TO *END*, IF COPY COMPLETE.
  2485. * TO *END5*, IF EOI ENCOUNTERED.
  2486. *
  2487. * USES A - 0, 1, 2, 3, 4, 6.
  2488. * B - 2, 3, 5, 6, 7.
  2489. * X - 0, 1, 2, 3, 4, 5, 6.
  2490. *
  2491. * CALLS BFL, CIO=, CUB, CWW, DRN, PEF, RDC=.
  2492.  
  2493.  
  2494. GEB BSS 0
  2495. WRITECW O,* PRESET CONTROL WORD WRITE
  2496. SA1 O+PRU GET E OR B TAPE PRU SIZE
  2497. BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  2498. SA0 X1
  2499. GEB1 SX0 B1+ INDICATE READ REINITIATED
  2500. READ I INITIATE STANDARD READ
  2501. GEB2 SA4 FWWB FWA WORKING BUFFER
  2502. READC I,X4,A0
  2503. NG X1,GEB7 IF EOF/EOI ENCOUNTERED
  2504. BX5 X4 SAVE LAST DATA WORD
  2505. SB5 X1 SAVE CURRENT READ STATUS
  2506. ZR X0,GEB3 IF PREVIOUS READ STATUS NOT EOR
  2507. SX6 B0+
  2508. SA2 FWWB FWA WORKING BUFFER
  2509. SA6 GEBA INDICATE NOT CONTINUATION LINE
  2510. RJ DRN DISPLAY RECORD NAME
  2511. GEB3 SA3 FWWB FWA WORKING BUFFER
  2512. SX0 B5 RESTORE CURRENT READ STATUS
  2513. BX4 X5
  2514. IX6 X0-X3
  2515. SX5 B1 INDICATE DATA TRANSFERRED
  2516. ZR X0,GEB4 IF TRANSFER COMPLETE
  2517. SA1 RCPY INCREMENT RECORD COUNT
  2518. SX6 X1+B1
  2519. SA6 A1
  2520. ZR X6,GEB1 IF EOR ONLY
  2521. SA4 B6-1
  2522. GEB4 BX6 X4 RESTORE CONTENTS OF LAST DATA WORD
  2523. SA2 O+TCF
  2524. SA6 B6-B1
  2525. SB2 X2
  2526. MX4 -12
  2527. SA1 GEBA CHECK PREVIOUS LINE EOL STATUS
  2528. BX6 -X4*X6 SET CURRENT LINE EOL INDICATOR
  2529. SA3 X3
  2530. SA6 A1
  2531. SB7 A0
  2532. SA4 FUBC GET FULL BLOCK UNUSED BIT COUNT
  2533. ZR X1,GEB4.1 IF NOT CONTINUATION LINE
  2534. SA2 TLLI CHECK FOR *PO=T* OPTION
  2535. NZ X2,GEB6.1 IF DISCARD CONTINUATION LINE
  2536. GT B2,B1,GEB5 IF GENERATING B TAPE
  2537. ZR X3,GEB6.1 IF EOL ONLY (E TAPE)
  2538. GEB4.1 GT B2,B1,GEB5 IF GENERATING B TAPE
  2539. RJ BFL BLANK FILL LINE FOR E TAPE
  2540. BX6 X4
  2541. EQ GEB6 WRITE ONE LINE PER BLOCK
  2542.  
  2543. GEB5 RJ CUB CALCULATE B TAPE UNUSED BIT COUNT
  2544. GEB6 SA3 FWWB FWA WORKING BUFFER
  2545. SA6 UBC SET UNUSED BIT COUNT FOR WRITE
  2546. SB3 X3
  2547. SB7 B6-B3 NUMBER OF WORDS IN BUFFER
  2548. SB6 B3+
  2549. SA1 WCPY ADD TO WORD COUNT
  2550. SX3 B7
  2551. IX6 X1+X3
  2552. SA6 A1
  2553. CWWW O,B6,B7
  2554. GEB6.1 ZR X0,GEB2 IF NOT EOR
  2555. EQ GEB1 REINITIATE READ
  2556.  
  2557. GEB7 SX0 X1+B1 PROCESS END OF FILE
  2558. RJ PEF
  2559. SA1 CT
  2560. NG X0,END5 IF EOI ENCOUNTERED
  2561. ZR X1,END IF COPY COMPLETE
  2562. BX5 X5-X5 INDICATE NO DATA TRANSFERRED
  2563. EQ GEB1 CONTINUE COPY
  2564.  
  2565.  
  2566. GEBA CON 0 PREVIOUS LINE EOL STATUS
  2567. TITLE E, B, X, SI-C, I CONVERSION ROUTINES.
  2568. CCW SPACE 4,10
  2569. ** CCW - COUNT CHARACTERS IN WORD.
  2570. *
  2571. * ENTRY (X1) = DATA WORD, LEFT JUSTIFIED, ZERO FILLED.
  2572. *
  2573. * EXIT (B5) = NUMBER OF CHARACTERS IN WORD.
  2574. *
  2575. * USES B - 5.
  2576. * X - 2, 6.
  2577.  
  2578.  
  2579. CCW SUBR ENTRY/EXIT
  2580. SB5 B0
  2581. ZR X1,CCWX IF ZERO WORD
  2582. MX6 -54
  2583. CCW1 BX2 -X6*X1
  2584. SB5 B5+1 INCREMENT CHARACTER COUNT
  2585. AX6 6
  2586. NZ X2,CCW1 IF MORE CHARACTERS IN WORD
  2587. EQ CCWX RETURN
  2588. CEL SPACE 4,15
  2589. ** CEL - CONVERT SI-CODED END OF LINES.
  2590. *
  2591. * FOR 7-TRACK *SI*-CODED TAPE, END-OF-LINES REPRESENTED BY
  2592. * 16...1632B EXTERNAL BCD ARE CONVERTED INTO 63...6362B
  2593. * 64-CHARACTER SET DISPLAY CODE (WITH 6362B IN LOWER BYTE OF
  2594. * CM WORD) OR 00...0062B 63-CHARACTER SET DISPLAY CODE
  2595. * (WITH 0062B IN LOWER BYTE OF CM WORD).
  2596. * THESE REPRESENTATIONS ARE CONVERTED INTO BINARY ZERO
  2597. * END-OF-LINES IN THE WORKING BUFFER.
  2598. *
  2599. * ENTRY (FWWB) = FWA WORKING BUFFER.
  2600. * (LWDB) = LWA+1 DATA IN WORKING BUFFER.
  2601. *
  2602. * USES A - 1, 2, 7.
  2603. * B - 2, 6.
  2604. * X - 1, 2, 3, 4, 6, 7.
  2605.  
  2606.  
  2607. CEL SUBR ENTRY/EXIT
  2608. SA1 FWWB FWA WORKING BUFFER
  2609. SA2 I+TRK GET TRACK BITS
  2610. SB2 X1
  2611. LX2 59-58
  2612. PL X2,CELX IF NOT 7-TRACK SI-CODED TAPE
  2613. SA2 LWDB LWA+1 DATA IN WORKING BUFFER
  2614. MX6 -12
  2615. SB6 X2
  2616. CEL0 SA2 CELA GET 63/64 CHARACTER SET EOL CONVERSION
  2617. BX3 X2
  2618. AX3 6
  2619. CEL1 SB6 B6-B1 CONVERT 63...62B/00...0062B TO EOL
  2620. LT B6,B2,CELX IF CONVERSION COMPLETE
  2621. SA1 B6
  2622. BX4 -X6*X1
  2623. BX4 X4-X2
  2624. NZ X4,CEL1 IF NOT 6362B/0062B IN LOWER BYTE
  2625. MX6 54 CLEAR 62B CHARACTER FROM WORD
  2626. BX7 X6*X1
  2627. ZR X3,CEL3 IF 63-CHARACTER SET CONVERSION
  2628. CEL2 LX6 6 CLEAR CONSECUTIVE 63B CHARACTERS FROM WORD
  2629. BX4 -X6*X7
  2630. LX3 6
  2631. BX4 X4-X3
  2632. NZ X4,CEL3 IF NOT 63B CHARACTER
  2633. BX7 X6*X7
  2634. NZ X7,CEL2 IF MORE CHARACTERS IN WORD
  2635. CEL3 SA7 A1
  2636. MX6 -12
  2637. EQ CEL0 CONTINUE CONVERSION
  2638.  
  2639.  
  2640. CELA CON 6362B 64-CHARACTER SET EOL CONVERSION
  2641. CUB SPACE 4,20
  2642. ** CUB - CALCULATE UNUSED BIT COUNT FOR B TAPE LINE.
  2643. *
  2644. * LINE IS BLANK FILLED TO NOISE SIZE, IF NECESSARY.
  2645. * IF LINE HAS ODD NUMBER OF CHARACTERS, AN EXTRA BLANK IS
  2646. * APPENDED. UNUSED BIT COUNT OF LAST DATA WORD IS CALCULATED
  2647. * FROM THE ADJUSTED LINE.
  2648. *
  2649. * ENTRY (B6) = LWA+1 CODED LINE.
  2650. * (FWWB) = FWA CODED LINE.
  2651. *
  2652. * EXIT (B6) = LWA+1 READJUSTED LINE.
  2653. * (X6) = UNUSED BIT COUNT FOR LAST DATA WORD IN LINE.
  2654. *
  2655. * USES A - 1, 2, 4, 6.
  2656. * B - 2, 3, 5, 6, 7.
  2657. * X - 1, 2, 3, 4, 6.
  2658. *
  2659. * CALLS BFL, CCW.
  2660.  
  2661.  
  2662. CUB SUBR ENTRY/EXIT
  2663. SA1 B6-B1
  2664. SX4 1R
  2665. MX6 -6
  2666. NZ X1,CUB1 IF LAST DATA WORD NOT ZERO
  2667. SA2 A1-B1
  2668. BX3 -X6*X2
  2669. NZ X3,CUB1 IF PREVIOUS WORD NOT PART OF EOL
  2670. BX6 X2+X4 BLANK FILL PREVIOUS WORD
  2671. SA6 A2
  2672. CUB1 SA2 FWWB FWA WORKING BUFFER
  2673. SA4 O+NSZ
  2674. SB3 X2
  2675. SB3 B6-B3 NUMBER OF DATA WORDS IN LINE
  2676. SB7 X4 MINIMUM NUMBER OF WORDS FOR NOISE SIZE
  2677. AX4 18
  2678. GT B3,B7,CUB4 IF LINE LENGTH .GT. NOISE SIZE
  2679. RJ CCW COUNT CHARACTERS IN LAST DATA WORD
  2680. RJ BFL BLANK FILL LINE TO NOISE SIZE
  2681. EQ B3,B7,CUB2 IF LAST WORD BORDERS ON NOISE SIZE
  2682. SB5 B0
  2683. CUB2 SB2 X4
  2684. GE B5,B2,CUB3 IF DATA CHARACTERS EXCEED NOISE SIZE
  2685. SB5 B2
  2686. SA1 NZCT INCREMENT NOISE BLOCK COUNT
  2687. SX6 X1+B1
  2688. SA6 A1
  2689. CUB3 SB5 B5+B5 CLEAR BLANK FILL BEYOND NOISE SIZE
  2690. SB2 B5+B5
  2691. SA1 B6-B1
  2692. SB2 B2+B5
  2693. MX6 1
  2694. SB2 B2-B1
  2695. AX6 B2
  2696. BX6 X6*X1
  2697. SA6 A1
  2698. CUB4 SA1 B6-B1
  2699. NZ X1,CUB5 IF LAST DATA WORD NOT ZERO
  2700. SB6 B6-B1
  2701. SA1 B6-1
  2702. CUB5 RJ CCW COUNT CHARACTERS IN LAST DATA WORD
  2703. SX2 B5
  2704. LX2 59-0
  2705. PL X2,CUB7 IF EVEN NUMBER OF CHARACTERS
  2706. SX4 1R APPEND BLANK CHARACTER
  2707. SB2 B5+1
  2708. CUB6 LX4 -6
  2709. SB2 B2-B1
  2710. NZ B2,CUB6 IF BLANK NOT IN POSITION
  2711. BX6 X1+X4
  2712. SA6 A1+
  2713. SB5 B5+B1 INCREMENT NUMBER OF CHARACTERS
  2714. CUB7 SB2 10 CALCULATE UNUSED BIT COUNT FOR LAST WORD
  2715. SX2 6
  2716. SX6 B2-B5
  2717. IX6 X2*X6
  2718. EQ CUBX RETURN
  2719. CWC SPACE 4,10
  2720. ** CWC - COUNT WORDS - *C* FORMAT.
  2721. *
  2722. * ENTRY (X4) = BUFFER ADDRESS.
  2723. *
  2724. * EXIT (WCPY) = (WCPY)+WORD COUNT
  2725. *
  2726. * USES A - 1.
  2727. * X - 1, 2, 3, 6.
  2728.  
  2729.  
  2730. CWC2 SA1 WCPY ADD TO TOTAL WORD COUNT
  2731. IX6 X3+X1
  2732. SA6 A1
  2733.  
  2734. CWC SUBR
  2735. SA1 X4 FWA OF BUFFER
  2736. MX2 -12 EOL MASK
  2737. SX3 1 CLEAR WORD COUNT
  2738. CWC1 BX6 -X2*X1
  2739. ZR X6,CWC2 IF EOL
  2740. SX3 X3+B1
  2741. SA1 A1+1
  2742. EQ CWC1 CONTINUE COUNTING
  2743. CWH SPACE 4,10
  2744. ** CWH - COUNT WORDS - *H* FORMAT.
  2745. *
  2746. * ENTRY (X4) = BUFFER ADDRESS
  2747. * (B7) = BUFFER LENGTH
  2748. *
  2749. * EXIT (WCPY) = (WCPY)+WORD COUNT
  2750. *
  2751. * USES A - 1, 2.
  2752. * X - 1, 2, 3, 6.
  2753. * B - 2.
  2754.  
  2755.  
  2756. CWH SUBR
  2757. SB2 B7-B1
  2758. SA1 X4+B2 LWA BUFFER
  2759. SA2 CWHA BLANK
  2760. CWH1 IX3 X1-X2 CHECK BLANK WORD
  2761. NZ X3,CWH2 IF NON-BLANK
  2762. SA1 X4+B2
  2763. SB2 B2-B1
  2764. NZ B2,CWH1 IF NOT FIRST WORD
  2765. CWH2 SA1 WCPY
  2766. SX2 B2+B1 WORDS LEFT
  2767. IX6 X1+X2
  2768. SA6 A1+
  2769. EQ CWHX RETURN
  2770.  
  2771.  
  2772. CWHA DATA 10H
  2773. IBT SPACE 4,20
  2774. ** IBT - PROCESS I TAPE BLOCK TERMINATOR.
  2775. *
  2776. * ENTRY (X2) = DATA WORD CONTAINING 48-BIT BLOCK TERMINATOR.
  2777. * (BTSK) = UNUSED BIT COUNT FOR BLOCK TERMINATOR WORD.
  2778. * (CWBC) = READCW BYTE COUNT.
  2779. *
  2780. * EXIT (X1) = -1, IF LEVEL 17B BLOCK TERMINATOR (EOF)
  2781. * ENCOUNTERED IN I BLOCK TERMINATOR.
  2782. * (LVL) = EOR LEVEL FROM BLOCK TERMINATOR.
  2783. * (EORF) = ZERO IF NOT FULL I BLOCK.
  2784. *
  2785. * USES A - 1, 2, 6, 7.
  2786. * B - 2, 3.
  2787. * X - 1, 2, 3, 4, 6, 7.
  2788. *
  2789. * CALLS PDE.
  2790.  
  2791.  
  2792. IBT3 SA2 CWBC
  2793. SX6 X2-5004B BYTES IN NON-EOR BLOCK
  2794. SA6 EORF
  2795. SA7 LVL
  2796. SX2 X7-17B
  2797. BX1 X1-X1
  2798. NZ X2,IBTX IF NOT LEVEL 17B (EOF)
  2799. SX1 -B1
  2800.  
  2801. IBT SUBR ENTRY/EXIT
  2802. SA1 I+TRK
  2803. SX4 B0+ NO EXTRA BYTE BIAS
  2804. LX1 59-58
  2805. NG X1,IBT1 IF 7-TRACK TAPE
  2806. SA1 CWBC
  2807. SX3 X1+4
  2808. SX1 5
  2809. IX3 X3/X1
  2810. LX3 -1
  2811. NG X3,IBT1 IF ODD WORD COUNT WITH 48 BIT TERMINATOR
  2812. SX4 -1 BIAS TO REMOVE EXTRA BYTE
  2813. IBT1 SA1 BTSK CLEAR EXTRANEOUS DATA
  2814. SB3 59
  2815. SB2 X1-1 CORRECT FOR ALWAYS HAVE TERMINATOR FLAG
  2816. MX1 1
  2817. SB2 B3-B2
  2818. AX1 B2
  2819. BX2 X1*X2
  2820. AX2 12 EXTRACT LEVEL NUMBER FROM BLOCK TERMINATOR
  2821. MX1 -6
  2822. BX7 -X1*X2 LEVEL NUMBER
  2823. AX2 12
  2824. MX1 -24
  2825. BX6 -X1*X2 BLOCK NUMBER
  2826. AX2 24
  2827. MX3 -12
  2828. SA1 CWBC READCW BYTE COUNT
  2829. IX1 X1+X4 9-TRACK ODD BYTE NUMBER CORRECTION
  2830. BX4 -X3*X2 BYTE COUNT
  2831. IX3 X4-X1
  2832. NZ X3,IBT2 IF ERROR IN NUMBER OF BYTES
  2833. SA1 IBTA PREVIOUS BLOCK NUMBER
  2834. SX3 B1
  2835. IX2 X1+X3 INCREMENT
  2836. IX3 X6-X2
  2837. SA6 A1 REPLACE PREVIOUS BLOCK NUMBER
  2838. NZ X3,IBT2 IF BLOCK SEQUENCE NUMBER ERROR
  2839. SX1 X7-20B
  2840. NG X1,IBT3 IF LEGAL LEVEL NUMBER
  2841. IBT2 SB3 B1 PROCESS DATA ERROR
  2842. RJ PDE
  2843. BX7 X7-X7
  2844. EQ IBT3 CLEAR LEVEL NUMBER
  2845.  
  2846.  
  2847. IBTA CON -1 PREVIOUS BLOCK NUMBER
  2848. IIB SPACE 4,15
  2849. ** IIB - INITIALIZE I FORMAT TAPE BLOCK.
  2850. *
  2851. * ENTRY (RWCB) = WORD COUNT OF BLOCK.
  2852. * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
  2853. *
  2854. * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS NECESSARY.
  2855. * EOR FLAG AND BLOCK TERMINATOR SET.
  2856. *
  2857. * USES A - 1, 2, 4, 6, 7.
  2858. * B - 3.
  2859. * X - 1, 2, 4, 6, 7.
  2860. *
  2861. * CALLS PDE.
  2862.  
  2863.  
  2864. IIB1 NG X1,IIB2 IF ODD WORD COUNT
  2865. SX2 X2+12
  2866. IIB2 SA6 A1 UPDATE BLOCK WORD COUNT
  2867. BX7 X7-X7 CLEAR UNUSED BIT COUNT
  2868. SX6 B1
  2869. SA7 A2
  2870. SA6 EORF
  2871. ZR X2,IIBX IF NO DATA ERROR
  2872. SB3 B1 PROCESS DATA ERROR
  2873. RJ PDE
  2874.  
  2875. IIB SUBR ENTRY/EXIT
  2876. SA1 RWCB GET BLOCK WORD COUNT
  2877. SA2 UBCB GET UNUSED BIT COUNT
  2878. BX6 X1
  2879. LX1 -1
  2880. BX7 X2 SET BLOCK TERMINATOR = UNUSED BIT COUNT
  2881. SX7 X7+B1 ALWAYS HAVE TERMINATOR
  2882. SA7 BTSK SET BLOCK TERMINATOR INDICATOR
  2883. SX6 X6-1 DECREMENT BLOCK WORD COUNT
  2884. SA4 I+TRK GET TRACK BITS
  2885. SX2 X2-12
  2886. LX4 59-58
  2887. NG X4,IIB2 IF 7-TRACK TAPE
  2888. EQ IIB1 CHECK FOR ODD WORD COUNT
  2889. ISI SPACE 4,15
  2890. ** ISI - INITIALIZE SI-CODED FORMAT TAPE BLOCK.
  2891. *
  2892. * ENTRY (RWCB) = WORD COUNT OF BLOCK.
  2893. * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
  2894. *
  2895. * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS NECESSARY.
  2896. * EOR FLAG AND BLOCK TERMINATOR INDICATOR SET
  2897. * APPROPRIATELY.
  2898. *
  2899. * USES A - 1, 2, 3, 4, 6, 7.
  2900. * B - 3.
  2901. * X - 1, 2, 3, 4, 6, 7.
  2902. *
  2903. * CALLS PDE.
  2904.  
  2905.  
  2906. ISI3 NG X1,ISI4 IF ODD WORD COUNT
  2907. SX2 X2+12-8
  2908. ISI4 SA6 A1 UPDATE BLOCK WORD COUNT
  2909. BX7 X7-X7 CLEAR UNUSED BIT COUNT
  2910. IX6 X3-X6 SET EOR FLAG IF NOT FULL BLOCK
  2911. SA7 A2
  2912. SA6 EORF
  2913. ZR X2,ISIX IF NO DATA ERROR
  2914. SB3 B1 PROCESS DATA ERROR
  2915. RJ PDE
  2916.  
  2917. ISI SUBR ENTRY/EXIT
  2918. SA1 RWCB GET BLOCK WORD COUNT
  2919. SA2 UBCB GET UNUSED BIT COUNT
  2920. SA3 I+PRU GET INPUT PRU SIZE
  2921. LX6 X1
  2922. IX4 X3-X1
  2923. NZ X4,ISI1 IF WORD COUNT .NE. PRU SIZE
  2924. ZR X2,ISI4 IF FULL BLOCK
  2925. ISI1 SA4 I+TRK GET TRACK BITS
  2926. LX1 -1
  2927. BX7 X2 SET BLOCK TERMINATOR = UNUSED BIT COUNT
  2928. NZ X2,ISI2 IF NONZERO UNUSED BIT COUNT
  2929. SX7 B1+ SET TERMINATOR INDICATOR WHEN DATA ERROR
  2930. ISI2 SX6 X6-1 DECREMENT BLOCK WORD COUNT
  2931. SA7 BTSK SET BLOCK TERMINATOR INDICATOR
  2932. SX2 X2-12
  2933. NG X4,ISI3 IF 9-TRACK SI-CODED TAPE
  2934. EQ ISI4 UPDATE FLAGS/COUNTS
  2935. IXB SPACE 4,15
  2936. ** IXB - INITIALIZE X FORMAT TAPE BLOCK.
  2937. *
  2938. * ENTRY (RWCB) = WORD COUNT OF BLOCK.
  2939. * (UBCB) = UNUSED BIT COUNT FOR BLOCK.
  2940. *
  2941. * EXIT WORD COUNT AND UNUSED BIT COUNT UPDATED AS
  2942. * NECESSARY. EOR FLAG AND SKIP WORD INDICATOR
  2943. * SET APPROPRIATELY.
  2944. *
  2945. * USES A - 1, 2, 3, 6, 7.
  2946. * B - 3.
  2947. * X - 1, 2, 3, 6, 7.
  2948. *
  2949. * CALLS PDE.
  2950.  
  2951.  
  2952. IXB1 SA3 I+TRK GET TRACK BITS
  2953. BX6 X1
  2954. LX3 59-58
  2955. NG X3,IXB3 IF 7-TRACK X TAPE
  2956. BX3 X2
  2957. LX1 -1
  2958. SX2 B1
  2959. NG X1,IXB2 IF ODD WORD COUNT (BAD BLOCK)
  2960. BX2 X3
  2961. ZR X2,IXB3 IF NO UNUSED BIT COUNT
  2962. SX2 X2-48 ELIMINATE EXCESS BYTE
  2963. IXB2 SX7 -B1 SET SKIP WORD INDICATOR
  2964. IX6 X6+X7 DECREMENT BLOCK WORD COUNT
  2965. SA7 BTSK
  2966. IXB3 SA3 I+PRU GET INPUT PRU SIZE
  2967. SA6 A1 UPDATE BLOCK WORD COUNT
  2968. BX7 X7-X7 CLEAR UNUSED BIT COUNT
  2969. IX6 X3-X6 SET EOR FLAG IF NOT FULL BLOCK
  2970. SA7 A2
  2971. SA6 EORF
  2972. ZR X2,IXBX IF NO DATA ERROR
  2973. SB3 B1 PROCESS DATA ERROR
  2974. RJ PDE
  2975.  
  2976. IXB SUBR ENTRY/EXIT
  2977. SA1 RWCB GET BLOCK WORD COUNT
  2978. SA2 UBCB GET UNUSED BIT COUNT
  2979. SX3 X1-1
  2980. NZ X3,IXB1 IF NOT TERMINATOR ONLY
  2981. ZR X2,IXB1 IF NO UNUSED BIT COUNT
  2982. SX2 X2-12
  2983. BX6 X1
  2984. EQ IXB2 SET SKIP WORD INDICATOR
  2985. SIT SPACE 4,15
  2986. ** SIT - PROCESS SI-CODED TAPE BLOCK TERMINATOR.
  2987. *
  2988. * ENTRY (X2) = DATA WORD CONTAINING 48-BIT BLOCK TERMINATOR.
  2989. * (BTSK) = UNUSED BIT COUNT FOR BLOCK TERMINATOR WORD.
  2990. *
  2991. * EXIT (X1) = -1, IF LEVEL 17B BLOCK TERMINATOR (EOF)
  2992. * ENCOUNTERED ON SI-CODED TAPE.
  2993. *
  2994. * USES A - 1, 3, 7.
  2995. * B - 2, 3.
  2996. * X - 1, 2, 3, 6, 7.
  2997. *
  2998. * CALLS PDE.
  2999.  
  3000.  
  3001. SIT2 SX7 X7+B1
  3002. SA1 TELN+X7 CONVERT DISPLAY LEVEL NUMBER TO BCD
  3003. BX3 X1-X2
  3004. ZR X1,SIT1 IF END OF TABLE
  3005. NZ X3,SIT2 IF NOT MATCH
  3006. SIT3 SA7 LVL
  3007. SX2 X7-17B
  3008. BX1 X1-X1
  3009. NZ X2,SITX IF NOT LEVEL 17B (EOF)
  3010. SX1 -B1
  3011.  
  3012. SIT SUBR ENTRY/EXIT
  3013. SA1 BTSK CLEAR EXTRANEOUS DATA
  3014. SB3 59
  3015. SB2 X1+
  3016. SA3 I+TRK GET TRACK BITS
  3017. MX1 1
  3018. SB2 B3-B2
  3019. AX1 B2
  3020. BX2 X1*X2
  3021. AX2 12 EXTRACT LEVEL NUMBER FROM BLOCK TERMINATOR
  3022. MX1 -6
  3023. SX7 -1
  3024. BX2 -X1*X2
  3025. PL X3,SIT2 IF 7-TRACK SI-CODED TAPE
  3026. BX7 X2
  3027. SX1 X2-20B
  3028. NG X1,SIT3 IF LEGAL LEVEL NUMBER
  3029. SIT1 SB3 B1 PROCESS DATA ERROR
  3030. RJ PDE
  3031. BX7 X7-X7
  3032. EQ SIT3 CLEAR LEVEL NUMBER
  3033. TDBC SPACE 4,10
  3034. ** TELN - TABLE OF EOR LEVEL NUMBERS. BLANK REPRESENTS
  3035. * LEVEL 0. LEVELS 1 - 17B IN EXTERNAL BCD WERE CONVERTED
  3036. * TO DISPLAY CODE DURING READ, AND MUST BE RE-TRANSLATED.
  3037.  
  3038.  
  3039. TELN BSS 0
  3040. LOC 0
  3041. CON 55B LEVEL 0 EOR
  3042. CON 34B LEVEL 1 EOR
  3043. CON 35B LEVEL 2 EOR
  3044. CON 36B LEVEL 3 EOR
  3045. CON 37B LEVEL 4 EOR
  3046. CON 40B LEVEL 5 EOR
  3047. CON 41B LEVEL 6 EOR
  3048. CON 42B LEVEL 7 EOR
  3049. CON 43B LEVEL 10B EOR
  3050. CON 44B LEVEL 11B EOR
  3051. CON 33B LEVEL 12B EOR
  3052. CON 54B LEVEL 13B EOR
  3053. CON 64B LEVEL 14B EOR
  3054. CON 74B LEVEL 15B EOR
  3055. CON 63B LEVEL 16B EOR
  3056. CON 61B LEVEL 17B EOF
  3057. CON 0 END OF TABLE
  3058. LOC *O
  3059. SPACE 4,10
  3060. ** COMMON DECKS.
  3061.  
  3062.  
  3063. *CALL COMCRDC
  3064. *CALL COMCWTH
  3065. SPACE 4,10
  3066. ** TCOPY BUFFERS.
  3067.  
  3068.  
  3069. BUF2 BSS 0 WORKING STORAGE BUFFER
  3070. IBUF2 EQU BUF2+BUFL INPUT FILE CIO BUFFER
  3071. OBUF2 EQU IBUF2+FBUFL OUTPUT FILE CIO BUFFER
  3072. RFL2 EQU OBUF2+FBUFL FIELD LENGTH FOR TCOPY
  3073. TITLE PRESET.
  3074. CTP SPACE 4,10
  3075. ** CTP - COPY AND TCOPY PRESET PROGRAM.
  3076. *
  3077. * ENTRY (X6) = -1, IF *COPY* CALL.
  3078. * = 0, IF *TCOPY* CALL.
  3079. *
  3080. * EXIT (B1) = 1.
  3081. *
  3082. * USES A - 0, 1, 2, 4, 6, 7.
  3083. * X - 0, 1, 2, 4, 6, 7.
  3084. *
  3085. * CALLS BVR, CCP, CDT, CFN, CPV, GPS, RBL, RBP, SPS, VCY, VTY.
  3086.  
  3087.  
  3088. CTP2 RJ VCY VALIDATE COPY
  3089. CTP3 SA0 I SET PRU SIZE ON S OR L INPUT TAPE
  3090. RJ SPS
  3091. RJ GPS GET INPUT PRU SIZE
  3092. SA0 O SET PRU SIZE ON S OR L OUTPUT TAPE
  3093. RJ SPS
  3094. RJ GPS GET OUTPUT PRU SIZE
  3095. RJ RBL RESET BUFFER LENGTHS FOR L AND F TAPES
  3096. RJ RBP RESET BUFFER POINTERS
  3097. RJ AEM ADJUST ERROR MESSAGES
  3098. RJ BVR BUILD VERIFY REQUEST
  3099. SA1 I+CWF
  3100. ZR X1,CTPX IF CONTROL WORDS DISABLED
  3101. MX1 1 SET EP BIT OF INPUT FILE FET
  3102. SA2 I+1
  3103. LX1 44-59
  3104. BX6 X1+X2
  3105. SA6 A2
  3106.  
  3107. CTP SUBR ENTRY/EXIT
  3108. SB1 1 (B1) = 1
  3109. SA6 CRI SAVE CALLING ROUTINE INDICATOR
  3110. SX7 1RD SET DEFAULT TERMINATION CONDITION
  3111. SA0 TCYA COPY ARGUMENT TABLE
  3112. LX7 -6
  3113. SX0 TCYAL COPY ARGUMENT TABLE LENGTH
  3114. SA7 TC
  3115. NG X6,CTP1 IF NOT *TCOPY* CALL
  3116. SX7 1RX SET DEFAULT X FORMAT CONVERSION
  3117. LX7 -6
  3118. SA7 CF
  3119. SX6 BUF2+1 FWA TCOPY WORKING BUFFER
  3120. SA0 TTYA TCOPY ARGUMENT TABLE
  3121. SA6 FWWB
  3122. SX0 TTYAL TCOPY ARGUMENT TABLE LENGTH
  3123. CTP1 RJ CCP CRACK COMMAND PARAMETERS
  3124. RJ CPV CONVERT PARAMETER VALUES
  3125. SA0 I CHECK IF CONTROL WORDS ALLOWED ON INPUT
  3126. RJ CDT
  3127. SA0 O CHECK IF CONTROL WORDS ALLOWED ON OUTPUT
  3128. RJ CDT
  3129. RJ CFN CHECK FILE NAMES
  3130. SA1 CRI GET CALLING ROUTINE INDICATOR
  3131. NG X1,CTP2 IF *COPY* CALL
  3132. RJ VTY VALIDATE TCOPY
  3133. SA1 CSMR GET CHARACTER SET MODE
  3134. NG X1,CTP3 IF 64-CHARACTER SET
  3135. SX6 0062B SET *SI*-CODED EOL FOR 63-CHARACTER SET
  3136. SA6 CELA
  3137. EQ CTP3 CONTINUE PRESET
  3138. TCYA SPACE 4,10
  3139. ** TCYA - TABLE OF COPY COMMAND ARGUMENTS.
  3140.  
  3141.  
  3142. TCYA BSS 0
  3143. I ARG I,I,400B INPUT FILE
  3144. O ARG O,O,400B OUTPUT FILE
  3145. V ARG =0,VF,400B VERIFY OPTION
  3146. M ARG =0,CM,400B CODED MODE
  3147. TC ARG =0,TC TERMINATION CONDITION
  3148. N ARG =0,DCT COPY COUNT
  3149. BS ARG =0,BS,400B BLOCK SIZE
  3150. CC ARG =0,CC,400B CHARACTER COUNT
  3151. EL ARG =0,EL ERROR LIMIT
  3152. PO ARG =0,PO,400B PROCESSING OPTIONS
  3153. L ARG L,L,400B ALTERNATE OUTPUT FILE
  3154. NS ARG =0,NS,400B NOISE SIZE
  3155. TCYAL EQU *-TCYA
  3156. CON 0
  3157. TTYA SPACE 4,10
  3158. ** TTYA - TABLE OF TCOPY COMMAND ARGUMENTS.
  3159.  
  3160.  
  3161. TTYA BSS 0
  3162. I ARG I,I,400B INPUT FILE
  3163. O ARG O,O,400B OUTPUT FILE
  3164. F ARG =0,CF,400B CONVERSION FORMAT
  3165. TC ARG =0,TC TERMINATION CONDITION
  3166. N ARG =0,DCT COPY COUNT
  3167. CC ARG =0,CC,400B CHARACTER COUNT
  3168. EL ARG =0,EL ERROR LIMIT
  3169. PO ARG =0,PO,400B PROCESSING OPTIONS
  3170. L ARG L,L,400B ALTERNATE OUTPUT FILE
  3171. NS ARG =0,NS,400B NOISE SIZE
  3172. TTYAL EQU *-TTYA
  3173. CON 0
  3174. PRS SPACE 4,15
  3175. ** PRS - PRESET FOR COPYBR, COPYBF, COPYEI, AND COPYX.
  3176. *
  3177. * ENTRY (X6) = -1, IF *COPYX* CALL.
  3178. * = 0, IF *COPYBR* CALL.
  3179. * = 1, IF *COPYBF* CALL.
  3180. * = 2, IF *COPYEI* CALL.
  3181. *
  3182. * EXIT (B1) = 1.
  3183. * TO *PER2*, IF ARGUMENT ERROR.
  3184. *
  3185. * USES A - 0, 1, 2, 5, 6, 7.
  3186. * B - 6, 7.
  3187. * X - 0, 1, 2, 3, 5, 6, 7.
  3188. *
  3189. * CALLS BVR, CDT, CFN, CIC, DXB, GPS, RBL, RBP, SFM, STC.
  3190.  
  3191.  
  3192. PRS7 SA7 I+CWF DISABLE CONTROL WORD READ
  3193. SA7 O+CWF DISABLE CONTROL WORD WRITE
  3194.  
  3195. PRS SUBR ENTRY/EXIT
  3196. SB1 1 (B1) = 1
  3197. SA6 CRI SAVE CALLING ROUTINE INDICATOR
  3198. SB6 X6
  3199. MX0 42
  3200. SA1 ACTR GET ARGUMENT COUNT
  3201. SB7 X1
  3202. ZR B7,PRS6 IF NO ARGUMENTS
  3203.  
  3204. * PROCESS INPUT FILE NAME.
  3205.  
  3206. R= A5,ARGR INPUT FILE NAME
  3207. SA2 I
  3208. BX7 X0*X5
  3209. SX3 X2
  3210. ZR X7,PRS1 IF NULL PARAMETER
  3211. BX7 X7+X3
  3212. SA7 A2
  3213.  
  3214. * PROCESS OUTPUT FILE NAME.
  3215.  
  3216. PRS1 SB7 B7-B1
  3217. ZR B7,PRS6 IF END OF ARGUMENTS
  3218. SA5 A5+B1
  3219. SA2 O
  3220. BX7 X0*X5
  3221. SX3 X2
  3222. ZR X7,PRS2 IF NULL PARAMETER
  3223. BX7 X7+X3
  3224. SA7 A2
  3225.  
  3226. * PROCESS COPY COUNT PARAMETER, VERIFY PARAMETER, OR
  3227. * TERMINATION CONDITION PARAMETERS.
  3228.  
  3229. PRS2 SB7 B7-1
  3230. ZR B7,PRS6 IF END OF ARGUMENTS
  3231. GE B6,PRS3 IF NOT COPYX CALL
  3232. RJ STC PROCESS TERMINATION CONDITION PARAMETERS
  3233. EQ PRS5 PROCESS MODE PARAMETER
  3234.  
  3235. PRS3 SA5 A5+B1
  3236. BX5 X0*X5
  3237. ZR X5,PRS5 IF NULL PARAMETER
  3238. GT B6,B1,PRS4 IF COPYEI CALL
  3239. BX6 X5
  3240. SA6 DCT SAVE DISPLAY CODE COPY COUNT
  3241. RJ DXB CONVERT COPY COUNT
  3242. NZ X4,PER2 IF CONVERSION ERROR
  3243. ZR X6,PER2 IF INCORRECT COUNT
  3244. SA6 CT
  3245. EQ PRS5 PROCESS MODE PARAMETER
  3246.  
  3247. PRS4 SX6 B1+ SET VERIFY FLAG
  3248. SA6 VF
  3249.  
  3250. * PROCESS MODE PARAMETER.
  3251.  
  3252. PRS5 SB7 B7-B1
  3253. ZR B7,PRS6 IF END OF ARGUMENTS
  3254. SA5 A5+B1
  3255. MX0 42
  3256. SB7 B7-B1
  3257. BX5 X0*X5
  3258. SX6 -B1
  3259. NZ B7,PER2 IF TOO MANY ARGUMENTS
  3260. ZR X5,PRS6 IF NULL PARAMETER
  3261. SA6 CM SET CODED MODE FLAG (BOTH FILES)
  3262. PRS6 SA0 I CHECK IF CONTROL WORDS ALLOWED ON INPUT
  3263. RJ CDT
  3264. SA0 O CHECK IF CONTROL WORDS ALLOWED ON OUTPUT
  3265. RJ CDT
  3266. RJ SFM SET FILE MODE
  3267. RJ CFN CHECK FILE NAMES
  3268. RJ CIC CHECK FOR INDETERMINATE COPY
  3269. SA0 I GET INPUT PRU SIZE
  3270. RJ GPS
  3271. SA0 O GET OUTPUT PRU SIZE
  3272. RJ GPS
  3273. SA1 CRI GET CALLING ROUTINE INDICATOR
  3274. BX7 X7-X7
  3275. SB6 X1
  3276. LE B6,PRS7 IF COPYBR OR COPYX CALL
  3277. RJ RBL RESET BUFFER LENGTHS
  3278. RJ RBP RESET BUFFER POINTERS
  3279. RJ BVR BUILD VERIFY REQUEST
  3280. EQ PRSX RETURN
  3281. TITLE PRESET SUBROUTINES.
  3282. AEM SPACE 4,10
  3283. ** AEM - ADJUST ERROR MESSAGES.
  3284. *
  3285. * EXIT ERROR MESSAGES ADJUSTED FOR TYPE OF COPY.
  3286. *
  3287. * USES A - 1, 2, 3, 5, 6, 7.
  3288. * X - 1, 2, 3, 5, 6, 7.
  3289. *
  3290. * CALLS SFN.
  3291.  
  3292.  
  3293. AEM SUBR ENTRY/EXIT
  3294. SA3 =10H
  3295. SA2 =0LDELETED.
  3296. SA1 CCDR+8
  3297. BX6 X3
  3298. SA5 NSFG
  3299. NZ X5,AEM0 IF NOISE BLOCK TO BE DELETED
  3300. SA5 NPDI
  3301. ZR X5,AEM1 IF NOISE BLOCK TO BE PADDED
  3302. AEM0 BX7 X2 ADJUST NOISE BLOCK SUMMARY MESSAGE
  3303. SA7 IESD+3
  3304. AEM1 SA1 A1-B1 BLANK FILL COMMAND IMAGE
  3305. SA6 A1
  3306. ZR X1,AEM1 IF NOT END OF COMMAND
  3307. RJ SFN BLANK FILL LAST WORD OF COMMAND
  3308. SA6 A1
  3309. EQ AEMX RETURN
  3310. BVR SPACE 4,15
  3311. ** BVR - BUILD VERIFY REQUEST.
  3312. *
  3313. * EXIT IF VERIFY REQUESTED, VERIFY PARAMETERS BUILT,
  3314. * VERIFY COMMAND DAYFILE MESSAGE BUILT,
  3315. * AND INPUT AND OUTPUT FILES ARE REWOUND.
  3316. *
  3317. * USES A - 1, 2, 3, 6, 7.
  3318. * B - 2, 3, 5, 6.
  3319. * X - 0, 1, 2, 3, 5, 6, 7.
  3320. *
  3321. * CALLS CDD, CIO=, SNM.
  3322.  
  3323.  
  3324. BVR7 SX6 B0+ CLEAR VERIFY FLAG
  3325. SA6 VF
  3326.  
  3327. BVR SUBR ENTRY/EXIT
  3328. SA2 VF
  3329. ZR X2,BVRX IF VERIFY NOT REQUESTED
  3330. REWIND I REWIND FILES
  3331. SA1 SK
  3332. NZ X1,BVR7 IF SKIP SET
  3333. REWIND O
  3334. SA1 I GET INPUT FILE NAME
  3335. SB5 VFYC BUILD VERIFY COMMAND MESSAGE
  3336. MX5 42
  3337. BX1 X5*X1
  3338. SB2 1RX
  3339. RJ SNM SET INPUT FLE NAME IN MESSAGE
  3340. SA1 O GET OUTPUT FILE NAME
  3341. SB2 1R+
  3342. BX1 X5*X1
  3343. RJ SNM SET OUTPUT FILE NAME IN MESSAGE
  3344. SA1 L GET ALTERNATE OUTPUT FILE NAME
  3345. SB6 VFYA+4 BUILD VERIFY COMMAND PARAMETERS
  3346. BX1 X5*X1
  3347. SB2 1R/
  3348. LX6 X1
  3349. SA6 B6-B1
  3350. RJ SNM SET ALTERNATE OUTPUT FILE NAME IN MESSAGE
  3351. SA3 TC
  3352. SX0 1R=
  3353. SX5 1R,
  3354. PL X3,BVR1 IF NOT COPY TO EOI
  3355. SX6 1RN
  3356. LX6 -6
  3357. BX1 X1-X1
  3358. EQ BVR2 CHECK CODED MODE
  3359.  
  3360. BVR1 SX6 1R0
  3361. SB6 B6+1
  3362. LX6 -6
  3363. SA2 DCT DISPLAY CODE COPY COUNT
  3364. BX1 X6+X0
  3365. ZR X3,BVR2 IF COPY TO DOUBLE EOF
  3366. LX6 X2
  3367. BX1 X2+X0
  3368. BVR2 SA6 B6
  3369. LX1 -6
  3370. SB2 1R(
  3371. RJ SNM SET TERMINATION CONDITION IN MESSAGE
  3372. SA2 CM
  3373. SB6 B6+B1
  3374. BX1 X1-X1
  3375. ZR X2,BVR4 IF NOT CODED MODE
  3376. SX6 2RC1
  3377. SB2 X2
  3378. EQ B2,B1,BVR3 IF FIRST FILE ONLY
  3379. SX6 X6+B1
  3380. GT B2,B1,BVR3 IF SECOND FILE ONLY
  3381. AX6 6
  3382. LX6 6
  3383. BVR3 LX6 -12
  3384. BX1 X6+X5
  3385. SA6 B6
  3386. SB6 B6+B1
  3387. BVR4 SB2 1R$
  3388. LX1 -6
  3389. RJ SNM SET MODE PARAMETER IN MESSAGE
  3390. SA1 I+SLF
  3391. SA2 O+SLF
  3392. SB2 X1
  3393. SB3 X2
  3394. SA1 I+PRU
  3395. BX3 X3-X3
  3396. GT B2,BVR5 IF INPUT IS S OR L TAPE
  3397. SA1 O+PRU
  3398. LE B3,BVR6 IF OUTPUT NOT S OR L TAPE
  3399. BVR5 RJ CDD CONVERT PRU SIZE TO DISPLAY
  3400. SB2 B2-B1 BUILD BS= PARAMETER
  3401. MX2 1
  3402. SX7 2RBS
  3403. AX2 B2
  3404. LX7 -12
  3405. BX6 X2*X4
  3406. BX3 X7+X5
  3407. SA6 B6+B1
  3408. BX7 X7+X0
  3409. LX3 -6
  3410. BX6 X6+X0
  3411. SA7 B6+
  3412. LX6 -24
  3413. BX3 X3+X6
  3414. BVR6 SB2 1R)
  3415. BX1 X3
  3416. RJ SNM SET BLOCK SIZE IN MESSAGE
  3417. EQ BVRX RETURN
  3418. CCP SPACE 4,15
  3419. ** CCP - CRACK THE COMMAND PARAMETERS.
  3420. *
  3421. * ENTRY (A0) = FWA ARGUMENT TABLE.
  3422. * (X0) = ARGUMENT TABLE LENGTH.
  3423. *
  3424. * EXIT TO *PER2*, IF ARGUMENT ERROR.
  3425. *
  3426. * USES A - 6.
  3427. * B - 2, 3, 4, 6.
  3428. * X - 6.
  3429. *
  3430. * CALLS ARM, CPA, POP, USB.
  3431.  
  3432.  
  3433. CCP SUBR ENTRY/EXIT
  3434. SB2 CCDR UNPACK COMMAND
  3435. RJ USB
  3436. RJ POP SKIP OVER PROGRAM NAME
  3437. ZR B6,CCPX IF NO ARGUMENTS
  3438. SB2 X0 ARGUMENT TABLE LENGTH
  3439. SB3 A0 FWA ARGUMENT TABLE
  3440. SB4 PASB POSITIONAL ARGUMENT STRING BUFFER
  3441. RJ CPA CONVERT TO POSITIONAL ARGUMENTS
  3442. NG B5,PER2 IF CONVERSION ERROR
  3443. PL X1,CCPX IF NO ARGUMENTS PROCESSED
  3444. SX6 B5+ LWA POSITIONAL ARGUMENT STRING
  3445. SB6 PASB FWA POSITIONAL ARGUMENT STRING
  3446. SA6 USBC
  3447. RJ ARM CRACK COMMAND PARAMETERS
  3448. NZ X1,PER2 IF ARGUMENT ERROR
  3449. EQ CCPX RETURN
  3450. CDT SPACE 4,15
  3451. ** CDT - CHECK DEVICE TYPE.
  3452. *
  3453. * ENTRY (A0) = FWA FET.
  3454. *
  3455. * EXIT ((A0)+CWF) .NE. 0, IF CONTROL WORDS ALLOWED.
  3456. * ((A0)+SLF) = -1, IF F FORMAT TAPE.
  3457. * = 1, IF S FORMAT TAPE.
  3458. * = 2, IF L FORMAT TAPE.
  3459. * ((A0)+NSZ) = NOISE SIZE IN FRAMES, IF TAPE FILE.
  3460. * ((A0)+TRK) = TRACK BITS, TAPE TYPE AND LABEL TYPE,
  3461. * IF TAPE FILE.
  3462. * ((A0)+PRU) = PRU SIZE, IF F FORMAT TAPE.
  3463. * WARNING MESSAGE ISSUED IF INPUT FILE NOT FOUND.
  3464. *
  3465. * USES A - 1, 2, 3, 6, 7.
  3466. * B - 2, 5.
  3467. * X - 0, 1, 2, 3, 6, 7.
  3468. *
  3469. * CALLS GPS, SNM.
  3470. *
  3471. * MACROS FILINFO, MESSAGE.
  3472.  
  3473.  
  3474. CDT4 RJ GPS CHECK FOR TERMINAL FILE
  3475. SA3 A0+B1 GET DEVICE TYPE
  3476. MX2 -11
  3477. LX3 12
  3478. BX3 -X2*X3
  3479. SX7 X3-2RTT
  3480. SX2 A0-I
  3481. ZR X7,CDTX IF TERMINAL FILE
  3482. NZ X2,CDT5 IF NOT INPUT FILE
  3483. SA1 A0 GET INPUT FILE NAME
  3484. SB5 -CDTA * FILE NOT FOUND - LFN.*
  3485. BX1 X0*X1
  3486. SB2 1RX
  3487. SX6 1
  3488. SB3 ENDF REPLACE COPY COUNT MESSAGE
  3489. SA6 ENDG FLAG *FILE NOT FOUND*
  3490. RJ SNM SET NAME IN MESSAGE
  3491. CDT5 SX7 B1+ ENABLE CONTROL WORDS
  3492. SA7 A0+CWF
  3493.  
  3494. CDT SUBR ENTRY/EXIT
  3495. SA1 A0 SET FILE NAME IN PARAMETER BLOCK
  3496. MX0 42
  3497. SA2 CDTB
  3498. BX1 X0*X1
  3499. SX2 X2
  3500. BX6 X1+X2
  3501. SA6 A2
  3502. FILINFO CDTB GET FILE INFORMATION
  3503. SA1 CDTB+1 GET DEVICE TYPE AND STATUS
  3504. BX3 X1
  3505. AX3 48
  3506. ZR X3,CDT4 IF FILE NOT FOUND
  3507. SX2 X3-2ROD OPTICAL DISK DEVICE TYPE
  3508. NZ X2,CDT1 IF NOT OD DEVICE
  3509. SX7 FETODL OD FET EXTENSION LENGTH
  3510. SX2 A0+12B BUILD POINTER TO FET EXTENSION
  3511. LX7 18
  3512. BX7 X2+X7
  3513. SA7 A0+11B STORE POINTER AND LENGTH
  3514. SX7 3 INDICATE OPTICAL DISK FILE
  3515. SA7 A0+ODF
  3516. EQ CDT5 ENABLE CONTROL WORDS
  3517.  
  3518. CDT1 SX2 X3-2RNE
  3519. LX1 59-15
  3520. NG X1,CDT5 IF FILE ON MASS STORAGE
  3521. LX1 59-24-59+15
  3522. ZR X2,CDT5 IF NULL EQUIPMENT
  3523. PL X1,CDTX IF NOT TAPE FILE
  3524. MX0 2
  3525. LX1 59-19-59+24
  3526. BX6 X0*X1 ISOLATE NT/MT FLAGS
  3527. LX1 59-26-59+19
  3528. SA2 CDTB+FIPBL+1 GET LABEL TYPE
  3529. BX1 X0*X1 ISOLATE TAPE DEVICE TYPE
  3530. LX1 -2
  3531. BX6 X6+X1
  3532. SA3 A2-B1 GET TAPE FORMAT
  3533. LX2 -12
  3534. MX0 -6
  3535. BX2 -X0*X2
  3536. SA1 A2+B1 GET BLOCK SIZE AND NOISE SIZE
  3537. LX3 -6
  3538. BX6 X6+X2
  3539. LX1 -6
  3540. SA6 A0+TRK SAVE TRACK BITS, TAPE TYPE AND LABEL TYPE
  3541. BX3 -X0*X3
  3542. BX6 -X0*X1
  3543. SA6 A0+NSZ SAVE NOISE SIZE
  3544. SX7 B1
  3545. SX2 X3-/MTX/TFLI
  3546. ZR X2,CDT5 IF LI FORMAT TAPE
  3547. SX2 X3-/MTX/TFS
  3548. ZR X2,CDT3 IF S FORMAT TAPE
  3549. SX7 2
  3550. SX2 X3-/MTX/TFL
  3551. ZR X2,CDT3 IF L FORMAT TAPE
  3552. SX7 -1
  3553. SX2 X3-/MTX/TFF
  3554. NZ X2,CDT5 IF NOT F FORMAT TAPE
  3555. LX1 -18
  3556. SX6 X1
  3557. SA6 A0+PRU SET F TAPE PRU SIZE
  3558. CDT3 SA7 A0+SLF SET S/L/F TAPE INDICATOR
  3559. SA7 A0+ODF SET S/L/F/OD INDICATOR
  3560. EQ CDT5 SET CONTROL WORD FLAG
  3561.  
  3562.  
  3563. CDTA DATA C* FILE NOT FOUND - XXXXXXX.*
  3564.  
  3565. CDTB VFD 42/0,6/CDTBL,12/1 *FILINFO* PARAMETER BLOCK
  3566. BSS FIPBL-1
  3567. CON FMTK TAPE FORMAT KEYWORD
  3568. CON LTYK TAPE LABEL TYPE KEYWORD
  3569. CON BSZK TAPE BLOCK SIZE, NOISE SIZE KEYWORD
  3570. CDTBL EQU *-CDTB
  3571. CFN SPACE 4,10
  3572. ** CFN - CHECK FILE NAMES.
  3573. *
  3574. * EXIT SKIP FLAG SET IF INPUT FILE NAME SAME AS OUTPUT
  3575. * FILE NAME.
  3576. * TO *PER1*, IF ALTERNATE OUTPUT FILE NAME CONFLICT.
  3577. *
  3578. * USES A - 1, 2, 3, 4, 6, 7.
  3579. * B - 5.
  3580. * X - 0, 1, 2, 3, 4, 6, 7.
  3581.  
  3582.  
  3583. CFN SUBR ENTRY/EXIT
  3584. SA1 I COMPARE FILE NAMES
  3585. SA4 O
  3586. MX0 42
  3587. BX1 X0*X1
  3588. SA3 L
  3589. BX4 X0*X4
  3590. SA2 =10H SKIPPING SET SKIP FLAG AND MESSAGE
  3591. BX7 X1-X4
  3592. LX6 X2
  3593. NZ X7,CFN1 IF INPUT .NE. OUTPUT FILE NAME
  3594. SX7 B1
  3595. SA6 DRNA
  3596. SA7 SK
  3597. SA6 PEFB
  3598. CFN1 SA2 SEWI SKIP EOF WRITE INDICATOR
  3599. SB5 PERE * FILE NAME CONFLICT.*
  3600. ZR X2,CFN2 IF PO=M NOT SELECTED
  3601. SA6 PEFB
  3602. CFN2 SX6 A3 SET ALTERNATE OUTPUT FILE POINTER
  3603. BX3 X0*X3
  3604. SX7 A4 SET OUTPUT FILE POINTER
  3605. BX6 X6+X3
  3606. SA2 EL CHECK IF ALTERNATE OUTPUT FILE TO BE USED
  3607. BX7 X7+X4
  3608. R= A6,ARGR
  3609. BX1 X1-X3
  3610. SA7 A6+B1
  3611. ZR X2,CFNX IF ERROR LIMIT = 0
  3612. ZR X1,PER1 IF ALTERNATE OUTPUT = INPUT FILE NAME
  3613. BX7 X4-X3
  3614. ZR X7,PER1 IF ALTERNATE OUTPUT = OUTPUT FILE NAME
  3615. EQ CFNX RETURN
  3616. CIC SPACE 4,15
  3617. ** CIC - CHECK FOR INDETERMINATE COPY.
  3618. *
  3619. * EXIT WARNING MESSAGE ISSUED IF S, L, OR F TAPE COPY.
  3620. * L TAPE PRU SIZE LIMITED IF COPYBF OR COPYEI CALL.
  3621. * TO *PER*, IF F TAPE PRU SIZE .GT. WORKING BUFFER SIZE.
  3622. *
  3623. * USES A - 1, 2, 3, 6.
  3624. * B - 2, 3, 4.
  3625. * X - 0, 1, 2, 3, 6.
  3626. *
  3627. * CALLS SYS=.
  3628.  
  3629.  
  3630. CIC SUBR ENTRY/EXIT
  3631. SA1 I+SLF
  3632. SA2 O+SLF
  3633. NZ X1,CIC1 IF S, L, OR F TAPE INPUT
  3634. ZR X2,CICX IF OUTPUT NOT S, L, OR F TAPE
  3635. CIC1 SA3 CRI GET CALLING ROUTINE INDICATOR
  3636. SB4 X2
  3637. SB2 X3
  3638. SB3 X1+
  3639. LE B2,CIC5 IF COPYBR OR COPYX CALL
  3640. SX6 BUFL-3 LIMIT L TAPE PRU SIZE TO WORKING BUFFER
  3641. LE B3,B1,CIC2 IF INPUT NOT L TAPE
  3642. SA6 I+6 SET MLRS FIELD IN INPUT FET
  3643. CIC2 LE B4,B1,CIC3 IF OUTPUT NOT L TAPE
  3644. SA6 O+6 SET MLRS FIELD OF OUTPUT FET
  3645. CIC3 SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
  3646. GE B3,CIC4 IF INPUT NOT F TAPE
  3647. SA2 I+PRU GET INPUT FILE PRU SIZE
  3648. IX2 X6-X2
  3649. SA1 I
  3650. NG X2,PER IF F TAPE PRU SIZE EXCEEDS WORKING BUFFER
  3651. CIC4 GE B4,CIC5 IF OUTPUT NOT F TAPE
  3652. SA3 O+PRU GET OUTPUT FILE PRU SIZE
  3653. SA1 O
  3654. IX3 X6-X3
  3655. NG X3,PER IF F TAPE PRU SIZE EXCEEDS WORKING BUFFER
  3656. CIC5 MESSAGE CICA,3 * COPY INDETERMINATE.*
  3657. EQ CICX RETURN
  3658.  
  3659.  
  3660. CICA DATA C* COPY INDETERMINATE.*
  3661. CNS SPACE 4,15
  3662. ** CNS - CALCULATE NOISE SIZE.
  3663. *
  3664. * ENTRY (A0) = FWA FET.
  3665. * ((A0)+NSZ) = NOISE SIZE IN FRAMES.
  3666. *
  3667. * EXIT ((A0)+NSZ) = 24/NOISE SIZE IN BITS,
  3668. * 18/MINIMUM NUMBER OF CHARACTERS IN LAST WORD,
  3669. * 18/MINIMUM NUMBER OF WORDS FOR NOISE SIZE,
  3670. * IF S, L, OR F TAPE.
  3671. * (X6) = NOISE SIZE IN BITS, IF S, L, OR F TAPE.
  3672. *
  3673. * USES A - 1, 2, 3, 7.
  3674. * B - 7.
  3675. * X - 1, 2, 3, 4, 6, 7.
  3676.  
  3677.  
  3678. CNS SUBR ENTRY/EXIT
  3679. SA3 A0+SLF
  3680. SA1 A0+NSZ GET NOISE SIZE IN FRAMES
  3681. ZR X3,CNSX IF NOT S, L, OR F TAPE
  3682. SA2 A0+TRK GET TRACK BITS
  3683. LX2 59-56
  3684. NG X2,CNSX IF CT OR AT TAPE
  3685. LX2 59-58-59+56
  3686. SX6 6
  3687. NG X2,CNS1 IF 7-TRACK
  3688. SX6 8
  3689. CNS1 IX6 X1*X6 CALCULATE NOISE SIZE IN BITS
  3690. SX2 5 CALCULATE MINIMUM NUMBER OF CHARACTERS
  3691. IX1 X6+X2
  3692. SX2 X2+B1
  3693. BX7 X6
  3694. IX1 X1/X2
  3695. SX2 9 CALCULATE MINIMUM NUMBER OF WORDS
  3696. IX3 X1+X2
  3697. SX2 X2+B1
  3698. BX4 X2
  3699. IX3 X3/X2
  3700. LX7 18
  3701. SX2 X3-1 CALCULATE CHARACTERS IN LAST WORD
  3702. IX4 X2*X4
  3703. IX4 X1-X4
  3704. BX7 X7+X4
  3705. LX7 18
  3706. BX7 X7+X3
  3707. SA7 A1
  3708. EQ CNSX RETURN
  3709. CPV SPACE 4,10
  3710. ** CPV - CONVERT PARAMETER VALUES.
  3711. *
  3712. * EXIT TO *PER2*, IF CONVERSION ERROR.
  3713. *
  3714. * USES A - 1, 4, 5, 6, 7.
  3715. * B - 6, 7.
  3716. * X - 0, 1, 4, 5, 6, 7.
  3717. *
  3718. * CALLS DXB, RPV.
  3719.  
  3720.  
  3721. CPV SUBR ENTRY/EXIT
  3722. SX4 1RU CONVERT ERROR LIMIT
  3723. SA5 EL
  3724. LX4 -6
  3725. SX6 -B1
  3726. BX4 X4-X5
  3727. SB7 B1
  3728. ZR X4,CPV1 IF UNLIMITED ERROR LIMIT
  3729. RJ DXB
  3730. NZ X4,PER2 IF CONVERSION ERROR
  3731. CPV1 SA6 A5+
  3732. SA5 NS NOISE SIZE
  3733. ZR X5,CPV1.1 IF NS NOT SPECIFIED
  3734. RJ DXB
  3735. NZ X4,PER2 IF CONVERSION ERROR
  3736. SX1 MNSZ
  3737. IX4 X1-X6
  3738. NG X4,PER2 IF EXCEEDS MAXIMUM NS SIZE
  3739. SA6 A5
  3740. NZ X6,CPV1.1 IF NOT NS=0
  3741. SX6 DFNS SET TO DEFAULT NOISE SIZE
  3742. SA6 A5+
  3743. CPV1.1 SA5 BS CONVERT BLOCK SIZE
  3744. ZR X5,CPV2 IF BS NOT SPECIFIED
  3745. RJ DXB
  3746. NZ X4,PER2 IF CONVERSION ERROR
  3747. ZR X6,PER2 IF BS=0 SPECIFIED
  3748. SA6 A5+
  3749. CPV2 SA5 CC CONVERT CHARACTER COUNT
  3750. ZR X5,CPV3 IF CC NOT SPECIFIED
  3751. RJ DXB
  3752. NZ X4,PER2 IF CONVERSION ERROR
  3753. ZR X6,PER2 IF CC=0 SPECIFIED
  3754. SA6 A5+
  3755. CPV3 SA4 TC CONVERT TERMINATION CONDITION
  3756. SA1 TTCV TABLE OF TERMINATION CONDITION VALUES
  3757. RJ RPV
  3758. ZR X1,PER2 IF NOT LEGAL TERMINATION CONDITION
  3759. SA6 A4
  3760. SB6 X6
  3761. SA5 DCT CONVERT COPY COUNT
  3762. RJ DXB
  3763. NZ X4,PER2 IF CONVERSION ERROR
  3764. ZR X6,PER2 IF ZERO COPY COUNT SPECIFIED
  3765. GE B6,CPV4 IF NOT COPY TO EOI
  3766. SX6 -1 SET UNLIMITED COPY COUNT
  3767. CPV4 SA6 CT
  3768. SA4 CM CONVERT CODED MODE PARAMETER
  3769. BX6 X6-X6
  3770. ZR X4,CPV5 IF MODE PARAMETER NOT SPECIFIED
  3771. SX6 -B1 SET DEFAULT VALUE
  3772. SA1 TCMV TABLE OF CODED MODE VALUES
  3773. RJ RPV
  3774. CPV5 SA6 A4
  3775. MX0 6
  3776. SA4 CF CONVERT CONVERSION FORMAT
  3777. SA5 PO
  3778. SA1 TCFV TABLE OF CONVERSION FORMAT VALUES
  3779. ZR X4,CPV6 IF CONVERSION FORMAT NOT SPECIFIED
  3780. RJ RPV
  3781. ZR X1,PER2 IF NOT LEGAL CONVERSION FORMAT
  3782. SA6 A4+
  3783. CPV6 SA4 CRI GET CALLING ROUTINE INDICATOR
  3784. SA1 TCPO CONVERT PROCESSING OPTIONS
  3785. NG X4,CPV7 IF *COPY* CALL
  3786. SA1 TTPO
  3787. CPV7 ZR X5,CPVX IF END OF PROCESSING OPTIONS
  3788. BX4 X0*X5
  3789. BX5 -X0*X5
  3790. LX5 6
  3791. SX7 -B1
  3792. RJ RPV GET INDICATOR ADDRESS
  3793. ZR X1,PER2 IF NOT LEGAL PROCESSING OPTION
  3794. SA7 X6+
  3795. EQ CPV6 CONTINUE CONVERTING PROCESSING OPTIONS
  3796. TCFV SPACE 4,10
  3797. ** TCFV - TABLE OF CONVERSION FORMAT VALUES.
  3798.  
  3799.  
  3800. TCFV BSS 0
  3801. VFD 42/0LI,18/-3 I CONVERSION FORMAT
  3802. VFD 42/0LSI,18/-2 SI CONVERSION FORMAT
  3803. VFD 42/0LX,18/-1 X CONVERSION FORMAT
  3804. VFD 42/0LE,18/1 E CONVERSION FORMAT
  3805. VFD 42/0LB,18/2 B CONVERSION FORMAT
  3806. CON 0 END OF TABLE
  3807. TCMV SPACE 4,10
  3808. ** TCMV - TABLE OF CODED MODE VALUES.
  3809.  
  3810.  
  3811. TCMV BSS 0
  3812. VFD 42/0LC1,18/1 CODED MODE ON INPUT ONLY
  3813. VFD 42/0LC2,18/2 CODED MODE ON OUTPUT ONLY
  3814. CON 0 END OF TABLE
  3815. TPOA SPACE 4,10
  3816. ** TCPO - TABLE OF *COPY* PROCESSING OPTIONS.
  3817.  
  3818.  
  3819. TCPO BSS 0
  3820. VFD 42/0LE,18/ESPI PROCESS PARITY ERRORS
  3821. VFD 42/0LD,18/NPDI DELETE NOISE BLOCKS
  3822. VFD 42/0LR,18/RSAI ALLOW RECORD SPLIT
  3823. VFD 42/0LM,18/SEWI SKIP EOF WRITE ON OUTPUT
  3824. CON 0 END OF TABLE FOR COPY
  3825. TTPO SPACE 4,10
  3826. ** TTPO - TABLE OF *TCOPY* PROCESSING OPTIONS.
  3827.  
  3828.  
  3829. TTPO BSS 0
  3830. VFD 42/0LE,18/ESPI PROCESS PARITY ERRORS
  3831. VFD 42/0LT,18/TLLI TRUNCATE LONG LINES
  3832. CON 0
  3833. TTCV SPACE 4,10
  3834. ** TTCV - TABLE OF TERMINATION CONDITION VALUES.
  3835.  
  3836.  
  3837. TTCV BSS 0
  3838. VFD 42/0LI,18/-1 END OF INFORMATION
  3839. VFD 42/0LEOI,18/-1
  3840. VFD 42/0LD,18/0 DOUBLE END OF FILE
  3841. VFD 42/0LEOD,18/0
  3842. VFD 42/0LF,18/1 FILE COUNT
  3843. VFD 42/0LEOF,18/1
  3844. CON 0 END OF TABLE
  3845. GPS SPACE 4,10
  3846. ** GPS - GET PRU SIZES.
  3847. *
  3848. * ENTRY (A0) = FWA FET.
  3849. *
  3850. * EXIT (A0+PRU) = PRU SIZE, IF NOT PREVIOUSLY SET.
  3851. *
  3852. * USES A - 1, 4, 6.
  3853. * X - 1, 4, 6.
  3854. *
  3855. * CALLS CIO=.
  3856.  
  3857.  
  3858. GPS SUBR ENTRY/EXIT
  3859. SA4 A0+PRU
  3860. PL X4,GPSX IF PRU SIZE ALREADY SET
  3861. OPEN A0,READNR,R
  3862. SA1 A0+4 GET PRU SIZE
  3863. LX1 -18
  3864. SX6 X1
  3865. SA6 A4
  3866. EQ GPSX RETURN
  3867. PER SPACE 4,10
  3868. ** PER - PRESET ERROR PROCESSOR.
  3869. *
  3870. * ENTRY (B5) = FWA MESSAGE, IF ENTRY AT *PER* OR *PER1*.
  3871. * (X1) = FILE NAME, IF ENTRY AT *PER*.
  3872. *
  3873. * USES B - 2, 5.
  3874. * X - 1, 2.
  3875. *
  3876. * CALLS MSG=, SNM, SYS=.
  3877.  
  3878.  
  3879. PER2 SB5 PERA * ARGUMENT ERROR.*
  3880. EQ PER1 ISSUE ERROR MESSAGE
  3881.  
  3882. PER MX2 42 SET NAME IN MESSAGE
  3883. SB2 1RX
  3884. BX1 X2*X1
  3885. RJ SNM
  3886. PER1 MESSAGE B5,0
  3887. ABORT
  3888.  
  3889.  
  3890. PERA DATA C* ARGUMENT ERROR.*
  3891. PERB DATA C* BLOCK SIZE TOO LARGE ON XXXXXXX.*
  3892. PERC DATA C* BLOCK SIZE TOO SMALL ON XXXXXXX.*
  3893. PERD DATA C* COPY FL ABOVE USER LIMIT.*
  3894. PERE DATA C* FILE NAME CONFLICT.*
  3895. PERF DATA C* INCORRECT COPY.*
  3896. PERG DATA C* INCORRECT NOISE SIZE ON XXXXXXX.*
  3897. PERH DATA C* UNLABELED TAPE REQUIRED - XXXXXXX.*
  3898. PERI DATA C* UNRECOGNIZED TERMINATION CONDITION.*
  3899. PERJ DATA C* UNRECOGNIZED BACKSPACE CODE.*
  3900. PERK DATA C* BLOCK SIZE NOT APPLICABLE.*
  3901. PERL DATA C* PROCESSING OPTION NOT APPLICABLE.*
  3902. RBL SPACE 4,40
  3903. ** RBL - RESET BUFFER LENGTHS.
  3904. *
  3905. * WHEN NO MANIPULATION OF DATA IS REQUIRED (COMPATIBLE FILES
  3906. * AND SAME PRU SIZE, DOES NOT APPLY TO *TCOPY*), A SINGLE
  3907. * BUFFER COPY WILL BE USED. FOR *COPY* L TO L AND F TO F
  3908. * TAPE COPIES, THE SINGLE BUFFER SIZE WILL BE SET TO PROVIDE
  3909. * ROOM FOR AT LEAST 6 BLOCKS IN THE CIO BUFFER, OR A BUFFER
  3910. * SIZE OF *SBUFL*, WHICHEVER IS GREATER. FOR ALL OTHER
  3911. * SINGLE-BUFFER COPIES, A BUFFER SIZE OF *SBUFL* WILL BE USED.
  3912. *
  3913. * FOR ALL OTHER TYPES OF COPIES, A DOUBLE BUFFER COPY WILL
  3914. * BE USED. FOR *COPY* L OR F TO MS/I/LI/SI-B OR MS/I/LI/SI-B
  3915. * TO L OR F TAPE COPY, THE BUFFER SIZES WILL BE SET TO PROVIDE
  3916. * ROOM FOR AT LEAST 3 BLOCKS IN EACH BUFFER, OR A BUFFER
  3917. * SIZE OF *FBUFL*, WHICHEVER IS GREATER. FOR ALL OTHER
  3918. * DOUBLE-BUFFER COPIES, A BUFFER SIZE OF *FBUFL* WILL BE USED.
  3919. *
  3920. * IF THE FL REQUIRED TO SUPPORT THESE BUFFER SIZES IS LESS
  3921. * THAN THE MINIMUM OF THE CURRENT MAXIMUM FL (MAXFL) AND THE
  3922. * LOWER OPTIMUM FL (LOFL), THE BUFFER SIZES WILL BE INCREASED
  3923. * UNTIL THE FL REACHES THIS VALUE.
  3924. *
  3925. * IF THE FL REQUIRED TO SUPPORT THESE BUFFER SIZES EXCEEDS THE
  3926. * MINIMUM OF THE CURRENT MAXIMUM FL (MAXFL) AND THE MAXIMUM FL
  3927. * FACTOR (MFLF), THE BUFFER SIZES WILL BE REDUCED UNTIL THE FL
  3928. * REACHES THIS VALUE.
  3929. *
  3930. * ENTRY (I+PRU) = INPUT FILE PRU SIZE.
  3931. * (O+PRU) = OUTPUT FILE PRU SIZE.
  3932. *
  3933. * EXIT (WBL) = WORKING BUFFER LENGTH.
  3934. * (IBL) = INPUT BUFFER LENGTH.
  3935. * (OBL) = OUTPUT BUFFER LENGTH.
  3936. *
  3937. * USES A - 1, 2, 3, 4, 6, 7.
  3938. * B - 3, 4.
  3939. * X - ALL.
  3940. *
  3941. * CALLS SYS=.
  3942.  
  3943.  
  3944. RBL SUBR ENTRY/EXIT
  3945. MEMORY CM,STAT,R GET CURRENT MAXIMUM FL (MAXFL)
  3946. SA3 STAT
  3947. AX3 30
  3948. SX0 MFLF MAXIMUM FL FACTOR
  3949. SX6 X3
  3950. SX5 LOFL LOWER OPTIMUM FL
  3951. SX3 X3-2
  3952. SA6 MAXFL
  3953. IX7 X3-X0
  3954. PL X7,RBL1 IF MAXFL .GE. MFLF
  3955. IX2 X3-X5
  3956. BX0 X3 (X0) = MINIMUM(MAXFL,MFLF)
  3957. PL X2,RBL1 IF MAXFL .GE. LOFL
  3958. BX5 X3 (X5) = MINIMUM(MAXFL,LOFL)
  3959. RBL1 SA1 I+ODF
  3960. SA2 O+ODF
  3961. SB3 X1 (B3) = I+ODF
  3962. SB4 X2 (B4) = O+ODF
  3963. SA1 I+PRU GET INPUT FILE PRU SIZE
  3964. SA2 O+PRU GET OUTPUT FILE PRU SIZE
  3965. SX3 3 ALLOW FOR CONTROL WORDS
  3966. IX1 X1+X3
  3967. IX2 X2+X3
  3968. SX6 X2-BUFL
  3969. NG X6,RBL2 IF PRU SIZE SHORTER THAN DEFAULT WBL
  3970. BX6 X2
  3971. SA6 WBL SET WORKING BUFFER = OUTPUT PRU SIZE
  3972. RBL2 SA4 CRI GET CALLING ROUTINE INDICATOR
  3973. ZR X4,RBL10 IF *TCOPY*
  3974. NE B3,B4,RBL7 IF NOT SAME FORMAT FILES
  3975. SA3 NSFG
  3976. NZ X3,RBL7 IF DOUBLE BUFFER REQUIRED
  3977. SX7 SBUFL DEFAULT SINGLE BUFFER LENGTH
  3978. IX3 X1-X2
  3979. BX2 X7
  3980. SX6 SBUF FWA SINGLE BUFFER
  3981. LT B3,RBL3 IF F TO F TAPE COPY
  3982. GT B3,B1,RBL3 IF L TO L TAPE COPY
  3983. SA1 I+CWF
  3984. ZR X1,RBL10 IF CONTROL WORD READ DISABLED
  3985. SA1 O+CWF
  3986. ZR X1,RBL10 IF CONTROL WORD WRITE DISABLED
  3987. ZR X3,RBL4 IF SAME PRU SIZE
  3988. EQ RBL10 CHECK CALCULATED FL
  3989.  
  3990. * RESET BUFFER LENGTHS FOR SINGLE BUFFER COPY.
  3991.  
  3992. RBL3 PL X4,RBL4 IF NOT *COPY*
  3993. LX7 X1,B1 SINGLE BUFFER = INPUT BLOCK SIZE * 6
  3994. IX7 X7+X1
  3995. LX7 1
  3996. SX4 X7-SBUFL
  3997. PL X4,RBL4 IF BUFFER SIZE .GE. *SBUFL*
  3998. SX7 SBUFL SET DEFAULT SINGLE BUFFER SIZE
  3999. RBL4 IX3 X6+X7
  4000. IX4 X5-X3
  4001. NG X4,RBL5 IF CALCULATED FL .GT. MINIMUM(MAXFL,LOFL)
  4002. IX7 X7+X4 INCREASE SINGLE BUFFER SIZE
  4003. BX2 X7
  4004. EQ RBL6 SET SINGLE BUFFER SIZE
  4005.  
  4006. RBL5 IX4 X0-X3
  4007. BX2 X7
  4008. PL X4,RBL6 IF CALCULATED FL .LE. MINIMUM(MAXFL,MFLF)
  4009. IX7 X7-X4 DECREASE SINGLE BUFFER SIZE
  4010. BX2 X7
  4011. LX3 X1,B1
  4012. IX3 X3-X7
  4013. NG X3,RBL6 IF BUFFER STILL AT LEAST TWO BLOCKS LONG
  4014. BX2 X2-X2 FORCE BUFFER THRESHOLD = 0
  4015.  
  4016. RBL6 SA6 FWWB SET FWA SINGLE BUFFER
  4017. SX1 3 CALCULATE SINGLE BUFFER THRESHOLD
  4018. SA7 OBL SET OUTPUT BUFFER LENGTH
  4019. IX6 X2/X1
  4020. BX7 X7-X7
  4021. SA7 A7-B1 CLEAR INPUT BUFFER LENGTH
  4022. SA6 SBT BUFFER THRESHOLD = 1/3(BUFFER SIZE)
  4023. SA7 A7-B1 CLEAR WORKING BUFFER LENGTH
  4024. EQ RBLX RETURN
  4025.  
  4026. * RESET BUFFER LENGTHS FOR DOUBLE BUFFER COPY.
  4027.  
  4028. RBL7 SX3 X1
  4029. IX4 X3-X2
  4030. PL X4,RBL8 IF IBL .GE. OBL
  4031. SX3 X2 (X3) = MAXIMUM(IBL,OBL)
  4032. RBL8 LX6 X3,B1 SET BUFFER SIZE = MAXIMUM(IBL,OBL) * 3
  4033. IX6 X6+X3
  4034. SX4 X6-FBUFL
  4035. PL X4,RBL9 IF BUFFER SIZE .GE. *FBUFL*
  4036. SX6 FBUFL SET DEFAULT BUFFER SIZE
  4037. RBL9 SX7 X3 SET WORKING BUFFER = MAXIMUM(IBL,OBL)
  4038. SA6 IBL SET INPUT BUFFER LENGTH
  4039. SA7 WBL
  4040. SA6 OBL SET OUTPUT BUFFER LENGTH
  4041.  
  4042. * CHECK CALCULATED FL FOR DOUBLE BUFFER COPY.
  4043.  
  4044. RBL10 SA1 IBL
  4045. SA2 OBL
  4046. SA3 WBL
  4047. SX3 BUF1+1+X3
  4048. IX3 X1+X3
  4049. IX3 X3+X2
  4050. IX4 X5-X3
  4051. IX3 X3-X0
  4052. PL X4,RBL11 IF CALCULATED FL .LE. MINIMUM(MAXFL,LOFL)
  4053. NG X3,RBLX IF CALCULATED FL .LT. MINIMUM(MAXFL,MFLF)
  4054. AX3 1 DECREASE FL TO USE MINIMUM(MAXFL,MFLF)
  4055. IX6 X1-X3
  4056. SA6 A1
  4057. IX7 X2-X3
  4058. SA7 A2
  4059. EQ RBLX RETURN
  4060.  
  4061. RBL11 AX4 1 INCREASE FL TO USE MINIMUM(MAXFL,LOFL)
  4062. IX6 X1+X4
  4063. SA6 A1
  4064. IX7 X2+X4
  4065. SA7 A2
  4066. EQ RBLX RETURN
  4067. RBP SPACE 4,20
  4068. ** RBP - RESET BUFFER POINTERS.
  4069. *
  4070. * RESETS INPUT AND OUTPUT BUFFER POINTERS (FIRST, IN, OUT,
  4071. * AND LIMIT) AND FIELD LENGTH AS REQUIRED, OVERLAYING
  4072. * NON-APPLICABLE CODE.
  4073. *
  4074. * ENTRY (FWWB) = FWA WORKING BUFFER.
  4075. * (WBL) = WORKING BUFFER LENGTH.
  4076. * (IBL) = INPUT BUFFER LENGTH.
  4077. * (OBL) = OUTPUT BUFFER LENGTH.
  4078. * (MAXFL) = CURRENT MAXIMUM FIELD LENGTH.
  4079. *
  4080. * EXIT TO *PER1*, IF FL .GT. USER LIMIT.
  4081. *
  4082. * USES A - 1, 2, 3, 5, 6, 7.
  4083. * B - 5.
  4084. * X - 0, 1, 2, 3, 5, 6, 7.
  4085. *
  4086. * CALLS SYS=.
  4087.  
  4088.  
  4089. RBP SUBR ENTRY/EXIT
  4090. SA3 FWWB FWA WORKING BUFFER
  4091. SA1 WBL WORKING BUFFER LENGTH
  4092. SA2 I+1 SET INPUT FILE CIO BUFFER POINTERS
  4093. MX0 42
  4094. BX2 X0*X2
  4095. IX7 X1+X3
  4096. BX6 X2+X7
  4097. SA6 A2
  4098. SA7 A6+B1
  4099. SA1 A1+B1 INPUT BUFFER LENGTH
  4100. SA7 A7+B1
  4101. SA2 A7+B1
  4102. IX7 X7+X1
  4103. BX2 X0*X2
  4104. BX6 X2+X7
  4105. NZ X1,RBP1 IF NOT SINGLE BUFFERING
  4106. SA3 A1+1 SINGLE BUFFER LENGTH
  4107. IX3 X7+X3
  4108. BX6 X2+X3
  4109. RBP1 SA3 O+1 SET OUTPUT FILE CIO BUFFER POINTERS
  4110. SA6 A2
  4111. BX3 X0*X3
  4112. BX6 X3+X7
  4113. SA6 A3
  4114. SA7 A6+B1
  4115. SA1 A1+B1 OUTPUT BUFFER LENGTH
  4116. SA7 A7+B1
  4117. SA2 A7+B1
  4118. IX7 X7+X1
  4119. BX2 X0*X2
  4120. BX6 X2+X7
  4121. SA6 A2
  4122. SX1 B1+B1
  4123. IX7 X7+X1
  4124. SA5 MAXFL GET CURRENT MAXIMUM FL
  4125. SB5 PERD * COPY FL ABOVE USER LIMIT.*
  4126. IX1 X5-X7
  4127. LX7 30
  4128. NG X1,PER1 IF REQUIRED FL .GT. MAXIMUM FL
  4129. SA7 STAT
  4130. MEMORY CM,STAT,R INCREASE FL
  4131. EQ RBPX RETURN
  4132. RPV SPACE 4,15
  4133. ** RPV - RETURN PARAMETER VALUE.
  4134. *
  4135. * ENTRY (A1) = FWA PARAMETER VALUE TABLE.
  4136. * (X1) = FIRST ENTRY FROM PARAMETER VALUE TABLE.
  4137. * (X4) = PARAMETER, LEFT-JUSTIFIED, ZERO FILLED.
  4138. *
  4139. * EXIT (X1) = 0, IF PARAMETER NOT FOUND IN TABLE.
  4140. * (X6) = PARAMETER VALUE IF MATCH FOUND, OTHERWISE
  4141. * UNCHANGED.
  4142. *
  4143. * USES A - 1.
  4144. * X - 1, 2, 3, 6.
  4145.  
  4146.  
  4147. RPV2 SX6 X1+ RETURN PARAMETER VALUE
  4148.  
  4149. RPV SUBR ENTRY/EXIT
  4150. RPV1 MX2 42
  4151. ZR X1,RPVX IF PARAMETER NOT FOUND
  4152. BX3 X2*X1
  4153. BX3 X3-X4
  4154. ZR X3,RPV2 IF MATCH
  4155. SA1 A1+B1
  4156. EQ RPV1 CONTINUE SEARCH
  4157. SFM SPACE 4,10
  4158. ** SFM - SET FILE MODE.
  4159. *
  4160. * EXIT CODED MODE SET ON INPUT, OUTPUT, OR BOTH FILES,
  4161. * IF REQUESTED.
  4162. *
  4163. * USES A - 1, 2, 6.
  4164. * B - 2.
  4165. * X - 1, 2, 6.
  4166.  
  4167.  
  4168. SFM SUBR ENTRY/EXIT
  4169. SA2 CM GET MODE INDICATOR
  4170. ZR X2,SFMX IF CODED MODE NOT REQUESTED
  4171. SB2 X2
  4172. SX2 B1+B1
  4173. GT B2,B1,SFM1 IF SECOND FILE ONLY
  4174. SA1 I
  4175. BX6 -X2*X1
  4176. SA6 A1
  4177. SFM1 EQ B2,B1,SFMX IF FIRST FILE ONLY
  4178. SA1 O
  4179. BX6 -X2*X1
  4180. SA6 A1
  4181. EQ SFMX RETURN
  4182. SPS SPACE 4,10
  4183. ** SPS - SET PRU SIZE ON S AND L TAPES.
  4184. *
  4185. * ENTRY (A0) = FWA FET.
  4186. *
  4187. * EXIT MLRS FIELD OF S OR L TAPE FET SET TO PRU SIZE.
  4188. * (A0+PRU) = PRU SIZE, IF S OR L TAPE.
  4189. * TO *PER*, IF INCORRECT BLOCK SIZE.
  4190. *
  4191. * USES A - 1, 2, 6, 7.
  4192. * B - 2, 5.
  4193. * X - 0, 1, 2, 3, 4, 6, 7.
  4194.  
  4195.  
  4196. SPS SUBR ENTRY/EXIT
  4197. SA1 A0+SLF
  4198. SB2 X1+
  4199. LE B2,SPSX IF NOT S OR L TAPE
  4200. SX6 DLPS DEFAULT L TAPE PRU SIZE
  4201. GT B2,B1,SPS1 IF L TAPE
  4202. SX6 DSPS DEFAULT S TAPE PRU SIZE
  4203. SPS1 SA1 MCC MAXIMUM CHARACTER COUNT
  4204. ZR X1,SPS2 IF CHARACTER COUNT NOT SPECIFIED
  4205. SX2 9 CALCULATE PRU SIZE
  4206. BX0 X1
  4207. IX1 X1+X2
  4208. SX2 X2+B1
  4209. BX3 X2
  4210. IX6 X1/X2
  4211. IX7 X6*X3 CALCULATE UNUSED BIT COUNT
  4212. SA2 A0+NSZ CHECK CHARACTER COUNT AGAINST NOISE SIZE
  4213. IX7 X7-X0
  4214. SX4 6
  4215. AX2 36
  4216. IX7 X7*X4
  4217. SA1 A0
  4218. IX4 X0*X4
  4219. SB5 PERC * BLOCK SIZE TOO SMALL ON LFN.*
  4220. IX4 X4-X2
  4221. SA7 FUBC
  4222. NG X4,PER IF BLOCK SIZE TOO SMALL
  4223. GT B2,B1,SPS2 IF L TAPE
  4224. SX2 MCBS CHECK CHARACTER COUNT AGAINST MAXIMUM
  4225. SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
  4226. IX2 X2-X0
  4227. NG X2,PER IF BLOCK SIZE TOO LARGE
  4228. SPS2 SA6 A0+6 SET MLRS FIELD OF FET
  4229. SA6 A0+PRU SET PRU SIZE ON S OR L TAPE
  4230. EQ SPSX RETURN
  4231. STC SPACE 4,20
  4232. ** STC - SET TERMINATION CONDITION.
  4233. *
  4234. * ENTRY (B7) = REMAINING ARGUMENT COUNT.
  4235. * (A5) = ADDRESS OF PREVIOUS ARGUMENT.
  4236. *
  4237. * EXIT (B7) = UPDATED REMAINING ARGUMENT COUNT - 1.
  4238. * (A5) = UPDATED ADDRESS OF PREVIOUS ARGUMENT.
  4239. * (TM) = COPYX TERMINATION CONDITION (0 IF ZERO
  4240. * RECORD, .GT. 0 IF RECORD NAME, .LT. 0 IF
  4241. * RECORD COUNT).
  4242. * (RN - RN+1) = COPYX TERMINATION RECORD NAME AND
  4243. * TYPE, IF SPECIFIED.
  4244. * (BK1) = COPYX LFN1 BACKSPACE CONTROL.
  4245. * (BK2) = COPYX LFN2 BACKSPACE CONTROL.
  4246. * TO *PER2*, IF ARGUMENT ERROR.
  4247. *
  4248. * USES X - 0, 1, 2, 3, 5, 6, 7.
  4249. * B - 2, 5, 7.
  4250. * A - 1, 2, 5, 6, 7.
  4251. *
  4252. * CALLS DXB.
  4253.  
  4254.  
  4255. STC SUBR ENTRY/EXIT
  4256. SA5 A5+B1
  4257. MX0 42
  4258. SA1 =2L00
  4259. BX5 X0*X5
  4260. BX6 X1-X5
  4261. ZR X5,STC5 IF BLANK ARGUMENT
  4262. ZR X6,STC4 IF *00*
  4263. RJ DXB CONVERT NUMBER
  4264. SB5 PERI * UNRECOGNIZED TERMINATION CONDITION.*
  4265. NZ X4,STC1 IF ASSEMBLY ERROR
  4266. ZR X6,PER1 IF COUNT = 0
  4267. SA6 CT SET COUNT
  4268. EQ STC5
  4269.  
  4270. STC1 SA5 A5 SET NAME
  4271. MX0 42
  4272. SX3 X5-1R/ CHECK SEPARATOR
  4273. BX6 X0*X5
  4274. MX7 1
  4275. NZ X3,STC3 IF NO TYPE SPECIFIED
  4276. SB7 B7-B1
  4277. SA5 A5+B1 RECORD NAME
  4278. LX3 X6
  4279. SA2 STCA CHECK TYPE
  4280. BX6 X0*X5
  4281. STC2 ZR X2,PER1 IF TYPE NOT IDENTIFIED
  4282. BX7 X2-X3
  4283. SA2 A2+B1
  4284. NZ X7,STC2
  4285. SX7 A2-STCA-1 SET TYPE
  4286. STC3 SA6 RN SET RECORD NAME
  4287. SA7 A6+B1 SET TYPE
  4288. SX6 B1
  4289. STC4 SA6 TM SET TERMINATION CONDITION
  4290. SX7 -B1 SET NEGATIVE COUNT
  4291. SA7 CT
  4292.  
  4293. * PROCESS BACKSPACE CONTROL.
  4294.  
  4295. STC5 EQ B7,B1,STCX IF END OF ARGUMENTS
  4296. SB7 B7-B1
  4297. SA5 A5+B1 CHECK BACKSPACE ARGUMENT
  4298. MX1 42
  4299. BX5 X1*X5
  4300. LX5 6
  4301. BX1 X1*X5
  4302. SB5 PERJ * UNRECOGNIZED BACKSPACE CODE.*
  4303. NZ X1,PER1 IF BACKSPACE CODE TOO LONG
  4304. SB2 X5-1R0
  4305. ZR X5,STCX IF NULL PARAMETER
  4306. ZR B2,STCX IF ZERO ARGUMENT
  4307. NG B2,PER1 IF ALPHABETIC CHARACTER
  4308. SB2 B2-2
  4309. GT B2,B1,PER1 IF BACKSPACE CODE .GT. 3
  4310. SX6 B0
  4311. ZR B2,STC6 IF BACKSPACE CODE = 2
  4312. SX6 B1 SET FILE 1 BACKSPACE
  4313. SX7 B0
  4314. STC6 NG B2,STC7 IF BACKSPACE CODE = 1
  4315. SX7 B1 SET FILE 2 BACKSPACE
  4316. STC7 SA6 BK1
  4317. SA7 BK2
  4318. EQ STCX RETURN
  4319.  
  4320.  
  4321. STCA BSS 0
  4322. LOC 0
  4323. .E ECHO ,RT=("RTMIC")
  4324. .A IFC NE,/RT//
  4325. DATA L/RT/
  4326. .A ELSE
  4327. DATA 1
  4328. .A ENDIF
  4329. .E ENDD
  4330. CON 0 END OF TABLE
  4331. LOC *O
  4332. VCY SPACE 4,15
  4333. ** VCY - VALIDATE COPY.
  4334. *
  4335. * EXIT TO *PER*, IF INCORRECT NOISE SIZE OR BLOCK SIZE.
  4336. * TO *PER1*, IF INCORRECT COPY OR BLOCK SIZE OR
  4337. * PROCESSING OPTION NOT APPLICABLE.
  4338. *
  4339. * USES A - 0, 1, 2, 3, 4, 6.
  4340. * B - 3, 4, 5.
  4341. * X - 0, 1, 2, 3, 4, 6, 7.
  4342. *
  4343. * CALLS CNS, SFM.
  4344.  
  4345.  
  4346. VCY SUBR ENTRY/EXIT
  4347.  
  4348. * VALIDATE COPY FILE TYPES.
  4349.  
  4350. SA1 I+SLF
  4351. SA2 O+SLF
  4352. SB3 X1
  4353. SB4 X2
  4354. SB5 PERF * INCORRECT COPY.*
  4355. ZR B4,VCY1 IF OUTPUT FILE NOT S, L, OR F TAPE
  4356. EQ B3,B4,VCY1 IF INPUT = OUTPUT FILE TYPE
  4357. LT B3,PER1 IF INPUT FILE IS F TAPE
  4358. LT B4,PER1 IF OUTPUT FILE IS F TAPE
  4359. GT B3,B1,PER1 IF INPUT FILE IS L TAPE
  4360. NE B3,B1,VCY1 IF NOT S TO L TAPE COPY
  4361. SX6 B1 PROCESS AS S TO S TAPE COPY
  4362. SB4 B1
  4363. SA6 A2+
  4364.  
  4365. * SET FILE MODE.
  4366.  
  4367. VCY1 RJ SFM
  4368.  
  4369. * VALIDATE R AND D PROCESSING OPTIONS.
  4370.  
  4371. SA1 RSAI RECORD SPLIT ALLOWED INDICATOR
  4372. SA2 NPDI NOISE BLOCKS PADDED/DELETED INDICATOR
  4373. BX1 X1+X2
  4374. ZR X1,VCY2 IF R AND D PROCESSING OPTIONS NOT SELECTED
  4375. SB5 PERL * PROCESSING OPTION NOT APPLICABLE.*
  4376. NZ B3,PER1 IF INPUT NOT MS/I/LI/SI-B
  4377. LE B4,PER1 IF OUTPUT NOT S OR L TAPE
  4378.  
  4379. * CALCULATE NOISE SIZE FOR S, L, AND F TAPES. VERIFY NOISE
  4380. * SIZES IF S TO S, L TO L, OR F TO F TAPE COPY.
  4381.  
  4382. VCY2 SA0 I CALCULATE INPUT FILE NOISE SIZE
  4383. RJ CNS
  4384. SA2 NS NOISE SIZE IN CHARACTERS
  4385. SX3 6
  4386. IX1 X2*X3
  4387. ZR X1,VCY2.1 IF NS PARAMETER NOT SPECIFIED
  4388. IX7 X6-X1
  4389. ZR B3,PER2 IF INPUT TAPE NOT S/L/F FORMAT
  4390. PL X7,VCY2.1 IF NS PARAMETER .LE. INPUT TAPE NOISE SIZE
  4391. BX6 X2 NOISE SIZE IN CHARACTERS
  4392. SA6 A0+NSZ INCREASE INPUT TAPE NOISE SIZE TO NS
  4393. SX6 B1 FLAG FOR NOISE SIZE PROCESSING
  4394. SA6 NSFG
  4395. RJ CNS
  4396. VCY2.1 BX0 X6
  4397. SA0 O CALCULATE OUTPUT FILE NOISE SIZE
  4398. RJ CNS
  4399. NE B3,B4,VCY3 IF INPUT .NE. OUTPUT FILE TYPE
  4400. ZR B3,VCY3 IF NOT S, L, OR F TAPE COPY
  4401. IX6 X0-X6
  4402. PL X6,VCY2.2 IF INPUT NOISE SIZE .GT. OUTPUT NOISE SIZE
  4403. SA1 O+NSZ SET INPUT NOISE SIZE = OUTPUT NOISE SIZE
  4404. BX6 X1
  4405. SA6 I+NSZ
  4406. SA1 NS
  4407. SX6 B1+ SET NOISE SIZE PROCESSING IN EFFECT
  4408. SA6 NSFG
  4409. ZR X1,VCY2.2 IF NOISE SIZE PARAMETER NOT SPECIFIED
  4410. SX6 B1+B1 NOISE BLOCK SIZE AUTOMATICALLY INCREASED
  4411. SA6 A6 SET NOISE SIZE FORCED UP FLAG
  4412.  
  4413. * VALIDATE F TO F TAPE COPY BLOCK SIZE.
  4414.  
  4415. VCY2.2 GE B3,VCY3 IF NOT F TO F TAPE COPY
  4416. SA2 I+PRU GET INPUT FILE BLOCK SIZE
  4417. SA3 O+PRU GET OUTPUT FILE BLOCK SIZE
  4418. IX3 X3-X2
  4419. SB5 PERC * BLOCK SIZE TOO SMALL ON LFN.*
  4420. NG X3,PER IF INPUT .GT. OUTPUT BLOCK SIZE
  4421.  
  4422. * VALIDATE BS AND CC PARAMETER USAGE.
  4423.  
  4424. VCY3 SA1 BS
  4425. SA2 CC
  4426. SX3 10
  4427. BX4 X1+X2
  4428. IX6 X1*X3
  4429. ZR X2,VCY4 IF CC NOT SPECIFIED
  4430. NZ X1,PER2 IF BS AND CC SPECIFIED
  4431. BX6 X2
  4432. VCY4 ZR X4,VCY5 IF BS AND CC NOT SPECIFIED
  4433. SA6 MCC
  4434. GE B3,B1,VCY5 IF S OR L INPUT TAPE
  4435. SB5 PERK * BLOCK SIZE NOT APPLICABLE.*
  4436. LE B4,PER1 IF NOT S OR L TAPE
  4437. VCY5 SA1 NSFG
  4438. ZR X1,VCYX IF NO NOISE PROCESSING
  4439. SB2 X1
  4440. SB5 VCYA * INSUFFICIENT NOISE SIZE.*
  4441. NE B2,B1,VCY6 IF NOISE SIZE AUTOMATICALLY INCREASED
  4442. SA1 NS
  4443. NZ X1,VCYX IF NOISE SIZE PARAMETER SPECIFIED
  4444. SB5 VCYB * NOISE BLOCK PROCESSING IN EFFECT.*
  4445. VCY6 MESSAGE B5,3
  4446. EQ VCYX RETURN
  4447.  
  4448.  
  4449. VCYA DATA C* INSUFFICIENT NOISE SIZE, AUTOMATICALLY INCREASED.*
  4450. VCYB DATA C* NOISE BLOCK PROCESSING IN EFFECT.*
  4451. VTY SPACE 4,15
  4452. ** VTY - VALIDATE TCOPY.
  4453. *
  4454. * EXIT TO *PER*, IF LABELED TAPE NOT ALLOWED OR INCORRECT
  4455. * NOISE SIZE, OR INCORRECT BLOCK SIZE.
  4456. * TO *PER1* IF INCORRECT FILE/CONVERSION TYPES FOR COPY.
  4457. * TO *PER2*, IF ARGUMENT ERROR.
  4458. *
  4459. * USES A - 0, 1, 2, 3, 4, 6, 7.
  4460. * B - 2, 3, 4, 5, 6, 7.
  4461. * X - 1, 2, 3, 4, 6, 7.
  4462. *
  4463. * CALLS CNS, SFM.
  4464.  
  4465.  
  4466. VTY8 SB2 O DISABLE CONTROL WORD WRITE FOR E/B TO MS
  4467. SX7 B0+
  4468. NZ B3,VTY9 IF NOT MS/I/LI/SI-B INPUT FILE
  4469. SB2 I DISABLE CONTROL WORD READ FOR MS TO E/B
  4470. VTY9 SA7 B2+CWF DISABLE CONTROL WORD READ/WRITE
  4471.  
  4472. VTY SUBR ENTRY/EXIT
  4473.  
  4474. * VALIDATE TCOPY FILE TYPES AND CONVERSION FORMAT.
  4475.  
  4476. SA1 I+SLF
  4477. SA2 O+SLF
  4478. SA3 CF
  4479. SB3 X1
  4480. SB4 X2
  4481. SB5 PERF * INCORRECT COPY.*
  4482. LT B3,B1,VTY1 IF NOT S/L INPUT TAPE
  4483. SA2 TLLI CHECK FOR INCORRECT PROCESSING OPTION
  4484. SB5 PERL * PROCESSING OPTION NOT APPLICABLE.*
  4485. NZ X2,PER1 IF *PO=T* PROCESSING OPTION SPECIFIED
  4486. SA1 SK
  4487. SA0 I
  4488. NZ X1,VTY2 IF SKIP SET
  4489. NZ B4,PER1 IF OUTPUT FILE NOT MS/OD/I/LI/SI-B
  4490. EQ VTY2 CONTINUE TCOPY VALIDATION
  4491.  
  4492. VTY1 NZ B3,PER1 IF INPUT FILE NOT MS/OD/I/LI/SI-B
  4493. NE B4,B1,PER1 IF OUTPUT FILE IS NOT S TAPE
  4494. NG X3,PER1 IF NOT E OR B CONVERSION FORMAT
  4495. SA0 O
  4496.  
  4497. * ENFORCE UNLABELED S TAPE FOR E, B, AND X CONVERSION.
  4498.  
  4499. VTY2 BX6 X3 SET CONVERSION FORMAT ON S TAPE
  4500. SB7 -B1
  4501. SA6 A0+TCF
  4502. SB6 X3+
  4503. LT B6,B7,VTY3 IF SI-C CONVERSION
  4504. SA2 A0+TRK CHECK LABEL TYPE
  4505. SA1 A0
  4506. SX2 X2
  4507. SB5 PERH * UNLABELED TAPE REQUIRED - LFN.*
  4508. NZ X2,PER IF LABELED S TAPE
  4509.  
  4510. * VALIDATE CC PARAMETER USAGE AND SET MAXIMUM CHARACTER COUNT.
  4511.  
  4512. VTY3 SA3 CC
  4513. SA4 TTCD+B6 DEFAULT MAXIMUM CHARACTER COUNT
  4514. SX6 X4
  4515. ZR X3,VTY5 IF CC PARAMETER NOT SPECIFIED
  4516. BX6 X3
  4517. SB5 PERK * BLOCK SIZE NOT APPLICABLE.*
  4518. LE B6,PER1 IF NOT E OR B CONVERSION
  4519. SX2 MCBS
  4520. SB5 PERB * BLOCK SIZE TOO LARGE ON LFN.*
  4521. IX2 X2-X3
  4522. SA1 A0
  4523. NG X2,PER IF EXCEEDS MAXIMUM BLOCK SIZE
  4524. GT B6,B1,VTY4 IF B CONVERSION
  4525. SX2 A0-I
  4526. ZR X2,VTY4 IF READING E TAPE
  4527. LX3 -1 TRUNCATE CC VALUE TO EVEN NUMBER
  4528. PL X3,VTY5 IF EVEN NUMBER
  4529. SX6 X6-1
  4530. EQ VTY5 SET MODE ON S TAPE
  4531.  
  4532. VTY4 SX2 10 ROUND UP CC VALUE TO MULTIPLE OF 10
  4533. SX6 X6+9
  4534. BX1 X2
  4535. IX6 X6/X2
  4536. IX6 X6*X1
  4537.  
  4538. * GENERATE CODED MODE FLAG.
  4539.  
  4540. VTY5 AX4 18
  4541. SA6 MCC
  4542. SB2 X4
  4543. BX6 X6-X6
  4544. EQ B2,VTY7 IF BINARY MODE
  4545. SX6 B1
  4546. EQ B3,B1,VTY6 IF S INPUT TAPE
  4547. SX6 B1+1
  4548. VTY6 EQ B2,B1,VTY7 IF CODED MODE
  4549. SA1 A0+TRK GET TRACK BITS
  4550. LX1 59-58
  4551. NG X1,VTY7 IF 7-TRACK TAPE
  4552. SX6 B0
  4553. VTY7 SA6 CM
  4554. RJ SFM SET FILE MODE
  4555.  
  4556. * CALCULATE NOISE SIZE AND VALIDATE NOISE FOR X, SI-CODED, AND
  4557. * I FILES (REQUIRED NOISE SIZE OF EIGHT FOR 7-TRACK, SIX FOR
  4558. * 9-TRACK). CALCULATE NOISE SIZE FOR E/B TAPE AND SET TO THROW
  4559. * AWAY BLOCKS LESS THAN THE NS PARAMETER WHICH THE USER
  4560. * SPECIFIED.
  4561.  
  4562. RJ CNS CALCULATE NOISE SIZE ON S TAPE
  4563. SA2 NS CHECK NOISE SIZE PARAMETER
  4564. PL B6,VTY7.2 IF NOT X, SI-C, OR I CONVERSION
  4565. NZ X2,PER2 IF NOISE SIZE PARAMETER SPECIFIED
  4566. SA1 A0+
  4567. SX6 X6-48
  4568. SB5 PERG * INCORRECT NOISE SIZE ON LFN.*
  4569. ZR X6,VTYX IF CORRECT NOISE SIZE
  4570. PL X6,PER IF INCORRECT NOISE SIZE
  4571. SA2 A0+TRK GET TRACK BIT
  4572. SX6 8
  4573. PL X2,VTY7.1 IF 7 TRACK
  4574. SX6 6
  4575. VTY7.1 SA6 A0+NSZ FORCE IT UP TO 48 BITS
  4576. RJ CNS
  4577. SX6 B1+B1 SET FLAG FOR INSUFFICIENT NOISE SIZE
  4578. SA6 NSFG
  4579. EQ VTYX RETURN
  4580.  
  4581. VTY7.2 SX3 6
  4582. IX1 X3*X2
  4583. ZR X1,VTY8 IF NS PARAMETER NOT SPECIFIED
  4584. IX6 X6-X1
  4585. PL X6,VTY8 IF NS PARAMETER .LE. INPUT TAPE NOISE SIZE
  4586. BX6 X2
  4587. SA6 A0+NSZ THROW AWAY BLOCKS .LT. NS PARAMETER
  4588. RJ CNS
  4589. SX6 B1+ SET FLAG FOR NOISE SIZE PROCESSING
  4590. SA6 NSFG
  4591. EQ VTY8 DISABLE CONTROL WORD WRITE FOR E/B TO MS
  4592. TTCD SPACE 4,10
  4593. ** TTCD - TABLE OF TCOPY DEFAULTS FOR CONVERSION TYPE.
  4594. *
  4595. *T 42/MODE, 18/CHCNT
  4596. * MODE 0=BINARY, 1=CODED, 2=CODED 7-TRACK, BINARY 9-TRACK
  4597. * CHCNT DEFAULT MAXIMUM CHARACTER COUNT
  4598. *
  4599. * NOTE - THIS TABLE IS BOTH POSITIVELY AND NEGATIVELY INDEXED.
  4600.  
  4601.  
  4602. VFD 42/0,18/1001B*10 I
  4603. VFD 42/2,18/200B*10 SI-C
  4604. VFD 42/0,18/1000B*10 X
  4605. TTCD CON 0
  4606. VFD 42/1,18/136 E
  4607. VFD 42/1,18/150 B
  4608. SPACE 4,10
  4609. ** PRESET DATA STORAGE.
  4610.  
  4611.  
  4612. BS CON 0 BLOCK SIZE
  4613. CC CON 0 CHARACTER COUNT
  4614. CF CON 0 CONVERSION FORMAT
  4615. CM CON 0 CODED MODE (-1=BOTH,0=NEITHER,1=1ST,2=2ND)
  4616. DCT CON 1L1 DISPLAY CODE COPY COUNT
  4617. MAXFL CON 0 CURRENT MAXIMUM FIELD LENGTH
  4618. MCC CON 0 MAXIMUM CHARACTER COUNT
  4619. PO CON 0 PROCESSING OPTIONS
  4620. STAT VFD 30/-1,30/0 FIELD LENGTH STATUS WORD
  4621.  
  4622. * THE ORDER OF THE FOLLOWING MUST BE PRESERVED.
  4623.  
  4624. WBL CON BUFL WORKING BUFFER LENGTH
  4625. IBL CON FBUFL INPUT BUFFER LENGTH
  4626. OBL CON FBUFL OUTPUT BUFFER LENGTH
  4627. SPACE 4,10
  4628. ** COMMON DECKS.
  4629.  
  4630.  
  4631. *CALL COMCARM
  4632. *CALL COMCCPA
  4633. *CALL COMCDXB
  4634. *CALL COMCLFM
  4635. *CALL COMCPOP
  4636. *CALL COMCUSB
  4637. SPACE 4,10
  4638. ** PRESET BUFFERS.
  4639.  
  4640.  
  4641. PASB EQU * POSITIONAL ARGUMENT STRING BUFFER
  4642. ERRNG RFL=-PASB-200 CHECK FOR BUFFER OVERFLOW FL
  4643. SPACE 4,10
  4644. END