Table of Contents

OPLEDIT

Table Of Contents

  • [00010] OPL EDITING PROGRAM.
  • [00108] ASSEMBLY CONSTANTS AND MACRO DEFINITIONS.
  • [00132] READK - READ CODED LINE TO CHARACTER BUFFER.
  • [00156] WRITEK - WRITE CODED LINE FROM CHARACTER BUFFER.
  • [00176] ADDWRD - ADD A WORD TO A TABLE.
  • [00193] CARD - GENERATE LIST AND CALL FOR DIRECTIVE TRANSLATION.
  • [00225] ALLOC - ALLOCATE SPACE TO TABLE.
  • [00241] LISTOP - CHECK LIST OPTION.
  • [00265] OPTION - DEFINE BIT VALUE OF OPTION.
  • [00288] PRINT - PRINT LINE.
  • [00305] SEARCH - SEARCH TABLE.
  • [00327] TABLE - GENERATE MANAGED TABLE.
  • [00351] FETS AND TEMPORARY STORAGE.
  • [00383] MANAGED TABLES.
  • [00393] TDKN - TABLE OF DECK NAMES.
  • [00405] TPRG - TABLE OF MODIFIERS TO BE PURGED.
  • [00411] TDKI - TABLE OF DECK IDENTIFIERS.
  • [00420] TEDT - TABLE OF DECKS FOR WHICH EDITING IS REQUESTED.
  • [00428] TPAT - TABLE OF PULLALL IDENTS.
  • [00435] TPMI - TABLE OF PULLMOD IDENTS.
  • [00440] TNDK - TABLE OF NEW DECKS.
  • [00446] TCED - TABLE OF CHARACTER SETS OF EDITED DECKS.
  • [00465] OPTION - LIST OPTION TABLE.
  • [00473] STORAGE ASSIGNMENTS.
  • [00516] TCST - TABLE OF SYMBOLIC NAMES OF CHARACTER SETS.
  • [00616] MAIN PROGRAM.
  • [00661] BDK - BEGIN DECK.
  • [00743] BNI - BEGIN NEXT IDENT.
  • [00787] CDK - COMPLETE DECK.
  • [00870] SCS - SET CARD STATUS.
  • [00940] SUBROUTINES.
  • [00942] ABT - ABORT OPLEDIT.
  • [00953] ADW - ADD ENTRY TO A TABLE.
  • [00994] ASN - ASSEMBLE NAME.
  • [01062] ATS - ALLOCATE TABLE SPACE.
  • [01126] CKC - CHECK CARD.
  • [01171] CMF - COMPLETE FILES.
  • [01198] ECD - EXPAND CARD.
  • [01330] PLE - PROCESS LIBRARY ERROR.
  • [01346] POC - PROCESS OPL CHARACTER SET.
  • [01426] RMT - READ MODIFIER TABLE.
  • [01493] RPF - READ CARD FROM PROGRAM LIBRARY.
  • [01555] SSR - SELECT *S* READ FUNCTION.
  • [01579] SSW - SELECT *S* WRITE FUNCTION.
  • [01603] STB - SEARCH TABLE FOR ENTRY WITH MASK.
  • [01637] UPN - UNPACK NAME.
  • [01663] WDR - WRITE DIRECTORY TO PROGRAM LIBRARY.
  • [01711] WMT - WRITE MODIFIER TABLE.
  • [01792] WNF - WRITE CARD TO NEW PROGRAM LIBRARY.
  • [01849] WOF - WRITE OUTPUT FILE.
  • [01913] LCS - LIST CARD STATUS.
  • [01948] LDS - LIST DECK STATUS.
  • [01975] LER - LIST ERROR MESSAGE.
  • [02008] LST - LIST STATISTICS.
  • [02051] LTB - LIST TABLE.
  • [02126] PPM - PROCESS PULLED MODS.
  • [02254] CDC - COMPLETE DIRECTIVE CARD.
  • [02328] CID - CONVERT *ID* FOR DIRECTIVE.
  • [02376] SFI - SEARCH FOR IDENT IN DECK.
  • [02476] DIRECTIVE CARD PROCESSORS.
  • [02484] PDC - PROCESS DIRECTIVE CARDS.
  • [02532] ERR - DIRECTIVE ERROR PROCESSORS.
  • [02730] DIRECTIVE CARD PROCESSING SUBROUTINES.
  • [02732] LDC - LIST DIRECTIVE CARD.
  • [02769] RDR - READ DIRECTORY FROM PROGRAM LIBRARY.
  • [02851] OPLEDIT PRESET.
  • [02853] PRS - PRESET OPLEDIT.
  • [02939] PRESET DATA.
  • [02941] ARGT - ARGUMENT TABLE.
  • [02959] PRESET SUBROUTINES.
  • [02961] SLC - SET LIST CONTROL.
  • [02998] SOF - SET OUTPUT FORMAT.

Source Code

OPLEDIT.txt
  1. IDENT OPLEDIT,FETS,OPLEDIT
  2. ABS
  3. ENTRY OPLEDIT
  4. ENTRY MFL=
  5. SYSCOM B1
  6. OPLEDIT TITLE OPLEDIT - OPL EDITING PROGRAM.
  7. *COMMENT OPLEDIT - OPL EDITING PROGRAM.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. SPACE 4
  10. *** OPLEDIT - OPL EDITING PROGRAM.
  11. * G. R. MANSFIELD. 69/06/29.
  12. * A. D. FORET. 74/10/01.
  13. OPLEDIT SPACE 4
  14. *** OPLEDIT PROVIDES ADDITIONAL PL EDITING CAPABILITIES
  15. * SUCH AS *PURGE* AND *PULLMOD*, TO COMPLEMENT THE *MODIFY*
  16. * PROGRAM.
  17. CARD SPACE 4,25
  18. *** THE COMMAND.
  19. *
  20. * OPLEDIT(P1,P2,P3,,,PN)
  21. *
  22. * WHERE *PI* MAY BE ANY OF THE FOLLOWING -
  23. *
  24. * I DIRECTIVE INPUT FILE NAME, DEFAULT IS *INPUT*.
  25. *
  26. * P OLD PROGRAM LIBRARY FILE NAME, DEFAULT IS *OPL*.
  27. *
  28. * N NEW PROGRAM LIBRARY FILE NAME, DEFAULT IS *NPL*.
  29. *
  30. * L OUTPUT FILE NAME, DEFAULT IS *OUTPUT*.
  31. *
  32. * M FILE TO RECEIVE MODSETS, DEFAULT IS *MODSETS*.
  33. *
  34. * LO LIST OPTIONS. DEFAULT IS *E* IF LIST OUTPUT FILE IS
  35. * ASSIGNED TO AN INTERACTIVE TERMINAL, OTHERWISE
  36. * DEFAULT IS *ECMDS*.
  37. *
  38. * OPTION DESCRIPTION
  39. *
  40. * E ERRORS.
  41. * C INPUT DIRECTIVES.
  42. * M MODIFICATIONS MADE.
  43. * D DECK STATUS.
  44. * S DIRECTORY LISTS.
  45. *
  46. * F MODIFY ALL DECKS, DEFAULT IS NOT SELECTED.
  47. *
  48. * D IGNORE ERRORS, DEFAULT NOT SET.
  49. *
  50. * Z PROCESS DIRECTIVES FROM COMMAND.
  51. * FORMAT IS- OPLEDIT(Z)SDDDSDDDSDDD
  52. * WHERE *S* IS ANY SEPARATOR AND *D* IS ANY
  53. * VALID DIRECTIVE.
  54. *
  55. * U DETERMINES WHAT *EDIT DIRECTIVES ARE GENERATED
  56. * ON *MODSETS*.
  57. * U OMITTED = *EDIT DIRECTIVES ARE GENERATED
  58. * FOR COMMON DECKS.
  59. * U SPECIFIED = *EDIT DIRECTIVES ARE GENERATED
  60. * FOR ALL DECKS.
  61. * U=0 = NO *EDIT-S ARE GENERATED.
  62. DAYFILE SPACE 4,20
  63. *** DAYFILE MESSAGES.
  64. *
  65. * * CSET - UNKNOWN CHARACTER SET.* - THE CHARACTER SET
  66. * ON THE *CSET* DIRECTIVE IS UNKNOWN.
  67. *
  68. * * ERROR IN ARGUMENTS.* - AN INCORRECT ARGUMENT WAS
  69. * ENCOUNTERED. THIS IS A FATAL ERROR.
  70. *
  71. * * DIRECTIVE ERRORS.* - AN INCORRECT DIRECTIVE
  72. * WAS ENCOUNTERED.
  73. *
  74. * * MEMORY OVERFLOW.* - NOT ENOUGH STORAGE WAS
  75. * ALLOWED FOR THE OPLEDIT RUN. THIS IS A FATAL ERROR.
  76. *
  77. * * PL ERROR IN DECK DNAME* - ERROR ENCOUNTERED IN
  78. * PROCESSING DECK *DNAME*. THIS IS A FATAL ERROR.
  79. *
  80. * * ERROR IN DIRECTORY.* - PROGRAM LIBRARY DOES NOT
  81. * HAVE OR HAS AN INCORRECTLY FORMATTED
  82. * DIRECTORY RECORD. THIS IS A FATAL ERROR.
  83. *
  84. * * PROGRAM LIBRARY EMPTY.* - THE OLD PROGRAM LIBRARY
  85. * CONTAINED NO DATA. THIS IS A FATAL ERROR.
  86. *
  87. * * NO DIRECTIVES.* - DIRECTIVE FILE WAS EMPTY. THIS IS
  88. * A FATAL ERROR.
  89. *
  90. * * OPLEDIT ERRORS.* - ERRORS ENCOUNTERED DURING
  91. * THE OPLEDIT RUN.
  92. *
  93. * * OPLEDIT COMPLETE.* - NORMAL OPLEDIT COMPLETION
  94. * MESSAGE.
  95. *
  96. * * FILE NAME CONFLICT.* - TWO FILES HAVE THE SAME NAME.
  97. * THIS IS A FATAL ERROR.
  98. *
  99. * * DECKNAM - INCORRECT CS, 63 ASSUMED.* - DECK *DECKNAM*
  100. * HAD AN INCORRECT CHARACTER SET DESIGNATION. OPLEDIT
  101. * ASSUMES IT TO BE A 63 CHARACTER SET RECORD AND
  102. * MAKES IT SUCH ON A NEW PROGRAM LIBRARY IF ONE
  103. * IS BEING GENERATED.
  104. *
  105. * * MIXED CHARACTER SET OPL.* - RECORDS OF BOTH 63 AND
  106. * 64 CHARACTER SET WERE FOUND ON THE PROGRAM
  107. * LIBRARY. THIS IS A FATAL ERROR.
  108. TITLE ASSEMBLY CONSTANTS AND MACRO DEFINITIONS.
  109. ASSEMBLY SPACE 4,10
  110. **** ASSEMBLY CONSTANTS.
  111.  
  112.  
  113. OBUFL EQU 1001B LENGTH OF O-BUFFER (OUTPUT)
  114. SBUFL EQU 1001B LENGTH OF S-BUFFER (SOURCE)
  115. MBUFL EQU 1001B LENGTH OF M-BUFFER (MODSETS)
  116. PBUFL EQU 2001B LENGTH OF P-BUFFER (OPL)
  117. NBUFL EQU 2001B LENGTH OF N-BUFFER (NPL)
  118. MTBSL EQU 10000B NOMINAL TABLE LENGTH
  119. MXCCL EQU 37B MAXIMUM LENGTH OF COMPRESSED LINE IMAGE
  120. LIST EQU 153B DEFAULT LIST OPTIONS (ALL OPTIONS SET)
  121. ****
  122. COMMON SPACE 4,10
  123. * COMMON DECKS.
  124.  
  125.  
  126. *CALL COMCMAC
  127. *CALL COMCCMD
  128. *CALL COMSSRT
  129. MACROS SPACE 4,10
  130. * MACRO DEFINITIONS.
  131. READK SPACE 4,15
  132. ** READK - READ CODED LINE TO CHARACTER BUFFER.
  133. *
  134. * READK FILE,BUF,N
  135. *
  136. * WORDS ARE UNPACKED AND STORED IN THE WORKING BUFFER 1 6/12
  137. * CHARACTER/WORD UNTIL THE END OF LINE (0000) BYTE IS SENSED.
  138. * CHARACTERS STORED ARE OF THE TYPE 6 BIT DISPLAY OR 6/12 BIT
  139. * DISPLAY BASED ASCII.
  140. * IF THE CODED LINE TERMINATES BEFORE *N* CHARACTERS ARE
  141. * STORED, THE WORKING BUFFER IS FILLED WITH SPACE CODES.
  142. *
  143. * CALLS SSR.
  144.  
  145.  
  146. PURGMAC READK
  147.  
  148. READK MACRO F,S,N
  149. MACREF READK
  150. R= B6,S
  151. R= B7,N
  152. R= X2,F
  153. RJ =XSSR
  154. ENDM
  155. WRITEK SPACE 4,10
  156. ** WRITEK - WRITE CODED LINE FROM CHARACTER BUFFER.
  157. *
  158. * WRITEK FILE,BUF,N
  159. *
  160. * CHARACTERS ARE PACKED FROM THE WORKING BUFFER.
  161. * TRAILING CODES ARE DELETED BEFORE CHARACTERS ARE PACKED.
  162. *
  163. * CALLS SSW.
  164.  
  165.  
  166. PURGMAC WRITEK
  167.  
  168. WRITEK MACRO F,S,N
  169. MACREF WRITEK
  170. R= B6,S
  171. R= B7,N
  172. R= X2,F
  173. RJ =XSSW
  174. ENDM
  175. ADDWRD SPACE 4
  176. ** ADDWRD - ADD A WORD TO A TABLE.
  177. *
  178. * ADDWRD TNAM,WORD
  179. *
  180. * TNAM TABLE NAME.
  181. * WORD WORD TO ADD.
  182. *
  183. * CALLS ADW.
  184.  
  185.  
  186. ADDWRD MACRO TNAM,WORD
  187. IFC NE,$X1$WORD$,1
  188. BX1 WORD
  189. R= A0,TNAM
  190. RJ ADW
  191. ENDM
  192. CARD SPACE 4,10
  193. ** CARD - GENERATE LIST AND CALL FOR DIRECTIVE TRANSLATION.
  194. *
  195. * CARD NAME,ADDR
  196. *
  197. * NAME DIRECTIVE NAME.
  198. * ADDR ADDRESS TO BEGIN EXECUTION.
  199. * IF *ADDR* IS NOT SPECIFIED, BEGIN EXECUTION AT *NAME*.
  200. *
  201. * CALLS CKC.
  202.  
  203.  
  204. NOREF .X
  205.  
  206. CARD MACRO NAM,ADR
  207. LOCAL A,B,C
  208. IF DEF,.X,1
  209. .1 IFNE .X,*
  210. RMT
  211. DATA 0
  212. A BSS 0
  213. RMT
  214. SA0 A
  215. RJ CKC
  216. B BSS 0
  217. .X SET B
  218. .1 ENDIF
  219. RMT
  220. C SET ADR NAM
  221. VFD 42/0L_NAM,18/C
  222. RMT
  223. ENDM
  224. ALLOC SPACE 4,10
  225. ** ALLOC - ALLOCATE SPACE TO TABLE.
  226. *
  227. * ALLOC TNAM,WORDS
  228. *
  229. * TNAM TABLE NAME.
  230. * WORDS NUMBER OF WORDS TO ALLOCATE.
  231. *
  232. * CALLS ATS.
  233.  
  234.  
  235. ALLOC MACRO TNAM,N
  236. R= X1,N
  237. R= A0,TNAM
  238. RJ ATS
  239. ENDM
  240. LISTOP SPACE 4,15
  241. ** LISTOP - CHECK LIST OPTION.
  242. *
  243. * LISTOP TYPE,ADDR,INS,REG
  244. *
  245. * ENTRY TYPE - OPTION LETTER.
  246. * ADDR - ADDRESS TO JUMP TO.
  247. * INS - ALTERNATE INSTRUCTION TO EXECUTE, DEFAULT IS
  248. * *PL*.
  249. * REG - ALTERNATE REGISTER TO USE, DEFAULT IS *X1*.
  250. *
  251. * EXIT CONTROL IS TRANSFERRED TO SPECIFIED ADDRESS IF THE
  252. * SPECIFIED OPTION LETTER WAS SELECTED ON THE CONTROL
  253. * COMMAND.
  254.  
  255. PURGMAC LISTOP
  256.  
  257. LISTOP MACRO T,A,I,R
  258. .INS MICRO 1,2,*I_PL*
  259. .REG MICRO 1,1,*R_1*
  260. SA".REG" LO
  261. LX".REG" 59-LO.T
  262. ".INS" X".REG",A
  263. LISTOP ENDM
  264. OPTION SPACE 4,15
  265. ** OPTION - DEFINE BIT VALUE OF OPTION.
  266. *
  267. * OPTION TYPE
  268. *
  269. * ENTRY TYPE - OPTION LETTER.
  270. *
  271. * EXIT THE SYMBOL LO.X IS GENERATED, WHERE X IS THE OPTION
  272. * BIT CORRESPONDING TO THE LETTER *X*.
  273.  
  274.  
  275. .OPT SET 0
  276. NOREF .OPT
  277. PURGMAC OPTION
  278.  
  279. OPTION MACRO T
  280. LO.T EQU .OPT
  281. .OPT SET .OPT+1
  282. OPTION RMT
  283. CON 0R_T
  284. OPTION RMT
  285. LO.T DECMIC LO.T
  286. OPTION ENDM
  287. PRINT SPACE 4,10
  288. ** PRINT - PRINT LINE.
  289. *
  290. * PRINT FWA,N
  291. *
  292. * FWA LINE FWA.
  293. * N IF *FWA* .GE. 0, N IS IGNORED. IF *FWA* .LT. 0, N IS
  294. * THE CHARACTER COUNT. IF N IS OMITTED, *B0* IS USED.
  295. *
  296. * CALLS WOF.
  297.  
  298.  
  299. PRINT MACRO FWA,N
  300. SX1 FWA
  301. R= X2,N
  302. RJ WOF
  303. ENDM
  304. SEARCH SPACE 4,10
  305. ** SEARCH - SEARCH TABLE.
  306. *
  307. * SEARCH TNAM,WORD,BITS
  308. *
  309. * TNAM TABLE NAME TO BE SEARCHED.
  310. * WORD WORD TO FIND.
  311. * BITS ADDITIONAL BITS (0-16) TO COMPARE ON.
  312. *
  313. * CALLS STB.
  314.  
  315.  
  316. SEARCH MACRO TNAM,ENTRY,BITS
  317. R= A0,TNAM
  318. IFC NE,$X6$ENTRY$,1
  319. BX6 ENTRY
  320. MX1 42
  321. IFC NE,*BITS**,2
  322. R= X2,BITS
  323. BX1 X1+X2
  324. RJ STB
  325. ENDM
  326. TABLE SPACE 4,10
  327. ** TABLE - GENERATE MANAGED TABLE.
  328. *
  329. * TNAM TABLE N
  330. *
  331. * TNAM NAME OF TABLE TO BE GENERATED.
  332. * N NUMBER OF WORDS TO BE ALLOCATED WHEN TABLE IS FULL.
  333. *
  334. * GENERATES TABLE POINTERS FOR TABLE *TNAM*.
  335. * *F.TNAM* NAME OF A WORD CONTAINING TABLE FWA.
  336. * *L.TNAM* NAME OF A WORD CONTAINING TABLE LENGTH.
  337.  
  338.  
  339. MACRO TABLE,TNAM,N
  340. TNAM EQU *
  341. VFD 60/MTBS
  342. F.TNAM EQU FTAB+TNAM
  343. RMT
  344. L.TNAM EQU LTAB+TNAM
  345. ORG L.TNAM
  346. DATA 0
  347. ORG NTAB+TNAM
  348. VFD 60/N
  349. RMT
  350. ENDM
  351. TITLE FETS AND TEMPORARY STORAGE.
  352. FETS SPACE 4
  353. ** FETS.
  354.  
  355.  
  356. ORG 110B
  357. FETS BSS 0
  358.  
  359. I BSS 0 DIRECTIVES FILE FET
  360. INPUT FILEC SBUF,SBUFL,FET=8
  361.  
  362. O BSS 0 OUTPUT FILE FET
  363. OUTPUT FILEC OBUF,OBUFL,FET=8
  364.  
  365. M BSS 0 MODSET OUTPUT FILE FET
  366. MODSETS FILEC MBUF,MBUFL,FET=8
  367. ORG M+7
  368. CON 0LMODSETS+1
  369.  
  370. N BSS 0 NEW PROGRAM LIBRARY FET
  371. NPL RFILEB NBUF,NBUFL,FET=8
  372. ORG N
  373. CON 0
  374. ORG N+8
  375.  
  376. P BSS 0 OLD PROGRAM LIBRARY FET
  377. OPL RFILEB PBUF,PBUFL,FET=8
  378. ORG P+7
  379. CON 0LOPL+3
  380.  
  381.  
  382. FETSL BSS 0
  383. TITLE MANAGED TABLES.
  384. ** MANAGED TABLES ARE REFERENCED BY THE TABLE NUMBER *TNAM*.
  385. * THE FWA OF A TABLE IS CONTAINED IN *F.TNAM*.
  386. * THE LENGTH OF A TABLE IS CONTAINED IN *L.TNAM*.
  387. * THESE SYMBOLS ARE GENERATED BY THE *TABLE* MACRO.
  388.  
  389.  
  390. FTAB BSS 0
  391. LOC 0
  392. SPACE 4
  393. ** TDKN - TABLE OF DECK NAMES.
  394. * ENTRY = 2 WORDS.
  395. *
  396. * WORD 1 -
  397. * BITS 18 - 59 = DECK NAME LEFT JUSTIFIED
  398. *
  399. * WORD 2 -
  400. * BITS 00 - 35 = RANDOM ADDRESS ON PROGRAM LIBRARY
  401.  
  402.  
  403. TDKN TABLE 10 DECK NAMES
  404. SPACE 4
  405. ** TPRG - TABLE OF MODIFIERS TO BE PURGED.
  406. * ENTRY = 1 WORD.
  407.  
  408.  
  409. TPRG TABLE 10 MODIFIERS TO BE PURGED
  410. TDKI SPACE 4
  411. ** TDKI - TABLE OF DECK IDENTIFIERS.
  412. * ENTRY = 1 WORD.
  413. * BITS 18 - 59 = IDENTIFIER LEFT JUSTIFIED
  414. * BIT 16 = YANK FLAG
  415. * BITS 00 - 15 = MODIFIER EQUIVALENCE
  416.  
  417.  
  418. TDKI TABLE 10 DECK IDENTIFIERS
  419. SPACE 4
  420. ** TEDT - TABLE OF DECKS FOR WHICH EDITING IS REQUESTED.
  421. * ENTRY = 1 WORD.
  422. * BITS 18 - 59 = DECK NAME LEFT JUSTIFIED
  423. * BITS 00 - 17 = ADDRESS OF DECK IN DECK NAME TABLE.
  424.  
  425.  
  426. TEDT TABLE 10 DECKS REQUESTED FOR EDITING
  427. TPAT SPACE 4,13
  428. ** TPAT - TABLE OF PULLALL IDENTS.
  429. * ENTRY = 1 WORD.
  430. * BITS 18 - 59 = IDENTIFIER LEFT JUSTIFIED.
  431.  
  432.  
  433. TPAT TABLE 10 PULLALL IDENTIFIERS
  434. SPACE 4
  435. ** TPMI - TABLE OF PULLMOD IDENTS.
  436.  
  437.  
  438. TPMI TABLE 10
  439. SPACE 4
  440. ** TNDK - TABLE OF NEW DECKS.
  441. * SAME FORMAT AS *TDKN*.
  442.  
  443.  
  444. TNDK TABLE 10 NEW DECK NAMES
  445. TCED SPACE 4,10
  446. ** TCED - TABLE OF CHARACTER SETS OF EDITED DECKS.
  447. * ENTRY = 1 WORD.
  448. * BITS 18 - 59 = DECK NAME LEFT JUSTIFIED.
  449. * BITS 00 - 17 = CHARACTER SET OF DECK.
  450. * 1 = ASCII 0 = DISPLAY.
  451.  
  452. TCED TABLE 10 CHARACTER SETS OF EDITED DECKS
  453. SPACE 4
  454. * REMAINDER OF MANAGED TABLE VALUES.
  455.  
  456.  
  457. FTABL BSS 0
  458. LOC *O
  459.  
  460. VFD 60/MTBS LWA+1 ALL TABLES
  461. LTAB BSS 0
  462. NTAB EQU LTAB+FTABL
  463. HERE
  464. OPTION SPACE 4,10
  465. ** OPTION - LIST OPTION TABLE.
  466.  
  467.  
  468. OPTION E ERRORS
  469. OPTION C OTHER INPUT DIRECTIVES
  470. OPTION M MODIFICATIONS
  471. OPTION D DECK STATUS
  472. OPTION S DIRECTORY LISTS
  473. TITLE STORAGE ASSIGNMENTS.
  474. * COMMON DATA.
  475.  
  476.  
  477. T1 DATA 0 TEMPORARY STORAGE
  478. T2 DATA 0
  479. FL DATA 0 FIELD LENGTH
  480. CH DATA 0 CHARACTER POINTER
  481. PL DATA 0LOPL PROGRAM LIBRARY NAME
  482. SPACE 4
  483. * MODIFICATION CONTROLS.
  484.  
  485.  
  486. ACTIVE DATA 0 DIRECTIVE IN PROGRESS FLAG
  487. DF DATA 0 DELETE IN PROGRESS FLAG
  488. DL DATA 0 *DIRECTIVE LAST* FLAG
  489. IF DATA 0 INSERT IN PROGRESS FLAG
  490. RF DATA 0 RESTORE IN PROGRESS FLAG
  491. II DATA -0 IDENT INDEX
  492. IN DATA 0 IDENT NAME
  493. IP DATA 0 IDENT PRESENT FLAG
  494. PA DATA 0 *PULL ALL* FLAG
  495. DATA 0 *PULLALL,IDENT* IDENT FLAG
  496. PI DATA 0 *PULLMOD* INDEX
  497. EI DATA 0 EDIT TABLE INDEX
  498. MD DATA 0 MODIFICATION FLAG
  499. DN DATA 0 CURRENT DECK NAME
  500. DA DATA 0 CURRENT DECK ADDRESS
  501. EC DATA 0 DECK ERROR COUNTER
  502. CC DATA 0 INACTIVE CARD COUNTER
  503. DATA 0 ACTIVE CARD COUNTER
  504. DATA 0 INSERTED CARD COUNTER
  505. SPACE 4
  506. * LIST CONTROLS.
  507.  
  508.  
  509. LC CON 99999,0 LINE COUNT
  510. LL EQU LC+1 LINE LIMIT
  511. LO CON 0 LIST OPTION
  512. PN DATA 1 PAGE NUMBER
  513. TL CON CCDR ADDRESS OF TITLE TEXT
  514. TO DATA 0 TERMINAL OUTPUT FORMAT FLAG
  515. TCST SPACE 4,10
  516. ** TCST - TABLE OF SYMBOLIC NAMES OF CHARACTER SETS.
  517. *
  518. *T TCST 42/ CS NAME,18/ CS ORDINAL
  519. *
  520.  
  521. TCST BSS 0
  522. CON 0LDISPLAY+.DIS DISPLAY
  523. CON 0LASCII+.AS612 ASCII (6/12)
  524. CON 0 MAXIMUM CHARACTER SETS
  525.  
  526. CSD SPACE 4,20
  527. * CHARACTER SET DEFINITIONS.
  528.  
  529. .DIS EQU 0 DISPLAY CODE 63/64
  530. .AS612 EQU 1 DISPLAY CODE BASED 6/12 ASCII (63/64)
  531. SPACE 4
  532. * FLAGS.
  533.  
  534.  
  535. CSM DATA -1 OPL CHARACTER SET FLAG
  536. CSC CON .DIS OPL 6 OR 6/12 CHARACTER SET FLAG
  537. EF DATA 0 ERROR (TOTAL ERRORS DURING MODIFICATION)
  538. CD DATA 0 COMMON DECK
  539. IGNORE DATA 0 SET ON MULTIPLE MODSET PULLMODS
  540. LF CON 0 SET IF DATA TRANSMITTED TO LIST FILE
  541. SETC CON -1 0 = CSET DISPLAY 1 = CSET ASCII
  542.  
  543. * FLAGS SET BY COMMAND PARAMETERS.
  544.  
  545. CL DATA 0 CARD LISTED
  546. DB DATA 0 DEBUG
  547. FM DATA 0 -F- MODE
  548. UM DATA -1 -1=COMMON, +1=ALL, 0=NO *EDIT-S
  549.  
  550. ** MODIFY DIRECTIVE TEMPLATES.
  551.  
  552. DCKD DATA 17C*DECK DNAME
  553. DELD DATA 03L*D,
  554. EDTD DATA 17C*EDIT DNAME
  555. IDND DATA 17C*IDENT MNAME
  556. INSD DATA 03L*I,
  557. RESD DATA 09L*RESTORE,
  558.  
  559. ** TABLE OF DIRECTIVE TEMPLATE ADDRESSES.
  560.  
  561. TDTA CON DCKD *DECK
  562. CON DELD *D
  563. CON EDTD *EDIT
  564. CON IDND *IDENT
  565. CON INSD *I
  566. CON RESD *RESTORE
  567. CON 0
  568. SPACE 4,10
  569. ** BLOCK STORAGE.
  570.  
  571.  
  572. USE BUFFERS
  573.  
  574. * TITLE LINE.
  575.  
  576. TITL DATA 20H OPLEDIT - VER 1.2
  577. DATE DATA 1H
  578. TIME DATA 1H
  579. DATA 4APAGE
  580. PAGE DATA 1H
  581. TITLL EQU *-TITL
  582.  
  583. * TERMINAL TITLE LINE.
  584.  
  585. TERL DATA 50H OPLEDIT - VER 1.2
  586. TERDT CON 1H
  587. TERTM CON 1H
  588. TERLL EQU *-TERL
  589.  
  590. * SUBTITLE LINE
  591.  
  592. SBTL DATA 30H
  593. DATA 0
  594. DATA 2L
  595. SBTLL EQU *-SBTL
  596.  
  597. * IDENT TABLE.
  598.  
  599. TIDT VFD 12/7700B,12/TIDTL-1,36/0
  600. BSS 16B
  601. TIDTL EQU *-TIDT
  602.  
  603. * PROGRAM LIBRARY CARD PROCESSING BUFFERS.
  604. * THE ORDER OF THE FOLLOWING MUST BE MAINTAINED.
  605.  
  606. CDAC DATA 1S59 CARD ACTIVITY
  607. CDWC DATA 0 WORD COUNT OF COMPRESSED CARD
  608. CDID DATA 1 CARD ID
  609. CDTX BSS MXCCL TEXT OF COMPRESSED LINE
  610.  
  611. NMHB DATA 1 NUMBER OF MODIFICATION HISTORY BYTES
  612. TMHB DATA 1S16 MODIFICATION HISTORY BYTE TABLE
  613. BSS 199
  614. USE *
  615. OPLEDIT TITLE OPLEDIT - MAIN PROGRAM.
  616. ** OPLEDIT - MAIN PROGRAM.
  617.  
  618.  
  619. OPLEDIT SB1 1 (B1) = 1
  620. RJ PRS PRESET PROGRAM
  621. RJ PDC PROCESS DIRECTIVE CARDS
  622. SX6 B1 SET WORDS/ENTRY
  623. SA6 LTBA
  624. RJ BNI BEGIN FIRST IDENT
  625. EQ OPL3 BEGIN FIRST DECK
  626.  
  627. * PROCESS MODIFICATIONS.
  628.  
  629. OPL1 MX6 0 CLEAR CARD LIST
  630. SX7 B0 CLEAR CARD ACTIVITY
  631. SA6 CL
  632. SA7 CDAC
  633. RJ RPF READ CARD FROM PROGRAM LIBRARY
  634. NZ X1,OPL2 IF EOR
  635. RJ PPM
  636. RJ SCS SET CARD STATUS
  637. SA1 NMHB
  638. ZR X1,OPL1 IF CARD REMOVED
  639. RJ WNF WRITE NEW PROGRAM LIBRARY
  640. EQ OPL1 LOOP
  641.  
  642. * COMPLETE PROCESSING.
  643.  
  644. OPL2 RJ CDK COMPLETE DECK
  645. OPL3 RJ BDK BEGIN NEXT DECK
  646. NZ X7,OPL1 IF DECK TO BE PROCESSED
  647.  
  648. RJ WDR WRITE DIRECTORY
  649. RJ LST LIST STATISTICS
  650. SA1 EF
  651. SA2 DB
  652. ZR X1,OPL4 IF NO ERRORS
  653. NZ X2,OPL4 IF DEBUG SET
  654. SA0 =C* OPLEDIT ERRORS.*
  655. EQ ABT
  656.  
  657. OPL4 RJ CMF COMPLETE FILES
  658. MESSAGE (=C* OPLEDIT COMPLETE.*)
  659. ENDRUN
  660. BDK SPACE 4,20
  661. ** BDK - BEGIN DECK.
  662. *
  663. * EXIT (X7) - .NE. 0 IF DECK READY FOR PROCESSING.
  664. *
  665. * USES ALL.
  666. *
  667. * CALLS CDC, LDS, RMT, SFI, SFN, WMT.
  668.  
  669.  
  670. BDK PS 0 ENTRY/EXIT
  671. BDK0 RJ CDC COMPLETE DIRECTIVE CARD
  672. SX6 B0
  673. SA6 DL CLEAR DL
  674. RECALL P
  675. SA1 P+1
  676. SX6 X1 *REWIND* OPL FET
  677. SA6 A1+B1
  678. SA6 A6+B1
  679. SA1 EI CHECK EDIT TABLE
  680. SA2 L.TEDT
  681. IX7 X2-X1
  682. SX6 X1+B1 ADVANCE EDIT INDEX
  683. ZR X7,BDK1 IF END OF TABLE
  684. SA3 F.TEDT LOOK UP EDIT TABLE ENTRY
  685. SB2 X1
  686. SA2 X3+B2
  687. SA6 A1
  688. MX0 42 MASK DECK NAME
  689. BX6 X0*X2
  690. SX7 X2 SET DECK ADDRESS
  691. SA6 DN SET DECK NAME
  692. SA6 ID1 SET TO DECK.0
  693. SA6 ID3 SET LAST ORIGINAL CARD ID
  694. SA6 EDTD+1 IN EDIT MESSAGE
  695. SA7 DA
  696. BX1 X6
  697. RJ SFN SPACE FILL NAME
  698. SA6 SBTL+2
  699. SA6 BDKA+1 ENTER NAME IN MESSAGE
  700. MX7 0 CLEAR DECK IDENTIFIER TABLE LENGTH
  701. SA7 L.TDKI
  702. RJ RMT READ MODIFIER TABLE
  703. RJ SFI SEARCH FOR IDENT IN THIS DECK
  704. SA1 PA+1
  705. NZ X1,BDK0.0 IF *PULLMOD,IDENT*
  706. SA1 A1-B1
  707. NZ X1,BDK0.1 IF *SUMMARY MODE*
  708. BDK0.0 SA1 IP
  709. NZ X1,BDK0.1 IF FOUND
  710. SA1 IGNORE
  711. NZ X1,BDK0 IF NOT *NORMAL* MODE
  712. BDK0.1 MESSAGE BDKA,1
  713. RJ LDS LIST DECK STATUS
  714. RJ WMT WRITE MODIFIER TABLE
  715. SX6 B0 CLEAR CARD COUNTS
  716. SX7 B1
  717. SA6 CC
  718. SA6 A6+B1
  719. SA6 A6+B1
  720. SA6 MD CLEAR MODIFICATION FLAG
  721. EQ BDK
  722.  
  723.  
  724. BDK1 SA1 PA
  725. MX7 0
  726. SA7 A1 CLEAR PA
  727. SA7 A1+B1
  728. ZR X1,BDK2 IF NOT PULL ALL MOD
  729. WRITER M,R
  730. BDK2 RJ BNI BEGIN NEXT IDENT
  731. ZR X7,BDK IF EXHAUSTED
  732. SX6 B1
  733. SA6 IGNORE SET *MODSETS ONLY* MODE
  734. MX6 0
  735. SA6 EI RESET EDIT INDEX
  736. EQ BDK0 PROCESS FIRST DECK AGAIN
  737.  
  738. BDKA DATA 10H EDITING
  739. DATA 0
  740. DATA 10H PULLING
  741. BDKB DATA 10C * NONE *
  742. BNI SPACE 4,20
  743. ** BNI - BEGIN NEXT IDENT.
  744. *
  745. * USES X - 1, 2, 3, 4, 6, 7.
  746. * A - 1, 2, 3, 4, 6, 7.
  747. * B - ALL.
  748. *
  749. * CALLS WTW=.
  750.  
  751.  
  752. BNI PS 0
  753. SA1 PA
  754. NZ X1,BNI2 IF *SUMMARY* MODE
  755. SA1 PI
  756. SA2 L.TPMI
  757. IX7 X2-X1
  758. SX6 X1+B1
  759. ZR X7,BNI IF NO NEXT IDENT
  760. SA3 F.TPMI
  761. SB2 X1
  762. SA2 X3+B2 LOOK UP ENTRY
  763. SA6 A1
  764. MX0 42
  765. BX6 X0*X2
  766. SA6 IN STORE IDENT NAME
  767. SA6 IDND+1 STORE IN IDENT HEADER LINE
  768. SA6 BDKB ENTER INTO MESSAGE
  769. SA1 PI EOR IF NOT NEW
  770. SX1 X1-1
  771. ZR X1,BNI1 IF FILE NEVER WRITTEN
  772. WRITER M,R
  773. BNI1 WRITEW M,IDND+1,1 WRITE HEADER
  774. WRITEW M,IDND,2
  775. SX7 B1
  776. EQ BNI EXIT
  777.  
  778.  
  779. BNI2 SA1 =C+*******+ SET PSEUDO-IDENT FOR SUMMARY
  780. BX6 X1
  781. SA6 IDND+1
  782. SA6 BDKB INTO MESSAGE
  783. MX7 0
  784. SA7 II
  785. EQ BNI1 TO FINISH
  786. CDK SPACE 4,20
  787. ** CDK - COMPLETE DECK.
  788. *
  789. * ISSUE ERROR MESSAGE IF APPROPRIATE, COMPLETE DECK
  790. * ON NEW PROGRAM LIBRARY IF SELECTED AND RESET
  791. * MISCELLANEOUS FLAGS.
  792. *
  793. * USES X - 1, 2, 6, 7.
  794. * A - 1, 2, 6, 7.
  795. * B - 7.
  796. *
  797. * CALLS CDD.
  798. *
  799. * MACROS LISTOP, MESSAGE, PRINT, WRITER, WRITEW.
  800.  
  801.  
  802. CDK SUBR ENTRY/EXIT
  803. SA1 IP
  804. ZR X1,CDK.2 IF IDENT NOT IN DECK
  805. SA1 UM
  806. ZR X1,CDK.2 IF *NONE* SELECTED
  807. PL X1,CDK.1 IF *ALL* SELECTED
  808. SA1 CD
  809. ZR X1,CDK.2 IF *COMMON* SELECTED BUT NOT COMMON
  810. CDK.1 WRITEW M,EDTD,2
  811. CDK.2 SA2 IGNORE
  812. NZ X2,CDKX IF *MODSETS ONLY* MODE
  813. SA2 EF PROPAGATE ERRORS
  814. SA1 EC
  815. MX7 0 CLEAR ERROR COUNT
  816. IX6 X2+X1
  817. SA7 A1
  818. SA6 A2
  819. ZR X1,CDK3 IF NO ERRORS
  820. SA2 SBTL+2
  821. SB7 X1
  822. BX6 X2
  823. SA2 =10H ERRORS IN
  824. NE B7,B1,CDK2 IF MORE THAN 1
  825. SA2 =10H ERROR IN
  826. LX6 6 SHIFT NAME
  827. CDK2 BX7 X2
  828. LX6 60-6
  829. SA7 CDKA+1
  830. SA6 A7+B1
  831. SX1 B7 CONVERT COUNT
  832. RJ CDD
  833. SA6 A7-B1
  834. MESSAGE A6,3,R
  835. CDK3 WRITER N
  836. LISTOP D,CDKX,,2 IF NO LIST FOR DECK STATUS - RETURN
  837. PRINT (=C* *)
  838. SA1 CC CONVERT INACTIVE CARD COUNT
  839. RJ CDD
  840. SA6 CDKC
  841. SA1 A1+B1 CONVERT ACTIVE CARD COUNT
  842. RJ CDD
  843. SA6 CDKB+1
  844. SA1 A1+B1 CONVERT INSERTED CARD COUNT
  845. RJ CDD
  846. SA6 CDKD
  847. PRINT CDKB
  848. SA1 MD
  849. ZR X1,CDKX IF NO MODIFICATIONS - RETURN
  850. SX6 99999 FORCE PAGE EJECT
  851. SA6 LC
  852. EQ CDKX RETURN
  853.  
  854. CDKA DATA 10H
  855. DATA 10HERRORS IN
  856. DATA 10H
  857. DATA 0
  858.  
  859. CDKB DATA 10H
  860. DATA 10H
  861. DATA 20H ACTIVE CARD(S).
  862.  
  863. CDKC DATA 10H
  864. DATA 20H INACTIVE CARD(S).
  865.  
  866. CDKD DATA 10H
  867. DATA 20H INSERTED CARD(S).
  868. DATA 0
  869. SCS SPACE 4,20
  870. ** SCS - SET CARD STATUS.
  871. *
  872. * SET CARD ACTIVITY ACCORDING TO LAST MHB AND YANK
  873. * STATUS. LIST MODIFICATION TO CARD.
  874. *
  875. * USES X - ALL.
  876. * A - 1, 2, 3, 6, 7.
  877. * B - 2, 3, 4.
  878. *
  879. * CALLS ECD, LCS.
  880. *
  881. * MACROS LISTOP.
  882.  
  883.  
  884. SCS SUBR ENTRY/EXIT
  885. SA1 IGNORE
  886. NZ X1,SCSX IF *MODSETS ONLY* MODE
  887. SA1 NMHB (B2) = MHB COUNT
  888. SA2 F.TDKI (B3) = FWA DECK IDENTIFIER TABLE
  889. MX0 60-16 MHB INDEX MASK
  890. SB2 X1
  891. SB3 X2
  892. MX7 0 CLEAR STATUS
  893. SB4 B0 CLEAR NEW MHB COUNT
  894. SA2 A1+B1 FIRST MHB
  895. BX3 -X0*X2
  896. ZR X3,SCS1 IF ORIGINAL CARD
  897. SA2 CC+2 ADVANCE INSERTED CARD COUNT
  898. SX6 X2+B1
  899. SA6 A2
  900. SCS1 SA1 A1+B1 NEXT MHB
  901. BX3 -X0*X1 SET MODIFIER INDEX
  902. SB2 B2-B1 COUNT MHB
  903. SA2 X3+B3
  904. BX1 X1*X0
  905. BX6 -X0*X2
  906. BX6 X6+X1 STORE MHB
  907. LX2 59-16 CHECK YANK
  908. SA6 TMHB+B4
  909. LX5 X2,B1 CHECK PURGE
  910. NG X5,SCS2 IF PURGED
  911. SB4 B4+B1 COUNT NEW MHB
  912. NG X2,SCS2 IF YANKED
  913. BX7 X1 STATUS = MHB STATUS
  914. SCS2 NZ B2,SCS1 IF NOT END OF MHB-S
  915. SX6 B4 SET NEW MHB COUNT
  916. SA6 NMHB
  917. SA3 CDAC COMPARE STATUS
  918. LX7 59-16
  919. BX6 X7-X3
  920. SA7 A3 SET NEW STATUS
  921. SX1 B1
  922. LX7 1
  923. BX2 X1*X7
  924. SA3 CC+X2 COUNT CARD
  925. SX7 X3+B1
  926. SA7 A3
  927. PL X6,SCSX IF UNCHANGED - RETURN
  928. LISTOP M,SCSX IF NO LIST FOR MODIFICATIONS - RETURN
  929. RJ ECD EXPAND CARD
  930. SA3 CDAC CHECK STATUS
  931. SX6 1RA
  932. SX7 1R
  933. NG X3,SCS3 IF ACTIVE
  934. SX6 1R
  935. SX7 1RD
  936. SCS3 SA6 CHSP+5
  937. SA7 A6+B1
  938. RJ LCS LIST CARD STATUS
  939. EQ SCSX RETURN
  940. TITLE SUBROUTINES.
  941. ABT SPACE 4,10
  942. ** ABT - ABORT OPLEDIT.
  943. *
  944. * ENTRY (A0) - ADDRESS OF MESSAGE.
  945. *
  946. * CALLS CMF.
  947.  
  948.  
  949. ABT RJ CMF COMPLETE FILES
  950. ABT1 MESSAGE A0
  951. ABORT
  952. ADW SPACE 4,20
  953. ** ADW - ADD ENTRY TO A TABLE.
  954. *
  955. * ENTRY (A0) - TABLE POINTER ADDRESS.
  956. * (X1) - ENTRY.
  957. *
  958. * EXIT (X6) - ENTRY.
  959. * (A6) - ADDRESS OF ENTRY.
  960. * (X3) - INDEX OF ENTRY.
  961. *
  962. * USES X - 1, 2, 3, 4, 6, 7.
  963. * A - 1, 2, 3, 4, 6, 7.
  964. * B - 2.
  965. *
  966. * CALLS ATS.
  967.  
  968.  
  969. ADW1 BX6 X1 ENTER WORD
  970. SX7 X3+B1 ADVANCE LENGTH
  971. SA6 X2+B2
  972. SA7 A3
  973.  
  974. ADW PS 0 ENTRY/EXIT
  975. SA2 FTAB+A0 CHECK TABLE ROOM
  976. SA3 LTAB+A0
  977. SA4 A2+B1
  978. IX6 X2+X3
  979. SB2 X3
  980. IX7 X4-X6
  981. NZ X7,ADW1 IF ROOM FOR WORD
  982. SA2 NTAB+A0 ALLOCATE TABLE
  983. BX6 X1 SAVE WORD
  984. SA6 ADWA
  985. ALLOC A0,X2
  986. SA4 NTAB+A0 RESET LAST LENGTH
  987. SA1 ADWA RESTORE WORD
  988. IX3 X3-X4
  989. SB2 X3
  990. EQ ADW1 ENTER WORD
  991.  
  992. ADWA CON 0
  993. ASN SPACE 4,20
  994. ** ASN - ASSEMBLE NAME.
  995. *
  996. * ASSEMBLE UP TO 7 CHARACTER NAME TO A SEPARATOR.
  997. * THE CHARACTER STRING BUFFER CAN CONTAIN EITHER
  998. * 6 OR 6/12 CHARACTERS.
  999. *
  1000. *
  1001. * ENTRY (CHAR) - CHARACTER STRING BUFFER.
  1002. * (CH) - CHARACTER POINTER.
  1003. *
  1004. * EXIT (X6) - NAME LEFT JUSTIFIED ZERO FILL.
  1005. * (X6) = 0 IF SEPARATOR FOUND, OR MORE THAN
  1006. * 7 CHARACTERS ASSEMBLED.
  1007. *
  1008. * USES X - 1, 2, 6, 7.
  1009. * A - 1, 2, 7.
  1010. * B - 2.
  1011. *
  1012.  
  1013.  
  1014. ASN3 LX6 6
  1015. BX2 X1*X6
  1016. ZR X2,ASN3 IF NAME NOT LEFT JUSTIFIED
  1017. SA7 A1 UPDATE CHARACTER POINTER
  1018. MX1 42
  1019. BX7 -X1*X6
  1020. ZR X7,ASN IF @ 7 CHARACTERS
  1021. SX6 B0 RETURN WITH BLANK NAME
  1022.  
  1023. ASN PS 0 ENTRY/EXIT
  1024. SA1 CH CHECK FIRST CHARACTER
  1025. MX7 -6
  1026. SA2 X1
  1027. MX6 0 CLEAR ASSEMBLY
  1028. BX2 -X7*X2 USE LOWER 6 BIT ONLY
  1029. SB2 X2-1R
  1030. ZR X2,ASN IF SEPARATOR
  1031. NG B2,ASN1 IF NOT SEPARATOR
  1032.  
  1033. * CHECK POSSIBLE 6/12 ESCAPE CODE.
  1034.  
  1035. SB2 X2-76B
  1036. NZ B2,ASN IF SEPARATOR
  1037. SA2 A2+B1 LOWER PORTION OF 6/12 CHARACTER
  1038. BX2 -X7*X2
  1039. SB2 X2-1RZ-1
  1040. ZR X2,ASN IF SEPARATOR
  1041. PL B2,ASN IF SEPARATOR
  1042. ASN1 LX6 6 SHIFT ASSEMBLY
  1043. BX6 X6+X2 MERGE NEW CHARACTER
  1044. SA2 A2+B1 NEXT CHARACTER
  1045. BX2 -X7*X2
  1046. SB2 X2-1R
  1047. NG B2,ASN1 IF NOT SEPARATOR
  1048.  
  1049. * CHECK POSSIBLE 6/12 ESCAPE CODE.
  1050.  
  1051. SB2 X2-76B
  1052. NZ B2,ASN2 IF NOT ESCAPE CODE, THEN SEPARATOR
  1053. SA2 A2+B1 LOWER PORTION OF 6/12 CHARACTER
  1054. BX2 -X7*X2
  1055. SB2 X2-1RZ-1
  1056. ZR X2,ASN2 IF SEPARATOR
  1057. NG B2,ASN1 IF NOT SEPARATOR
  1058. ASN2 MX1 6
  1059. SX7 A2
  1060. EQ ASN3 LEFT JUSTIFY NAME
  1061. ATS SPACE 4,20
  1062. ** ATS - ALLOCATE TABLE SPACE.
  1063. *
  1064. * ENTRY (A0) - TABLE NUMBER.
  1065. *
  1066. * EXIT (X2) - TABLE FWA.
  1067. * (X3) - TABLE LANGTH.
  1068. *
  1069. * USES X - 1, 2, 3, 4, 6, 7.
  1070. * A - 0, 1, 2, 3, 4, 6, 7.
  1071. * B - ALL.
  1072. *
  1073. * CALLS ABT, WTW=.
  1074.  
  1075.  
  1076. ATSX SA2 FTAB+A0 SET RESPONSE
  1077. SA3 LTAB+A0
  1078.  
  1079. ATS PS 0 ENTRY/EXIT
  1080. SA2 FTAB+A0 CHECK TABLE SPACE
  1081. SA3 LTAB+A0
  1082. IX7 X3+X1 ADVANCE LENGTH
  1083. SA4 A2+B1
  1084. IX6 X2+X7
  1085. SA7 A3
  1086. IX4 X4-X6
  1087. NG X4,ATS1 IF NO ROOM FOR CHANGE
  1088. BX3 X7
  1089. EQ ATS RETURN
  1090.  
  1091. * CHECK AVAILABLE STORAGE.
  1092.  
  1093. ATS1 SA2 FTAB+FTABL CHECK STORAGE
  1094. SA3 FL
  1095. IX6 X2+X1
  1096. IX7 X3-X6
  1097. NG X7,ATS4 IF NO ROOM FOR INCREASE
  1098. SA6 A2 UPDATE LWA+1 OF ALL TABLES
  1099. SB2 A0+B1
  1100. SB3 FTABL
  1101. BX4 X2
  1102. EQ B2,B3,ATSX RETURN IF LAST TABLE
  1103.  
  1104. * MOVE HIGHER TABLE UP.
  1105.  
  1106. ATS2 SA2 A2-B1 ADVANCE FWA OF HIGHER TABLES
  1107. IX6 X2+X1
  1108. SA6 A2
  1109. SB2 B2+B1
  1110. NE B2,B3,ATS2
  1111. IX3 X4-X2 (B2) = WORD COUNT
  1112. SB3 X1 (B3) = MOVE INCREMENT
  1113. ZR X3,ATSX IF NO MOVE NEEDED
  1114. SB2 X3
  1115. SA1 X4-1 BEGIN AT LWA
  1116. ATS3 BX6 X1 MOVE TABLE UP
  1117. SA6 A1+B3
  1118. SB2 B2-B1
  1119. SA1 A1-B1
  1120. NZ B2,ATS3 LOOP TO END OF MOVE
  1121. EQ ATSX RETURN
  1122.  
  1123. ATS4 SA0 =C* MEMORY OVERFLOW.*
  1124. EQ ABT
  1125. CKC SPACE 4,20
  1126. ** CKC - CHECK CARD.
  1127. *
  1128. * ENTRY (A0) - ADDRESS OF FLAG LIST WORD.
  1129. * (00-17) - ADDRESS OF PROCESSOR.
  1130. * (18-59) - FLAG NAME.
  1131. *
  1132. * USES X - 0, 1, 2, 3, 6, 7.
  1133. * A - 1, 2, 7.
  1134. * B - 2, 3, 5.
  1135. *
  1136. * CALLS ASN.
  1137.  
  1138.  
  1139. CKC PS 0 ENTRY/EXIT
  1140. SA1 CHAR CHECK FIRST CHARACTER
  1141. SX2 -1R* CHECK PREFIX CHARACTER
  1142. SX7 A1+B1
  1143. BX6 X1+X2
  1144. NZ X6,CKC RETURN IF FIRST CHARACTER " PREFIX
  1145. SA7 CH SET SECOND CHARACTER
  1146. RJ ASN ASSEMBLE NAME
  1147. MX0 42
  1148. SA1 A0
  1149. SB3 64
  1150. NZ X6,CKC1 IF NOT BLANK NAME
  1151. SA2 CHAR+1 SET SECOND CHARACTER
  1152. BX6 X2
  1153. LX6 54
  1154. CKC1 ZR X1,CKC RETURN IF END OF LIST
  1155. IX7 X1-X6 COMPARE NAMES
  1156. SB5 X1 SET PROCESSOR ADDRESS
  1157. BX3 X0*X7
  1158. SA1 A1+B1 NEXT LIST ENTRY
  1159. NZ X3,CKC1 IF NO MATCH
  1160. SA1 CH CHECK NEXT CHARACTER
  1161. SA2 X1+B1
  1162. CKC2 SB2 X2-1R
  1163. NZ B2,CKC3 IF NOT * *
  1164. SA2 A2+B1 NEXT CHARACTER
  1165. SB3 B3-B1
  1166. PL B3,CKC2 LOOP TO END OF CARD
  1167. CKC3 SX7 A2 SET NEXT CHARACTER ADDRESS
  1168. SA7 A1
  1169. JP B5 PROCESS SPECIAL CARD
  1170. CMF SPACE 4,20
  1171. ** CMF - COMPLETE FILES.
  1172. *
  1173. * COMPLETE *MODSETS* FILE, ENSURE EVEN PAGE COUNT, AND
  1174. * COMPLETE *OUTPUT* FILE IF USED.
  1175. *
  1176. * USES X - 1, 2, 3.
  1177. * A - 1, 2, 3.
  1178. *
  1179. * MACROS REWIND, WRITER, WRITEW.
  1180.  
  1181.  
  1182. CMF SUBR ENTRY/EXIT
  1183. WRITER M,R
  1184. REWIND M
  1185. SA1 O
  1186. SA2 LF
  1187. ZR X1,CMFX IF NO OUTPUT FILE - RETURN
  1188. SA3 PN
  1189. ZR X2,CMFX IF NOTHING LISTED TO OUTPUT - RETURN
  1190. LX3 59
  1191. NG X3,CMF1 IF PAGE NUMBER EVEN
  1192. SA3 TO
  1193. ZR X3,CMF1 IF TERMINAL OUTPUT
  1194. WRITEW O,(=2L1 ),1 EJECT
  1195. CMF1 WRITER O,R
  1196. EQ CMFX RETURN
  1197. ECD SPACE 4,20
  1198. ** ECD - EXPAND CARD.
  1199. *
  1200. * ENTRY (CDTX) - TEXT OF COMPRESSED CARD.
  1201. *
  1202. * EXIT (CHAR) - EXPANDED CARD CHARACTER STRING.
  1203. *
  1204. * USES X - 0, 1, 2, 3, 4, 6, 7.
  1205. * A - 1, 2, 3, 4, 6, 7.
  1206. * B - ALL.
  1207. *
  1208. * CALLS CDD.
  1209.  
  1210.  
  1211. ECD PS 0 ENTRY/EXIT
  1212. SA1 CSC SET CHARACTER SET
  1213. SB6 X1
  1214. SX1 300 SET LAST COLUMN
  1215. SX6 1R (X6) = * *
  1216. SB7 X1+B1
  1217. SA6 CHAR PRESET (A6)
  1218. MX0 60-6 (X0) = CHARACTER MASK
  1219. SB2 -B7
  1220. SB5 10 (B5) = 10
  1221. SB4 B5
  1222. ECD1 SB7 B7-B1 CLEAR CARD
  1223. SA6 A6+B1
  1224. PL B7,ECD1
  1225. SB3 CHAR+1+X1
  1226. SA1 CDTX
  1227. EQ ECD3
  1228.  
  1229. * EXPAND CARD TEXT.
  1230.  
  1231. ECD1.1 SX2 X7-76B
  1232. SX4 X7-74B
  1233. ZR X2,ECD1.2 IF 76B ESCAPE CODE
  1234. NZ X4,ECD2 IF NO ESCAPE CODES
  1235. BX3 X1
  1236. LX3 6
  1237. BX2 -X0*X3
  1238. SX4 X2-1
  1239. SX3 X2-2
  1240. ZR X4,ECD1.3 IF 7401B UNPACK AT SIGN
  1241. ZR X3,ECD1.3 IF 7402B UNPACK CIRCUMFLEX
  1242. SX4 X2-4
  1243. SX3 X2-7
  1244. ZR X4,ECD1.3 IF 7404B UNPACK COLON (64) OR PERCENT (63)
  1245. ZR X3,ECD1.3 IF 7407B UNPACK GRAVE ACCENT
  1246. EQ ECD2 OTHERWISE UNPACK 6 BIT CHARACTERS
  1247.  
  1248. ECD1.2 BX4 X1 76B PREFIX FOUND
  1249. LX4 6
  1250. BX3 -X0*X4
  1251. SX4 X3-37B
  1252. PL X4,ECD2 IF .GT. 7636B UNPACK 6 BIT CHARACTERS
  1253. ECD1.3 LX7 6 12 BIT CHARACTER
  1254. SB4 B4-B1
  1255. LX1 6
  1256. BX2 -X0*X1
  1257. BX7 X7+X2
  1258. NZ B4,ECD2 IF NOT END OF WORD
  1259. SA1 A1+B1
  1260. SB4 B5
  1261.  
  1262. ECD2 PL B2,ECD6 IF CARD LIMIT REACHED
  1263. SA7 B2+B3 STORE CHARACTER
  1264. SB2 B2+B1
  1265. ECD3 SB4 B4-B1 SHIFT TO NEXT CHARACTER
  1266. LX1 6
  1267. BX7 -X0*X1
  1268. NZ B4,ECD4 IF NOT END OF WORD
  1269. SA1 A1+B1 SET NEXT WORD
  1270. SB4 B5
  1271. ECD4 ZR X7,ECD4.1 IF *00* CHARACTER
  1272. NZ B6,ECD1.1 IF 6/12 ASCII CHARACTER SET
  1273. EQ ECD2 IF DISPLAY CHARACTER SET
  1274.  
  1275. ECD4.1 SB4 B4-B1
  1276. LX1 6 EXTRACT SPACE COUNT
  1277. BX7 -X0*X1
  1278.  
  1279. ECDA BSS 0
  1280. NZ B4,ECD5 IF NOT END OF WORD
  1281. SA1 A1+B1 SET NEXT WORD
  1282. SB4 B5 RESET CHARACTER COUNT
  1283. * NZ B4,ECD5.1 * 63 *
  1284. * SA1 A1+B1 * CHARACTER *
  1285. * SB4 B5 * SET *
  1286.  
  1287. ECDB BSS 0
  1288. ECD5 SB7 X7
  1289. NE B7,B1,ECD5.1 IF NOT *0001*
  1290. BX7 X7-X7
  1291. * EQ ECD5.1 * 63 CHARACTER SET *
  1292. EQ ECD2
  1293.  
  1294.  
  1295. ECD5.1 SX4 X7+B1 SET COMPRESSION COUNT
  1296. SB2 X4+B2 SET BLANKS IN BUFFER
  1297. NZ X7,ECD3 IF NOT END OF WORD
  1298.  
  1299. * ENTER IDENTIFIER NAME.
  1300.  
  1301. ECD6 SA2 CDID GET CARD IDENTIFICATION
  1302. SB2 7
  1303. MX3 60-16
  1304. LX2 6
  1305. ECD7 BX7 -X0*X2 NEXT CHARACTER
  1306. SB2 B2-B1
  1307. LX2 6
  1308. NZ X7,ECD8 IF NOT 00
  1309. BX7 X6 SUBSTITUTE * *
  1310. ECD8 SA7 B3-B1
  1311. SB3 B3+B1
  1312. NZ B2,ECD7 LOOP TO END OF NAME
  1313.  
  1314. * ENTER CARD NUMBER.
  1315.  
  1316. LX2 12 CONVERT CARD NUMBER
  1317. BX1 -X3*X2
  1318. RJ CDD
  1319. SB2 9
  1320. LX6 24
  1321. MX0 60-6
  1322. ECD9 BX7 -X0*X6 ENTER SEQUENCE NUMBER
  1323. SB2 B2-B1
  1324. SA7 A7+B1
  1325. LX6 6
  1326. NZ B2,ECD9
  1327. SB3 A7+B1 RETURN WITH NEXT CHARACTER POSITION
  1328. EQ ECD
  1329. PLE SPACE 4,20
  1330. ** PLE - PROCESS LIBRARY ERROR.
  1331. *
  1332. * ISSUES LIBRARY ERROR MESSAGE AND ABORTS JOB.
  1333. *
  1334. * CALLS ABT.
  1335.  
  1336.  
  1337. PLE SA1 DN SET DECK NAME IN MESSAGE
  1338. BX6 X1
  1339. SA6 PLEB
  1340. SA0 PLEA ABORT JOB
  1341. EQ ABT
  1342.  
  1343. PLEA DATA 20H PL ERROR IN DECK
  1344. PLEB DATA 0
  1345. POC SPACE 4,15
  1346. ** POC - PROCESS OPL CHARACTER SET.
  1347. *
  1348. * CHECK AND/OR INITIALIZE *OPLEDIT* FOR 63/64 CHARACTER
  1349. * AND 6/12 CHARACTER SET OPL PROCESSING.
  1350. *
  1351. * ENTRY (TIDT - TIDT+16B) - IDENT TABLE FOR DECK.
  1352. *
  1353. * EXIT IF INITIAL ENTRY.
  1354. * (ECDA) INITIALIZED.
  1355. * (ECDB) INITIALIZED.
  1356. *
  1357. * USES X - 1, 2, 3, 4, 5, 6, 7.
  1358. * A - 0, 1, 2, 6, 7.
  1359.  
  1360.  
  1361. POC SUBR ENTRY/EXIT
  1362. SA5 TIDT+16B CHECK OPL CHARACTER SET
  1363. MX1 -6
  1364. BX5 -X1*X5
  1365.  
  1366. * VERIFY OPL CHARACTER SET.
  1367.  
  1368. SX3 X5-64B CHECK FOR 64 CHARACTER SET PL
  1369. ZR X3,POC1 IF 64 CHARACTER SET
  1370. ZR X5,POC1 IF 63 CHARACTER SET (*00*)
  1371. SA1 TIDT+1 SET NAME OF DECK WITH INVALID CHARACTER SET
  1372. RJ SFN SPACE FILL DECK NAME
  1373. SX2 1R &1R- FORM MESSAGE
  1374. BX5 X5-X5 SET 63 CHARACTER SET
  1375. LX6 -6
  1376. BX6 X6-X2
  1377. SA6 POCB SET MESSAGE
  1378. SA1 TIDT+16B CORRECT CHARACTER SET IN RECORD HEADER
  1379. MX2 54
  1380. BX7 X2*X1
  1381. SA7 A1
  1382. MESSAGE A6,3 * DECKNAM - INCORRECT CS, 63 ASSUMED.*
  1383.  
  1384. * CHECK FOR MIXED PL,S.
  1385.  
  1386. POC1 SA2 CSM PREVIOUS CHARACTER SET
  1387. SA5 A5 REREAD CHARACTER SET INDICATORS
  1388. MX1 -6 EXCLUDE 6/12 FLAG FROM MASK
  1389. BX5 -X1*X5
  1390. BX4 X2-X5 COMPARE CHARACTER SETS
  1391. MI X2,POC2 IF INITIAL ENTRY
  1392.  
  1393. * COMPARE AGAINST PREVIOUS RECORD.
  1394.  
  1395. ZR X4,POCX IF CHARACTER SET SAME AS PREVIOUS RECORD
  1396. SA0 =C* MIXED CHARACTER SET OPL.*
  1397. EQ ABT1
  1398.  
  1399. * ON INITIAL ENTRY SET CHARACTER SET AND PRESET INSTRUCTIONS.
  1400.  
  1401. POC2 BX6 X5
  1402. SA6 A2 SET CHARACTER SET
  1403. ZR X3,POC3 IF 64 CHARACTER SET DECK
  1404. SA1 POCA SET INSTRUCTIONS
  1405. SA2 A1+B1
  1406. BX6 X1
  1407. LX7 X2
  1408. SA6 ECDA
  1409. SA7 ECDB
  1410. POC3 MX3 -6 MASK FOR 0 = DISPLAY, 1 = 6/12
  1411. SA5 A5
  1412. AX5 6
  1413. BX7 -X3*X5
  1414. SA7 CSC STORE CURRENT CHARACTER SET
  1415. EQ POCX RETURN
  1416.  
  1417.  
  1418. POCA NZ B4,ECD5.1 IF NOT END OF WORD
  1419. SA1 A1+B1
  1420. SB4 B5
  1421.  
  1422. + EQ ECD5.1
  1423.  
  1424. POCB DATA C* DECKNAM - INCORRECT CS, 63 ASSUMED.*
  1425. RMT SPACE 4,25
  1426. ** RMT - READ MODIFIER TABLE.
  1427. *
  1428. * ENTRY (DN) - DECK NAME.
  1429. * (MA) - MODIFICATION TABLE ADDRESS.
  1430. *
  1431. * USES ALL.
  1432. *
  1433. * CALLS AMD, ATS, POC.
  1434.  
  1435.  
  1436. RMT PS 0 ENTRY/EXIT
  1437. SA1 DA GET DECK TABLE ENTRY
  1438. SA3 X1+B1 SET RANDOM ADDRESS
  1439. LX7 X3
  1440. SA7 P+6
  1441. READ P INITIATE NEW READ
  1442. READW X2,TIDT,TIDTL READ IDENT TABLE
  1443. NZ X1,PLE IF EOR
  1444. SA1 TIDT
  1445. LX1 12
  1446. SB2 X1-7700B
  1447. NZ B2,PLE IF NO IDENT TABLE
  1448. SA1 TIDT+1 CHECK DECK NAME
  1449. SA2 DN
  1450. BX3 X1-X2
  1451. NZ X3,PLE IF NO MATCH
  1452. ADDWRD TDKI,X1 ADD DECK NAME TO DECK IDENTIFIER TABLE
  1453. RJ POC PROCESS OPL CHARACTER SET
  1454. READW P,T1,1 READ MODIFIER TABLE LENGTH
  1455. NZ X1,PLE IF EOR
  1456. SA1 T1 CHECK TABLE
  1457. SX6 B0
  1458. LX1 18
  1459. SB2 X1-700100B
  1460. SB3 X1-700200B
  1461. ZR B2,RMT1 IF NORMAL DECK
  1462. NZ B3,PLE IF NOT COMMON DECK
  1463. SX6 B1
  1464. RMT1 SA6 CD SET DECK STATUS
  1465. LX1 42 SET TABLE LENGTH
  1466. SB7 X1
  1467. ZR B7,RMT RETURN IF NO MODIFIERS
  1468. ALLOC TDKI,B7 ALLOCATE FOR MODIFIERS
  1469. READW P,X2+B1,B7 READ MODIFIERS
  1470. SA1 L.TDKI MODIFIER LENGTH
  1471. SA2 F.TDKI
  1472. SB7 X1-1
  1473. SA5 X2+B1
  1474. SX0 B1
  1475. RMT2 SEARCH TPRG,X5 SEARCH FOR PURGE
  1476. ZR X2,RMT4 IF NOT FOUND
  1477. RMT3 SX0 X0-1 DECREMENT POINTER
  1478. SX3 1S15 SET PURGE FLAG
  1479. BX5 X5+X3
  1480. SA1 MD COUNT MODIFICATIONS
  1481. SX6 X1+B1
  1482. SA6 A1
  1483. RMT4 BX6 X5+X0
  1484. SA6 A5
  1485. SB2 X2
  1486. SB7 B7-B1
  1487. SX0 X0+B1
  1488. SA5 A5+B1
  1489. ZR B7,RMT RETURN IF END OF TABLE
  1490. ZR B2,RMT2 IF NOT ALL AFTER
  1491. EQ RMT3 LOOP
  1492. RPF SPACE 4,25
  1493. ** RPF - READ CARD FROM PROGRAM LIBRARY.
  1494. *
  1495. * EXIT (X1) .NE. 0, IF EOR READ.
  1496. * (CDAC) - CARD ACTIVITY.
  1497. * (CDID) - CARD IDENTIFICATION.
  1498. * (CDWC) - WORD COUNT OF COMPRESSED CARD.
  1499. * (CDTX) - TEXT OF COMPRESSED CARD.
  1500. * (NMHB) - NUMBER OF MHB,S.
  1501. * (THMB) - MHB,S.
  1502. *
  1503. * USES ALL.
  1504. *
  1505. * CALLS RDC=.
  1506.  
  1507.  
  1508. RPF PS 0 ENTRY/EXIT
  1509. READC P,BUF,BUFL READ MHBS
  1510. NZ X1,RPF RETURN IF EOR
  1511. SA1 BUF SHIFT TO FIRST MHB
  1512. LX1 24
  1513. SX6 -B1 CLEAR MHB COUNT
  1514. MX0 60-18
  1515. SB2 B1 2 MHB-S ON FIRST PASS
  1516. RPF1 LX1 18 SHIFT TO NEXT MHB
  1517. BX7 -X0*X1
  1518. SB2 B2-B1
  1519. SX6 X6+B1
  1520. ZR X7,RPF2 IF END OF MHB LIST
  1521. SA7 TMHB+X6 STORE MHB
  1522. PL B2,RPF1 LOOP TO END OF WORD
  1523. SA1 A1+B1 NEXT WORD
  1524. SB2 B1+B1 RESET MHB COUNT
  1525. LX1 6
  1526. EQ RPF1 LOOP
  1527.  
  1528. * READ COMPRESSED CARD.
  1529.  
  1530. RPF2 SA5 BUF SET CARD ACTIVITY
  1531. MX0 60-16 SET IDENTIFIER INDEX MASK
  1532. BX7 X5
  1533. SA6 NMHB
  1534. SA7 CDAC
  1535. READC P,CDTX,MXCCL READ COMPRESSED IMAGE
  1536. NZ X1,PLE IF EOR
  1537. SX7 B6-CDTX SET WORD COUNT OF CARD
  1538. LX5 60-18 EXTRACT IDENTIFIER INDEX
  1539. SA7 CDWC
  1540. BX4 -X0*X5
  1541. SA2 F.TDKI
  1542. SB2 X4
  1543. AX5 18 SET CARD NUMBER
  1544. SA2 X2+B2 SET CARD IDENTIFIER
  1545. SX3 X5
  1546. BX6 X0*X2
  1547. IX7 X6+X3
  1548. SA7 CDID
  1549. NZ B2,RPF IF NOT ORIGINAL CARD
  1550. SA3 CDAC CHECK CARD ACTIVITY
  1551. PL X3,RPF IF ORIGINAL CARD ACTIVE
  1552. SA7 ID3 LAST ORIGINAL ACTIVE CARD SEQUENCE NUMBER
  1553. EQ RPF RETURN
  1554. SSR SPACE 4,15
  1555. ** SSR - SELECT *S* READ FUNCTION.
  1556. *
  1557. * SELECT *RDS=* OR *RDA=* DEPENDING ON CHARACTER SET.
  1558. *
  1559. * ENTRY (CSC) = CURRENT CHARACTER SET.
  1560. *
  1561. * USES X - 3.
  1562. * A - 3.
  1563. * B - 3.
  1564. *
  1565. * CALLS RDA=, RDS=.
  1566.  
  1567.  
  1568. SSR SUBR ENTRY/EXIT
  1569. SA3 CSC GET CURRENT CHARACTER SET
  1570. LX3 1 TWO INSTRUCTION WORDS PER ENTRY
  1571. SB3 X3
  1572. JP B3+SSR1 GO TO PROPER PROCESSOR
  1573.  
  1574. SSR1 RJ =XRDS= DISPLAY CODE
  1575. EQ SSRX RETURN
  1576. RJ =XRDA= 6/12 DISPLAY BASED ASCII
  1577. EQ SSRX RETURN
  1578. SSW SPACE 4,15
  1579. ** SSW - SELECT *S* WRITE FUNCTION.
  1580. *
  1581. * SELECT *WTS=* OR *WTA=* DEPENDING ON CHARACTER SET.
  1582. *
  1583. * ENTRY (CSC) = CURRENT CHARACTER SET.
  1584. *
  1585. * USES X - 3.
  1586. * A - 3.
  1587. * B - 3.
  1588. *
  1589. * CALLS WTA=, WTS=.
  1590.  
  1591.  
  1592. SSW SUBR ENTRY/EXIT
  1593. SA3 CSC GET CURRENT CHARACTER SET
  1594. LX3 1 TWO INSTRUCTION WORDS PER ENTRY
  1595. SB3 X3
  1596. JP B3+SSW1 GO TO PROPER PROCESSOR
  1597.  
  1598. SSW1 RJ =XWTS= DISPLAY CODE
  1599. EQ SSWX RETURN
  1600. RJ =XWTA= 6/12 DISPLAY BASED ASCII
  1601. EQ SSWX RETURN
  1602. STB SPACE 4,20
  1603. ** STB - SEARCH TABLE FOR ENTRY WITH MASK.
  1604. *
  1605. * ENTRY (A0) - TABLE NUMBER.
  1606. * (X1) - MASK.
  1607. * (X6) - ENTRY.
  1608. *
  1609. * EXIT (X2) - 0, IF ENTRY NOT FOUND.
  1610. * (X2) .NE. 0, ENTRY IF FOUND.
  1611. * (A2) - ADDRESS OF ENTRY.
  1612. * (X3) - INDEX OF ENTRY.
  1613. *
  1614. * USES X - 2, 3.
  1615. * A - 2, 3.
  1616. * B - 2, 3.
  1617.  
  1618. STB2 SA2 A2-B1 RESTORE ENTRY
  1619. SX3 A2-B3 SET INDEX
  1620.  
  1621. STB PS 0 ENTRY/EXIT
  1622. SA3 FTAB+A0
  1623. SA2 LTAB+A0
  1624. ZR X2,STB RETURN IF TABLE EMPTY
  1625. SB2 X2
  1626. SB3 X3
  1627. SA2 X3
  1628. STB1 BX3 X6-X2 CHECK ENTRY
  1629. SB2 B2-B1
  1630. BX3 X1*X3
  1631. SA2 A2+B1
  1632. ZR X3,STB2 IF REQUESTED ENTRY FOUND
  1633. NZ B2,STB1 LOOP TO END OF TABLE
  1634. MX2 0 RESPOND WITH 0
  1635. EQ STB
  1636. UPN SPACE 4,20
  1637. ** UPN - UNPACK NAME.
  1638. *
  1639. * ENTRY (X6) - NAME LEFT JUSTIFIED.
  1640. * (B3) - CHARACTER ADDRESS.
  1641. *
  1642. * EXIT (B3) - UPDATED CHARACTER ADDRESS.
  1643. *
  1644. * USES X - 1, 6, 7.
  1645. * A - 7.
  1646. * B - 2.
  1647.  
  1648.  
  1649. UPN PS 0 ENTRY/EXIT
  1650. MX1 60-6
  1651. LX6 6
  1652. SB2 B3+10
  1653. UPN1 BX7 -X1*X6
  1654. ZR X7,UPN2 IF END OF NAME
  1655. SA7 B3
  1656. SB3 B3+B1
  1657. LX6 6
  1658. NE B3,B2,UPN1
  1659. UPN2 SX7 1R SET TERMINAL * *
  1660. SA7 B3
  1661. EQ UPN
  1662. WDR SPACE 4,25
  1663. ** WDR - WRITE DIRECTORY TO PROGRAM LIBRARY.
  1664. *
  1665. * SET DATE IN IDENT TABLE AND WRITE TO *NPL*.
  1666. *
  1667. * USES X - 1, 2, 3, 4, 5, 6, 7.
  1668. * A - 1, 2, 3, 4, 5, 6, 7.
  1669. * B - ALL.
  1670. *
  1671. * CALLS WTW=.
  1672.  
  1673.  
  1674. WDR PS 0 ENTRY/EXIT
  1675. SA1 N
  1676. SA2 L.TNDK
  1677. ZR X1,WDR RETURN IF NO NEW PROGRAM LIBRARY
  1678. ZR X2,WDR RETURN IF NO NEW DECKS
  1679. RECALL N
  1680. SA1 PL ENTER PROGRAM LIBRARY NAME
  1681. SA2 DATE ENTER DATE IN IDENT TABLE
  1682. BX6 X1
  1683. LX7 X2
  1684. SA6 TIDT+1
  1685. SA7 A6+B1
  1686. MX7 0 CLEAR MODIFICATION DATE
  1687. SA7 A7+B1
  1688. WRITEW N,TIDT,TIDTL
  1689. SA5 L.TNDK MERGE DECK COUNT AND DIRECTORY ID
  1690. SA2 WDRA
  1691. BX6 X5+X2
  1692. SA6 T1
  1693. WRITEW N,T1,1
  1694. SA1 F.TNDK REMOVE FILE NAME POINTERS
  1695. SB2 B1+B1
  1696. SB3 X5
  1697. MX4 24
  1698. SA2 X1+B1
  1699. BX6 -X4*X2
  1700. WDR1 SA6 A2
  1701. SB3 B3-B2
  1702. SA2 A2+B2
  1703. BX6 -X4*X2
  1704. NZ B3,WDR1
  1705. WRITEW N,X1,X5 WRITE DECK NAME TABLE
  1706. WRITEF X2,R
  1707. EQ WDR RETURN
  1708.  
  1709. WDRA DATA 7000BS48 DIRECTORY ID
  1710. WMT SPACE 4,20
  1711. ** WMT - WRITE MODIFIER TABLE.
  1712. *
  1713. * ADD DECK TO NEW DECK NAME TABLE. WRITE MODIFIER TABLE
  1714. * TO *NPL*.
  1715. *
  1716. * USES ALL.
  1717. *
  1718. * CALLS ADW, WTW=.
  1719.  
  1720.  
  1721. WMT PS 0 ENTRY/EXIT
  1722. SA1 IGNORE
  1723. NZ X1,WMT IF *MODSETS ONLY* MODE
  1724. RECALL N
  1725. SA1 MD
  1726. SA2 DN ENTER DECK NAME IN IDENT TABLE
  1727. ZR X1,WMT1 IF NO MODIFICATIONS
  1728. SA1 DATE ENTER NEW DATE
  1729. LX7 X1
  1730. SA7 TIDT+3
  1731. WMT1 SA1 CD
  1732. SX3 X1+6
  1733. LX6 X2
  1734. SA6 TIDT+1
  1735. ADDWRD TNDK,X2+X3 ENTER DECK NAME
  1736. ADDWRD A0,X6-X6
  1737. SX2 A6 SET RANDOM RETURN ADDRESS
  1738. SX3 A6
  1739. LX2 30
  1740. BX6 X2+X3
  1741. SA6 N+6
  1742. SA5 DN DECK NAME
  1743. SEARCH TCED,X5 CHECK FOR CHARACTER SET CHANGE
  1744. ZR X2,WMT1.1 IF NO CHANGE OF CHARACTER SET
  1745. SA1 TIDT+16B CHARACTER SET WORD
  1746. MX4 -6
  1747. LX2 6 POSITION NEW CHARACTER SET
  1748. LX4 6
  1749. BX5 -X4*X2 NEW CHARACTER SET
  1750. BX6 X4*X1
  1751. BX6 X5+X6 ADD TO 63 - 64 CHARACTER SET INDICATOR
  1752. SA6 A1+
  1753. WMT1.1 WRITEW N,TIDT,TIDTL WRITE IDENT TABLE
  1754. SA1 L.TDKI CHECK MODIFIERS
  1755. SA2 F.TDKI
  1756. SX6 -B1
  1757. SB3 X1
  1758. SA3 X2
  1759. WMT2 LX3 59-15
  1760. NG X3,WMT3 IF PURGED
  1761. SX6 X6+B1
  1762. WMT3 SB3 B3-B1
  1763. SA3 A3+B1
  1764. NZ B3,WMT2
  1765. SA1 CD
  1766. SA2 WMTA
  1767. ZR X1,WMT4 IF NOT COMMON DECK
  1768. SA2 WMTB
  1769. WMT4 BX6 X2+X6 MERGE MODIFIER COUNT AND TABLE ID
  1770. SA6 T1
  1771. WRITEW N,T1,1 WRITE MODIFIER ID
  1772. SA5 L.TDKI WRITE ACTIVE MODIFIERS
  1773. SA1 F.TDKI WRITE DECK MODIFIERS
  1774. MX0 60-16
  1775. SX5 X5-1
  1776. SA0 X1+B1
  1777. WMT5 ZR X5,WMT RETURN IF END OF MODIFIERS
  1778. SA1 A0 SET MODIFIER
  1779. BX6 X0*X1
  1780. LX1 59-15
  1781. NG X1,WMT6 IF PURGED
  1782. SA6 T1
  1783. WRITEW X2,T1,1
  1784. WMT6 SA0 A0+B1
  1785. SX5 X5-1
  1786. EQ WMT5 LOOP
  1787.  
  1788. WMTA DATA 7001BS48 MODIFIER TABLE ID
  1789.  
  1790. WMTB DATA 7002BS48 MODIFIER TABLE ID FOR COMMON DECK
  1791. WNF SPACE 4,25
  1792. ** WNF - WRITE CARD TO NEW PROGRAM LIBRARY.
  1793. *
  1794. * ENTRY (CDAC) - CARD ACTIVITY.
  1795. * (CDID) - CARD IDENTIFICATION.
  1796. * (CDWC) - WORD COUNT OF COMPRESSED CARD.
  1797. * (CDTX) - TEXT OF COMPRESSED CARD.
  1798. * (NMHB) - NUMBER OF MHB,S.
  1799. * (TMHB) - MHB,S.
  1800. *
  1801. * USES ALL.
  1802. *
  1803. * CALLS WTW=.
  1804.  
  1805.  
  1806. WNF PS 0 ENTRY/EXIT
  1807. SA2 IGNORE
  1808. NZ X2,WNF IF *MODSETS ONLY* MODE
  1809. SA2 N
  1810. ZR X2,WNF RETURN IF NO NEW PROGRAM LIBRARY
  1811. SA1 CDAC ACTIVITY TO BIT 59
  1812. SA5 NMHB STORE MHB TERMINATORS
  1813. MX3 1
  1814. SA2 A1+B1 WORD COUNT OF CARD TO BITS 54 - 58
  1815. SX6 B0
  1816. BX1 X3*X1
  1817. SA6 TMHB+X5
  1818. LX1 24
  1819. SA3 A2+B1 CARD NUMBER TO BITS 36 - 53
  1820. MX0 60-16
  1821. SA6 A6+B1
  1822. LX2 18
  1823. SB3 X5 MHB COUNT
  1824. BX3 -X0*X3
  1825. SA6 A6+B1
  1826. BX1 X1+X2
  1827. SA5 A5+B1 FIRST MHB
  1828. SB2 B1 2 MHB-S ON FIRST PASS
  1829. IX7 X1+X3
  1830. SA7 BUF
  1831.  
  1832. * PACK AND WRITE MHB TABLE.
  1833.  
  1834. WNF1 LX7 18 PACK MHB-S
  1835. SB3 B3-B1
  1836. BX7 X5+X7
  1837. SB2 B2-B1
  1838. SA5 A5+B1 NEXT MHB
  1839. PL B2,WNF1 LOOP FOR 1 WORD OF MHB-S
  1840. SA7 A7+B1 STORE WORD
  1841. SB2 B1+B1
  1842. MX7 0
  1843. PL B3,WNF1 LOOP FOR ALL MHB-S
  1844. WRITEW N,BUF+1,A7-BUF
  1845. SA5 CDWC WRITE COMPRESSED CARD
  1846. WRITEW X2,CDTX,X5
  1847. EQ WNF RETURN
  1848. WOF SPACE 4,20
  1849. ** WOF - WRITE OUTPUT FILE.
  1850. *
  1851. * ENTRY (X1) - FWA OF LINE.
  1852. * .LT. 0, LINE IS IN *S* FORMAT.
  1853. * (X2) - 0, IF LINE IS IN *C* FORMAT.
  1854. *
  1855. * USES X - 1, 2, 3, 4, 6, 7.
  1856. * A - 1, 2, 3, 4, 6, 7.
  1857. *
  1858. * CALLS CDD.
  1859. *
  1860. * MACROS WRITEC, WRITEK, WRITEW.
  1861.  
  1862.  
  1863. WOF SUBR ENTRY/EXIT
  1864. SX6 B1+
  1865. SA3 LC ADVANCE LINE COUNT
  1866. SA6 LF
  1867. SX6 X3+B1
  1868. SA6 A3
  1869. SA4 A3+B1
  1870. IX7 X6-X4
  1871. NG X7,WOF3 IF BOTTOM OF PAGE NOT REACHED
  1872. BX6 X1 SAVE REQUEST
  1873. LX7 X2
  1874. SA6 WOFA
  1875. SA7 A6+B1
  1876. SA1 PN ADVANCE PAGE NUMBER
  1877. SX7 X1+B1
  1878. SX6 3 RESET LINE COUNT
  1879. SA6 A3
  1880. SA7 A1
  1881. RJ CDD CONVERT PAGE NUMBER
  1882. MX1 60-12
  1883. LX6 4*6 STORE PAGE NUMBER
  1884. BX6 X1*X6
  1885. SA6 PAGE
  1886. SX2 O
  1887. SA1 TO
  1888. ZR X1,WOF1 IF TERMINAL OUTPUT
  1889. WRITEW X2,(=1H1),1
  1890. SA1 TL
  1891. WRITEW X2,X1,4
  1892. WRITEW X2,TITL,TITLL
  1893. WRITEW X2,SBTL,SBTLL
  1894. EQ WOF2 CONTINUE PROCESSING
  1895.  
  1896. WOF1 SA3 PN
  1897. SX3 X3-2
  1898. NZ X3,WOF2 IF NOT FIRST TIME
  1899. WRITEW X2,TERL,TERLL
  1900. WRITEW X2,(=C* *),1 WRITE END OF LINE
  1901. WOF2 SA1 WOFA RESTORE REQUEST
  1902. SA2 A1+B1
  1903. WOF3 NG X1,WOF4 IF *S* FORMAT
  1904. WRITEC O,X1
  1905. EQ WOFX RETURN
  1906.  
  1907. WOF4 BX1 -X1
  1908. WRITEK O,X1,X2
  1909. EQ WOFX RETURN
  1910.  
  1911. WOFA DATA 0,0
  1912. LCS SPACE 4,15
  1913. ** LCS - LIST CARD STATUS.
  1914. *
  1915. * USES X - 0, 1, 2, 3, 6.
  1916. * A - 1, 2, 3, 6.
  1917. * B - 2, 3, 4, 5.
  1918. *
  1919. * CALLS CDD, UPN.
  1920.  
  1921.  
  1922. LCS PS 0 ENTRY/EXIT
  1923. SA1 IGNORE
  1924. NZ X1,LCS IF *MODSETS ONLY* MODE
  1925. SA1 CL
  1926. NZ X1,LCS RETURN IF CARD LISTED
  1927. SA1 TMHB
  1928. SX2 80
  1929. MX0 60-16
  1930. BX6 -X0*X1
  1931. SB5 CHAR+15+X2
  1932. ZR X6,LCS1 IF DECK CARD
  1933. SA2 F.TDKI ADD CURRENT DECK NUMBER
  1934. SA3 X2
  1935. BX1 -X0*X3
  1936. RJ CDD
  1937. LX6 6*4
  1938. SB3 B5
  1939. RJ UPN
  1940. LCS1 PRINT -CHSP,B3+X1
  1941. SX6 1R CLEAR STATUS
  1942. SA6 CHSP+4
  1943. SA6 A6+B1
  1944. SA6 A6+B1
  1945. SA6 CL SET CARD LISTED
  1946. EQ LCS RETURN
  1947. LDS SPACE 4,15
  1948. ** LDS - LIST DECK STATUS.
  1949. *
  1950. * USES X - 0, 1, 2, 3, 5, 6.
  1951. * A - 1, 2, 3, 6.
  1952. *
  1953. * CALLS LTB, SFN.
  1954. *
  1955. * MACROS LISTOP, PRINT.
  1956.  
  1957.  
  1958. LDS SUBR ENTRY/EXIT
  1959. SA2 IGNORE
  1960. NZ X2,LDSX IF *MODSETS ONLY* MODE
  1961. LISTOP D,LDSX,,2 IF NO LIST FOR DECK STATUS - RETURN
  1962. SA1 DN SPACE FILL DECK NAME
  1963. RJ SFN
  1964. SA2 F.TDKI
  1965. LX6 60-12
  1966. SX4 X2+B1
  1967. SA6 BUF
  1968. SA3 L.TDKI
  1969. SX0 =C*MODIFIERS.*
  1970. SX5 X3-1
  1971. RJ LTB
  1972. PRINT (=C* *)
  1973. EQ LDSX RETURN
  1974. LER SPACE 4,20
  1975. ** LER - LIST ERROR MESSAGE.
  1976. *
  1977. * ENTRY (X0) = ERROR MESSAGE ADDRESS.
  1978. *
  1979. * EXIT (CHSP) CLEARED.
  1980. * (EC) ADVANCED.
  1981. *
  1982. * USES X - 1, 2, 6, 7.
  1983. * A - 1, 2, 6, 7.
  1984. * B - 2.
  1985. *
  1986. * MACROS LISTOP, WRITEC, WRITEW.
  1987.  
  1988.  
  1989. LER SUBR ENTRY/EXIT
  1990. SA2 O
  1991. LISTOP E,LER1 IF NO ERROR LIST
  1992. ZR X2,LER1 IF NO OUTPUT FILE
  1993. WRITEW O,(=8A******* ),1
  1994. WRITEC X2,X0
  1995. SA2 LC ADVANCE LINE COUNT
  1996. SX7 X2+B1
  1997. SA7 A2
  1998. LER1 SB2 9 CLEAR CHARACTER SPACING
  1999. SX6 1R
  2000. LER2 SA6 CHSP+B2
  2001. SB2 B2-B1
  2002. PL B2,LER2
  2003. SA1 EC ADVANCE ERROR COUNT
  2004. SX6 X1+B1
  2005. SA6 A1
  2006. EQ LERX RETURN
  2007. LST SPACE 4,20
  2008. ** LST - LIST STATISTICS.
  2009. *
  2010. * LIST DECKS ON PROGRAM LIBRARY. LIST DECKS ON *NPL*.
  2011. *
  2012. * USES X - 0, 1, 4, 5, 6, 7.
  2013. * A - 1, 4, 5, 6, 7.
  2014. *
  2015. * CALLS LTB.
  2016. *
  2017. * MACROS LISTOP.
  2018.  
  2019.  
  2020. LST SUBR ENTRY/EXIT
  2021. LISTOP S,LSTX IF NO LIST FOR STATISTICS - RETURN
  2022. SX6 =40HSTATISTICS.
  2023. SX7 99999 FORCE PAGE EJECT
  2024. SA6 TL
  2025. SA7 LC
  2026. SA1 =1H CLEAR FIRST WORD OF BUFFER
  2027. SX7 B1+B1 RESET WORDS/ENTRY
  2028. BX6 X1
  2029. SA6 BUF
  2030. SA7 LTBA
  2031. SA6 SBTL+1 CLEAR SUBTITLE
  2032. SA6 A6+B1
  2033.  
  2034. * LIST DECKS ON PROGRAM LIBRARY.
  2035.  
  2036. SX0 =C*DECKS ON PROGRAM LIBRARY.*
  2037. SA4 F.TDKN
  2038. SA5 L.TDKN
  2039. RJ LTB
  2040.  
  2041. * LIST DECKS ON NEW PROGRAM LIBRARY.
  2042.  
  2043. SA1 N
  2044. ZR X1,LSTX IF NO NEW PROGRAM LIBRARY - RETURN
  2045. SX0 =C*DECKS ON NEW PROGRAM LIBRARY.*
  2046. SA4 F.TNDK
  2047. SA5 L.TNDK
  2048. RJ LTB
  2049. EQ LSTX RETURN
  2050. LTB SPACE 4,20
  2051. ** LTB - LIST TABLE.
  2052. *
  2053. * LIST SPECIFIED TABLE ON OUTPUT FILE.
  2054. *
  2055. * ENTRY (X0) - MESSAGE.
  2056. * (X4) - TABLE.
  2057. * (X5) = TABLE LENGTH.
  2058. *
  2059. * USES ALL.
  2060. *
  2061. * CALLS SFN, WOF.
  2062.  
  2063.  
  2064. LTB6 MX6 0
  2065. SA6 A6+B1
  2066. PRINT BUF
  2067.  
  2068. LTB PS 0 ENTRY/EXIT
  2069. SA1 LC CHECK LINE COUNT
  2070. SA0 X4 (A0) = TABLE ADDRESS
  2071. SA2 A1+B1
  2072. SX6 X1+4
  2073. IX7 X6-X2
  2074. PL X7,LTB1 IF NOT ROOM FOR FIRST LINE OF TABLE
  2075. PRINT (=C* *)
  2076. SA1 LC
  2077. BX6 X1
  2078. LTB1 SA6 A1 UPDATE LINE COUNT
  2079. MX3 60-12 COPY MESSAGE TO BUFFER
  2080. SA2 X0
  2081. LX6 X2
  2082. SB2 BUF+1
  2083. LTB2 SA6 B2
  2084. BX7 -X3*X2
  2085. SB2 B2+B1
  2086. SA2 A2+B1
  2087. LX6 X2
  2088. NZ X7,LTB2
  2089. PRINT BUF
  2090. SA1 =1H CLEAR FIRST WORD OF BUFFER
  2091. BX6 X1
  2092. MX0 42
  2093. SA6 BUF
  2094. PRINT (=C* *)
  2095. NZ X5,LTB3 IF TABLE NOT EMPTY
  2096. PRINT (=C+ * NONE * +)
  2097. EQ LTB RETURN
  2098.  
  2099. LTB3 SB6 -12
  2100. ZR X5,LTB RETURN IF END OF TABLE
  2101. LTB4 ZR X5,LTB6 IF END OF TABLE
  2102. SA1 A0 SPACE FILL NAME
  2103. BX7 -X0*X1
  2104. BX1 X0*X1
  2105. RJ SFN
  2106. SA4 LTBA TABLE WORD COUNT
  2107. LX7 59-16
  2108. PL X7,LTB5 IF CLEAR
  2109. SA2 A4+B1 ADD ()
  2110. IX6 X6+X2
  2111. LTB5 LX6 60-6 STORE NAME
  2112. SA6 BUF+13+B6
  2113. SB6 B6+B1
  2114. SB2 X4 ADVANCE TABLE
  2115. IX5 X5-X4
  2116. SA0 A0+B2
  2117. NG B6,LTB4 LOOP TO END OF LINE
  2118. MX6 0
  2119. SA6 A6+B1
  2120. PRINT BUF
  2121. EQ LTB3 LOOP
  2122.  
  2123. LTBA DATA 2 WORDS/TABLE ENTRY
  2124. VFD 60/10H ) (-1H
  2125. PPM SPACE 4,20
  2126. ** PPM - PROCESS PULLED MODS.
  2127. *
  2128. * USES ALL.
  2129. *
  2130. * CALLS CDC, ECD.
  2131. *
  2132. * MACROS WRITEK.
  2133.  
  2134.  
  2135. PPM PS 0
  2136. SA1 IP
  2137. ZR X1,PPM IF NOT IN DECK
  2138. SA1 II
  2139. SA2 NMHB
  2140. SB6 X2 NUMBER OF MHB-S
  2141. SB5 X2
  2142. MX2 -16D MASK FOR IDENT INDEX
  2143. SA3 TMHB GET FIRST MHB
  2144. SA4 PA
  2145. NZ X4,PPM10 IF *SUMMARY* MODE
  2146. BX4 -X2*X3
  2147. IX5 X1-X4
  2148. NG X5,PPM IF CARD INSERTED *LATER* THAN THIS IDENT
  2149. PPM1 BX4 -X2*X3
  2150. IX5 X4-X1
  2151. ZR X5,PPM2 IF MATCH
  2152. SB6 B6-B1
  2153. SA3 A3+B1
  2154. NZ B6,PPM1 IF MORE MHB-S
  2155. SA3 PA
  2156. NZ X3,PPM9 IF NON-ORIGINAL IN *SUMMARY* MODE
  2157. PPM1.1 SX6 B0
  2158. SA6 DL CLEAR DL
  2159. RJ CDC COMPLETE DIRECTIVE CARD
  2160. SA1 CDID
  2161. BX6 X1
  2162. SA6 ID1 SET FIRST IDENTIFIER
  2163. EQ PPM
  2164.  
  2165.  
  2166. * DETERMINE *I *D OR *RESTORE
  2167.  
  2168. PPM2 SA1 PA
  2169. NZ X1,PPM8 IF *SUMMARY* MODE
  2170. BX2 X2*X3
  2171. ZR X2,PPM3 IF PROCESS *D
  2172. EQ B5,B6,PPM4 IF PROCESS *I
  2173.  
  2174. * PROCESS *RESTORE
  2175.  
  2176. PPM2.1 SA1 RF
  2177. NZ X1,PPM6 IF (STILL) RESTORING
  2178. RJ CDC COMPLETE DIRECTIVE CARD
  2179. SX6 B1
  2180. SA6 RF INDICATE RESTORING
  2181. SA6 DL SET DL
  2182. EQ PPM5 SET ACTIVE AND EXIT
  2183.  
  2184.  
  2185. * PROCESS *D
  2186.  
  2187. PPM3 SA1 DF
  2188. NZ X1,PPM6 IF (STILL) DELETING
  2189. RJ CDC COMPLETE DIRECTIVE CARD
  2190. SX6 B1
  2191. SA6 DF INDICATE DELETING
  2192. SA6 DL SET DL
  2193. EQ PPM5 SET ACTIVE AND EXIT
  2194.  
  2195. * PROCESS *I
  2196.  
  2197. PPM4 SA1 IF
  2198. NZ X1,PPM7 IF (STILL) INSERTING
  2199. RJ CDC COMPLETE DIRECTIVE CARD
  2200. SX6 B1
  2201. SA6 IF INDICATE INSERTING
  2202. SA1 DL
  2203. NZ X1,PPM7 IF DIRECTIVE LAST, OMIT *I
  2204. SA6 ACTIVE
  2205. RJ CDC FLUSH INSERT IMMEDIATELY
  2206. SX6 B1 TURN IF BACK ON
  2207. SA6 IF
  2208. EQ PPM7 AND THE FIRST INSERT
  2209.  
  2210.  
  2211. * SET ACTIVE AND EXIT
  2212.  
  2213. PPM5 SA6 ACTIVE
  2214. SA1 CDID
  2215. BX6 X1
  2216. SA6 ID1
  2217. EQ PPM EXIT
  2218.  
  2219. PPM6 SA1 CDID
  2220. BX6 X1 STORE ID2
  2221. SA6 ID2
  2222. EQ PPM EXIT
  2223.  
  2224. PPM7 RJ ECD EXPAND CARD IMAGE
  2225. WRITEK M,CHAR,B3-CHAR-16D
  2226. SX6 B0
  2227. SA6 ACTIVE PREVENT SECOND *I CARD
  2228. EQ PPM
  2229.  
  2230. PPM8 SA1 CDAC
  2231. NG X1,PPM1.1 IF NO NET CHANGE
  2232. EQ PPM3 IF DELETED (NET)
  2233.  
  2234. PPM9 SA1 CDAC
  2235. NG X1,PPM4 PROCESS ACTIVE INSERTION
  2236. EQ PPM IF INACTIVE INSERTION - IGNORE
  2237.  
  2238. PPM10 SA4 A4+B1
  2239. ZR X4,PPM1 IF *SUMMARY IDENT* MODE
  2240. PPM11 BX4 -X2*X3
  2241. IX5 X1-X4
  2242. NG X5,PPM12 IF CARD ACTED UPON LATER THAN THIS IDENT
  2243. ZR X5,PPM12 IF CARD ACTED UPON BY THIS IDENT
  2244. SB6 B6-B1
  2245. SA3 A3+B1
  2246. NZ B6,PPM11 IF MORE MHB-S
  2247. EQ PPM1.1 EXIT NOT A MOD OF THIS COMPOSITE
  2248.  
  2249. PPM12 EQ B6,B5,PPM9 IF FIRST COMPOSITE EQUAL TO ORIGINAL MOD
  2250. BX2 X2*X3
  2251. NZ X2,PPM2.1 IF RESTORE
  2252. EQ PPM8
  2253. CDC SPACE 4,20
  2254. ** CDC - COMPLETE DIRECTIVE CARD.
  2255. *
  2256. * USES ALL.
  2257. *
  2258. * CALLS CID, WTS=.
  2259.  
  2260.  
  2261. CDC PS 0
  2262. SA1 ACTIVE
  2263. ZR X1,CDC8 IF NOT CURRENTLY PROCESSING DIRECTIVE
  2264. SA1 DELD GET -*D,- DIRECTIVE
  2265. SA2 DF
  2266. NZ X2,CDC1 IF SET *D
  2267. SA1 INSD GET -*I,- DIRECTIVE
  2268. SA2 IF
  2269. NZ X2,CDC1 IF SET *I
  2270. SA1 RESD GET -*RESTORE- DIRECTIVE
  2271. CDC1 SX6 B0
  2272. SA6 CHAR
  2273. MX7 -6
  2274. CDC2 LX1 6 STORE DIRECTIVE
  2275. BX6 -X7*X1
  2276. ZR X6,CDC3 IF LAST CHARACTER
  2277. SA6 A6+B1
  2278. EQ CDC2 LOOP FOR NEXT CHARACTER
  2279.  
  2280. CDC3 SA1 ID1 CONVERT FIRST IDENTIFIER
  2281. SX0 B0
  2282. RJ CID
  2283. SA1 ID2 CONVERT ID2, IF ANY
  2284. ZR X1,CDC4 IF NO SECOND IDENTIFIER REQUIRED
  2285. SX6 1R, INSERT THE , REQUIRED
  2286. SA6 A6+B1
  2287. SX0 B0
  2288. RJ CID
  2289. CDC4 SA1 ID1 CHECK FOR ORIGINAL CARD
  2290. SA2 DN DECK NAME
  2291. MX0 42
  2292. BX1 X0*X1
  2293. BX1 X1-X2
  2294. ZR X1,CDC7 IF ORIGINAL CARD
  2295.  
  2296. * APPEND LAST ORIGINAL CARD NUMBER TO MODIFY DIRECTIVE.
  2297.  
  2298. SX6 1R PAD AT LEAST ONE BLANK
  2299. SA6 A6+1
  2300. SB3 CHAR+29 CHECK LINE POSITION
  2301. SB2 A6+
  2302. GE B2,B3,CDC6 IF AT OR AFTER COLUMN 30
  2303. CDC5 SA6 A6+B1 ADD A BLANK
  2304. SB2 B2+B1
  2305. LT B2,B3,CDC5 IF NOT AT COLUMN 30
  2306. CDC6 SX6 1R( ADD PARENTHESIS
  2307. SA1 ID3 ORIGINAL CARD SEQUENCE NUMBER
  2308. SX0 B0
  2309. SA6 A6+B1
  2310. RJ CID CONVERT SEQUENCE NUMBER
  2311. SX6 1R) ADD CLOSING PARENTHESIS
  2312. SA6 A6+1
  2313. CDC7 SX1 A6-CHAR
  2314. WRITES M,CHAR+1,X1 WRITE OUT DIRECTIVE
  2315. CDC8 SX6 B0+ CLEAR FLAGS
  2316. SA6 ACTIVE
  2317. SA6 DF
  2318. SA6 IF
  2319. SA6 RF
  2320. SA6 ID2
  2321. EQ CDC EXIT
  2322.  
  2323.  
  2324. ID1 DATA 0 FIRST CARD ID
  2325. ID2 DATA 0 SECOND CARD ID
  2326. ID3 CON 0 LAST ORIGINAL CARD ID
  2327. CID SPACE 4,20
  2328. ** CID - CONVERT *ID* FOR DIRECTIVE.
  2329. *
  2330. * ENTRY (X1) - ID.
  2331. * (A6) - STRING BUFFER IN WHICH TO INSERT *ID*.
  2332. *
  2333. * EXIT *ID* INSERTED.
  2334. * (A6) ADVANCED.
  2335. *
  2336. * USES X - 0, 1, 2, 3, 4, 6, 7.
  2337. * A - 4, 6.
  2338. * B - 2, 3, 4, 5, 6.
  2339. *
  2340. * CALLS CDD.
  2341.  
  2342.  
  2343. * PROCESS IDENT.
  2344.  
  2345. CID PS 0
  2346. CID1 SB6 6
  2347. MX2 42 IDENT MASK
  2348. MX7 6
  2349. BX3 X2*X1
  2350. SA4 DN
  2351. IX4 X3-X4
  2352. ZR X4,CID4 IF DECK.NUMBER
  2353. CID2 BX4 X7*X3
  2354. ZR X4,CID3 INSERT .
  2355. LX6 X4,B6
  2356. LX3 X3,B6
  2357. SX4 X6-1R
  2358. ZR X4,CID2 NO BLANKS
  2359. SA6 A6+B1 STORE IN CHARACTER BUFFER
  2360. EQ CID2
  2361.  
  2362. CID3 NZ X0,CID IF JUST FINISHED NUMBER
  2363. SX6 1R.
  2364. SA6 A6+B1
  2365.  
  2366. * PROCESS NUMBER.
  2367.  
  2368. CID4 MX2 -16 EXTRACT CARD NUMBER
  2369. BX1 -X2*X1
  2370. RJ CDD
  2371. LX6 24
  2372. BX1 X6
  2373. SX0 B1 SET TO SECOND PASS
  2374. EQ CID1
  2375. SFI SPACE 4,15
  2376. ** SFI - SEARCH FOR IDENT IN DECK.
  2377. *
  2378. * USES X - ALL.
  2379. * A - ALL.
  2380. * B - ALL.
  2381. *
  2382. * CALLS WTW=.
  2383. *
  2384. * MACROS SEARCH, WRITEW.
  2385.  
  2386.  
  2387. SFI PS 0
  2388. SX7 B0+
  2389. SA7 IP PRESET TO *NOT PRESENT*
  2390. SA1 PA
  2391. ZR X1,SFI1 IF NOT *PULLALL* REQUEST
  2392. SA1 A1+B1
  2393. BX7 X1
  2394. SA7 IN
  2395. SX3 B0 INITIAL IDENT
  2396. ZR X1,SFI2 IF NOT *PULLALL,IDENT*
  2397. SA1 L.TDKI
  2398. SB7 X1-1
  2399. NZ B7,SFI3 IF MODIFIERS PRESENT
  2400. EQ SFI EXIT
  2401.  
  2402. SFI1 SA5 IN
  2403. MX7 60
  2404. SA7 II PRESET TO *NOT FOUND*
  2405. SEARCH TDKI,X5
  2406. ZR X2,SFI IF NO MATCH
  2407. SFI2 SA2 DN
  2408. BX7 X2
  2409. SA7 DCKD+1 STORE INTO DECK MESSAGE
  2410. SX7 X3 IDENT ORDINAL
  2411. SA7 II SHOW FOUND
  2412. SX6 B1
  2413. SA6 IP SHOW PRESENT
  2414. WRITEW M,DCKD,2 WRITE *DECK XXXX
  2415. EQ SFI
  2416.  
  2417. * SEARCH THE DECK *IDENT* TABLE IN CHRONOLOGICAL ORDER
  2418. * FOR A MATCHING ENTRY IN THE PULLALL *IDENT* TABLE.
  2419.  
  2420. SFI3 SA5 F.TDKI GET FWA OF IDENT TABLE
  2421. SA4 L.TDKI GET LENGTH OF IDENT TABLE
  2422. SX6 B0 CLEAR IDENT NAME
  2423. MX7 60 PRESET *NOT FOUND*
  2424. SA6 IN
  2425. SA7 II
  2426. SB6 B0 PRESET IDENT ORDINAL
  2427. SB7 X4 SET IDENT TABLE LENGTH
  2428. SFI4 SB6 B6+B1 INCREMENT IDENT ORDINAL
  2429. GE B6,B7,SFI IF END OF TABLE, EXIT
  2430. SA2 X5+B6 READ IDENT TABLE ENTRY
  2431. SEARCH TPAT,X2 SEARCH PULLALL TABLE
  2432. ZR X2,SFI4 IF MATCH NOT FOUND, LOOP
  2433. BX6 X2 SET IDENT NAME
  2434. SX3 B6 SET IDENT ORDINAL
  2435. SA6 IN
  2436. EQ SFI2 COMPLETE ENTRY
  2437. BUFFERS TITLE COMMON DECKS AND BUFFERS.
  2438. *CALL COMCCDD
  2439. *CALL COMCCIO
  2440. *CALL COMCRDA
  2441. *CALL COMCRDC
  2442. *CALL COMCRDS
  2443. *CALL COMCRDW
  2444. *CALL COMCSFN
  2445. *CALL COMCSYS
  2446. *CALL COMCWTA
  2447. *CALL COMCWTC
  2448. *CALL COMCWTS
  2449. *CALL COMCWTW
  2450. SPACE 4
  2451. ** BUFFERS.
  2452.  
  2453.  
  2454. USE BUFFERS
  2455.  
  2456. * CHARACTER STRING BUFFER.
  2457.  
  2458. CHSP BSS 0 SPACING FOR LIST
  2459. DUP 10,1
  2460. DATA 1R
  2461. USBB BSS 0 STRING BUFFER
  2462. CHAR BSS 326 150 UPPER/LOWER CASE + SEQUENCE
  2463.  
  2464. BUF BSS 0 SCRATCH BUFFER
  2465. BUFL EQU 101B
  2466.  
  2467. PBUF EQU BUF+BUFL
  2468. OBUF EQU PBUF+PBUFL
  2469. SBUF EQU OBUF+OBUFL
  2470. MBUF EQU SBUF+SBUFL
  2471. NBUF EQU MBUF+MBUFL
  2472. MTBS EQU NBUF+NBUFL
  2473. MFL= EQU MTBS+MTBSL+200000B
  2474. IDENT SPACE 4
  2475. IDENT TERMINATE BLOCK
  2476. TITLE DIRECTIVE CARD PROCESSORS.
  2477. ORG NBUF
  2478. SPACE 4,10
  2479. ** DIRECTIVE STATEMENT PROCESSOR TEMPORARY STORAGE.
  2480.  
  2481.  
  2482. ZP CON 0 *Z* ARGUMENT PROCESSING FLAG
  2483. PDC SPACE 4,10
  2484. ** PDC - PROCESS DIRECTIVE CARDS.
  2485.  
  2486.  
  2487. PDC PS 0 ENTRY/EXIT
  2488. RJ RDR READ DIRECTORY
  2489. SA1 ZP *Z* MODE PROCESSING FLAG
  2490. NZ X1,PDC0 IF *Z* ARGUMENT SELECTED
  2491. SA1 I
  2492. ZR X1,PDC3 IF NO INPUT FILE
  2493. READ I
  2494. PDC0 BSS 0
  2495. READS I,CHAR,80 READ DIRECTIVE
  2496. NZ X1,PDC3 IF EOR
  2497. PDC1 CARD CSET
  2498. CARD EDIT
  2499. CARD PREFIX
  2500. CARD PURGE
  2501. CARD PULLMOD
  2502. CARD PULLALL
  2503. EQ ERR1
  2504.  
  2505. * DIRECTIVE PROCESSORS RETURN HERE TO LIST CARD.
  2506.  
  2507. PDC2 RJ LDC LIST CARD
  2508.  
  2509. * DIRECTIVE PROCESSORS RETURN HERE TO READ NEXT CARD.
  2510.  
  2511. READS I,CHAR,80 READ NEXT DIRECTIVE
  2512. ZR X1,PDC1 LOOP TO EOR
  2513. SA1 EC
  2514. SA2 DB
  2515. ZR X1,PDC RETURN IF NO ERRORS
  2516. NZ X2,PDC RETURN IF DEBUG SET
  2517. SX6 B0 CLEAR EDIT TABLE
  2518. SA6 L.TEDT
  2519. RJ LST LIST STATISTICS
  2520. SA0 =C* DIRECTIVE ERRORS.*
  2521. EQ ABT
  2522.  
  2523. * PROCESS EMPTY INPUT FILE.
  2524.  
  2525. PDC3 SA0 =C/ NO DIRECTIVES./
  2526. SA1 FM
  2527. NZ X1,PDC IF -F- MODE
  2528. EQ ABT1
  2529.  
  2530. ERRM CON 0 ERROR MESSAGE ADDESSS
  2531. ERR SPACE 4
  2532. ** ERR - DIRECTIVE ERROR PROCESSORS.
  2533.  
  2534.  
  2535. ERR SA6 ERRM SET ERROR MESSAGE ADDRESS
  2536. EQ PDC2 EXIT
  2537.  
  2538. ERR1 SX6 =C*INCORRECT DIRECTIVE.*
  2539. EQ ERR
  2540.  
  2541. ERR2 SX6 =C*FORMAT ERROR IN DIRECTIVE.*
  2542. EQ ERR
  2543. CSET SPACE 4,10
  2544. *** CSET DNAME
  2545. *
  2546. * DECLARE CHARACTER SET TO BE USED IN PROCESSING
  2547. * MODIFICATION DIRECTIVES AND TEXT. THIS CHARACTER
  2548. * SET MUST MATCH THAT OF THE DECKS TO BE EDITED.
  2549.  
  2550.  
  2551. CSET RJ ASN ASSEMBLE NAME OF *CSET*
  2552. SA1 TCST-1 FWA-1 OF CHARACTER SET TABLE
  2553. MX3 42
  2554. CSET1 SA1 A1+B1
  2555. ZR X1,CSET2 IF UNKNOWN CHARACTER SET
  2556. BX4 X3*X1
  2557. BX7 X6-X4
  2558. NZ X7,CSET1 IF NO MATCH
  2559. BX7 -X3*X1
  2560. SA7 SETC SET NEW CHARACTER SET
  2561. EQ PDC2 RETURN
  2562. CSET2 SX6 =C* CSET - UNKNOWN CHARACTER SET.*
  2563. EQ ERR PROCESS ERROR
  2564. EDIT SPACE 4
  2565. *** EDIT D1
  2566. * EDIT D1,D2,...DN
  2567. * EDIT D1.DN
  2568. *
  2569. * REQUEST EDITING OF DECK(S) D1 - DN.
  2570.  
  2571.  
  2572. EDIT RJ ASN ASSEMBLE NAME
  2573. ZR X6,ERR2 IF ASSEMBLY ERROR
  2574. SEARCH TDKN,X6 CHECK FOR NAME=DECK
  2575. ZR X2,EDT3 IF NOT FOUND
  2576. SA1 CH CHECK NEXT CHARACTER
  2577. SA3 X1
  2578. SB7 B0 1 ENTRY
  2579. SB2 X3-1R.
  2580. SA5 A2 PRESET (A5)
  2581. NZ B2,EDT1 IF NOT *.*
  2582. SX7 X1+B1 SKIP *.*
  2583. SA7 A1
  2584. RJ ASN ASSEMBLE NAME
  2585. ZR X6,ERR2 IF ASSEMBLY ERROR
  2586. SEARCH A0,X6 CHECK FOR NAME=DECK
  2587. ZR X2,EDT3 IF NOT FOUND
  2588. SB6 A5 SET NUMBER OF ENTRIES
  2589. SB7 A2-B6
  2590. PL B7,EDT1 IF SECOND NAME AFTER FIRST
  2591. SX6 =C+NAMES SEPARATED BY *.* IN WRONG ORDER.+
  2592. EQ ERR
  2593.  
  2594. EDT1 SEARCH TEDT,X5 SEARCH FOR PREVIOUS ENTRY
  2595. NZ X2,EDT2 IF FOUND
  2596. BX5 X1*X5 ENTER DECK
  2597. SX2 A5
  2598. ADDWRD A0,X5+X2
  2599. SA4 SETC CHECK FOR CSET
  2600. NG X4,EDT2 IF NO CSET DIRECTIVE FOUND
  2601. MX0 42
  2602. BX0 X0*X6
  2603. BX4 X0+X4
  2604. ADDWRD TCED,X4 TABLE OF CHARACTER SETS OF EDITED DECKS
  2605. EDT2 SB7 B7-2
  2606. SA5 A5+2
  2607. PL B7,EDT1 LOOP TO END OF REQUESTED DECKS
  2608.  
  2609. SA1 CH CHECK NEXT CHARACTER
  2610. SA2 X1
  2611. SX6 X1+B1
  2612. SB2 X2-1R
  2613. ZR B2,PDC2 EXIT IF * *
  2614. NE B2,B1,ERR2 FORMAT ERROR IF NOT *,*
  2615. SA6 A1 SKIP *,*
  2616. EQ EDIT LOOP
  2617.  
  2618. EDT3 SA1 EDTA+1 SET NAME IN MESSAGE
  2619. MX2 30
  2620. BX1 X2*X1
  2621. LX6 30
  2622. BX3 -X2*X6
  2623. IX7 X1+X3
  2624. MX2 12
  2625. BX6 X2*X6
  2626. SA7 A1
  2627. SA6 A1+B1
  2628. SX6 EDTA SET MESSAGE ADDRESS
  2629. EQ ERR
  2630.  
  2631. EDTA DATA 30HUNKNOWN DECK -
  2632. PREFIX SPACE 4,10
  2633. *** PREFIX C
  2634. *
  2635. * SET THE PREFIX CHARACTER FOR THE GENERATED DIRECTIVES TO *C*.
  2636.  
  2637.  
  2638. PREFIX BSS 0 ENTRY
  2639. SA1 CH GET THE CHARACTER
  2640. MX2 6
  2641. SA1 X1
  2642. SX6 X1-1R
  2643. ZR X6,ERR2 IF BLANK
  2644. LX1 -6 USE ONLY THE LOWER CHARACTER
  2645. BX7 X2*X1
  2646. SA1 TDTA UPDATE THE PREFIX OF EACH DIRECTIVE
  2647. PRF1 ZR X1,PDC2 IF END OF TABLE
  2648. SA3 X1
  2649. SA1 A1+B1
  2650. BX3 -X2*X3 CLEAR PREFIX CHARACTER
  2651. BX6 X3+X7
  2652. SA6 A3+
  2653. EQ PRF1 CONTINUE
  2654. PURGE SPACE 4
  2655. *** PURGE MNAME
  2656. *
  2657. * PURGE MODIFIER *MNAME* IN DECKS SELECTED FOR EDITING.
  2658. PURGE SPACE 4
  2659. *** PURGE MNAME,*
  2660. *
  2661. * PURGE MODIFIER *MNAME* AND ALL AFTER
  2662.  
  2663.  
  2664. PURGE RJ ASN ASSEMBLE IDENT NAME
  2665. ZR X6,ERR2 IF ASSEMBLY ERROR
  2666. SEARCH TPRG,X6 SEARCH FOR PURGE NAME
  2667. NZ X2,PRG1 IF FOUND
  2668. ADDWRD A0,X1*X6 ENTER NEW PURGE NAME
  2669. SA2 A6
  2670. PRG1 SA1 CH CHECK NEXT CHARACTER
  2671. SA3 X1
  2672. SB2 X3-1R,
  2673. NZ B2,PDC2 EXIT IF NOT *,*
  2674. SA3 A3+B1 CHECK NEXT CHARACTER
  2675. SX4 B1
  2676. SB2 X3-1R*
  2677. NZ B2,ERR1 ERROR IF NOT (*)
  2678. BX6 X4+X6 SET ALL AFTER FLAG
  2679. SA6 A2
  2680. EQ PDC2 EXIT
  2681. PULLMOD SPACE 4
  2682. *** PULLMOD IDENT
  2683. *
  2684. * PULLMOD IDENT1,IDENT2,IDENT3, . . . ,IDENTN
  2685. * CREATE MODSET CORRESPONDING TO *IDENT* ON EDITED DECKS.
  2686.  
  2687.  
  2688. PULLMOD RJ ASN ASSEMBLE IDENT NAME
  2689. ZR X6,ERR2 IF ASSEMBLY ERROR
  2690. SEARCH TPMI,X6 SEARCH FOR PULLMOD NAME ALREADY STORED
  2691. NZ X2,PMOD0 IF FOUND
  2692. ADDWRD A0,X1*X6 ADD NEW PULLMOD
  2693. PMOD0 SA1 CH
  2694. SA2 X1 CHECK NEXT CHARACTER
  2695. SX6 X1+B1
  2696. SB2 X2-1R
  2697. ZR B2,PDC2 IF * *
  2698. NE B2,B1,ERR2 IF NOT *,*
  2699. SA6 A1
  2700. EQ PULLMOD
  2701. PULLALL SPACE 4,10
  2702. *** PULLALL IDENT
  2703. *
  2704. * CREATE A COMPOSITE MODSET FROM ALL EDITED DECKS
  2705. * REFLECTING CHANGES FROM *IDENT* AND LATER MODSETS.
  2706. *
  2707. *** PULLALL
  2708. *
  2709. * CREATE A COMPOSITE MODSET FROM ALL EDITED DECKS
  2710.  
  2711.  
  2712. PULLALL SX6 B1
  2713. SA6 PA SET *PULL ALL* FLAG
  2714. SA1 CH
  2715. SA2 X1 CHECK NEXT CHARACTER
  2716. SB2 X2-1R
  2717. ZR B2,PDC2 IF A BLANK
  2718. RJ ASN
  2719. ZR X6,ERR2 IF MORE THAN 7 CHARACTERS OR BAD CHARACTER
  2720. SA6 A6+B1 SET FLAG THAT THERE ARE IDENT ENTRIES
  2721. BX5 X6
  2722. SEARCH TPAT,X5
  2723. NZ X2,PUL IF DUPLICATE REQUEST
  2724. ADDWRD A0,X5
  2725. PUL SA1 CH
  2726. SA2 X1 CHECK NEXT CHARACTER
  2727. SB2 X2-1R
  2728. NZ B2,ERR2 IF NOT A BLANK
  2729. EQ PDC2
  2730. TITLE DIRECTIVE CARD PROCESSING SUBROUTINES.
  2731. LDC SPACE 4,20
  2732. ** LDC - LIST DIRECTIVE CARD.
  2733. *
  2734. * ENTRY (CHAR) - CARD IN *S* FORMAT.
  2735. * (ERRM) - ERROR MESSAGE, IF NEEDED.
  2736. *
  2737. * USES X - 0, 1, 2, 6, 7.
  2738. * A - 1, 2, 6, 7.
  2739. * B - 3.
  2740. *
  2741. * CALLS LER, UPN.
  2742. *
  2743. * MACROS LISTOP, PRINT.
  2744.  
  2745.  
  2746. LDC SUBR ENTRY/EXIT
  2747. SA1 ERRM
  2748. ZR X1,LDC1 IF NO ERROR MESSSAGE
  2749. SA2 =9L *ERROR*
  2750. BX6 X2
  2751. SB3 CHSP
  2752. RJ UPN
  2753. LISTOP E,LDC2,NG IF ERROR LIST ON
  2754. SA2 EC ADVANCE ERROR COUNT
  2755. SX6 X2+B1
  2756. SA6 A2
  2757. EQ LDCX RETURN
  2758.  
  2759. LDC1 LISTOP C,LDC3 IF NO LIST SELECTED ON INPUT DIRECTIVES
  2760. LDC2 PRINT -CHSP,90
  2761. LDC3 SA1 ERRM
  2762. ZR X1,LDCX IF NO ERROR MESSAGE - RETURN
  2763. SX6 B0 CLEAR ERROR MESSAGE
  2764. SA6 A1
  2765. SX0 X1
  2766. RJ LER LIST ERROR MESSAGE
  2767. EQ LDCX RETURN
  2768. RDR SPACE 4,20
  2769. ** RDR - READ DIRECTORY FROM PROGRAM LIBRARY.
  2770. *
  2771. * CHECK PROGRAM LIBRARY FORMAT. READ DECK NAME TABLE.
  2772. *
  2773. * USES ALL.
  2774. *
  2775. * CALLS ABT, ADW, ATS, RDW=.
  2776.  
  2777.  
  2778. RDR PS 0 ENTRY/EXIT
  2779. SA5 P
  2780. ZR X5,RDR RETURN IF NO PROGRAM LIBRARY
  2781. SKIPEI P
  2782. SKIPB X2,2 BACKSPACE OVER DIRECTORY
  2783. READ X2
  2784. READW X2,TIDT,TIDTL READ IDENT TABLE
  2785. ZR X1,RDR1 IF NO EOR
  2786. SA0 =C* PROGRAM LIBRARY EMPTY.*
  2787. EQ ABT
  2788.  
  2789. RDR1 SA1 TIDT
  2790. LX1 18
  2791. SA2 A1+B1
  2792. SB2 X1-770000B
  2793. NZ B2,RDR7 IF NO IDENT TABLE
  2794. BX6 X2 SET PROGRAM LIBRARY NAME
  2795. SA6 PL
  2796. READW P,T1,1 READ FIRST WORD
  2797. NZ X1,RDR7 IF EOR
  2798. SA1 T1
  2799. SX5 X1 SET DIRECTORY LENGTH
  2800. LX1 18
  2801. SB2 X1-700000B
  2802. NZ B2,RDR7 IF NOT DIRECTORY
  2803. ZR X5,RDR7 IF EMPTY
  2804. RDR2 READW P,T1,2 READ RECORD NAME AND RANDOM ADDRESS
  2805. SA1 T1 CHECK TYPE
  2806. SB2 X1-OPRT
  2807. ZR B2,RDR3 IF OPL DECK
  2808. NE B2,B1,RDR4 IF NOT OPL COMMON DECK
  2809. ERRNZ OPRT+1-OCRT CODE ASSUMES VALUE
  2810. RDR3 ADDWRD TDKN,X1 ENTER DECK NAME
  2811. SA1 T2 ENTER RANDOM ADDRESS
  2812. ADDWRD A0,X1
  2813. RDR4 SX5 X5-2
  2814. NZ X5,RDR2 LOOP TO END OF DIRECTORY
  2815. SA1 FM
  2816. ZR X1,RDR RETURN IF *F* MODE NOT USED
  2817.  
  2818. * ENTER ALL DECKS IN EDIT TABLE IF -F- MODE.
  2819.  
  2820. SA1 L.TDKN ALLOCATE EDIT TABLE
  2821. LX1 -1 COMPENSATE FOR DIFFERENT ENTRY LENGTHS
  2822. ALLOC TEDT,X1
  2823. SA1 F.TDKN COPY DECK NAMES TO EDIT TABLE
  2824. SB4 X3
  2825. SB2 B1+B1
  2826. MX0 42
  2827. SA1 X1
  2828. BX6 X0*X1
  2829. SB3 B0
  2830. RDR5 SX1 A1
  2831. BX6 X6+X1
  2832. SA6 X2+B3
  2833. SA1 A1+B2
  2834. SB3 B3+B1
  2835. BX6 X0*X1
  2836. NE B3,B4,RDR5 LOOP FOR ALL DECK NAMES
  2837. EQ RDR RETURN
  2838.  
  2839. RDR7 SA0 =C* ERROR IN DIRECTORY.*
  2840. EQ ABT
  2841. COMMON SPACE 4,10
  2842. ** INPUT DIRECTIVE PROCESSOR TABLE.
  2843.  
  2844.  
  2845. HERE
  2846. DATA 0 END OF TABLE
  2847. IDENT SPACE 4
  2848. IDENT TERMINATE BLOCK
  2849. SPACE 4
  2850. ERRNG NBUF+NBUFL-* DIRECTIVE PROCESSOR OVERFLOW
  2851. TITLE OPLEDIT PRESET.
  2852. PRS SPACE 4,10
  2853. ** PRS - PRESET OPLEDIT.
  2854. *
  2855. * ENTRY (A0) - FL.
  2856. *
  2857. * USES X - 0, 1, 2, 3, 4, 6, 7.
  2858. * A - 0, 1, 2, 4, 6.
  2859. * B - 2, 4, 5, 6, 7.
  2860. *
  2861. * CALLS ARG, SOF, ZAP.
  2862. *
  2863. * MACROS CLOCK, DATE, EVICT, GETPP, WRITEC.
  2864.  
  2865.  
  2866. PRS SUBR ENTRY/EXIT
  2867. SX6 A0-4
  2868. SA6 FL
  2869. SA1 ACTR ARGUMENT COUNT
  2870. SA4 ARGR ADDRESS OF FIRST ARGUMENT
  2871. SB4 X1
  2872. SB5 ARGT ARGUMENT TABLE
  2873. RJ ARG PROCESS ARGUMENTS
  2874. ZR X1,PRS2 IF NO ARGUMENT ERROR
  2875. PRS1 SA0 =C* ERROR IN ARGUMENTS.*
  2876. EQ ABT1
  2877.  
  2878. * PROCESS LIST CONTROL.
  2879.  
  2880. PRS2 RJ SOF SET OUTPUT FORMAT
  2881. CLOCK TIME REQUEST TIME
  2882. DATE DATE REQUEST DATE
  2883. SA1 TIME SET DATE AND TIME IN SHORT TITLE
  2884. SA2 DATE
  2885. BX6 X1
  2886. LX7 X2
  2887. SA6 TERTM
  2888. SA7 TERDT
  2889. SB6 FETS CHECK FILE NAMES
  2890. MX0 42
  2891. SB7 FETSL
  2892. SB2 8
  2893. SA0 =C* FILE NAME CONFLICT.*
  2894. PRS3 SA1 B6
  2895. SB5 B6+B2
  2896. BX1 X0*X1
  2897. PRS4 SA2 B5
  2898. BX2 X0*X2
  2899. ZR X2,PRS5 IF FILE NOT DEFINED
  2900. BX7 X2-X1
  2901. ZR X7,ABT1 IF FILE NAME CONFLICT
  2902. PRS5 SB5 B5+B2 ADVANCE TO NEXT FILE
  2903. LT B5,B7,PRS4 IF NOT DONE (INNER LOOP)
  2904. SB6 B6+B2
  2905. NE B6,B7,PRS3 IF NOT DONE (OUTER LOOP)
  2906.  
  2907. SA1 N INITIALIZE PL,S
  2908. ZR X1,PRS6 IF NO *NPL*
  2909. SX6 B1
  2910. BX6 X6+X1 SET COMPLETE BIT
  2911. SA6 A1
  2912. SA6 A1+7 SAVE FILE NAME
  2913. EVICT A1
  2914. PRS6 SA1 M INITIALIZE MODSET FILE
  2915. ZR X1,PRS7 IF NO MODSET FILE REQUESTED
  2916. SX6 B1
  2917. BX6 X6+X1
  2918. SA6 A1 SET COMPLETE
  2919. SA6 A1+7 SAVE NAME
  2920. EVICT A1
  2921. PRS7 SA1 ZP
  2922. ZR X1,PRS8 IF *Z* ARGUMENT NOT SELECTED
  2923. SX2 I SET INPUT FET ADDRESS
  2924. RJ ZAP PROCESS *Z* ARGUMENT
  2925.  
  2926. * SPACE FILL COMMAND.
  2927.  
  2928. PRS8 SB7 4
  2929. PRS9 SA1 CCDR+B7
  2930. RJ SFN
  2931. SA6 A1
  2932. SB7 B7-B1
  2933. PL B7,PRS9 IF NOT COMPLETE
  2934. GETPP BUF,LL,BUF GET PAGE SIZE PARAMETERS
  2935. SA1 TO
  2936. ZR X1,PRSX IF TERMINAL OUTPUT
  2937. WRITEC O,BUF WRITE PRINT DENSITY FORMAT CONTROL
  2938. EQ PRSX RETURN
  2939. TITLE PRESET DATA.
  2940. ARGT SPACE 4,20
  2941. ** ARGT - ARGUMENT TABLE.
  2942.  
  2943.  
  2944. ARGT BSS 0 ARGUMENT TABLE
  2945. I ARG I,I INPUT FILE
  2946. L ARG O,O LIST OUTPUT
  2947. P ARG P,P *OPL* FILE
  2948. N ARG NNPL,N *NPL* FILE
  2949. U ARG =1,UM *U* MODE FLAG
  2950. M ARG NMODSET,M *MODSET* FILE
  2951. LO ARG LO,LO,400B LIST OPTIONS
  2952. F ARG -=1,FM *F* MODE FLAG
  2953. D ARG -=1,DB *D* MODE FLAG
  2954. Z ARG -*,ZP *Z* MODE FLAG
  2955. ARG
  2956.  
  2957. NNPL CON 0LNPL+3
  2958. NMODSET CON 0LMODSETS+3
  2959. TITLE PRESET SUBROUTINES.
  2960. SLC SPACE 4,10
  2961. ** SLC - SET LIST CONTROL.
  2962. *
  2963. * EXIT (LO) INITIALIZED.
  2964. *
  2965. * USES X - ALL.
  2966. * A - 0, 1, 3, 6.
  2967. * B - 2, 3, 4.
  2968.  
  2969.  
  2970. SLC3 SA6 LO
  2971.  
  2972. SLC SUBR ENTRY/EXIT
  2973. SX4 B1+ BIT CONSTANT
  2974. SA1 LO GET *LO* OPTIONS
  2975. MX0 -6
  2976. BX6 X6-X6 INITIALIZE RESULT REGISTER
  2977. ZR X1,SLCX IF NOT SELECTED
  2978. SA0 =C* INCORRECT -LO- PARAMETER.*
  2979. SB2 SLCA LIST OPTION TABLE
  2980. SLC1 LX1 6 PICK NEXT LETTER
  2981. BX5 -X0*X1
  2982. ZR X5,SLC3 IF COMPLETE
  2983. SB3 B0+
  2984. SLC2 SA3 B2+B3 GET NEXT OPTION
  2985. BX2 X5-X3 COMPARE
  2986. ZR X3,ABT1 IF END OF OPTION TABLE
  2987. SB3 B3+B1 ADVANCE INDEX
  2988. NZ X2,SLC2 IF NO MATCH
  2989. SB4 B3-B1
  2990. LX7 X4,B4
  2991. BX6 X6+X7 ADD CURRENT OPTION
  2992. EQ SLC1 LOOP FOR NEXT LETTER
  2993.  
  2994. SLCA BSS 0 OPTION TABLE
  2995. OPTION HERE
  2996. CON 0 END OF TABLE
  2997. SOF SPACE 4,15
  2998. ** SOF - SET OUTPUT FORMAT.
  2999. *
  3000. * SET TERMINAL OUTPUT FLAG AND DEFAULT LIST OPTIONS.
  3001. *
  3002. * ENTRY (LO) = COMMAND *LO* PARAMETERS.
  3003. * = 0 IF OMITTED.
  3004. *
  3005. * EXIT (LO) = LIST OPTION BIT MAP.
  3006. * = DEFAULT OPTIONS IF OMITTED FROM
  3007. * COMMAND.
  3008. * (TO) = 0 IF OUTPUT ASSIGNED TO
  3009. * INTERACTIVE TERMINAL.
  3010. *
  3011. * USES X - 1, 2, 6.
  3012. * A - 1, 2, 6.
  3013. *
  3014. * CALLS SLC, STF.
  3015.  
  3016.  
  3017. SOF SUBR ENTRY/EXIT
  3018.  
  3019. * SET TERMINAL FILE DEFAULT OPTIONS.
  3020.  
  3021. SX2 O CHECK OUTPUT FILE RESIDENCE
  3022. RJ STF
  3023. SA6 TO SET TERMINAL OUTPUT FLAG
  3024. SA2 SOFA
  3025. ZR X6,SOF2 IF ASSIGNED TO TERMINAL
  3026.  
  3027. * SET NON-TERMINAL FILE DEFAULT OPTIONS.
  3028.  
  3029. SA2 SOFB SET DEFAULT LIST OPTIONS
  3030.  
  3031. * PROCESS SPECIFIED OR DEFAULT OPTIONS.
  3032.  
  3033. SOF2 SA1 LO READ COMMAND OPTIONS
  3034. NZ X1,SOF3 IF OPTIONS ENTERED
  3035. BX6 X2 STORE DEFAULT OPTIONS
  3036. SA6 A1
  3037. SOF3 RJ SLC SET LIST CONTROLS
  3038. EQ SOFX RETURN
  3039.  
  3040. SOFA CON 0LE DEFAULT TERMINAL OPTIONS
  3041. SOFB CON 0LECMDS DEFAULT NON-TERMINAL OPTIONS
  3042. COMMON SPACE 4,10
  3043. ** PRESET COMMON DECKS.
  3044.  
  3045.  
  3046. *CALL COMCARG
  3047. *CALL COMCCPM
  3048. *CALL COMCSTF
  3049. *CALL COMCUSB
  3050. *CALL COMCZAP
  3051. OPLEDIT TTL OPLEDIT - OPL EDITING PROGRAM.
  3052. SPACE 4
  3053. END OPLEDIT OPL EDITING PROGRAM