User Tools

Site Tools


cdc:nos2.source:opl871:sysedit

SYSEDIT

Table Of Contents

  • [00011] SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
  • [00013] SYSTEM LIBRARY FILE MANAGER.
  • [00127] MACRO DEFINITIONS.
  • [00129] KEYWD - PROCESS KEYWORD.
  • [00159] PRINT - PRINT LINE ON OUTPUT FILE.
  • [00179] DEAD START LOAD.
  • [00181] DSL - DEAD START LOAD.
  • [00187] FILE DEFINITIONS.
  • [00209] MANAGED TABLES.
  • [00218] TLIB - LIBRARY AND DIRECTORIES.
  • [00227] TRCD - RECORD DIRECTORY.
  • [00239] TDLT - DELETE RECORDS TABLE.
  • [00249] TFLO - FIELD LENGTH OVERRIDE TABLE.
  • [00260] TINR - IGNORE RECORDS TABLE.
  • [00271] TRES - RESIDENCY TABLE.
  • [00282] TADR - ALTERNATE DEVICE RECORDS TABLE.
  • [00296] TEPD - ENTRY POINT DIRECTORY TABLE
  • [00305] TSCC - TABLE OF SCOPE CONTROL CARDS.
  • [00315] TSYN - PROGRAM NAME SYNONYMS.
  • [00322] TFIL - FILE NAMES.
  • [00331] TCMR - TABLE OF RCL ADDRESSES FOR CM RESIDENT PROGRAMS.
  • [00341] TSCR - SCRATCH TABLE.
  • [00346] TLST - LIST FOR PROGRAM READS.
  • [00362] COMMON DATA.
  • [00421] SYSEDIT - MAIN PROGRAM.
  • [00423] MAIN PROGRAM.
  • [00507] MAIN PROCESSING ROUTINES.
  • [00509] CCF - COPY CHANGE FILES.
  • [00555] CMF - COMPLETE FILES.
  • [00603] DLR - DELETE RECORDS.
  • [00651] WDR - WRITE DIRECTORY.
  • [00707] MVZ - MOVE DATA, CHECKING FOR ZERO-LENGTH RECORD ENTRIES.
  • [00747] SLR - SET LIBRARY RESIDENCE.
  • [00835] LIBRARY TABLE PROCESSING.
  • [00838] LIB - PROCESS LIBRARY TABLES.
  • [00873] CLD - GENERATE CLD.
  • [01004] REL - PROCESS RELOCATABLE FORMAT.
  • [01046] OVL - PROCESS OVERLAY FORMAT.
  • [01054] ULB - PROCESS USER LIBRARY FORMAT.
  • [01064] PRC - PROCESS PROCEDURE FORMAT.
  • [01087] ABS - PROCESS ABSOLUTE FORMAT.
  • [01138] PPU - PROCESS PERIPHERAL PROCESSOR FORMAT.
  • [01145] LBD - GENERATE LDB.
  • [01159] CPR - CHECK PROGRAM RESIDENCE.
  • [01197] SPR - SET PROGRAM RESIDENCE.
  • [01226] AEP - ADD ENTRY POINT.
  • [01244] PFL - PROCESS FIELD LENGTH OVERRIDE.
  • [01316] TSEP - TABLE OF SPECIAL ENTRY POINTS.
  • [01487] ELD - ENTER PERIPHERAL LIBRARY DIRECTORY.
  • [01517] MSP - PROCESS MASS STORAGE RESIDENT PPU PROGRAMS.
  • [01701] PLD - GENERATE PLD.
  • [01945] RRD - REMOVE ROUTINE FROM PLD.
  • [01982] CMC - PROCESS CM RESIDENT CPU PROGRAMS.
  • [02076] CMP - PROCESS CM RESIDENT PPU PROGRAMS.
  • [02178] ASR - PROCESS ALTERNATE LIBRARIES.
  • [02358] INC - INITIALIZE COPY.
  • [02442] FILE COPY ROUTINES.
  • [02445] CPF - COPY FILE.
  • [02562] CRS - CHECK RECORD STATUS.
  • [02603] RCW - READ CONTROL WORD.
  • [02647] RDB - READ BLOCK.
  • [02691] SLS - SET LIBRARY STATUS.
  • [02744] RESIDENCY PROCESSING.
  • [02746] ERS - ENTER RESIDENCY STATUS.
  • [02773] FLO - SET FIELD LENGTH OVERRIDE FOR SPECIFIED RECORDS.
  • [02809] RES - DEFINE RESIDENCY.
  • [02858] PPS - DEFINE PPU SYNONYMS.
  • [02880] SCC - DEFINE RECORDS AS SCOPE CONTROL CARDS.
  • [02893] DIRECTIVE PROCESSING SUBROUTINES.
  • [02903] ARN - ASSEMBLE RECORD NAME.
  • [02939] ASN - ASSEMBLE NAME.
  • [02974] CKW - CHECK KEYWORD.
  • [03023] UTILITY SUBROUTINES.
  • [03025] ABT - ABORT JOB.
  • [03062] BPH - BUILD *PPL* HEADER.
  • [03097] ERT - ENTER RESIDENCY TABLE.
  • [03128] TOV - MANAGED TABLE MEMORY OVERFLOW PROCESSOR.
  • [03170] WOF - WRITE LINE TO OUTPUT.
  • [03227] WTB - WRITE BLOCK.
  • [03274] DIRECTIVE CARD PROCESSING.
  • [03283] RDC - READ DIRECTIVE CARDS.
  • [03547] DIRECTIVE PROCESSING ROUTINES.
  • [03549] ALC - ADD LIBRARY CONTROL.
  • [03601] LDC - LIST DIRECTIVE CARD.
  • [03651] DATA AND LBUFFERS.
  • [03654] TRCN - TABLE OF RECORD NAMES.
  • [03676] PLR - PROCESS LIBDECK RECORD.
  • [03715] PRESET ROUTINES.
  • [03717] PRS - PRESET PROGRAM.
  • [03820] ISF - INITIALIZE SYSTEM FILE.
  • [03943] DSL - DEAD START LOAD.

Source Code

SYSEDIT.txt
  1. IDENT SYSEDIT,DSL
  2. ABS
  3. SST T1,T2,T3,T4
  4. ENTRY SYSEDIT
  5. ENTRY RFL=
  6. ENTRY SSJ=
  7. SYSCOM B1
  8. QUAL$ EQU 1 DEFINE UNQUALIFIED COMMON DECKS
  9. *COMMENT SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
  10. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  11. TITLE SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
  12. SPACE 4
  13. *** SYSEDIT - SYSTEM LIBRARY FILE MANAGER.
  14. * G. R. MANSFIELD. 70/12/19.
  15. * P. D. HAAS. 73/02/09.
  16. SPACE 4
  17. *** SYSEDIT PERFORMS MODIFICATIONS AND INITIALIZATION
  18. * OF THE SYSTEM LIBRARY.
  19. SPACE 4
  20. *** CONTROL CARD CALL.
  21. *
  22. *
  23. * SYSEDIT (P1,P2,...,PN)
  24. *
  25. * PN ACTION
  26. *
  27. * I DIRECTIVE INPUT FROM FILE *INPUT*
  28. * I=LFN DIRECTIVE INPUT FROM FILE *LFN*
  29. * I=0 NO DIRECTIVE INPUT
  30. *
  31. * B BINARY CHANGE RECORDS FROM FILE *LGO*
  32. * B=LFN BINARY CHANGE RECORDS FROM FILE *LFN*
  33. * B=0 NO BINARY CHANGE RECORDS
  34. *
  35. * L LIST OUTPUT ON FILE *OUTPUT*
  36. * L=LFN LIST OUTPUT ON FILE *LFN*
  37. * L=0 NO LIST OUTPUT
  38. *
  39. * R RESTORE TO INITIAL DEAD START SYSTEM.
  40. * R=N RESTORE TO COPY N OF SYSTEM
  41. * THE SYSTEM COPY NUMBER IS PRINTED ON THE
  42. * OUTPUT LISTING.
  43. * R=0 NO SYSTEM FILE RESTORATION
  44. *
  45. * C CHECKPOINT SYSTEM AT JOB COMPLETION
  46. *
  47. * Z READ DIRECTIVES FROM THE SYSEDIT CARD.
  48. * THIS OVERRIDES ANY *I* PARAMETER.
  49. *
  50. * NA NO ABORT TAKEN IF SYSTEM FILE IS BUSY.
  51. *
  52. *
  53. * DEFAULT PARAMETERS.
  54. *
  55. * I=INPUT
  56. * L=0
  57. * B=LGO
  58. * R=0
  59. * C SELECTED IF ALTERNATE LIBRARY PRESENT
  60. SPACE 4,10
  61. *** DAYFILE MESSAGES.
  62. *
  63. * *DIRECTIVE ERRORS.*
  64. *
  65. * * ERROR IN LIBDNN*
  66. *
  67. * *MEMORY OVERFLOW.*
  68. *
  69. * *RECORD NOT FOUND.*
  70. *
  71. * *REQUESTED RESTORATION NOT FOUND.*
  72. *
  73. * *SYSEDIT ARGUMENT ERROR.*
  74. *
  75. * *SYSTEM BUILT WITH LIBDNN.*
  76. *
  77. * *SYSTEM BUILT WITH LIBDNN (UNDEFINED).*
  78. *
  79. * *SYSTEM EDIT COMPLETE - CHANGE NN.*
  80. *
  81. * *SYSTEM FILE ERROR IN CLD.*
  82. *
  83. * *SYSTEM FILE ERROR IN DIRECTORY.*
  84. *
  85. * *SYSTEM FILE ERROR IN PLD.*
  86. *
  87. * *SYSTEM FILE ERROR IN RCL.*
  88. *
  89. * *SYSTEM FILE ERROR IN RPL.*
  90. *
  91. * *SYSTEM FILE FORMAT ERROR.*
  92. *
  93. * / TERMINAL INPUT NOT VALID. USE *I* OR *Z* OPTION./
  94. SPACE 4,10
  95. *** OPERATOR MESSAGES.
  96. *
  97. * * COPYING XXXXXXX*
  98. *
  99. * *SKIPPING XXXXXXX*
  100. *
  101. * *GENERATING LIBRARY DIRECTORY.*
  102. *
  103. * *LIBDECK NOT FOUND - (NAME)*
  104. SPACE 4,10
  105. **** ASSEMBLY CONSTANTS.
  106.  
  107.  
  108. IBUFL EQU 101B INPUT BUFFER LENGTH
  109. LBUFL EQU 80 LINE BUFFER LENGTH
  110. OBUFL EQU 2001B OUTPUT FILE BUFFER
  111. FBUFL EQU 10001B FILE BUFFER
  112. SBUFL EQU 30001B SYSTEM BUFFER
  113. MINC EQU 400B MEMORY INCREMENT
  114. ****
  115. SPACE 4
  116. ** COMMON DECKS.
  117.  
  118.  
  119. *CALL COMCMAC
  120. *CALL COMCCMD
  121. *CALL COMCMTM
  122. *CALL COMSMSC
  123. *CALL COMSPRD
  124. *CALL COMSSRT
  125. *CALL COMSSSD
  126. *CALL COMSSSJ
  127. TITLE MACRO DEFINITIONS.
  128. KEYWD SPACE 4
  129. ** KEYWD - PROCESS KEYWORD.
  130. *
  131. *
  132. * KEYWD NAME,ADDRESS
  133. * GENERATE LIST AND CALL FOR DIRECTIVE TRANSLATION.
  134. * ENTRY *NAME* = KEYWORD NAME.
  135. * *ADDRESS* = PROCESSOR ADDRESS.
  136. *
  137. * CALLS CKW.
  138.  
  139.  
  140. NOREF .X
  141. KEYWD MACRO NAM,ADR
  142. LOCAL A,B,C
  143. IF DEF,.X,1
  144. .1 IFNE .X,*,
  145. KEYWD RMT
  146. A BSS 0
  147. KEYWD RMT
  148. SA0 A
  149. RJ CKW
  150. B BSS 0
  151. .X SET B
  152. .1 ENDIF
  153. KEYWD RMT
  154. C SET ADR NAM
  155. CON 0L_NAM+C
  156. KEYWD RMT
  157. ENDM
  158. PRINT SPACE 4
  159. ** PRINT - PRINT LINE ON OUTPUT FILE.
  160. *
  161. *
  162. * PRINT FWA,N
  163. * ENTRY *FWA* = FWA OF LINE.
  164. * *F* = FORMAT.
  165. * IF *F* IS MISSING, LINE IS IN *C* FORMAT.
  166. * IF *F* IS PRESENT, LINE IS IN *S* FORMAT.
  167. *
  168. * CALLS WOF.
  169.  
  170.  
  171. PRINT MACRO FWA,N
  172. R= X1,FWA
  173. IFC NE,*N**,1
  174. R= X2,N
  175. IFC EQ,*N**,1
  176. SX2 B0
  177. RJ WOF
  178. ENDM
  179. TITLE DEAD START LOAD.
  180. DSL SPACE 4
  181. ** DSL - DEAD START LOAD.
  182.  
  183.  
  184. ORG 104B
  185. DSL SB1 1 (B1) = 1
  186. EQ DSL1
  187. TITLE FILE DEFINITIONS.
  188. FETS SPACE 4
  189. ** FETS.
  190.  
  191.  
  192. O BSS 0
  193. OUTPUT FILEC OBUF,OBUFL,(FET=8)
  194. ORG O
  195. CON 15B
  196. ORG O+8
  197.  
  198. F BSS 0
  199. SYSTEM RFILEB FBUF,FBUFL,(FET=8)
  200. ORG F+7
  201. CON 0LSYSTEM+3
  202.  
  203. S BSS 0
  204. PPULIB RFILEB SBUF,SBUFL,(FET=9)
  205. ORG S+7
  206. CON 0LSYSTEM
  207. CON 0LPPULIB
  208. CON 0LALTSYS
  209. TITLE MANAGED TABLES.
  210. TABLES SPACE 4
  211. ** MANAGED TABLES ARE USED TO CONTAIN ALL VARIABLE LOAD DATA.
  212. * THE TABLES ARE CONTROLED BY 2 POINTERS, F.TNAM AND L.TNAM.
  213. * (F.TNAM) = FWA OF TABLE *TNAM*.
  214. * (L.TNAM) = LENGTH OF TABLE *TNAM*.
  215. * THE TABLES ARE MANAGED BY ROUTINE *ATS*.
  216.  
  217. TLIB SPACE 4
  218. ** TLIB - LIBRARY AND DIRECTORIES.
  219. * THE FIRST WORD ADDRESS OF TLIB IS ASSUMED TO BE SBUF.
  220. * TLIB MUST BE THE FIRST TABLE.
  221. * TLIB CONTAINS THE RESIDENT LIBRARIES AND DIRECTORIES
  222. * IN THE SAME FORMAT AND ORDER AS IN LOW CORE.
  223.  
  224.  
  225. TLIB TABLE
  226. TRCD SPACE 4
  227. ** TRCD - RECORD DIRECTORY.
  228. * ENTRY = 2 WORDS.
  229. *
  230. *T 42/ NAME,18/ TYPE
  231. *T 30/,30/ RI
  232. * NAME RECORD NAME
  233. * TYPE RECORD TYPE
  234. * RI RANDOM INDEX
  235.  
  236.  
  237. TRCD TABLE 2
  238. TDLT SPACE 4
  239. ** TDLT - DELETE RECORDS TABLE.
  240. * ENTRY = 1 WORD.
  241. *
  242. *T 42/ NAME,18/ TYPE
  243. * NAME RECORD NAME
  244. * TYPE RECORD TYPE
  245.  
  246.  
  247. TDLT TABLE
  248. TFLO SPACE 4
  249. ** TFLO - FIELD LENGTH OVERRIDE TABLE.
  250. * ENTRY = 1 WORD.
  251. *
  252. *T 42/ NAME,12/ FL,6/ TYPE
  253. * NAME RECORD NAME
  254. * FL FIELD LENGTH / 100B
  255. * TYPE RECORD TYPE
  256.  
  257.  
  258. TFLO TABLE
  259. TINR SPACE 4
  260. ** TINR - IGNORE RECORDS TABLE.
  261. * ENTRY = 1 WORD.
  262. *
  263. *T 42/ NAME,6/ FI,12/ TYPE
  264. * NAME RECORD NAME
  265. * FI FILE INDEX
  266. * TYPE RECORD TYPE
  267.  
  268.  
  269. TINR TABLE
  270. TRES SPACE 4
  271. ** TRES - RESIDENCY TABLE.
  272. * ENTRY = 1 WORD.
  273. *
  274. *T 42/ NAME,6/ RC,12/ TYPE
  275. * NAME PROGRAM NAME
  276. * RC RESIDENCE CODE
  277. * TYPE RECORD TYPE
  278.  
  279.  
  280. TRES TABLE
  281. TADR SPACE 4
  282. ** TADR - ALTERNATE DEVICE RECORDS TABLE.
  283. * ENTRY = 2 WORDS.
  284. *
  285. *T 6/ DO,12/ TYPE,18/ RDO,24/ RI
  286. * DO DEVICE EST ORDINAL
  287. * TYPE RECORD TYPE
  288. * RDO RECORDS DIRECTORY ORDINAL
  289. * RI RANDOM INDEX
  290. *
  291. * WORD 2 SAME AS WORD 1 UNTIL AFTER SORT
  292.  
  293.  
  294. TADR TABLE 2
  295. SPACE 4,10
  296. ** TEPD - ENTRY POINT DIRECTORY TABLE
  297. * ENTRY = 1 WORD.
  298. *
  299. *T 42/ NAME,18/ PST
  300. * NAME ENTRY POINT NAME
  301. * PST PST ORDINAL
  302.  
  303. TEPD TABLE
  304. TSCC SPACE 4
  305. ** TSCC - TABLE OF SCOPE CONTROL CARDS.
  306. * ENTRY = 1 WORD.
  307. *
  308. *T 42/ NAME,18/ TYPE
  309. * NAME PROGRAM NAME
  310. * TYPE RECORD TYPE
  311.  
  312.  
  313. TSCC TABLE
  314. TSYN SPACE 4
  315. ** TSYN - PROGRAM NAME SYNONYMS.
  316. * ENTRY = 2 WORDS.
  317. *
  318.  
  319.  
  320. TSYN TABLE 2
  321. TFIL SPACE 4
  322. ** TFIL - FILE NAMES.
  323. * ENTRY = 1 WORD.
  324. *
  325. *T 42/ NAME,18/
  326. * NAME FILE NAME
  327.  
  328.  
  329. TFIL TABLE
  330. TCMR SPACE 4,10
  331. ** TCMR - TABLE OF RCL ADDRESSES FOR CM RESIDENT PROGRAMS.
  332. * ENTRY = 1 WORD.
  333. *
  334. *T 42/0, 18/ RCL
  335. *
  336. * RCL ADDRESS OF ENTRY IN CM.
  337.  
  338.  
  339. TCMR TABLE
  340. TSCR SPACE 4
  341. ** TSCR - SCRATCH TABLE.
  342.  
  343.  
  344. TSCR TABLE 2
  345. TLST SPACE 4
  346. ** TLST - LIST FOR PROGRAM READS.
  347. * MUST BE LAST TABLE.
  348. * ENTRY = 1 WORD.
  349. *
  350. *T 36/,24/ RI
  351. * RI RANDOM INDEX
  352.  
  353.  
  354. TLST TABLE
  355. TABLES SPACE 4
  356. * REMAINDER OF TABLE MANAGER STORAGE.
  357.  
  358.  
  359. LIST G
  360. TABLES HERE
  361. LIST *
  362. TITLE COMMON DATA.
  363. DATA SPACE 4
  364. ** *SLL* CONTROL.
  365.  
  366.  
  367. SL CON 10000B
  368. LN CON 0LLIBD00
  369. RP CON 0 FWA OF SYSTEM RPL (SET BY SLL)
  370.  
  371. * THE ORDER OF THE PREVIOUS WORDS CANNOT BE CHANGED WITHOUT
  372. * CHANGES TO *SLL*.
  373.  
  374.  
  375. .ERD VFD 12/1,18/,18/0,12/ ENTER RESIDENCE DATA
  376. .CSN VFD 12/2,18/,18/0,12/ CONVERT SECTOR NUMBERS (SYSTEM FILE)
  377. VFD 12/2,12/1,6/,18/0,12/ (PPU LIBRARY)
  378. .WSF VFD 12/3,18/,18/S,12/ WRITE SYSTEM FILE
  379. .WPF VFD 12/4,18/,18/S,12/ WRITE PPU LIBRARY FILE
  380. .ELD VFD 12/5,12/,6/,18/SBUF,12/ ENTER LIBRARY DIRECTORY
  381. .EAD VFD 12/6,18/L.TLST,18/0,12/ ENTER ALTERNATE DEVICE TABLE
  382. .WAD VFD 12/7,18/0,18/S,12/ WRITE ALTERNATE DEVICE
  383. .RSE VFD 12/8,18/0,18/EQ,12/0 RETURN SYSTEM EQUIPMENT
  384. .DPE VFD 12/9,18/0,18/0,12/0 DROP PP FOR ERROR CONDITION
  385.  
  386. * COMMON DATA.
  387.  
  388. T1 CON 0 TEMPORARY STORAGE
  389. T2 CON 0
  390.  
  391. EQ CON 0 SYSTEM DEVICE EST ORDINAL SHIFTED 36
  392. SC CON 0 SYSTEM CHANGE FLAG
  393. DN VFD 18/0L9D,24/,1/1,17/1 *DSD* TEMPLATE FOR RESIDENT OVLS
  394. FN CON 0 FILE NUMBER
  395. NM CON 0 RECORD NAME AND TYPE
  396. TY CON 0 RECORD TYPE
  397. SN CON 1 SECTOR NUMBER
  398. PE CON 1 PPU LIBRARY FILE EOI
  399. EC CON 0 ERROR COUNT
  400. ER CON PLR ERROR RETURN
  401. DL CON 0 DEAD START LOAD FLAG
  402. CN CON 0 COPY NUMBER
  403. LS CON 1 LIBDECK STATUS
  404. AD CON 0 ALTERNATE LIBRARY FLAG
  405. CF CON 0 CHECKPOINT FLAG
  406. SR CON 0 SCOPE RECORD COUNT
  407. NF CON 0 NUMBER OF FL ENTRIES
  408. PL CON 0 NUMBER OF ALTERNATE SYSTEM PLD ENTRIES
  409. SP CON 0 *SLL* PRESENT FLAG (FOR ON-LINE *SYSEDIT*)
  410.  
  411. * LIST DATA.
  412.  
  413. PN CON 1 PAGE NUMBER
  414. LC CON 99999,0 LINE NUMBER
  415. LL EQU LC+1 LINE LIMIT
  416. TL CON CCDR ADDRESS OF TITLE TEXT
  417. SPACE 4
  418. SSJ= BSS 0
  419. VFD 12/0,24/-0,12/SYCS,12/IRSI
  420. BSSZ SSJL-1
  421. TITLE SYSEDIT - MAIN PROGRAM.
  422. SYSEDIT SPACE 4
  423. ** SYSEDIT - MAIN PROGRAM.
  424.  
  425.  
  426. SYE RJ /RDC/RDC READ DIRECTIVE CARDS
  427. SA1 EC
  428. ZR X1,SYE1 IF NO ERRORS
  429. SX0 =C*DIRECTIVE ERRORS.*
  430. EQ ABT
  431.  
  432. * ADD CHANGE FILES TO SYSTEM LIBRARY.
  433.  
  434. SYE1 SA1 SC
  435. ZR X1,SYE2 IF NO SYSTEM CHANGES
  436. SA2 S+7 SET SYSTEM FILE NAME
  437. SA3 .WSF SET WRITE SYSTEM REQUEST
  438. BX6 X2
  439. MX7 0 CLEAR SECTOR COUNT
  440. SA6 S
  441. SA7 S+6
  442. BX6 X3
  443. SA6 SL
  444. RJ CCF COPY CHANGE FILES
  445. RJ DLR PROCESS DELETIONS
  446. RJ WDR WRITE DIRECTORY
  447. SA1 S+6 SET EOF
  448. PX6 X1
  449. SA6 A1
  450. RECALL SL
  451.  
  452. * GENERATE LIBRARY DIRECTORY.
  453.  
  454. SYE2 MESSAGE (=C*GENERATING LIBRARY DIRECTORY.*),1
  455. SA1 LS
  456. ZR X1,SYE2.1 IF LIBDECK FOUND
  457. MESSAGE SYEC,2 *LIBDECK NOT FOUND - (NAME)*
  458. SYE2.1 RJ SLR SET LIBRARY RESIDENCE
  459. SA1 F+7 SET SYSTEM FILE NAME
  460. SA2 S+8 SET PPU LIBRARY FILE NAME
  461. BX6 X1
  462. SA3 F+1 SET IN = OUT = FIRST
  463. LX7 X2
  464. SA6 F
  465. SA7 S
  466. SX6 X3
  467. SX1 B1 SET RANDOM BIT
  468. MX0 -48
  469. LX1 47
  470. BX3 -X0*X3 CLEAR DEVICE TYPE
  471. SA6 A3+B1
  472. BX7 X1+X3
  473. SA6 A6+B1
  474. SA7 A3
  475. RJ /LIB/LIB PROCESS LIBRARY TABLES
  476. SA3 L.TLIB DECREASE FIELD LENGTH
  477. SX1 X3+SBUF
  478. SX6 B1
  479. LX6 17
  480. BX1 X1+X6
  481. MEMORY ,,,X1
  482. SA3 CF READ CHECKPOINT FLAG
  483. SA2 PL NUMBER OF ALTERNATE SYSTEM PLD ENTRIES
  484. LX3 12+18
  485. SA1 .ELD REQUEST LIBRARY DIRECTORY SETUP
  486. LX2 36
  487. IX2 X3+X2
  488. BX6 X1+X2
  489. SA6 SL
  490. RECALL A6
  491. RJ CMF COMPLETE FILES
  492. SA1 CN SET CHANGE NUMBER
  493. RJ CDD
  494. SX1 1R.-1R
  495. SB3 60
  496. LX1 54
  497. IX2 X6+X1
  498. SB4 B3-B2
  499. LX6 X2,B4
  500. SA6 SYEB
  501. MESSAGE SYEA
  502. SYE3 ENDRUN
  503.  
  504. SYEA DATA 30HSYSTEM EDIT COMPLETE - CHANGE
  505. SYEB CON 0,0
  506. SYEC DATA C*LIBDECK NOT FOUND - (NAME)*
  507. TITLE MAIN PROCESSING ROUTINES.
  508. CCF SPACE 4,5
  509. ** CCF - COPY CHANGE FILES.
  510. * CHANGE FILES ARE COPIED TO SYSTEM FILE.
  511.  
  512.  
  513. CCF PS ENTRY/EXIT
  514. SX6 99999 FORCE EJECT
  515. SX7 =40HSYSTEM FILE CHANGES.
  516. SA6 LC
  517. SA7 TL
  518. CCF1 SA1 L.TFIL CHECK FILE TABLE
  519. SA2 FN
  520. IX6 X1-X2
  521. SA3 F.TFIL
  522. SB2 X2
  523. ZR X6,CCF RETURN IF END OF FILES
  524. SA5 X3+B2 SET FILE NAME
  525. MX0 42
  526. BX4 X0*X5
  527. RECALL F
  528. .DS1 SA3 X2+B1 SET IN = OUT = FIRST
  529. * EQ CCF2 (DISK DEADSTART)
  530.  
  531. LX5 59 CHECK CONTROL BIT
  532. SX1 3 SET FILE NAME AND MODE
  533.  
  534. * SX1 0 (DEADSTART LOAD FROM TAPE)
  535.  
  536. SX7 X3
  537. BX6 X4+X1
  538. SA7 A3+B1
  539. SA6 X2
  540. SA7 A7+B1
  541. NG X5,CCF2 IF *NO REWIND*
  542. REWIND X2,R
  543. CCF2 RJ CPF COPY FILE
  544. SA1 F.TFIL CHECK FILE CONTROL
  545. SA2 FN ADVANCE FILE NUMBER
  546. IX7 X1+X2
  547. SX6 X2+B1
  548. SA3 X7
  549. SA6 A2
  550. LX3 59
  551. NG X3,CCF1 IF NO REWIND
  552. REWIND F,R
  553. EQ CCF1 LOOP
  554. CMF SPACE 4,10
  555. ** CMF - COMPLETE FILES.
  556.  
  557.  
  558. CMF3 SX6 0 CLEAR OUTPUT FET
  559. SA6 O
  560.  
  561. CMF SUBR ENTRY/EXIT
  562. SA3 DL
  563. SA5 WOF
  564. NZ X3,CMF1 IF DEADSTART LOAD
  565. ZR X5,CMF3 IF NOTHING LISTED
  566. PRINT (=2L )
  567. PRINT (=2L )
  568. SA1 =1H SET SPACES
  569. SA2 =10HCHANGE
  570. BX6 X1
  571. LX7 X2
  572. SA6 LBUF
  573. SA7 A6+B1
  574. SA1 CN
  575. RJ CDD
  576. SX7 0
  577. SA6 A7+B1
  578. SA7 A6+B1
  579. PRINT LBUF
  580. WRITER O
  581. SETFS X2,0 CLEAR SPECIAL ID STATUS
  582. EQ CMFX RETURN
  583.  
  584. CMF1 SA3 CMFB
  585. RETURN O RETURN DEADSTART LISTING
  586. SA5 LS GET LIBDECK STATUS
  587. SA1 LN READ LIBDECK NAME
  588. NZ X5,CMF2 IF LIBDECK NOT FOUND
  589. SX3 1R.
  590. CMF2 MX0 24
  591. LX1 12
  592. BX1 X0*X1 ADD LIBDECK NAME TO MESSAGE
  593. LX3 30
  594. BX6 X1+X3
  595. SA6 A3
  596. MESSAGE CMFA
  597. EQ SYE3 EXIT
  598.  
  599. CMFA DATA 20HSYSTEM BUILT WITH LI
  600. CMFB VFD 60/5L(UNDE+1R
  601. DATA C*FINED).*
  602. DLR SPACE 4,5
  603. ** DLR - DELETE RECORDS.
  604.  
  605.  
  606. DLR PS ENTRY/EXIT
  607. DLR1 SA1 L.TDLT CHECK DELETE TABLE
  608. SA2 F.TDLT
  609. ZR X1,DLR RETURN IF END OF TABLE
  610. SA3 X2
  611. SX6 X2+B1 DELETE ENTRY
  612. SX7 X1-1
  613. SA6 A2
  614. SA7 A1
  615. SEARCH TRCD,X3 SEARCH FOR ENTRY
  616. ZR X2,DLR1 IF NOT FOUND
  617. SA1 F.TRCD SET LWA
  618. SA4 L.TRCD
  619. IX1 X1+X4
  620. BX7 X2 SAVE NAME AND TYPE
  621. SX3 A2 SET DESTINATION
  622. SX2 A2+2 SET FWA
  623. IX1 X1-X2 SET WORD COUNT
  624. SX6 X4-2 DECREMENT TABLE LENGTH
  625. SA7 T1
  626. SA6 A4
  627. MOVE X1,X2,X3
  628.  
  629. * LIST DELETION STATUS.
  630.  
  631. SA1 =1H SET SPACES
  632. SA2 =10HDELETED
  633. BX6 X2 SET RECORD STATUS
  634. LX7 X1
  635. SA5 T1
  636. SA7 LBUF
  637. MX0 42
  638. SA6 A7+B1
  639. BX1 X0*X5 SPACE FILL NAME
  640. RJ SFN
  641. SA2 TRCN+X5 SET RECORD TYPE
  642. BX1 X0*X2
  643. SA6 A6+B1
  644. RJ SFN
  645. BX7 X7-X7 SET END OF BUFFER
  646. SA6 A6+B1
  647. SA7 A6+B1
  648. PRINT LBUF
  649. EQ DLR1 LOOP
  650. WDR SPACE 4,5
  651. ** WDR - WRITE DIRECTORY.
  652.  
  653.  
  654. WDR PS ENTRY/EXIT
  655. SA2 WDRA+1 ENTER DIRECTORY NAME
  656. SX6 10B
  657. ADDWRD TRCD,X2+X6
  658. SA1 SN ENTER SECTOR NUMBER
  659. ADDWRD TRCD,X1
  660. MX0 14B
  661. SA1 WDRA ENTER 7700 TABLE
  662. SA2 A1+B1
  663. BX6 X1
  664. LX7 X2
  665. SA3 DATE ENTER DATE
  666. SA4 A2+B1
  667. SA6 BUF
  668. SA7 A6+B1
  669. BX6 X3
  670. SA6 A7+B1
  671. MX6 0
  672. SA5 L.TRCD SET DIRECTORY LENGTH
  673. BX7 X4+X5
  674. + SA6 A6+B1 CLEAR REMAINDER OF TABLE
  675. LX0 1
  676. NG X0,*
  677. SA7 A6+B1
  678. SX1 60B CHECK TABLE LENGTH
  679. IX5 X5-X1
  680. SX6 100B SET WORD COUNT
  681. PL X5,WDR1 IF FULL FIRST PART
  682. IX1 X5+X1 SET SHORT LENGTH
  683. SX6 20B+X5
  684. WDR1 SA2 F.TRCD MOVE FIRST PART OF DIRECTORY
  685. SA6 WC
  686. IX0 X2+X1 SET NEXT TABLE ADDRESS
  687. SX3 BUF+20B ADDRESS TO MOVE TO
  688. RJ MVZ MOVE DATA TO BUFFER
  689. WDR2 RJ WTB WRITE BLOCK
  690. SA1 WC CHECK WORD COUNT
  691. SB2 X1-100B
  692. NZ B2,WDR RETURN IF SHORT BLOCK WRITTEN
  693. IX5 X5-X1 DECREMENT LENGTH
  694. SX2 X0 ADDRESS TO MOVE FROM
  695. SX3 BUF ADDRESS TO MOVE TO
  696. RJ MVZ MOVE DATA
  697. SX0 X0+100B ADVANCE FWA
  698. PL X5,WDR2 LOOP IF NOT SHORT BLOCK
  699. SX6 X5+100B SET SHORT WORD COUNT
  700. SA6 WC
  701. EQ WDR2
  702.  
  703. WDRA VFD 12/7700B,12/16B,36/0
  704. CON 0LSYSTEM
  705. VFD 12/7000B,48/0
  706. MVZ SPACE 4,20
  707. ** MVZ - MOVE DATA, CHECKING FOR ZERO-LENGTH RECORD ENTRIES.
  708. *
  709. * THIS ROUTINE MOVES THE DIRECTORY INTO THE WRITE BUFFER,
  710. * CHECKING FOR ZERO-LENGTH RECORD ENTRIES *(00)*, CHANGING
  711. * THEM TO THE PROPER RECORD NAME. THIS MUST BE DONE AT
  712. * THIS TIME, SINCE THE REST OF *SYSEDIT* REQUIRES THE TABLES
  713. * TO BE ZERO-WORD TERMINATED, AND A PROPER ZERO-LENGTH RECORD
  714. * ENTRY WOULD PREMATURELY TERMINATE THE TABLE.
  715. *
  716. * ENTRY (X1) = WORD COUNT.
  717. * (X2) = ADDRESS TO MOVE FROM.
  718. * (X3) = ADDRESS TO MOVE TO.
  719. *
  720. * EXIT ZERO-LENGTH RECORD ENTRIES CONVERTED DURING MOVE.
  721. *
  722. * USES X - 1, 2, 3, 4, 6, 7.
  723. * A - 2, 3, 4, 6, 7.
  724. * B - 2, 7.
  725.  
  726.  
  727. MVZ SUBR ENTRY/EXIT
  728. IX3 X3-X2 DIFFERENCE
  729. AX1 1 WORD COUNT / 2
  730. SB2 X3
  731. SB7 X2 ADDRESS TO MOVE FROM
  732. ZR X1,MVZX IF NO DATA TO MOVE
  733. SA3 =C*(00)* ZERO LENGTH RECORD ENTRY
  734. MVZ1 SA4 B7+B1 MOVE TWO WORDS
  735. SA2 B7
  736. LX7 X4
  737. BX6 X2-X3
  738. SA7 A4+B2 STORE SECOND WORD
  739. ZR X6,MVZ2 IF ZERO LENGTH RECORD ENTRY
  740. BX6 X2 USE RECORD NAME / TYPE
  741. MVZ2 SB7 A4+B1 INCREMENT INDEX
  742. SX1 X1-1
  743. SA6 A2+B2 STORE FIRST WORD
  744. NZ X1,MVZ1 IF NOT COMPLETE
  745. EQ MVZX RETURN
  746. SLR SPACE 4,20
  747. ** SLR - SET LIBRARY RESIDENCE.
  748. *
  749. * *SLR* PERFORMS THE FINAL MODIFICATIONS TO THE MANAGED TABLES
  750. * BEFORE ACTUALLY GENERATING THE LIBRARY DIRECTORIES. IT -
  751. *
  752. * * CREATES THE ENTRY FOR *1PR* FROM THE ENTRY FOR *PPR*.
  753. * * DEFINES *1VN* AND *1VO* AS SYNONYMS FOR *1VP*.
  754. * * REQUESTS PROGRAM RESIDENCY INFORMATION FROM *SLL* AND
  755. * UPDATES *TRES*.
  756. * * DETERMINES THE FIRST RECORD OF THE RUNNING SYSTEM.
  757. *
  758. * USES X - ALL.
  759. * A - ALL.
  760. *
  761. * CALLS ERT.
  762. *
  763. * MACROS ADDWRD, RECALL, SEARCH.
  764.  
  765.  
  766. SLR SUBR ENTRY/EXIT
  767. SA5 SLRA FIND ENTRY FOR *PPR*
  768. SEARCH TRCD,X5
  769. ZR X2,SLR3 IF NOT FOUND
  770. SA1 A5+B1 GET NEW ENTRY FIRST WORD
  771. SA5 A2+B1 GET SECOND WORD
  772. ADDWRD A0,X1 ADD ENTRY TO END OF TABLE
  773. ADDWRD A0,X5
  774. SLR0 SA5 SLRB FIND ENTRY FOR *9TA*
  775. SEARCH TRCD,X5
  776. ZR X2,SLR3 IF NOT FOUND
  777. SA5 A2+B1 GET SECOND WORD
  778. ADDWRD A0,X2 ENSURE *9TA* WILL BE IN THE RUNNING SYSTEM
  779. ADDWRD A0,X5
  780. SLR1 ADDWRD TRCD,X6-X6 TERMINATE RECORD TABLE
  781. ADDWRD TRCD,X6-X6
  782. SA1 SLRC CREATE SYNONYMS FOR *1VP*
  783. SA5 A1+B1
  784. ADDWRD TSYN,X1
  785. ADDWRD A0,X5
  786. SA1 SLRC
  787. SA5 SLRC+2
  788. ADDWRD A0,X1
  789. ADDWRD A0,X5
  790. SA1 .ERD ENTER RESIDENCY DATA
  791. SX2 SBUF
  792. LX2 12
  793. BX6 X1+X2
  794. SA6 SL
  795. RECALL A6
  796. SA5 SBUF FIRST ENTRY
  797. SLR2 BX1 X5 ENTER RESIDENCY TABLE
  798. RJ ERT
  799. SA5 A5+B1 NEXT ENTRY
  800. NZ X5,SLR2 IF NOT END OF LIST
  801. SA1 SLRD ESTABLISH START OF RUNNING SYSTEM LIBRARY
  802. SEARCH TRCD,X1
  803. ZR X2,SLR3 IF NOT FOUND
  804. SA1 F.TRCD GET FWA OF TRCD
  805. SX7 A2+B7
  806. IX2 X7-X1
  807. SA3 L.TRCD
  808. SA7 A1
  809. IX6 X3-X2
  810. SA4 X7+B1 FIRST RANDOM INDEX
  811. SA6 A3
  812. + BX3 X4 DUPLICATE RANDOM INDEX
  813. LX4 24
  814. BX6 X4+X3
  815. SA4 A4+B7
  816. SA6 A4-B7
  817. NZ X4,*-1
  818. SA3 .CSN REQUEST SECTOR COUNT CONVERSION
  819. LX7 12
  820. BX6 X3+X7
  821. SA6 SL
  822. RECALL A6
  823. EQ SLR RETURN
  824.  
  825. SLR3 SX0 =10H DIRECTORY
  826. EQ SFE
  827.  
  828. SLRA CON 0LPPR+PPRT
  829. CON 0L1PR+PPRT
  830. SLRB CON 0L9TA+PPRT
  831. SLRC CON 0L1VP+PPRT
  832. CON 0L1VN+PPRT
  833. CON 0L1VO+PPRT
  834. SLRD CON 0LREC+PPRT
  835. TITLE LIBRARY TABLE PROCESSING.
  836. QUAL LIB
  837. LIB SPACE 4,5
  838. ** LIB - PROCESS LIBRARY TABLES.
  839.  
  840.  
  841. LIB PS ENTRY/EXIT
  842. RJ MSP PROCESS MS RESIDENT PPU PROGRAMS
  843. SA1 AD
  844. ZR X1,LIB1 IF NO ALTERNATE DEVICE ENTRIES
  845. SA3 F.TRES
  846. RJ ASR PROCESS ALTERNATE SYSTEM RESIDENT PROGRAMS
  847. LIB1 SX6 SBUF RESET LOW MEMORY LIMIT
  848. SA6 LM
  849. SA6 F.TLIB
  850. RJ CMP PROCESS CM RESIDENT PPU PROGRAMS
  851. ADDWRD TLIB,X6-X6 TERMINATE RPL
  852. RJ CMC PROCESS CM RESIDENT CPU PROGRAMS
  853. ADDWRD TLIB,X6-X6 TERMINATE RCL
  854. RJ PLD GENERATE PLD
  855. SA3 L.TLIB
  856. SA2 L.TFLO
  857. BX7 X3
  858. SX6 B0
  859. SA7 T2
  860. ZR X2,PFL1 IF NO FL ENTRIES
  861. SX1 0
  862. ADDWRD TFLO,X1 TERMINATE FL TABLE
  863. SX7 X3-1 SET NUMBER OF FL ENTRIES
  864. SA7 NF
  865. LIB2 RJ CLD GENERATE CLD
  866. ADDWRD TLIB,X6-X6 TERMINATE CLD
  867. SA6 L.TADR CLEAR ALTERNATE DEVICE RECORDS TABLE
  868. RJ LBD GENERATE LBD
  869. ADDWRD TLIB,X6-X6 TERMINATE LBD
  870. ADDWRD TLIB,X6-X6 TERMINATE DIRECTORY
  871. EQ LIB RETURN
  872. CLD SPACE 4,5
  873. ** CLD - GENERATE CLD.
  874.  
  875.  
  876. CLD10 SX7 B0 EMPTY TCMR
  877. SA7 L.TCMR
  878. ADDWRD TLIB,X6-X6 TERMINATE PST
  879. SA1 L.TEPD GET LAST WORD ADDRESS OF EPD
  880. SA3 F.TEPD GET FIRST WORD ADDRESS EPD
  881. SB7 X3
  882. RJ SST SHELL SORT EPD TABLE
  883. SA5 L.TLIB GET LENGTH OF TLIB
  884. SA1 L.TEPD
  885. ALLOC TLIB,X1
  886. IX3 X2+X5 DESTINATION ADDRESS
  887. BX6 X6-X6
  888. SA2 F.TEPD SOURCE ADDRESS
  889. SA6 L.TEPD
  890. MOVE X1,X2,X3
  891.  
  892. CLD PS ENTRY/EXIT
  893. SA2 L.TSCC
  894. ZR X2,CLD1 IF NO SCOPE RECORDS
  895. ADDWRD TSCC,X6-X6 TERMINATE TABLE
  896. SX6 X3-1 SET LENGTH OF TABLE
  897. SA6 SR
  898. CLD1 SA1 CLDA (B3) = START INDEX
  899. SB2 B1+B1
  900. SB3 X1
  901. SA2 F.TRCD
  902. SX4 CLDE MASK FOR PERMISSIBLE CLD TYPES
  903. CLD2 SA3 X2+B3 NEXT ENTRY
  904. SB7 X3 CHECK TYPE
  905. AX1 X4,B7
  906. SB3 B3+B2 ADVANCE INDEX
  907. LX1 59
  908. ZR X3,CLD10 IF END OF DIRECTORY
  909. CX7 X1
  910. PL X1,CLD2 IF WRONG TYPE
  911. SX6 B3 SAVE (B3)
  912. SB7 X7 JUMP ON TYPE
  913. SA6 CLDA
  914. BX6 X3 SAVE NAME AND TYPE
  915. SX7 X3 SAVE RECORD TYPE
  916. SA6 NM
  917. SA7 TY
  918. JP CLDA+B7
  919.  
  920. CLDA CON 0
  921.  
  922. + SA5 A3+B1
  923. BX0 X3
  924. EQ PRC PROCESS PROCEDURE RECORD
  925.  
  926. + SA5 A3+B1
  927. MX0 42
  928. EQ PPU
  929.  
  930. + SA5 A3+1
  931. EQ ABS
  932.  
  933. + SA5 A3+B1
  934. MX0 42
  935. EQ ULB
  936.  
  937. + SA5 A3+B1
  938. MX0 42
  939. EQ OVL
  940.  
  941. + SA5 A3+B1
  942. MX0 42
  943. EQ REL
  944.  
  945. + SA5 A3+B1
  946. BX0 X3
  947. EQ PRC
  948.  
  949. CLD3 SX0 =C* CLD.*
  950. EQ SFE
  951.  
  952. CLD4 BSS 0
  953. CLDB RJ PFL PROCESS FIELD LENGTH
  954. - EQ CLDC IF DONE WITH PFL PROCESSING
  955.  
  956. CLD5 BSS 0
  957. CLDC SA3 SR GET NUMBER OF SCOPE RECORDS
  958. SA1 NM
  959. * EQ CLD8 WHEN END OF SCOPE RECORDS TABLE
  960. ZR X3,CLD7 IF NO SCOPE RECORDS
  961. SEARCH TSCC,X1
  962. ZR X2,CLD8 IF NOT SCOPE RECORD
  963. SA3 SR
  964. SA4 PSTA FETCH PST ENTRY
  965. SX6 X3-1
  966. MX7 1
  967. SA6 A3 DECREMENT COUNT
  968. LX7 45-59
  969. BX7 X4+X7
  970. SA7 PSTA
  971. NZ X6,CLD8 IF NOT THRU WITH SCOPE RECORDS
  972. SA6 L.TSCC SET TABLE EMPTY
  973. CLD7 SA3 CLDD
  974. BX6 X3
  975. LX6 30 CHANGE TRANSFER
  976. CLDD SA6 CLDC
  977. EQ CLD8 CONTINUE PROCESSING
  978.  
  979. CLD8 SA5 SEPA GET SPECIAL ENTRY POINT WORD
  980. SA3 PSTA GET PST ADDRESS
  981. SA1 TY GET RECORD TYPE
  982. BX6 X6-X6
  983. LX1 36
  984. ZR X5,CLD9 IF NO SPECIAL ENTRY POINTS
  985. SA6 A5
  986. MX6 1
  987. CLD9 LX6 44-59 POSITION SPECIAL ENTRY POINT FLAG
  988. BX3 X3+X6
  989. ADDWRD TLIB,X3+X1
  990. ZR X5,CLD1 IF NO SPECIAL ENTRY POINTS
  991. MX7 1
  992. ADDWRD A0,X5+X7
  993. EQ CLD1 CONTINUE PROCESSING
  994.  
  995.  
  996. * PERMISSIBLE CLD RECORD TYPES.
  997.  
  998. CLDE EQURT (TXRT,RLRT,OVRT,ULRT,ABRT,PURT,PRRT)
  999.  
  1000. * LOCATION USED TO ASSEMBLE PST ENTRY.
  1001.  
  1002. PSTA CON 0
  1003. REL SPACE 4,10
  1004. ** REL - PROCESS RELOCATABLE FORMAT.
  1005.  
  1006.  
  1007. REL RECALL F
  1008. RJ INC INTIALIZE COPY
  1009. NZ X7,CLD3 IF NO 77 TABLE, ERROR
  1010. REL1 SA3 B6-B1
  1011. LX3 12
  1012. SB4 X3-3600B CHECK FOR *ENTR* (36) TABLE
  1013. ZR B4,REL2 IF 36 TABLE
  1014. READW X2,BUF,B1
  1015. ZR X1,REL1
  1016. JP CLD3 ERROR NO 36 TABLE
  1017.  
  1018. REL2 LX3 12
  1019. SX0 X3
  1020. READW F,BUF,1 READ ENTRY POINT NAME
  1021. AX0 1
  1022. SX6 X0
  1023. BX5 -X0
  1024. AX6 6
  1025. ZR X0,CLD3 IF ILLEGAL ENTRY POINT COUNT
  1026. NZ X6,CLD3 IF TOO MANY ENTRY POINTS
  1027. RJ CPR CHECK PROGRAM RESIDENCE
  1028.  
  1029. REL3 SA3 B6-B1 FETCH ENTRY POINT NAME
  1030. MX2 24
  1031. SB3 B0
  1032. SX5 X5+B1 DECREMENT ENTRY COUNT
  1033. REL4 ZR X6,REL5 IF SPECIAL ENTRY POINT NAME
  1034. SA4 TSEP+B3
  1035. BX4 X2*X4
  1036. SB3 B3+B1
  1037. BX6 X3-X4
  1038. AX6 18
  1039. NZ X4,REL4 IF NOT END OF SPECIAL ENTRY POINTS
  1040. RJ AEP ADD ENTRY POINT
  1041. REL5 ZR X5,CLD8 IF NO MORE ENTRY POINTS
  1042. READW F,BUF,2
  1043. ZR X1,REL3 IF NOT EOR
  1044. JP CLD3 PROCESS ERROR
  1045. OVL SPACE 4,10
  1046. ** OVL - PROCESS OVERLAY FORMAT.
  1047.  
  1048.  
  1049. OVL RJ CPR CHECK RESIDENCE
  1050. SA3 NM GET ENTRY POINT NAME
  1051. RJ AEP ADD ENTRY POINT
  1052. EQ CLD5
  1053. ULB SPACE 4,10
  1054. ** ULB - PROCESS USER LIBRARY FORMAT.
  1055.  
  1056.  
  1057. ULB BX3 X0*X3 ENTER NAME AND TAG
  1058. SX2 10000B
  1059. ADDWRD TSCR,X3+X2
  1060. AX5 24
  1061. ADDWRD A0,X5
  1062. EQ CLD1
  1063. PRC SPACE 4,10
  1064. ** PRC - PROCESS PROCEDURE FORMAT.
  1065.  
  1066.  
  1067. PRC RECALL F
  1068. RJ INC INITIALIZE COPY
  1069. LX3 42
  1070. SA2 PRCA CHECK FOR *.PROC,*
  1071. BX6 X3-X2
  1072. SA3 A5-B1 GET ENTRY POINT NAME
  1073. AX6 24
  1074. SA5 A5
  1075. AX5 24
  1076. NZ X6,CLD1 IF NOT *.PROC*
  1077. SX6 PRRT SET *PROC* FILE TYPE
  1078. SA6 TY
  1079. MX0 -24
  1080. BX7 -X0*X5
  1081. SA7 PSTA
  1082. RJ AEP ADD ENTRY POINT
  1083. EQ CLD8 CONTINUE PROCESSING
  1084.  
  1085. PRCA CON 6L.PROC,
  1086. ABS SPACE 4,10
  1087. ** ABS - PROCESS ABSOLUTE FORMAT.
  1088.  
  1089.  
  1090. ABS RECALL F
  1091. RJ INC INITIALIZE COPY
  1092. NZ X7,CLD3 IF ERROR
  1093. SA3 X2+3 READ *OUT* POINTER
  1094. NZ B7,ABS1 IF NOT 5400 TABLE
  1095. SX7 7
  1096. ABS1 SB2 X7+B1
  1097. SX6 X3+B2 ADVANCE *OUT* OVER PROGRAM HEADER
  1098. MX0 42
  1099. SA6 A3
  1100. NZ B4,ABS2 IF NOT SCOPE *ACPM* RECORD
  1101. SX5 B7-B1 SET ENTRY COUNT
  1102. ABS2 ZR X5,CLD3 IF NO ENTRY POINTS
  1103. BX1 X5
  1104. AX1 6
  1105. NZ X1,CLD3 IF TOO MANY ENTRY POINTS
  1106. RJ CPR CHECK RESIDENCE
  1107. SA1 INCA SET 5400 TABLE FL
  1108. SA2 PSTA
  1109. BX6 X1+X2
  1110. SB7 B1
  1111. BX5 -X5
  1112. SA6 A2
  1113. READW F,BUF,B7 READ ENTRY POINT NAME
  1114. ABS3 SA3 B6-B1
  1115. SX5 X5+B1
  1116. RJ AEP ADD ENTRY POINT NAME
  1117. ABS4 ZR X5,CLD4 IF NO MORE ENTRY POINTS
  1118. READW F,BUF,1 READ ENTRY POINT NAME
  1119. NZ X1,CLD3 IF EOR
  1120. SA2 B6-B1 (X2) = ENTRY
  1121. SB2 B0
  1122. ABS5 SA1 TSEP+B2
  1123. ZR X1,ABS3 IF NOT A SPECIAL ENTRY POINT
  1124. MX4 24
  1125. BX3 X2-X1
  1126. SB2 B2+B1
  1127. BX4 X4*X3
  1128. NZ X4,ABS5 IF NO MATCH
  1129. SB4 X1 (B4) = SHIFT COUNT
  1130. AX1 18
  1131. SB7 X1
  1132. SX5 X5+B1 DECREMENT ENTRY POINT COUNT
  1133. SA1 PSTA
  1134. SA4 SEPA
  1135. SX7 B1
  1136. JP B7 PROCESS SPECIAL ENTRY POINT
  1137. PPU SPACE 4,10
  1138. ** PPU - PROCESS PERIPHERAL PROCESSOR FORMAT.
  1139.  
  1140.  
  1141. PPU RJ SPR CHECK PROGRAM RESIDENCE
  1142. RJ AEP ADD ENTRY POINT NAME
  1143. EQ CLD8 CONTINUE PROCESSING
  1144. LBD SPACE 4,5
  1145. ** LBD - GENERATE LDB.
  1146.  
  1147.  
  1148. LBD PS ENTRY/EXIT
  1149. SA1 L.TSCR ALLOCATE SPACE
  1150. SA5 L.TLIB
  1151. ALLOC TLIB,X1
  1152. IX3 X2+X5
  1153. BX6 X6-X6
  1154. SA2 F.TSCR MOVE TSCR TO TLIB
  1155. SA6 L.TSCR CLEAR TSCR
  1156. MOVE X1,X2,X3
  1157. EQ LBD RETURN
  1158. CPR SPACE 4,15
  1159. ** CPR - CHECK PROGRAM RESIDENCE.
  1160. *
  1161. * ENTRY (A5) = ADDRESS OF *TRCD* ENTRY.
  1162. *
  1163. * EXIT (X0) = 42 BIT MASK.
  1164. * (X6) = PROGRAM RESIDENCE ON SYSTEM DEVICE.
  1165. * (PSTA) = RESIDENCE OF PROGRAM.
  1166. *
  1167. * USES A - 2, 3, 7.
  1168. * B - NONE.
  1169. * X - 0, 1, 2, 3, 6, 7.
  1170. *
  1171. * CALLS SPR.
  1172.  
  1173.  
  1174. CPR1 RJ SPR SET PROGRAM RESIDENCE
  1175.  
  1176. CPR SUBR ENTRY/EXIT
  1177. SA3 NM GET ENTRY POINT NAME
  1178. MX0 42
  1179. SEARCH TADR,X3,X0
  1180. ZR X2,CPR1 IF NO MATCH FOUND
  1181. MX1 -6
  1182. LX2 -6
  1183. BX7 -X1*X2
  1184. MX6 -24
  1185. SA2 A2+B1
  1186. LX7 24
  1187. BX2 -X6*X2
  1188. MX1 1
  1189. BX7 X7+X2
  1190. LX1 47-59
  1191. SA2 A5
  1192. BX7 X7+X1
  1193. SA7 PSTA
  1194. ADDWRD TLIB,-X6*X2
  1195. EQ CPRX RETURN
  1196. SPR SPACE 4,10
  1197. ** SPR - SET PROGRAM RESIDENCE.
  1198. *
  1199. * ENTRY (A5) = ADDRESS OF *TRCD* ENTRY.
  1200. *
  1201. * EXIT (X6) = (PSTA) = PROGRAM RESIDENCE SET.
  1202. *
  1203. * USES A - 1, 2, 6.
  1204. * B - NONE.
  1205. * X - 1, 2, 6, 7.
  1206.  
  1207.  
  1208. SPR1 MX7 -24
  1209. BX6 -X7*X1
  1210. SA6 PSTA STORE RESIDENCE
  1211.  
  1212. SPR SUBR ENTRY/EXIT
  1213. SA1 A5 GET TRCD ENTRY
  1214. SA2 F.TCMR
  1215. MX7 1 SET CM RESIDENT BIT
  1216. BX6 X1
  1217. LX7 46-59
  1218. AX6 48
  1219. IX2 X2+X6
  1220. ZR X6,SPR1 IF NOT CM RESIDENT
  1221. SA1 X2
  1222. BX6 X1+X7
  1223. SA6 PSTA SET RESIDENCE
  1224. EQ SPRX RETURN
  1225. AEP SPACE 4,10
  1226. ** AEP - ADD ENTRY POINT.
  1227. *
  1228. * ENTRY (X3) = ENTRY POINT NAME.
  1229. *
  1230. * USES A - 1, 2.
  1231. * B - NONE.
  1232. * X - 0, 1, 2, 3.
  1233.  
  1234.  
  1235. AEP SUBR ENTRY/EXIT
  1236. SA1 L.TLIB
  1237. SA2 T2
  1238. MX0 42
  1239. IX2 X1-X2
  1240. BX3 X0*X3
  1241. ADDWRD TEPD,X3+X2
  1242. EQ AEPX RETURN
  1243. PFL SPACE 4,10
  1244. ** PFL - PROCESS FIELD LENGTH OVERRIDE.
  1245. *
  1246. * ENTRY (NM) = RECORD NAME TO PROCESS.
  1247. *
  1248. * USES A - 1, 3, 4, 6, 7.
  1249. * B - NONE.
  1250. * X - 0, 1, 2, 3, 4, 6, 7.
  1251. *
  1252. * MACROS SEARCH.
  1253.  
  1254.  
  1255. PFL EQ LIB2 ENTRY/EXIT
  1256. BSS 0
  1257. MX0 42+6
  1258. SA1 NM
  1259. LX0 6
  1260. SEARCH TFLO,X1,X0 SEARCH FOR FIELD LENGH OVERRIDE
  1261. ZR X2,PFL IF NO CHANGE
  1262. MX7 1
  1263. LX7 43-59
  1264. SA4 PSTA FETCH PST ENTRY
  1265. MX0 12
  1266. BX4 -X7*X4 CLEAR 5400 TABLE FLAG
  1267. LX2 42
  1268. BX2 X0*X2
  1269. BX4 -X0*X4
  1270. BX7 X2+X4
  1271. SA1 NF DECREMENT COUNT OF FL ENTRIES
  1272. SX6 X1-1
  1273. SA7 A4 STORE CLD ENTRY
  1274. SA6 A1
  1275. PFL1 NZ X6,PFL IF NOT END OF FL PROCESSING
  1276. SA3 CLDB
  1277. BX7 X3
  1278. SA6 L.TFLO SET TABLE EMPTY
  1279. LX7 30 CHANGE TRANSFER
  1280. SA7 CLDB
  1281. EQ PFL RETURN
  1282. TSEP SPACE 4,25
  1283. ** SPECIAL ENTRY POINT DIRECTORY ENTRY.
  1284. *
  1285. *T SEPA 1/A,1/J,2/0,1/I,1/H,1/B,1/C,1/D,1/E,1/F,1/G,1/K,11/0,18/DA,
  1286. * 18/SA
  1287. *
  1288. * WHERE-
  1289. * A SET TO INDICATE SPECIAL ENTRY POINT TABLE ENTRY.
  1290. * B SET IF ARG= ENTRY POINT PRESENT.
  1291. * C SET IF DMP= ENTRY POINT PRESENT.
  1292. * (*DA* IS ASSOCIATED PARAMETER.)
  1293. * D SET IF SDM= ENTRY POINT PRESENT.
  1294. * E SET IF SSJ= ENTRY POINT PRESENT.
  1295. * (*SA* IS ASSOCIATED ADDRESS.)
  1296. * F SET IF VAL= ENTRY POINT PRESENT.
  1297. * G SET IF SSM= ENTRY POINT PRESENT.
  1298. * H SET IF CLB= ENTRY POINT PRESENT.
  1299. * I SET IF LDR= ENTRY POINT PRESENT.
  1300. * J SET IF UTL= ENTRY POINT PRESENT.
  1301. * K SET IF DPA= ENTRY POINT PRESENT.
  1302. * DA = 1/R,1/T,1/S,1/C,1/F,1/U,12/FL
  1303. * WHERE, R = RESTART FLAG.
  1304. * T = SET OVERRIDE REQUIRED STATUS.
  1305. * S = SUPPRESS DMP= ON CONTROL CARD CALL.
  1306. * C = ONLY CREATE DM* WITH NOTHING ON IT.
  1307. * F = DUMP FNT ENTRIES TO FILE DM*.
  1308. * U = CREATE FILE DM* AS AN UNLOCKED FILE.
  1309. * FL = 0, FOR DUMP OF FULL FL.
  1310. * " 0, FOR DUMP OF FL*100B OF FL.
  1311. * SA SSJ= PARAMETER AREA ADDRESS.
  1312.  
  1313.  
  1314. SEPA CON 0 SPECIAL ENTRY POINT WORD
  1315. TSEP SPACE 4,5
  1316. ** TSEP - TABLE OF SPECIAL ENTRY POINTS.
  1317.  
  1318.  
  1319. TSEP VFD 24/0LARG=,18/SEP9,18/53 CONTROL STMT CONTROL
  1320. VFD 24/0LDMP=,18/SEP1,18/52 DUMP CONTROL
  1321. VFD 24/0LDPA=,18/SEP9,18/47 *DMP=* ARGUMENT CONTROL
  1322. VFD 24/0LMFL=,18/SEP5,18/48 MINIMUM FL CONTROL
  1323. VFD 24/0LRFL=,18/SEP6,18/48 FIELD LENGTH CONTROL
  1324. VFD 24/0LSDM=,18/SEP9,18/51 SUPPRESS DAYFILE CONTROL
  1325. VFD 24/0LSSJ=,18/SEP2,18/50 SPECIAL SYSTEM JOB CONTROL
  1326. VFD 24/0LVAL=,18/SEP9,18/49 VALIDATION JOB CONTROL
  1327. VFD 24/0LSSM=,18/SEP9,18/48 FL DUMP PROHIBITED
  1328. VFD 24/0LCLB=,18/SEP8,18/54 COMMAND LINE BUFFER FET
  1329. VFD 24/0LLDR=,18/SEP10,18/55 EXECUTE-ONLY READ CONTROL
  1330. VFD 24/0LLIB=,18/SEP9,18/55 EXECUTE-ONLY READ CONTROL
  1331. VFD 24/0LUTL=,18/SEP9,18/56 PF UTILITIES CONTROL
  1332. VFD 24/0LNPC=,18/ABS4,18/0 NOS CRACKING FORMAT FLAG
  1333. CON 0
  1334. SPACE 4,5
  1335. ** *ARG=* ENTRY POINT.
  1336. * ARG= ENTRY POINT PREVENTS ARGUMENTS FROM BEING PASSED
  1337. * TO RA + ARGR, AND SUPPRESSES ARGUMENT CHECKING.
  1338.  
  1339.  
  1340. ** *DMP=* ENTRY POINT.
  1341. * DMP= SPECIFIES AMOUNT/100B OF FIELD LENGTH TO DUMP BEFORE
  1342. * LOADING PROGRAM WITH *DMP=* ENTRY POINT.
  1343. * DMP= = VFD 2/0,1/S,1/C,1/F,1/U,12/FL
  1344. * WHERE, S = SUPPRESS DMP= ON CONTROL CARD CALL.
  1345. * C = ONLY CREATE DM* WITH NOTHING ON IT.
  1346. * F = DUMP FNT ENTRIES TO FILE DM*.
  1347. * U = CREATE FILE DM* AS AN UNLOCKED FILE.
  1348. * FL = 0, FOR DUMP OF FULL FL.
  1349. * " 0, FOR DUMP OF FL*100B OF FL.
  1350.  
  1351. ** *DPA=* ENTRY POINT.
  1352. * *DPA=* SIGNIFIES THAT ARGUMENTS ARE PASSED TO A *DMP=*
  1353. * PROGRAM VIA *ARGR* AND *ACTR*.
  1354.  
  1355.  
  1356. ** *RFL=* ENTRY POINT.
  1357. * RFL= DESIGNATES THE AMOUNT OF FIELD LENGTH REQUIRED TO
  1358. * LOAD THE JOB CONTAINING IT.
  1359.  
  1360. ** *MFL=* ENTRY POINT.
  1361. * MFL= DESIGNATES THE MINIMUM FIELD LENGTH REQUIRED BY
  1362. * THE JOB. FIELD LENGTH WILL BE INCREASED TO THIS VALUE
  1363. * IF LESS THAN THIS VALUE.
  1364.  
  1365. ** *SDM=* ENTRY POINT.
  1366. * SDM= ENTRY POINT CAUSES NO DAYFILE MESSAGE TO BE
  1367. * GENERATED FOR THE CONTROL CARD CALL.
  1368.  
  1369. ** *SSJ=* ENTRY POINT.
  1370. * SSJ= ENTRY POINT MUST BE PRESENT FOR A JOB TO BE ENTERED
  1371. * AS A SPECIAL SYSTEM JOB.
  1372. * (*RFL=* ENTRY POINT MUST PRECEDE *SSJ=* TO ALLOW
  1373. * ADDRESS VALIDATION IF OTHER THAN ZERO.)
  1374.  
  1375. ** *VAL=* ENTRY POINT.
  1376. * JOBS CONTAINING VAL= ENTRY POINTS ARE THE ONLY JOBS
  1377. * ALLOWED TO EXECUTE WHEN VALIDATION BITS ARE SET IN THE
  1378. * CONTROL POINT AREA.
  1379.  
  1380. ** *SSM=* ENTRY POINT.
  1381. * SSM= ENTRY POINT PREVENTS DUMPS OF THE FIELD LENGTH
  1382. * ASSOCIATED WITH THE JOBS CONTROL POINT.
  1383.  
  1384. ** *CLB=* ENTRY POINT.
  1385. * THE VALUE OF THE CLB= ENTRY POINT SPECIFIES THE ADDRESS
  1386. * OF THE INPUT FET FOR A COMMAND LINE BUFFER. THE COMMAND
  1387. * LINE WILL BE TRANSFERRED TO THE BUFFER BEFORE THE PROGRAM
  1388. * CONTAINING THE CLB= BEGINS EXECUTION. THIS IS ONLY
  1389. * VALID FOR TXOT JOBS.
  1390.  
  1391. ** *LDR=* ENTRY POINT.
  1392. * THE *LDR=* ENTRY POINT ALLOWS THE LOADED PROGRAM
  1393. * TO USE *CIO* CALLS TO READ AN *EXECUTE-ONLY* FILE.
  1394.  
  1395. ** *LIB=* ENTRY POINT.
  1396. * THE *LIB=* ENTRY POINT IS DEFINED TO ALLOW THE GLOBAL
  1397. * LIBRARY UTILITY EXECUTE-ONLY FILE ACCESS. THIS ENTRY
  1398. * POINT SHOULD NOT BE USED BY ANY OTHER PROGRAM IF
  1399. * SYSTEM EXECUTE-ONLY FILE SECURITY IS TO BE MAINTAINED.
  1400.  
  1401. ** *UTL=* ENTRY POINT.
  1402. * ALLOWS JOBS (PRIMARILY INTENDED FOR PF UTILITIES) TO
  1403. * EXECUTE ON AN *OFF* DEVICE, WHEREAS JOBS WILL NORMALLY
  1404. * ROLLOUT WHEN ATTEMPTING TO ACCESS SUCH A DEVICE UNTIL IT
  1405. * HAS BEEN RETURNED TO SERVICE.
  1406.  
  1407. ** *NPC=* ENTRY POINT.
  1408. * SETS NOS CRACKING FORMAT WHEN PROGRAM IS EXECUTED
  1409. * FROM A USER LIBRARY. IT IS IGNORED BY *SYSEDIT*.
  1410.  
  1411. * PROCESS *DMP=* ENTRY.
  1412.  
  1413. SEP1 MX3 -18
  1414. BX2 -X0*X2
  1415. SA1 SEPA
  1416. LX3 18
  1417. MX4 -1
  1418. LX2 18
  1419. BX1 X3*X1
  1420. SX6 B1
  1421. BX1 X2+X1
  1422. EQ SEP7
  1423.  
  1424. * PROCESS *SSJ=* ENTRY.
  1425.  
  1426. SEP2 BX6 -X0*X2
  1427. MX3 -17
  1428. AX1 48
  1429. BX2 -X3*X2
  1430. SX4 X2+SSJL ADD PARAMETER AREA BUFFER
  1431. MX3 -11
  1432. BX1 -X3*X1
  1433. ZR X2,SEP3 IF NO ADDRESS SPECIFIED
  1434. LX1 6
  1435. IX1 X1-X4
  1436. NG X1,ABS4 IF ILLEGAL ADDRESS
  1437. SEP3 SA1 SEPA SET SSJ= ADDRESS IN WORD
  1438. BX1 X0*X1
  1439. BX1 X1+X6
  1440. SEP4 MX4 -1
  1441. SX6 B1
  1442. EQ SEP7
  1443.  
  1444. * PROCESS *MFL=* ENTRY.
  1445.  
  1446. SEP5 SX2 X2+400000B
  1447.  
  1448. * PROCESS *RFL=* ENTRY.
  1449.  
  1450. SEP6 SX6 X2+77B ROUND FIELD LENGTH
  1451. MX4 -12
  1452. AX6 6
  1453. SEP7 LX4 X4,B4 SHIFT COMPLEMENT MASK
  1454. BX3 X4*X1 CLEAR FIELD
  1455. LX6 X6,B4 SHIFT VALUE
  1456. BX6 -X4*X6 MASK OFF VALUE
  1457. BX6 X3+X6 ADD VALUE TO FIELD
  1458. SA6 A1 ENTER PARAMETER
  1459. ZR X7,ABS3 IF LDR= ENTRY
  1460. EQ ABS4 LOOP FOR NEXT ENTRY
  1461.  
  1462. * PROCESS *CLB=* ENTRY.
  1463.  
  1464. SEP8 MX3 -17
  1465. AX1 48
  1466. BX2 -X3*X2 GET CLB= VALUE
  1467. MX3 -11
  1468. SX4 X2+105B
  1469. BX1 -X3*X1 GET MFL= VALUE
  1470. LX1 6
  1471. IX1 X1-X4
  1472. NG X1,ABS4 IF ILLEGAL VALUE
  1473.  
  1474. * PROCESS *ARG=*, *DPA=*, *SDM=*, *SSM=*, *UTL=* AND *VAL=*
  1475. * ENTRIES.
  1476.  
  1477. SEP9 SA1 SEPA
  1478. EQ SEP4
  1479.  
  1480. * PROCESS LDR= ENTRY.
  1481.  
  1482. SEP10 SA1 SEPA
  1483. SX5 X5-1 ADJUST ENTRY POINT COUNT
  1484. BX7 X7-X7
  1485. EQ SEP4 CONTINUE
  1486. ELD SPACE 4,10
  1487. ** ELD - ENTER PERIPHERAL LIBRARY DIRECTORY.
  1488. *
  1489. * ENTRY (X0) = 18 BIT MASK.
  1490. * (X5) = PLD ENTRY.
  1491. *
  1492. * USES A - 3, 6.
  1493. * B - 4, 7.
  1494. * X - 2, 3, 6, 7.
  1495.  
  1496.  
  1497. ELD SUBR ENTRY/EXIT
  1498. ALLOC TLIB,B1 ALLOCATE SPACE FOR ENTRY
  1499. SB4 X2 SET START OF DIRECTORY
  1500. SB7 B4+X3
  1501. BX2 X0*X5
  1502. SB7 B7-B1 SET END OF DIRECTORY
  1503. ELD1 EQ B4,B7,ELD2 IF START OF DIRECTORY
  1504. SA3 B7-B1 READ NEXT ENTRY
  1505. BX7 X0*X3
  1506. BX6 X3 MOVE ENTRY DOWN
  1507. IX7 X2-X7
  1508. SA6 A3+B1
  1509. LX7 18
  1510. SB7 B7-B1 DECREMENT PLD ADDRESS
  1511. NG X7,ELD1 IF NOT AT SLOT FOR NEW ENTRY
  1512. SB7 A6
  1513. ELD2 BX6 X5 INSERT PLD ENTRY
  1514. SA6 B7
  1515. EQ ELDX RETURN
  1516. MSP SPACE 4,5
  1517. ** MSP - PROCESS MASS STORAGE RESIDENT PPU PROGRAMS.
  1518. *
  1519. * ENTRY TRCD AND TRES BUILT.
  1520. *
  1521. * EXIT (TSCR) = MS RESIDENT PPU PROGRAMS.
  1522.  
  1523.  
  1524. MSP PS ENTRY/EXIT
  1525. BX6 X6-X6 CLEAR LIST TABLE
  1526. MX0 54
  1527. SA6 L.TLST
  1528. SA6 L.TSCR CLEAR SCRATCH TABLE
  1529. LX0 12
  1530. SA0 B0
  1531. MSP0 SA3 F.TRCD
  1532. SB3 A0 (B3) = *TRCD* INDEX
  1533. SB2 B1+B1
  1534. ERRNZ C.TRCD-2 CODE ASSUMES VALUE
  1535.  
  1536. * ENTER PPU PROGRAMS IN LIST FOR COPY.
  1537.  
  1538. MSP1 SA5 X3+B3 NEXT ENTRY
  1539. SX6 X5-PLRT CHECK TYPE
  1540. SB3 B3+B2 ADVANCE INDEX
  1541. SX7 X5-PPRT
  1542. ZR X5,MSP3 IF END OF DIRECTORY
  1543. ZR X6,MSP1.1 IF *PPL*
  1544. NZ X7,MSP1 IF NOT *PP*
  1545. MSP1.1 BX6 X5
  1546. AX6 54
  1547. SB7 X6+1R6&77B
  1548. ZR B7,MSP1 IF *6*
  1549. EQ B7,B1,MSP1 IF *7*
  1550. SEARCH TRES,X5,X0 CHECK RESIDENCY
  1551. ZR X2,MSP2.5 IF NOT FOUND
  1552. SX6 X2-1
  1553. SA3 F.TRCD
  1554. NG X6,MSP1 IF *CM* RESIDENT
  1555. MSP1.2 SX1 X5-PPRT
  1556. ZR X1,MSP2 IF *PP*
  1557. SA1 =1H LIST *IGNORED ... NOT PUT IN PPULIB*
  1558. SA2 =10HIGNORED
  1559. BX6 X2 SET RECORD STATUS
  1560. LX7 X1
  1561. SA7 LBUF
  1562. MX7 42
  1563. SA6 A7+B1
  1564. SA0 B3 SAVE *TRCD* INDEX
  1565. BX1 X7*X5 SPACE FILL NAME
  1566. RJ SFN
  1567. SA1 TRCN+X5 SET RECORD TYPE
  1568. SA6 A6+1
  1569. RJ SFN
  1570. SA1 =17LNOT PUT IN PPULIB
  1571. SA2 A1+B1
  1572. SA6 A6+B1
  1573. BX6 X1
  1574. LX7 X2
  1575. SA6 A6+B1
  1576. SA7 A6+B1
  1577. PRINT LBUF
  1578. EQ MSP0 CHECK NEXT RECORD
  1579.  
  1580. MSP2 SA1 A5+B1 ENTER NAME AND RANDOM ADDRESS
  1581. MX3 24
  1582. BX2 X3*X5
  1583. AX1 24
  1584. LX2 -6
  1585. ADDWRD TLST,X2+X1
  1586. SA3 F.TRCD
  1587. EQ MSP1
  1588.  
  1589. MSP2.5 SA1 DN CHECK FOR CM RESIDENT *DSD* OVERLAY
  1590. MX2 -18
  1591. BX7 X1-X5
  1592. LX7 12
  1593. BX7 -X2*X7
  1594. ZR X7,MSP1.2 IF *9DX*
  1595. AX7 2
  1596. NZ X7,MSP1.2 IF NOT *9EX*, *9FX*, *9GX*
  1597. ADDWRD A0,X1+X5 MAKE OVERLAY CM RESIDENT
  1598. SA3 F.TRCD
  1599. EQ MSP1 CONTINUE
  1600.  
  1601. MSP3 ADDWRD TRES,X6-X6 TERMINATE *TRES*
  1602. SA2 F.TLST SORT LIST
  1603. SA1 L.TLST
  1604. SB7 X2
  1605. RJ SST
  1606. ADDWRD TLST,X6-X6 TERMINATE LIST
  1607. SA4 F.TEND NEW FWA
  1608. IX7 X4-X3
  1609. MX0 24
  1610. SA7 A2
  1611. SA7 F+5 SET LIST ADDRESS
  1612. MOVE X3,X2,X7 MOVE TABLE UP
  1613. SA1 TN DECREMENT TABLE COUNT
  1614. SA2 PE SET SECTOR NUMBER
  1615. SX6 X1-1
  1616. BX7 X2
  1617. SA6 A1
  1618. SA7 SN
  1619.  
  1620. * COPY PPU PROGRAMS TO PPU LIBRARY FILE, DELETING 7700
  1621. * TABLE.
  1622.  
  1623. READLS F
  1624. SA1 .WPF ACTIVATE PPU LIBRARY WRITE
  1625. SX6 B0 CLEAR SECTOR COUNT
  1626. BX7 X1
  1627. SA6 S+6
  1628. SA7 SL
  1629. MSP4 READW F,BUF,1 READ FIRST WORD
  1630. SA2 BUF CHECK FIRST WORD
  1631. NZ X1,MSP9 IF EOR
  1632. LX2 18
  1633. SX6 X2-770000B
  1634. LX2 6
  1635. NZ X6,PLE IF NO 7700 TABLE
  1636. SX5 X2+1 SKIP 7700 TABLE
  1637. MSP5 READW F,BUF,1
  1638. SX5 X5-1
  1639. NZ X5,MSP5
  1640. SA2 L.TSCR COMPARE PPU CONTROL WORD AND NAME IN LIST
  1641. SA3 F.TLST
  1642. AX2 1
  1643. IX6 X2+X3
  1644. SA1 B6-1
  1645. SA2 X6
  1646. LX2 6
  1647. BX7 X1-X2
  1648. BX3 X0*X7
  1649. ZR X3,MSP5.1 IF MATCH
  1650. AX2 42
  1651. BX1 X1+X3
  1652. SX2 X2-3R1PR
  1653. NZ X2,PLE IF NO MATCH
  1654. MSP5.1 SX2 X1+77B SET SECTOR COUNT TO BYTE 3 OF PP HEADER
  1655. AX2 6
  1656. SX5 X1
  1657. LX2 12
  1658. BX6 X2+X1
  1659. SA6 A1
  1660. BX1 X1-X5
  1661. ADDWRD TSCR,X1 ENTER PPU CONTROL WORD
  1662. SA1 SN ENTER SECTOR NUMBER
  1663. SX5 X5-1 SET PROGRAM WORD COUNT
  1664. ADDWRD TSCR,X1
  1665. SX6 77B
  1666. NG X5,PLE IF ILLEGAL WORD COUNT
  1667. MSP6 IX5 X5-X6 DECREMENT WORD COUNT
  1668. PL X5,MSP7 IF NOT SHORT BLOCK
  1669. IX6 X5+X6 SET SHORT COUNT
  1670. MSP7 ZR X6,MSP8 IF EMPTY BLOCK
  1671. READW F,B6,X6 READ BLOCK
  1672. MSP8 SX6 B6-BUF SET WORD COUNT
  1673. SA6 WC
  1674. RJ WTB WRITE BLOCK
  1675. SB6 BUF
  1676. SX6 100B
  1677. PL X5,MSP6 LOOP TO COMPLETE PROGRAM
  1678. EQ MSP4 PROCESS NEXT PROGRAM
  1679.  
  1680. * TERMINATE READ AND REQUEST MASS STORAGE TRANSLATION.
  1681.  
  1682. MSP9 ADDWRD TSCR,X6-X6 TERMINATE TSCR
  1683. ADDWRD A0,X1
  1684. SA1 TN RESET TABLE COUNT
  1685. SA2 S+6 SET EOF
  1686. BX6 X6-X6 CLEAR LIST TABLE
  1687. SX7 X1+B1
  1688. SA6 L.TLST
  1689. PX6 X2
  1690. SA7 A1
  1691. SA6 A2
  1692. RECALL SL WAIT WRITE COMPLETE
  1693. SA1 F.TSCR REQUEST SECTOR COUNT CONVERSION
  1694. SA3 .CSN+1
  1695. LX1 12
  1696. BX7 X3+X1
  1697. SA7 SL
  1698. RECALL A7
  1699. EQ MSP RETURN
  1700. PLD SPACE 4,10
  1701. ** PLD - GENERATE PLD.
  1702. *
  1703. * ENTRY (TSCR) = MS RESIDENT PPU PROGRAMS.
  1704. * (TADR) = ALTERNATE DEVICE RESIDENT PROGRAMS.
  1705. * (TLIB) = RPL AND RCL ENTRIES.
  1706. *
  1707. * EXIT (TLIB) = RPL, RCL, AND PLD.
  1708.  
  1709.  
  1710. PLD PS ENTRY/EXIT
  1711. SA1 .RSE GET SYSTEM EQUIPMENT
  1712. BX6 X1
  1713. SA6 SL
  1714. RECALL A6
  1715. SA1 L.TADR
  1716. MX0 36
  1717. SB3 B0
  1718. SB2 B1+B1
  1719. ZR X1,PLD2 IF NO ALTERNATE DEVICE ENTRIES
  1720.  
  1721. * PROCESS ALTERNATE PLD ENTRIES.
  1722.  
  1723. SX6 3
  1724. SA6 CF SELECT SYSTEM CHECKPOINT
  1725. SB4 59
  1726. PLD1 SA2 F.TADR READ NEXT ENTRY
  1727. SA1 X2+B3
  1728. SB3 B3+B2
  1729. ZR X1,PLD2 IF NO MORE ENTRIES
  1730. LX6 X1,B4
  1731. BX1 X0*X1 MASK OUT PROGRAM NAME AND EQUIPMENT
  1732. PL X6,PLD1 IF CPU PROGRAM
  1733. LX1 -24
  1734. MX4 -12
  1735. BX4 -X4*X1 EXTRACT LA
  1736. AX1 12
  1737. LX1 36
  1738. BX1 X1+X4
  1739. SA4 A1+B1
  1740. BX4 -X0*X4 TRACK AND SECTOR
  1741. LX4 12
  1742. ADDWRD TLIB,X1+X4
  1743. EQ PLD1
  1744.  
  1745. * ALLOCATE PP BREAKPOINT TABLE.
  1746.  
  1747. PLD2 R= A0,TLIB
  1748. MX1 1
  1749. DUP PBKL,1
  1750. ADDWRD A0,X1
  1751.  
  1752. * PROCESS NON-ALTERNATE PLD ENTRIES.
  1753.  
  1754. SA3 L.TLIB SET FWA OF PLD
  1755. SX7 X3+SBUF
  1756. SB5 B0
  1757. SB3 B0
  1758. SA7 T1
  1759. SA7 T2
  1760. PLD3 SA2 F.TSCR
  1761. SA3 X2+B3 READ NEXT ENTRY
  1762. SB3 B3+B2
  1763. ZR X3,PLD5 IF END OF TSCR
  1764. BX3 X0*X3 EXTRACT NAME AND LOAD ADDRESS
  1765. LX3 -24
  1766. MX1 -12
  1767. BX1 -X1*X3 EXTRACT LA
  1768. BX6 X3-X1
  1769. LX6 24
  1770. BX3 X6+X1
  1771. SA1 EQ
  1772. BX3 X3+X1
  1773. SA1 A3+B1
  1774. BX1 -X0*X1 EXTRACT TRACK AND SECTOR
  1775. LX1 12
  1776. BX1 X1+X3
  1777. LX6 6
  1778. SX6 X6-1R9
  1779. BX5 X1 SAVE ENTRY
  1780. NZ X6,PLD4 IF NOT *9* LEVEL PROGRAM
  1781. MX0 18
  1782. BX3 X0*X3
  1783. LX3 12
  1784. SB4 X3 FIRST TWO CHARACTERS OF OVERLAY NAME
  1785. SEARCH TADR,X5,X0 CHECK RESIDENCY
  1786. BX1 X5
  1787. MX0 36
  1788. NZ X2,PLD4 IF ALTERNATE DEVICE RESIDENT
  1789. EQ B5,B4,PLD3 IF SAME OVERLAY GROUP
  1790. SB5 B4+ SET NEXT DISPLAY OVERLAY GROUP
  1791. PLD4 ADDWRD TLIB,X1 MAKE DIRECTORY ENTRY
  1792. EQ PLD3 LOOP
  1793.  
  1794. * ENABLE ALTERNATE SYSTEM ENTRIES.
  1795.  
  1796. PLD5 SA1 T1
  1797. BX7 X7-X7 CLEAR ALTERNATE SYSTEM ENTRIES
  1798. SB3 X1
  1799. SA7 L.TSCR CLEAR SCRATCH TABLE
  1800. SB2 X1-4
  1801. SX7 PBKL
  1802. PLD6 SA1 B2-B1 READ NEXT ENTRY
  1803. SB2 B2-B1
  1804. ZR X1,PLD8 IF END OF ALTERNATE DEVICE ENTRIES
  1805. MX0 19
  1806. SB4 B0
  1807. BX6 X1
  1808. PLD7 SA2 B3+B4 READ NEXT ENTRY
  1809. SB4 B4+B1
  1810. BX3 X1-X2
  1811. BX3 X0*X3
  1812. ZR X2,PLE IF ENTRY NOT FOUND
  1813. NZ X3,PLD7 IF NO MATCH
  1814. SA6 A2 SWITCH ENTRIES
  1815. SX7 X7+B1 COUNT ENTRIES
  1816. BX6 X2
  1817. SA6 A1
  1818. EQ PLD6
  1819.  
  1820. * ENTER RPL ENTRIES IN PLD.
  1821.  
  1822. PLD8 SA7 PL SET NUMBER OF ALTERNATE SYSTEM ENTRIES
  1823. SA1 F.TLIB
  1824. SA2 L.TLIB
  1825. SA4 T1 START OF PLD
  1826. IX3 X1+X2
  1827. BX6 X4
  1828. IX7 X3-X4 LENGTH OF PLD
  1829. SA6 A1 RESET TABLE POINTERS
  1830. SA7 A2
  1831. SA5 SBUF INITIALIZE RPL SEARCH
  1832. MX0 18
  1833. SB5 X5+
  1834. SA1 RP SET START OF RPL IN LOW CORE
  1835. SB6 X1-SBUF
  1836. SA6 LM SET LOW MEMORY LIMIT
  1837. PLD9 SX6 X5 PROGRAM LENGTH
  1838. MX7 -36 EXTRACT LOAD ADDRESS
  1839. BX7 -X7*X5
  1840. LX6 12
  1841. SX1 A5+B6 RPL ADDRESS
  1842. AX7 24
  1843. BX2 X0*X5 EXTRACT NAME
  1844. LX1 24
  1845. SX5 B1
  1846. BX6 X6+X7
  1847. LX5 41
  1848. BX1 X1+X5 MERGE *RPL* FLAG
  1849. BX1 X1+X2
  1850. LX2 18
  1851. SX3 X2-3RSFP
  1852. BX5 X1+X6
  1853. NZ X3,PLD10 IF NOT *SFP*
  1854. BX6 X5
  1855. SA6 T1 SAVE SFP ENTRY
  1856. EQ PLD12
  1857.  
  1858. * ADJUST LOAD ADDRESS AND PROGRAM LENGTH TO NOT LOAD HEADER
  1859. * WORD FOR *6XX* AND *7XX* PROGRAMS.
  1860.  
  1861. PLD10 AX2 12
  1862. SB3 X2-1R6
  1863. SX3 B1
  1864. LT B3,B0,PLD11 IF .LT. *6XX*
  1865. ZR B3,PLD10.1 IF *6XX* DO NOT INCREMENT CM ADDRESS
  1866. GT B3,B1,PLD11 IF *8XX* OR *9XX* LOAD HEADER WORD
  1867. LX3 24 INCREMENT CM ADDRESS OF LOAD
  1868. IX5 X5+X3
  1869. PLD10.1 SX3 -10000B+5
  1870. IX5 X5+X3
  1871.  
  1872. PLD11 RJ ELD ENTER LIBRARY DIRECTORY
  1873.  
  1874. * ADVANCE TO NEXT *RPL* ENTRY.
  1875.  
  1876. PLD12 SA5 A5+B5 READ NEXT RPL ENTRY
  1877. SB5 X5
  1878. NZ X5,PLD9 IF NOT END OF RPL
  1879.  
  1880. * CHECK AND PROCESS SYNONYMS.
  1881.  
  1882. PLD13 SA2 L.TSYN
  1883. SA1 F.TSYN
  1884. ZR X2,PLD14 IF END OF SYNONYMS
  1885. SX6 X2-C.TSYN REMOVE ENTRY FROM TABLE
  1886. IX3 X1+X6 SET ADDRESS OF NEXT ENTRY
  1887. SA6 A2
  1888. SA3 X3 READ PRIMARY NAME
  1889. SEARCH TLIB,X3,X0
  1890. ZR X2,PLD13 IF PRIMARY PROGRAM NOT IN PLD
  1891. SA3 A3+B1
  1892. BX2 -X0*X2 GENERATE ENTRY FOR SYNONYM
  1893. LX6 X3
  1894. BX5 X3+X2
  1895. RJ MES
  1896. NZ X2,PLD13 IF SYNONYM NAME EXISTS IN PLD
  1897. RJ ELD ENTER SYNONYM IN PLD
  1898. EQ PLD13 LOOP
  1899.  
  1900. PLD14 ALLOC TLIB,B1+B1 ALLOCATE SPACE FOR *SFP*
  1901. IX3 X2+X3
  1902. SX6 SBUF RESET POINTERS TO INCLUDE RPL, RCL, PLD
  1903. IX7 X3-X6
  1904. SA6 LM RESET LOW MEMORY LIMIT
  1905. SA7 A3
  1906. SA6 A2
  1907. SA1 T1 SFP ENTRY IS LAST
  1908. MX4 1
  1909. BX1 -X0*X1
  1910. LX4 42-59
  1911. BX7 X7-X7
  1912. BX6 X1+X4
  1913. SA7 X3-1 SET END OF TABLE
  1914. SA6 A7-B1 *SFP* ENTRY TO LAST PLD SLOT
  1915.  
  1916. * SET UP BREAKPOINT INFORMATION.
  1917.  
  1918. SA4 T2
  1919. SX6 3L"PBK0" SET SEARCH FOR *0BK*
  1920. LX6 42
  1921. BX6 X0*X6
  1922. RJ RRD REMOVE *0BK* FROM PLD
  1923. BX6 X1
  1924. ZR X1,PLD16 IF *0BK* NOT FOUND
  1925. LX1 59-41
  1926. NG X1,PLD16 IF *0BK* CM RESIDENT
  1927. SX6 0
  1928. PLD16 SA6 X4-3 SET *0BK* RESIDENCY STATUS
  1929. SX6 3L"PBK7"
  1930. LX6 42 SET SEARCH FOR *7BK*
  1931. BX6 X0*X6
  1932. RJ RRD REMOVE *7BK* FROM PLD
  1933. BX6 X1
  1934. ZR X1,PLD17 IF *7BK* NOT FOUND
  1935. LX1 59-41
  1936. SA2 X4-3
  1937. PL X1,PLD17 IF *7BK* NOT CM RESIDENT
  1938. SA6 X4-4
  1939. NZ X2,PLD IF *0BK* CM RESIDENT
  1940. PLD17 MX6 1
  1941. SA6 X4-4 DEACTIVATE PP BREAKPOINT TABLE
  1942. SA6 A6+B1
  1943. EQ PLD RETURN
  1944. RRD SPACE 4,15
  1945. ** RRD - REMOVE ROUTINE FROM PLD.
  1946. *
  1947. * ENTRY (X0) = 18 BIT MASK.
  1948. * (X4) = FWA OF PLD.
  1949. * (X6) = PACKAGE NAME.
  1950. *
  1951. * EXIT (X1) = 0 IF PACKAGE NOT FOUND.
  1952. * (X1) = PLD ENTRY.
  1953. *
  1954. * USES A - 1, 2, 3, 6.
  1955. * X - 1, 2, 3, 6.
  1956.  
  1957.  
  1958. RRD PS ENTRY/EXIT
  1959. SA1 X4-1
  1960. SA3 L.TLIB
  1961. RRD1 SA1 A1+B1 GET NEXT PLD ENTRY
  1962. BX2 X0*X1
  1963. ZR X1,RRD IF END OF PLD
  1964. IX2 X2-X6
  1965. NZ X2,RRD1 IF NOT PACKAGE
  1966.  
  1967. * DECREMENT COUNT OF ENTRIES IN TLIB.
  1968.  
  1969. SX6 B1
  1970. IX6 X3-X6
  1971. SA6 A3
  1972.  
  1973. * MOVE REST OF PLD DOWN.
  1974.  
  1975. SA2 A1+1 FIRST ENTRY TO MOVE
  1976. RRD2 BX6 X2
  1977. SA6 A2-B1 MOVE ENTRY DOWN
  1978. SA2 A2+1
  1979. NZ X6,RRD2 IF NOT END OF PLD
  1980. EQ RRD RETURN
  1981. CMC SPACE 4,10
  1982. ** CMC - PROCESS CM RESIDENT CPU PROGRAMS.
  1983. *
  1984. * ENTRY TRCD AND TRES BUILT.
  1985. * (TLIB) = RPL ENTRIES.
  1986. *
  1987. * EXIT (TLIB) = RPL AND RCL ENTRIES.
  1988. * (TCMR) = RCL ADDRESSES.
  1989.  
  1990.  
  1991. CMC PS ENTRY/EXIT
  1992. ADDWRD TCMR,X1-X1 ADD EMPTY ENTRY
  1993. CMC1 SA3 F.TRES SET TABLE INDEX
  1994. SA1 CMCA
  1995. MX0 54
  1996. SB3 X1+
  1997. LX0 12
  1998.  
  1999. * SEARCH FOR CM RESIDENT *OVL*, *ABS* AND *PPU* PROGRAMS.
  2000.  
  2001. CMC2 SA5 X3+B3 NEXT RESIDENCY ENTRY
  2002. SX1 X5-400004B
  2003. SB3 B3+B1 ADVANCE INDEX
  2004. SX7 X5-400012B
  2005. SB2 X5-400011B
  2006. ZR X5,CMC RETURN IF END OF TABLE
  2007. ZR X1,CMC3 IF *OVL* AND CM RESIDENT
  2008. ZR X7,CMC3 IF *PPU* AND CM RESIDENT
  2009. NZ B2,CMC2 IF NOT *ABS* AND CM RESIDENT
  2010. CMC3 SX7 B3 UPDATE START INDEX
  2011. SA7 CMCA
  2012. SEARCH TRCD,X0*X5 SEARCH FOR RECORD
  2013. ZR X2,CMC1 IF NOT FOUND
  2014. SA3 L.TCMR RCL INDEX
  2015. SA1 RP
  2016. LX3 48 POSITION RCL INDEX
  2017. SA5 A2+B1 SET TCMR INDEX
  2018. SA4 L.TLIB
  2019. IX1 X1+X4 COMPUTE RCL ADDRESS
  2020. BX6 X3+X5
  2021. MX4 42
  2022. SA6 A5+ STORE UPDATED TRCD ENTRY
  2023. BX6 X4*X2
  2024. SA6 T1
  2025. ADDWRD TCMR,X1
  2026. SA1 T1
  2027. ADDWRD TLIB,X1 ENTER NAME IN DIRECTORY
  2028.  
  2029. * READ PROGRAM TO TLIB.
  2030.  
  2031. SX7 X3-1 SAVE INDEX OF ENTRY
  2032. SA7 T1
  2033. RECALL F
  2034. RJ INC INITIALIZE COPY
  2035. NZ X7,CMC8 IF ERROR
  2036. ALLOC TLIB,100B ALLOCATE FIRST BLOCK
  2037. IX4 X3-X1
  2038. IX6 X2+X4
  2039. NZ B4,CMC4 IF NOT SCOPE *ACPM* RECORD
  2040. IX5 X1-X5
  2041. READW F,X6,B7 READ HEADER AND ENTRY POINTS
  2042. SA3 F+3
  2043. SX6 B6+ ADVANCE *OUT* OVER JUNK
  2044. SX7 X3+2
  2045. BX1 X5 WORD COUNT FOR REMAINDER OF BLOCK
  2046. SA7 A3
  2047. CMC4 READW F,X6,X1 READ REMAINDER OF BLOCK
  2048. NG X1,CMC8 IF EOF
  2049. NZ X1,CMC6 IF END OF RECORD
  2050. CMC5 ALLOC A0,100B ALLOCATE FOR NEXT BLOCK
  2051. IX4 X3-X1 SET FWA
  2052. IX6 X2+X4
  2053. READW F,X6,X1
  2054. ZR X1,CMC5 LOOP TO EOR
  2055. NG X1,CMC8 IF EOF
  2056. CMC6 SA2 F.TLIB READ START OF RESIDENT PROGRAMS
  2057. BX6 X0
  2058. SB2 X2
  2059. NG X6,CMC7 IF NOT *ACPM* RECORD
  2060. SX1 X1+B1
  2061. SA6 B6 APPEND *ENDS* WORD
  2062. CMC7 SA4 T1
  2063. IX6 X1-X2 SET LENGTH TO NEXT PROGRAM
  2064. SA3 B2+X4
  2065. IX0 X6-X4
  2066. BX7 X3+X0 ADD LENGTH TO CONTROL WORD
  2067. SA6 L.TLIB
  2068. SA7 A3
  2069. EQ CMC1 LOOP
  2070.  
  2071. CMC8 SX0 =C* RCL.*
  2072. EQ SFE
  2073.  
  2074. CMCA CON 0
  2075. CMP SPACE 4,5
  2076. ** CMP - PROCESS CM RESIDENT PPU PROGRAMS.
  2077. *
  2078. * ENTRY TRCD AND TRES BUILT.
  2079. *
  2080. * EXIT (TLIB) = RPL ENTRIES.
  2081.  
  2082.  
  2083. CMP PS ENTRY/EXIT
  2084. SA3 F.TRES
  2085. SB3 B0 (B3) = START INDEX
  2086. BX6 X6-X6 CLEAR LIST TABLE
  2087. MX0 54
  2088. SA6 L.TLST
  2089. LX0 12
  2090.  
  2091. * ENTER PPU PROGRAMS IN LIST FOR READ.
  2092.  
  2093. CMP1 SA5 X3+B3 NEXT RESIDENCY ENTRY
  2094. SX6 X5-400000B-PLRT CHECK FOR *PPL* TYPE
  2095. SB3 B3+B1 ADVANCE INDEX
  2096. SX7 X5-400000B-PPRT CHECK FOR *PP* TYPE
  2097. ZR X5,CMP2 IF END OF TABLE
  2098. ZR X6,CMP1.1 IF *PPL* AND CM RESIDENT
  2099. NZ X7,CMP1 IF NOT *PP* AND CM RESIDENT
  2100. CMP1.1 SEARCH TRCD,X0*X5 SEARCH FOR RECORD
  2101. SA3 F.TRES
  2102. ZR X2,CMP1 IF NOT FOUND
  2103. SA1 A2+B1 ENTER NAME AND RANDOM ADDRESS
  2104. MX3 24
  2105. BX6 X3*X2
  2106. AX1 24
  2107. ADDWRD TLST,X6+X1
  2108. SA3 F.TRES
  2109. EQ CMP1
  2110.  
  2111. CMP2 SA1 L.TLST
  2112. ZR X1,RPE
  2113. RECALL F
  2114. SA1 X2+B1 SET IN = OUT = FIRST
  2115. SX6 X1
  2116. SA6 A1+B1
  2117. SA6 A6+B1
  2118. ADDWRD TLST,X6-X6 TERMINATE TABLE
  2119. SA4 F.TEND NEW FWA
  2120. IX7 X4-X3
  2121. SA7 A2
  2122. SA6 T1 CLEAR PROGRAM COUNT
  2123. SA7 F+5 SET LIST ADDRESS
  2124. MOVE X3,X2,X7 MOVE TABLE UP
  2125. SA1 TN DECREMENT TABLE COUNT
  2126. SX6 X1-1
  2127. SA6 A1
  2128.  
  2129. * READ PPU PROGRAMS TO *TRSL*.
  2130.  
  2131. READLS F
  2132. CMP3 READW F,BUF,1 READ FIRST WORD
  2133. SA2 BUF CHECK FIRST WORD
  2134. NZ X1,CMP7 IF EOR
  2135. LX2 18
  2136. SX6 X2-770000B
  2137. LX2 6
  2138. NZ X6,RPE IF NO 7700 TABLE
  2139. READW F,BUF+1,X2 SKIP 7700 TABLE
  2140. READW X2,BUF,B1 READ PP HEADER WORD
  2141. SA1 BUF
  2142. MX0 24 SET PP NAME MASK
  2143. AX1 48
  2144. SX1 X1-776100B
  2145. NZ X1,CMP4 IF NOT *PPL* RECORD
  2146. MX0 18 SET PP NAME MASK
  2147. RJ BPH BUILD PPL HEADER
  2148. CMP4 SA2 T1 COMPARE PPU CONTROL WORD AND NAME IN LIST
  2149. SA3 F.TLST
  2150. IX6 X2+X3
  2151. SA1 BUF
  2152. SA3 X6
  2153. BX4 X1-X3
  2154. SX5 X1-1 SET PROGRAM WORD COUNT
  2155. SX7 X2+B1 ADVANCE COUNT
  2156. BX3 X0*X4
  2157. SA7 A2
  2158. NZ X3,RPE IF NO MATCH
  2159. ADDWRD TLIB,X1 ENTER PPU CONTROL WORD
  2160. SX6 77B
  2161. NG X5,RPE IF ILLEGAL WORD COUNT
  2162. CMP5 IX5 X5-X6 DECREMENT WORD COUNT
  2163. PL X5,CMP6 IF NOT SHORT BLOCK
  2164. IX6 X5+X6 SET SHORT COUNT
  2165. CMP6 ZR X6,CMP3 IF EMPTY BLOCK
  2166. ALLOC TLIB,X6 ALLOCATE FOR BLOCK
  2167. IX4 X3-X1 SET FWA
  2168. IX6 X2+X4
  2169. READW F,X6,X1
  2170. PL X5,CMP5 LOOP TO COMPLETE PROGRAM
  2171. EQ CMP3 LOOP TO NEXT PROGRAM
  2172.  
  2173. CMP7 SA1 TN RESET TABLE COUNT
  2174. SX6 X1+B1
  2175. SA6 A1
  2176. EQ CMP RETURN
  2177. ASR SPACE 4,10
  2178. ** ASR - PROCESS ALTERNATE LIBRARIES.
  2179. *
  2180. * ENTRY TRCD AND TRES BUILT.
  2181. * (TSCR) = MS RESIDENT PPU PROGRAMS.
  2182. *
  2183. * EXIT (TADR) = ALTERNATE DEVICE PPU PROGRAMS.
  2184.  
  2185.  
  2186. ASR PS 0 ENTRY/EXIT
  2187. MX0 54
  2188. SB3 0 INITIALIZE INDEX
  2189. LX0 12
  2190. ASR1 SA1 X3+B3 READ RESIDENCY TABLE
  2191. BX7 -X0*X1
  2192. ZR X1,ASR3 IF END OF TABLE
  2193. SB3 B3+B1
  2194. ZR X7,ASR1 IF NOT ALTERNATE DEVICE ENTRY
  2195. SX4 X7
  2196. NG X4,ASR1 IF CM RESIDENT
  2197. BX5 X1
  2198. SEARCH TRCD,X5,X0
  2199. ZR X2,ASR2 IF RECORD NOT FOUND
  2200. SX4 X5
  2201. SA1 X7+B1 GET RANDOM ADDRESS
  2202. LX4 18
  2203. SA3 F.TRCD
  2204. IX7 X7-X3 SET TRCD INDEX
  2205. AX1 24
  2206. BX3 X4+X7 MERGE DEVICE ORDINAL AND TYPE
  2207. LX3 24
  2208. ADDWRD TADR,X3+X1
  2209. ADDWRD A0,X1 DUP ENTRY FOR SORT
  2210. ASR2 SA3 F.TRES
  2211. EQ ASR1
  2212.  
  2213. ASR3 ADDWRD TADR,X1
  2214. SB6 X3 SAVE TABLE LENGTH
  2215. ADDWRD A0,X1 TERMINATE TABLE
  2216. SX1 B6-B1
  2217. SB7 X2
  2218. RJ SST SORT TADR ON DEVICE AND TYPE
  2219. SA5 B7
  2220. SA3 F.TRCD
  2221. SB3 -B1
  2222. ZR X5,ASR IF EMPTY TABLE
  2223. MX0 18
  2224. SB6 X3
  2225. ASR4 LX5 6
  2226. MX2 11
  2227. BX4 X2*X5
  2228. ERRNZ PPRT-1
  2229. LX5 12+18
  2230. NZ X4,ASR5 IF TYPE OVL OR ABS
  2231. SA3 X5+B6
  2232. BX6 X3
  2233. LX5 42
  2234. SEARCH TSCR,X6,X0 FIND ENTRY FOR LOAD ADDRESS
  2235. SX3 X5+B3
  2236. ZR X2,WAD8 IF RECORD NOT FOUND
  2237. LX3 24
  2238. BX7 -X0*X5
  2239. LX7 42
  2240. BX4 X2+X3 ADD DEVICE ORDINAL
  2241. AX3 24+6
  2242. SA7 A5+B1
  2243. SX3 X3+B1
  2244. ERRNZ PPRT-1
  2245. BX6 X4+X3 ADD TYPE = *PP*
  2246. SA6 A7-B1
  2247. ASR5 SA5 A5+2
  2248. NZ X5,ASR4 IF NOT END OF TABLE
  2249.  
  2250. * WRITE ALTERNATE DEVICE.
  2251.  
  2252. SA1 F.TADR
  2253. SA5 X1
  2254. BX6 X5
  2255. SA6 T2
  2256. SA1 T2
  2257. WAD1 MX0 6
  2258. SA3 A5+B1
  2259. BX4 X0*X3 SET NEXT DEVICE
  2260. LX7 X1
  2261. WAD2 SA3 A3+2
  2262. BX6 X0*X3
  2263. IX2 X4-X6
  2264. ZR X2,WAD2 IF SAME DEVICE
  2265. SA2 A3-B1
  2266. SA7 A5 RESTORE TABLE ENTRY
  2267. BX6 X2
  2268. SX4 A5
  2269. SA6 T2 SAVE LIST ENTRY
  2270. SA3 S+9
  2271. SX7 0
  2272. BX6 X3
  2273. SA7 A2 CLEAR TABLE ENTRY
  2274. SA1 .WAD
  2275. SA6 S SET FILE NAME IN FET
  2276. LX4 12+18
  2277. BX6 X1+X4
  2278. SA7 S+6 CLEAR SECTOR COUNT
  2279. SA6 SL START *SLL*
  2280. WAD3 SA3 A5+B1
  2281. BX5 X3
  2282. SA1 F+1
  2283. AX3 24
  2284. SX7 X7+B1
  2285. SB4 X3
  2286. SA7 A3
  2287. ZR B4,WAD4 IF PP ENTRY
  2288. SA2 F.TRCD
  2289. MX0 42
  2290. SA4 X2+B4
  2291. AX3 18+12
  2292. BX4 X0*X4
  2293. LX3 6
  2294. BX7 X4+X3
  2295. SA7 A5+
  2296. WAD4 SX2 A1-B1 SET FET ADDRESS
  2297. LX5 24
  2298. RJ INC INITIALIZE COPY
  2299. NZ X7,CLD3 IF ERROR
  2300. NZ B4,WAD4.1 IF NO SCOPE *ACPM* RECORD
  2301. READW X2,BUF,B7 READ HEADER AND ENTRY POINTS
  2302. SA3 X2+3
  2303. SX6 X3+2 ADVANCE OUT OVER JUNK
  2304. BX5 -X5
  2305. SA6 A3
  2306. SB7 X5+BUFL WORD COUNT FOR REMAINDER OF BLOCK
  2307. EQ WAD6
  2308.  
  2309. WAD4.1 SA1 F+3 READ *OUT*
  2310. SA1 X1 CHECK FOR PP HEADER
  2311. BX2 X1
  2312. LX2 6
  2313. AX2 54
  2314. ZR X2,WAD5 IF NOT PP PROGRAM
  2315. SX6 X1+77B SET SECTOR COUNT
  2316. AX6 6
  2317. LX6 12
  2318. BX6 X6+X1
  2319. SA6 A1 STORE PP HEADER WITH SECTOR COUNT
  2320. WAD5 SB6 BUF
  2321. SB7 BUFL SET BLOCK LENGTH
  2322. WAD6 READW F,B6,B7
  2323. ZR X1,WAD7 IF FULL BLOCK READ
  2324. NG X0,WAD7 IF NOT *ACPM* RECORD
  2325. SB6 B6+B1
  2326. BX6 X0 APPEND *ENDS* WORD
  2327. SB3 BUF+BUFL
  2328. SA6 B6-1
  2329. NE B6,B3,WAD7 IF NOT FULL SECTOR
  2330. SX6 BUFL
  2331. SA6 WC
  2332. WRITEW S,A6,X6+B1 WRITE FULL SECTOR
  2333. SA4 S+6
  2334. SB6 BUF
  2335. SX7 X4+1 UPDATE SECTOR COUNT
  2336. SX1 B1
  2337. SA7 A4
  2338. WAD7 SX6 B6-BUF
  2339. SA6 WC SET WORD COUNT
  2340. BX5 X1
  2341. WRITEW S,A6,X6+1
  2342. SA4 S+6
  2343. SX7 X4+B1 UPDATE SECTOR COUNT
  2344. SA7 A4
  2345. ZR X5,WAD5 IF NOT EOR
  2346. SA5 A5+2
  2347. NZ X5,WAD3 IF NOT DONE WITH DEVICE
  2348. PX6 X7
  2349. SA6 A4
  2350. RECALL SL WAIT WRITE COMPLETE
  2351. SA1 T2
  2352. NZ X1,WAD1 IF NOT LAST ALTERNATE DEVICE
  2353. EQ ASR RETURN
  2354.  
  2355. WAD8 SX0 =C*RECORD NOT FOUND.*
  2356. EQ ABT
  2357. INC SPACE 4,15
  2358. ** INC - INITIALIZE COPY.
  2359. *
  2360. * ENTRY X2 = FET ADDRESS.
  2361. * X5 = RANDOM INDEX (BITS 24 - 47).
  2362. *
  2363. * EXIT X7 " 0 IF ERROR.
  2364. * B4 = 0 IF SCOPE *ACPM* RECORD.
  2365. * B7 = 0 IF 5400 TABLE.
  2366. * *OUT* POINTER ADVANCED OVER 7700 TABLE.
  2367. * X3 = FIRST WORD OF PROCEDURE RECORD IF FROM *PRC*.
  2368. *
  2369. * USES A - 1, 3, 4, 6, 7.
  2370. * B - 2, 4, 7.
  2371. * X - 0, 1, 3, 4, 5, 6, 7.
  2372.  
  2373.  
  2374. INC PS 0 ENTRY/EXIT
  2375. BX6 X6-X6 CLEAR 5400 TABLE FL SPECIFICATION
  2376. MX0 -24
  2377. SA6 INCA
  2378. SA4 X2+B1
  2379. AX5 24
  2380. SX7 X4 SET IN = OUT = FIRST
  2381. BX6 -X0*X5
  2382. SA7 A4+B1
  2383. SA6 X2+6 STORE RANDOM INDEX
  2384. NO
  2385. SA7 A7+B1
  2386. READ X2
  2387. SX5 X4
  2388. READW X2,BUF,B1
  2389. SA3 B6-B1
  2390. LX3 18 CHECK FOR 7700 TABLE
  2391. SX7 X3-770000B
  2392. NZ X7,INC IF NO 7700 TABLE
  2393. LX3 6
  2394. SX4 X3+B1
  2395. IX6 X4+X5 SET *OUT* TO BYPASS 7700 TABLE
  2396. SA6 X2+3
  2397. MX0 18
  2398. SA1 X6
  2399. BX3 X0*X1 CHECK FOR SCOPE *ACPM* TABLE
  2400. SX5 X1
  2401. LX3 12
  2402. SB4 X3-5300B
  2403. NZ B4,INC2 IF NOT *ACPM* TABLE
  2404. BX5 -X5
  2405. PL X5,INC1 IF MULTIPLE ENTRY POINTS
  2406. SX5 B0
  2407. INC1 LX0 18
  2408. SB7 X5+B1
  2409. BX1 X0*X1
  2410. SA4 A1+B7 CHECK *WCL* FIELD
  2411. LX0 18
  2412. SA3 A4+B1 READ *ENDS* WORD
  2413. SX5 B7
  2414. BX3 X0*X3
  2415. SX7 X4
  2416. BX0 X3+X1 SAVE *ENDS* WORD
  2417. EQ INC
  2418.  
  2419. INC2 SB7 X3-5400B
  2420. SA4 A1+4 READ *DEFL* AND *HHA*
  2421. NZ B7,INC IF NOT 5400 TABLE
  2422. LX4 59-17 CHECK FOR *DEFL*
  2423. MX6 1
  2424. SX1 X4
  2425. LX6 43-59 SET 5400 TABLE FLAG
  2426. SA6 INCA
  2427. NZ X1,INC3 IF *DEFL* SPECIFIED
  2428. LX4 59-41 CHECK FOR *HHA*
  2429. SX1 X4
  2430. ZR X1,INC IF *DEFL* AND *HHA* NOT SPECIFIED, RETURN
  2431. MX4 2 SET MFL= CONTROL
  2432. BX6 X4+X6
  2433. INC3 SX4 X1+77B ROUND UP BY 100B
  2434. MX0 12
  2435. LX4 59-17
  2436. BX4 X0*X4
  2437. BX6 X6+X4 SET 5400 TABLE FIELD LENGTH
  2438. SA6 INCA
  2439. EQ INC RETURN
  2440.  
  2441. INCA CON 0 5400 TABLE FIELD LENGTH SPECIFICATION
  2442. TITLE FILE COPY ROUTINES.
  2443. QUAL
  2444. CPF SPACE 4,5
  2445. ** CPF - COPY FILE.
  2446. * COPY FILE *F* TO FILE *S*.
  2447.  
  2448.  
  2449. CPF PS ENTRY/EXIT
  2450. SX6 0 CLEAR WORD COUNT
  2451. SA6 WC
  2452. SA1 DL
  2453. NZ X1,CPF1 IF DEADSTART LOAD
  2454. READCW F,17B
  2455. CPF1 RJ RDB READ BLOCK
  2456. NG X1,CPF RETURN IF EOF
  2457. ZR X6,CPF7 IF ZERO RECORD
  2458. SA5 BUF SET FIRST WORD
  2459. SX2 A5
  2460. IX1 X2+X6 SET RECORD TYPE
  2461. RJ SRT
  2462. ZR X6,CPF6 IF NULL RECORD
  2463. SX3 X6-ODRT CHECK TYPE
  2464. ZR X3,CPF8 IF *OPLD*
  2465. SA6 TY SET NAME AND TYPE
  2466. SA7 CPFA+1 SET NAME IN MESSAGE
  2467. SA2 FN SEARCH IGNORE TABLE
  2468. LX2 12
  2469. SEARCH TINR,X6+X2
  2470. NZ X2,CPF5 IF FOUND
  2471. MESSAGE CPFA,1
  2472. RJ CRS CHECK RECORD STATUS
  2473. SA1 TY CHECK TYPE
  2474. SX6 X1-ULRT
  2475. SA2 LN
  2476. ZR X6,CPF3 IF *ULIB*
  2477. BX6 X1-X2
  2478. ZR X6,SLS IF *LIBDECK*/*TEXT*
  2479.  
  2480. * COPY RECORD.
  2481.  
  2482. CPF2 RJ WTB WRITE BLOCK
  2483. SA1 WC
  2484. SX6 X1-100B
  2485. NG X6,CPF1 IF EOR
  2486. RJ RDB READ BLOCK
  2487. EQ CPF2 LOOP
  2488.  
  2489. * COPY *ULIB*.
  2490.  
  2491. CPF3 RJ WTB WRITE BLOCK
  2492. SA1 WC CHECK WORD COUNT
  2493. SX6 X1-100B
  2494. NG X6,CPF4 IF SHORT BLOCK
  2495. RJ RDB READ BLOCK
  2496. EQ CPF3 LOOP
  2497.  
  2498. CPF4 SA1 TY CHECK TYPE
  2499. SX6 X1-ODRT
  2500. ZR X6,CPF1 IF OPLD
  2501. RJ RDB READ BLOCK
  2502. NG X1,CPF RETURN IF EOF
  2503. SX2 BUF SET RECORD TYPE
  2504. IX1 X2+X6
  2505. RJ SRT
  2506. SA6 TY
  2507. EQ CPF3
  2508.  
  2509. * PROCESS IGNORED RECORD.
  2510.  
  2511. CPF5 SA1 CPFA+1 SET SKIPPING MESSAGE
  2512. BX6 X1
  2513. SA6 CPFB+1
  2514. MESSAGE A6-B1,1
  2515. SA1 TY
  2516. SX6 X1-ULRT
  2517. SA6 CPFC
  2518. CPF6 SA1 WC CHECK WORD COUNT
  2519. SX6 X1-100B
  2520. NG X6,CPF6.1 IF EOR REACHED
  2521. RJ RDB READ BLOCK
  2522. EQ CPF6 LOOP
  2523.  
  2524. CPF6.1 SA1 CPFC
  2525. NZ X1,CPF1 IF NOT IGNORING A *ULIB* RECORD
  2526. SA1 TY CHECK RECORD TYPE
  2527. SX6 X1-ODRT
  2528. ZR X6,CPF1 IF DIRECTORY FOUND
  2529. RJ RDB READ BLOCK
  2530. NG X1,CPF IF EOF REACHED
  2531. SX2 BUF
  2532. IX1 X2+X6
  2533. RJ SRT SET RECORD TYPE
  2534. SA6 TY
  2535. EQ CPF6 PROCESS NEXT RECORD
  2536.  
  2537. * PROCESS ZERO RECORD.
  2538.  
  2539. CPF7 SA1 =4L(00)
  2540. ADDWRD TRCD,X1
  2541. SA1 SN
  2542. ADDWRD TRCD,X1
  2543. RJ WTB WRITE BLOCK
  2544. EQ CPF1
  2545.  
  2546. * PROCESS *OPLD*.
  2547.  
  2548. CPF8 SA1 WC CHECK WORD COUNT
  2549. SX6 X1-100B
  2550. NG X6,CPF1 IF EOR
  2551. RJ RDB READ BLOCK
  2552. PL X1,CPF8 IF NOT EOF
  2553. EQ CPF RETURN ON EOF
  2554.  
  2555. CPFA CON 10H COPYING
  2556. CON 0,0
  2557.  
  2558. CPFB CON 10HSKIPPING
  2559. CON 0,0
  2560. CPFC CON 0 *ULIB* BEING IGNORED FLAG
  2561. CRS SPACE 4,5
  2562. ** CRS - CHECK RECORD STATUS.
  2563.  
  2564.  
  2565. CRS PS ENTRY/EXIT
  2566. SA1 TY SEARCH FOR RECORD
  2567. SEARCH TRCD,X1
  2568. ZR X2,CRS1 IF NOT FOUND
  2569. SA1 SN REPLACE RECORD
  2570. BX7 X1
  2571. SA6 A2
  2572. SA7 A2+1
  2573. SA3 =10HREPLACED
  2574. EQ CRS2
  2575.  
  2576. CRS1 ADDWRD TRCD,X6 ADD RECORD
  2577. SA1 SN
  2578. ADDWRD A0,X1
  2579. SA3 =10HADDED
  2580.  
  2581. CRS2 SA1 =1H SET SPACES
  2582. BX6 X3 SET RECORD STATUS
  2583. LX7 X1
  2584. SA5 TY
  2585. SA7 LBUF
  2586. MX0 42
  2587. SA6 A7+B1
  2588. BX1 X0*X5 SPACE FILL NAME
  2589. RJ SFN
  2590. SA2 TRCN+X5 SET RECORD TYPE
  2591. BX1 X0*X2
  2592. SA6 A6+B1
  2593. RJ SFN
  2594. SA6 A6+1
  2595.  
  2596. * COPY 7700 TABLE.
  2597.  
  2598. SA1 BUF
  2599. RJ CPT
  2600. PRINT LBUF
  2601. EQ CRS RETURN
  2602. RCW SPACE 4,15
  2603. ** RCW - READ CONTROL WORD.
  2604. *
  2605. * EXIT (X5) = WORD COUNT OF DATA FOLLOWING CONTROL WORD.
  2606. * (A5) = *RDBA*.
  2607. * TO *RDBX* IF EOF.
  2608. *
  2609. * USES A - 1, 5, 6, 7.
  2610. * B - 7.
  2611. * X - 1, 3, 5, 6, 7.
  2612. *
  2613. * MACROS READW.
  2614.  
  2615.  
  2616. RCW2 SA5 B6-B1 GET CONTROL WORD
  2617. SB7 4
  2618. SX3 B7+B1
  2619. SX7 X5+B7
  2620. IX6 X7/X3 SET WORD COUNT
  2621. SA6 A5
  2622. AX5 36
  2623. SX2 X5 PRU SIZE
  2624. IX7 X2-X6 EOR IF NONZERO
  2625. BX5 X6
  2626. SA7 A6+B1 SAVE EOR FLAG
  2627.  
  2628. RCW SUBR ENTRY/EXIT
  2629. SA1 RCWA
  2630. SX6 B1 CLEAR FIRST CALL FLAG
  2631. SA6 A1
  2632. ZR X1,RCW1 IF FIRST CALL
  2633. SB7 1
  2634. READW F,RDBA,B7 SKIP TRAILER CONTROL WORD
  2635. RCW1 SB7 1 READ HEADER CONTROL WORD
  2636. READW F,RDBA,B7
  2637. PL X1,RCW2 IF NOT EOF
  2638. SX6 B0+
  2639. SA6 RCWA SET FIRST CALL FLAG FOR NEXT FILE
  2640. SA6 RDBA REINITIALIZE *RDB*
  2641. SA6 A6+B1
  2642. EQ RDBX EXIT
  2643.  
  2644.  
  2645. RCWA CON 0 FIRST CALL FLAG
  2646. RDB SPACE 4,15
  2647. ** RDB - READ BLOCK.
  2648. *
  2649. * EXIT (X6) = (WC) = BLOCK WORD COUNT.
  2650. * (X1) .LT. 0 IF EOF.
  2651. *
  2652. * USES A - 1, 2, 5, 6, 7.
  2653. * X - 1, 2, 5, 6, 7.
  2654. *
  2655. * CALLS RCW.
  2656. *
  2657. * MACROS READW.
  2658.  
  2659.  
  2660. RDB6 SA2 A5+B1 CHECK BLOCK CONTROL WORD
  2661. ZR X2,RDB3 IF NOT EOR
  2662. BX6 X6-X6
  2663. SA6 A2+ CLEAR EOR FLAG FOR NEXT CALL
  2664. SA6 WC
  2665.  
  2666. RDB SUBR ENTRY/EXIT
  2667. SA5 RDBA WORDS LEFT IN PRU
  2668. EQ RDB4 CONTINUE
  2669.  
  2670. RDB3 RJ RCW READ CONTROL WORD
  2671. RDB4 ZR X5,RDB6 IF NO WORDS LEFT IN PRU
  2672. SX6 100B NORMAL BLOCK SIZE
  2673. IX7 X5-X6
  2674. SA7 A5
  2675. SA6 WC SET DATA WORD COUNT
  2676. PL X7,RDB5 IF AT LEAST 100B WORDS IN PRU
  2677. IX6 X7+X6
  2678. SA6 A6 RETURN WORDS REMAINING IN PRU
  2679. BX7 X7-X7
  2680. SA7 A5+ SET NO WORDS LEFT IN PRU
  2681. SA7 A5+B1 CLEAR EOR FLAG FOR NEXT CALL
  2682. RDB5 READW F,BUF,X6 READ DATA
  2683. SA1 WC RETURN WORD COUNT
  2684. BX6 X1
  2685. EQ RDBX RETURN
  2686.  
  2687.  
  2688. RDBA CON 0 WORDS LEFT IN PRU
  2689. RDBB CON 0 EOR FLAG
  2690. SLS SPACE 4,5
  2691. ** SLS - SET LIBRARY STATUS.
  2692.  
  2693.  
  2694. SLS SX7 C.TRES CLEAR RESIDENCY TABLE
  2695. BX6 X6-X6
  2696. SB2 B1 SET FIRST WORD
  2697. SA7 L.TRES
  2698. SB4 -1
  2699. SA6 L.TSCC CLEAR LIST OF SCOPE CONTROL CARDS
  2700. SX7 ERS1
  2701. SA6 L.TFLO CLEAR FIELD LENGTH OVERRIDE TABLE
  2702. SA7 ER SET ERROR RETURN
  2703. SA6 L.TSYN CLEAR TABLE OF PPU SYNONYMS
  2704. SA6 LS SET LIBDECK STATUS (FOUND)
  2705. SA6 AD CLEAR ALTERNATE DEVICE STATUS
  2706. SLS1 SA1 BUF+B2
  2707. SA2 WC
  2708. MX3 1
  2709. SB3 X2
  2710. MX4 -6
  2711. SA5 A1 SAVE DIRECTIVE ADDRESS
  2712. SLS2 LX1 6 UNPACK WORD
  2713. BX6 -X4*X1
  2714. SB4 B4+B1
  2715. LX3 6
  2716. SA6 LBUF+B4
  2717. PL X3,SLS2
  2718. SB2 B2+B1 ADVANCE WORD COUNT
  2719. SA1 A1+B1 NEXT WORD
  2720. ZR X6,SLS4 IF END OF DATA
  2721. LT B2,B3,SLS2 IF NOT END OF BUFFER
  2722. SLS3 SX7 B4 SAVE STRING BUFFER POSITION
  2723. SA7 T2
  2724. RJ WTB WRITE BUFFER
  2725. SA1 WC CHECK WORD COUNT
  2726. SX6 X1-100B
  2727. NZ X6,CPF1 IF EOR
  2728. RJ RDB READ BLOCK
  2729. SA1 T2 RESTORE STRING BUFFER POSITION
  2730. SB2 B0
  2731. SB4 X1
  2732. EQ SLS1
  2733.  
  2734. SLS4 SX6 B2 SAVE (B2)
  2735. SA6 T1
  2736. RJ ERS ENTER RESIDENCY STATUS
  2737. SA1 T1 RESTORE (B2)
  2738. SB2 X1
  2739. SB4 -B1
  2740. SA2 WC
  2741. SB3 X2
  2742. LT B2,B3,SLS1 IF NOT END OF BUFFER
  2743. EQ SLS3
  2744. TITLE RESIDENCY PROCESSING.
  2745. ERS SPACE 4,5
  2746. ** ERS - ENTER RESIDENCY STATUS.
  2747. *
  2748. * ENTRY (LBUF) = DIRECTIVE.
  2749.  
  2750.  
  2751. ERS1 SX0 200 SET RECALL CYCLE TIME
  2752. MESSAGE ERSA DISPLAY ERROR MESSAGE
  2753. MESSAGE A5 DISPLAY DIRECTIVE IN ERROR
  2754. MESSAGE ERSA,2
  2755. ERS2 RECALL PAUSE
  2756. SX0 X0-1
  2757. NZ X0,ERS2 WAIT 5 SECONDS
  2758.  
  2759. ERS PS ENTRY/EXIT
  2760. SB7 ERS SET COMMENT PROCESSOR ADDRESS
  2761. KEYWD CM,RES
  2762. KEYWD AD,RES4
  2763. KEYWD FL,FLO
  2764. KEYWD PPSYN,PPS
  2765. KEYWD PROC,ERS *PROC ACCEPTED BUT NO LONGER REQUIRED
  2766. KEYWD MS,RES1
  2767. KEYWD SC,SCC
  2768. EQ ERS RETURN
  2769.  
  2770. ERSA DATA 10H ERROR IN
  2771. CON 0
  2772. FLO SPACE 4,5
  2773. ** FLO - SET FIELD LENGTH OVERRIDE FOR SPECIFIED RECORDS.
  2774.  
  2775.  
  2776. FLO1 ADDWRD A0,X5+X6 ADD ENTRY TO TABLE
  2777. FLO2 SA2 B6
  2778. SA1 B6+B1 ADVANCE CHARACTER ADDRESS
  2779. SB2 X2-1R CHECK SEPARATOR
  2780. ZR B2,ERS IF END OF DIRECTIVE
  2781. NE B2,B1,ERS IF SEPARATOR NOT *,*
  2782. FLO RJ ARN ASSEMBLE RECORD NAME
  2783. SB2 X1-1R- CHECK SEPARATOR
  2784. SA6 FLOA SAVE RECORD NAME + TYPE
  2785. NZ B2,ERS IF ILLEGAL SEPARATOR
  2786. SA2 M2
  2787. SB7 B0 SET OCTAL CONVERSION
  2788. SA1 A1+B1 SKIP SEPARATOR
  2789. RJ ASN ASSEMBLE FIELD LENGTH
  2790. BX5 X6
  2791. SB6 A1 SAVE CHARACTER ADDRESS
  2792. RJ DXB CONVERT FIELD LENGTH
  2793. NZ X4,ERS IF CONVERSION ERROR
  2794. BX5 X6
  2795. AX6 12
  2796. NZ X6,ERS IF FIELD LENGTH TOO LARGE
  2797. SA1 FLOA
  2798. MX0 42+6
  2799. LX5 6
  2800. LX0 6
  2801. SEARCH TFLO,X1,X0 SEARCH TABLE FOR DUPLICATE ENTRY
  2802. ZR X2,FLO1 IF NO PREVIOUS ENTRY
  2803. BX7 X5+X6 REPLACE ENTRY
  2804. SA7 A2
  2805. EQ FLO2 LOOP
  2806.  
  2807. FLOA CON 0
  2808. RES SPACE 4,5
  2809. ** RES - DEFINE RESIDENCY.
  2810.  
  2811.  
  2812. RES SX0 B1
  2813. LX0 17
  2814. EQ RES2
  2815.  
  2816. RES1 SX0 0 SET MS RESIDENCY
  2817. RES2 RJ ARN ASSEMBLE RECORD NAME
  2818. SX7 A1 SAVE CHARACTER ADDRESS
  2819. SA7 CA
  2820. BX1 X6+X0 ENTER RESIDENCY TABLE
  2821. RJ ERT
  2822. RES3 SA2 CA CHECK SEPARATOR
  2823. SA3 X2
  2824. SA1 X2+B1
  2825. SB2 X3-1R,
  2826. ZR B2,RES2 LOOP IF *,*
  2827. EQ ERS
  2828.  
  2829. RES4 SA2 M2
  2830. RJ ASN ASSEMBLE EST ORDINAL
  2831. BX5 X6
  2832. LX6 6
  2833. SX4 X6-1R0
  2834. NG X4,RES6 IF DEVICE TYPE GIVEN
  2835. SB7 0
  2836. RJ DXB CONVERT EST ORDINAL
  2837. NZ X4,ERS
  2838. SX7 A1+
  2839. LX6 48
  2840. MX0 12
  2841. SA7 CA
  2842. SEARCH TLST,X6,X0
  2843. RES5 ZR X2,ERS IF ILLEGAL ALTERNATE DEVICE
  2844. BX0 X6
  2845. LX0 12+12
  2846. SA6 AD
  2847. EQ RES3
  2848.  
  2849. RES6 LX6 42
  2850. MX0 12
  2851. SX7 A1
  2852. LX0 48
  2853. SA7 CA
  2854. SEARCH TLST,X6,X0
  2855. BX6 -X0*X2
  2856. EQ RES5
  2857. PPS SPACE 4,5
  2858. ** PPS - DEFINE PPU SYNONYMS.
  2859.  
  2860.  
  2861. PPS SA2 M2 ASSEMBLE NAME
  2862. RJ ASN
  2863. SX3 B1
  2864. ERRNZ PPRT-1
  2865. BX0 X6+X3 SET NAME AND TYPE
  2866. SX7 X1-1R/ CHECK NEXT CHARACTER
  2867. NZ X7,ERS IF NOT */*
  2868. SA1 A1+1 SKIP SEPARATOR
  2869. PPS1 SA2 M2 ASSEMBLE SYNONYM
  2870. RJ ASN
  2871. SB6 A1 SAVE SEPARATOR ADDRESS
  2872. BX5 X6
  2873. SB2 X1-1R, CHECK SEPARATOR
  2874. ADDWRD TSYN,X0 ENTER NAME
  2875. ADDWRD A0,X5 ENTER SYNONYM
  2876. NZ B2,ERS IF SEPARATOR NOT *,*
  2877. SA1 B6+1 ADVANCE CHARACTER ADDRESS
  2878. EQ PPS1 LOOP
  2879. SCC SPACE 4,5
  2880. ** SCC - DEFINE RECORDS AS SCOPE CONTROL CARDS.
  2881.  
  2882.  
  2883. SCC RJ ARN ASSEMBLE RECORD NAME
  2884. SX0 A1
  2885. SB2 X1-1R,
  2886. ADDWRD TSCC,X6 ENTER SCOPE RECORD TABLE
  2887. NZ B2,ERS IF SEPARATOR NOT *,*
  2888. SA1 X0+1
  2889. EQ SCC LOOP
  2890. SPACE 4
  2891. KEYWD HERE
  2892. CON 0 TERMINATE TABLE
  2893. TITLE DIRECTIVE PROCESSING SUBROUTINES.
  2894. ARN SPACE 4
  2895. ** CHARACTER SENSE MASKS.
  2896.  
  2897.  
  2898. M1 CON 37777777777765717777B MASK FOR ALL BUT < ,/->
  2899. M2 CON 37777777777740000000B MASK FOR ALPHA/NUMERICS
  2900.  
  2901. CA CON 0 CHARACTER ADDRESS
  2902. ARN SPACE 4,15
  2903. ** ARN - ASSEMBLE RECORD NAME.
  2904. *
  2905. * ENTRY (A1) = ADDRESS OF CHARACTER.
  2906. * (X1) = CHARACTER.
  2907. *
  2908. * EXIT (X6) = NAME AND TYPE.
  2909. *
  2910. * USES A - 1, 2, 3, 6, 7.
  2911. * B - NONE.
  2912. * X - 1, 2, 3, 4, 6, 7.
  2913. *
  2914. * CALLS ASN.
  2915.  
  2916.  
  2917. ARN2 SA3 TY ENTER TYPE
  2918. BX6 X6+X3
  2919.  
  2920. ARN PS ENTRY/EXIT
  2921. SA2 M1 ASSEMBLE NAME
  2922. RJ ASN
  2923. SX7 X1-1R/ CHECK SEPARATOR
  2924. NZ X7,ARN2 IF NOT */*
  2925. SA3 TRCN
  2926. SA1 A1+B1 SKIP SEPARATOR
  2927. MX2 42
  2928. ARN1 ZR X3,/ERR/TYP
  2929. IX7 X3-X6
  2930. BX4 X2*X7
  2931. SA3 A3+B1
  2932. NZ X4,ARN1
  2933. SA2 A2
  2934. SX7 A3-TRCN-1 SET TYPE
  2935. SA7 TY
  2936. RJ ASN ASSEMBLE NAME
  2937. EQ ARN2
  2938. ASN SPACE 4,15
  2939. ** ASN - ASSEMBLE NAME.
  2940. *
  2941. * ENTRY (A1) = ADDRESS OF CHARACTER.
  2942. * (X1) = CHARACTER.
  2943. * (X2) = LEGAL CHARACTER MASK.
  2944. *
  2945. * EXIT (X6) = NAME.
  2946. * (A1) = ADDRESS OF SEPARATOR CHARACTER.
  2947. * (X1) = SEPARATOR CHARACTER.
  2948. *
  2949. * USES X - 1, 6, 7.
  2950. * B - 2, 3, 4.
  2951. * A - 1, 7.
  2952.  
  2953.  
  2954. ASN1 LX6 6 ADVANCE ASSEMBLY
  2955. SB2 B2-B3
  2956. BX6 X6+X1
  2957. SA1 A1+B1 NEXT CHARACTER
  2958. ASN2 SB4 X1 CHECK CHARACTER
  2959. LX7 X2,B4
  2960. NG X7,ASN1 IF NOT SEPARATOR
  2961. LX6 X6,B2 LEFT JUSTIFY ASSEMBLY
  2962. SX7 X6
  2963. ZR X6,/ERR/BKN IF BLANK NAME
  2964. NZ X7,/ERR/TMC IF MORE THAN 7 CHARACTERS
  2965.  
  2966. ASN PS ENTRY/EXIT
  2967. SX7 A1
  2968. SB2 60
  2969. BX6 X6-X6 CLEAR ASSEMBLY
  2970. SB3 6
  2971. SA7 CA SAVE CHARACTER ADDRESS
  2972. EQ ASN2
  2973. CKW SPACE 4,10
  2974. ** CKW - CHECK KEYWORD.
  2975. * CHECK STRING BUFFER IMAGE FOR KEYWORD PROCESSING.
  2976. * LIST 42/ NAME,18/ ADDR
  2977. * NAME KEYWORD
  2978. * ADDR ADDRESS OF PROCESSOR.
  2979. * A ZERO WORD TERMINATES LIST.
  2980. *
  2981. * ENTRY (A0) = ADDRESS OF KEYWORD LIST.
  2982. *T,LIST 42/ NAME, 18/ ADDR
  2983. * (B7) = COMMENT PROCESSOR.
  2984. *
  2985. * EXIT TO PROCESSOR IF KEYWORD FOUND.
  2986.  
  2987.  
  2988. CKW PS ENTRY/EXIT
  2989. SA1 LBUF CHECK FIRST CHARACTER
  2990. SX6 X1-1R*
  2991. SX7 A1 SET CHARACTER ADDRESS
  2992. NZ X6,CKW RETURN IF NOT (*)
  2993. SA1 A1+B1 SKIP (*)
  2994. SA2 M2 SET NORMAL NAME MASK
  2995. SX6 X1-1R/ CHECK FOR COMMENT DIRECTIVE
  2996. SA7 CA
  2997. ZR X6,CKW2 IF COMMENT DIRECTIVE
  2998. RJ ASN ASSEMBLE NAME
  2999. SA2 A0 SET TABLE ADDRESS
  3000. MX0 42
  3001. SB2 -1R
  3002. CKW1 IX4 X2-X6 COMPARE NAMES
  3003. ZR X2,CKW RETURN IF END OF TABLE
  3004. BX3 X0*X4
  3005. SA2 A2+B1 NEXT ENTRY
  3006. NZ X3,CKW1 IF NO MATCH
  3007. SA1 A1+B1 SKIP SEPARATOR
  3008. + SX6 X1+B2 CHECK NEXT CHARACTER
  3009. SA1 A1+B1
  3010. ZR X6,* LOOP IF SPACE
  3011. SA1 A1-B1 SET CHARACTER ADDRESS
  3012. SX6 A1
  3013. SB2 X4 SET PROCESSOR ADDRESS
  3014. SX7 B1 SET TYPE = PP
  3015. ERRNZ PPRT-1
  3016. SA6 CA
  3017. SA7 TY
  3018. JP B2 PROCESS KEYWORD
  3019.  
  3020. * PROCESS COMMENT DIRECTIVE.
  3021.  
  3022. CKW2 JP B7 EXIT TO COMMENT PROCESSOR
  3023. TITLE UTILITY SUBROUTINES.
  3024. ABT SPACE 4,5
  3025. ** ABT - ABORT JOB.
  3026. *
  3027. * ENTRY (X0) = ADDRESS OF ABORT MESSAGE.
  3028. *
  3029. * EXIT JOB ABORTED.
  3030.  
  3031.  
  3032. SFE SA3 X0
  3033. BX7 X3
  3034. SA7 SFEB
  3035. SX0 SFEA
  3036.  
  3037. ABT MESSAGE X0
  3038. + SA3 DL DETERMINE IF THIS IS A DEADSTART LOAD
  3039. NZ X3,* IF DEADSTART LOAD
  3040. SA1 SP CHECK IF *SLL* PRESENT
  3041. ZR X1,ABT1 IF *SLL* NOT PRESENT
  3042. SA1 .DPE DROP *SLL* FOR ERROR CONDITION
  3043. SX2 SL
  3044. BX7 X1
  3045. SA7 X2
  3046. RECALL X2
  3047. ABT1 RJ CMF COMPLETE FILES
  3048. ABORT
  3049.  
  3050. MOE SX0 =C*MEMORY OVERFLOW.*
  3051. EQ ABT
  3052.  
  3053. PLE SX0 =C* PLD.*
  3054. EQ SFE
  3055.  
  3056. RPE SX0 =C* RPL.*
  3057. EQ SFE
  3058.  
  3059. SFEA DATA 20HSYSTEM FILE ERROR IN
  3060. SFEB CON 0,0L.
  3061. BPH SPACE 4,10
  3062. ** BPH - BUILD *PPL* HEADER.
  3063. *
  3064. * ENTRY ((A1)) = *PPL* TABLE HEADER.
  3065. * ((A1)+1) = WORD 1 OF PREFIX TABLE.
  3066. * (X0) = 77777700000000000000B.
  3067. *
  3068. * EXIT ((A1)) = *RPL* HEADER FOR *PPL* RECORD.
  3069. * = 18/ NAME,2/1,16/ LOAD ADDRESS,12/,12/ LENGTH.
  3070. * (X0) = 77777700000000000000B.
  3071. *
  3072. * EXIT TO *RPE* IF NAME IS NOT 3 CHARACTERS.
  3073. *
  3074. * USES X - 1, 2, 6, 7.
  3075. * A - 1, 2, 7.
  3076.  
  3077.  
  3078. BPH SUBR ENTRY/EXIT
  3079. SA1 A1 GET *PPL* HEADER
  3080. MX6 -12
  3081. SA2 A1+B1 GET NAME FROM PREFIX TABLE
  3082. MX7 -32
  3083. BX6 -X6*X1 GET LENGTH
  3084. BX1 -X7*X1 GET LOAD ADDRESS
  3085. BX7 X0*X2 GET NAME
  3086. BX2 -X0*X2
  3087. AX1 16
  3088. AX2 18
  3089. SX1 X1-5+1S16 GET LOAD ADDRESS AND 16-BIT FLAG
  3090. NZ X2,RPE IF NOT 3 CHARACTER NAME
  3091. LX1 24
  3092. BX7 X7+X6 MERGE LENGTH
  3093. BX7 X7+X1 MERGE LOAD ADDRESS
  3094. SA7 A1
  3095. EQ BPHX RETURN
  3096. ERT SPACE 4,10
  3097. ** ERT - ENTER RESIDENCY TABLE.
  3098. *
  3099. * ENTRY (X1) = ENTRY.
  3100. *
  3101. * EXIT (X6) = ENTRY.
  3102. *
  3103. * USES X - 1, 2, 4, 6, 7.
  3104. * B - 2, 3.
  3105. * A - 1, 6, 7.
  3106.  
  3107.  
  3108. ERT1 BX7 X4*X2 COMPARE
  3109. SA1 A1+1
  3110. BX2 X6-X1
  3111. NZ X7,ERT1 LOOP TO HIT
  3112. SB2 A1 CHECK SEARCH
  3113. EQ B2,B3,ERT RETURN IF END OF TABLE
  3114. SA6 A1-B1 REPLACE ENTRY FOUND
  3115. SX7 X3-1 DECREMENT TABLE LENGTH
  3116. SA7 L.TRES
  3117.  
  3118. ERT PS ENTRY/EXIT
  3119. ADDWRD TRES,X1 ENTER RESIDENCY TABLE
  3120. SA1 X2 FIRST ENTRY
  3121. IX7 X2+X3 SET END OF TABLE
  3122. MX4 42+12 SET MASK
  3123. SB3 X7
  3124. LX4 12
  3125. BX2 X6-X1
  3126. EQ ERT1
  3127. TOV SPACE 4,15
  3128. ** TOV - MANAGED TABLE MEMORY OVERFLOW PROCESSOR.
  3129. *
  3130. * ENTRY (B6) = RETURN ADDRESS.
  3131. *
  3132. * EXIT TO *MOE* IF MEMORY NOT AVAILABLE.
  3133. *
  3134. * USES A - 1, 2, 3, 6, 7.
  3135. * B - 2.
  3136. * X - 1, 2, 3, 6, 7.
  3137. *
  3138. * MACROS MEMORY, MOVE, RECALL.
  3139.  
  3140.  
  3141. TOV SA1 F.TEND FETCH END OF MANAGED TABLES
  3142. SX7 X1+MINC
  3143. NG X7,MOE IF INCREASE TOO LARGE
  3144. SA3 TN
  3145. SA7 A1 SET NEW END OF TABLES
  3146. LX7 30 SET UP MEMORY REQUEST
  3147. SA7 TOVA
  3148. MEMORY ,A7,,,NA
  3149. SB2 X3
  3150. RECALL A7 WAIT REQUEST COMPLETE
  3151. SA2 X2 CHECK REQUEST
  3152. IX6 X2-X7
  3153. SX1 B2-NTAB+1
  3154. NG X6,MOE IF MEMORY NOT ASSIGNED
  3155. SX7 MINC
  3156. NZ X1,TOV1 IF TABLE COUNT NOT CHANGED
  3157. SA3 B2+FTAB-1
  3158. RECALL F
  3159. SA2 F+5
  3160. IX6 X3+X7 MOVE LAST TABLE TO END OF FL
  3161. SA6 A3
  3162. SA1 B2+LTAB-1
  3163. IX7 X2+X7 ADJUST LIST ADDRESS
  3164. SA7 A2
  3165. MOVE X1,X3,X6
  3166. TOV1 JP B6 RETURN TO MANAGED TABLE PROCESSOR
  3167.  
  3168. TOVA CON 0 MEMORY REQUEST STATUS WORD
  3169. WOF SPACE 4,15
  3170. ** WOF - WRITE LINE TO OUTPUT.
  3171. *
  3172. * ENTRY (X1) = FWA LINE.
  3173. * (X2) = WORD COUNT.
  3174. * IF (X2) > 0, LINE IS *S* FORMAT.
  3175. * IF (X2) = 0, LINE IS *C* FORMAT.
  3176. *
  3177. * EXIT (LC) ADVANCED.
  3178. * (PN) ADVANCED.
  3179. * (X2) = ADDRESS OF OUTPUT FET.
  3180. *
  3181. * USES X - 1, 2, 3, 4, 6, 7.
  3182. * B - 2, 3, 4, 5, 6, 7.
  3183. * A - 1, 2, 3, 4, 6, 7.
  3184.  
  3185.  
  3186. WOF2 WRITES X2,B6,B7
  3187.  
  3188. WOF CON 0 ENTRY/EXIT (LIST FLAG)
  3189. SA3 LC ADVANCE LINE COUNT
  3190. SX6 X3+B1
  3191. SA6 A3
  3192. SA4 A3+B1 GET PAGE LENGTH
  3193. IX7 X6-X4
  3194. NG X7,WOF1 IF BOTTOM OF PAGE NOT REACHED
  3195. BX6 X1 SAVE REQUEST
  3196. LX7 X2
  3197. SA6 WOFA
  3198. SA7 A6+B1
  3199. SA1 PN ADVANCE PAGE NUMBER
  3200. SX7 X1+B1
  3201. SX6 3 RESET LINE COUNT
  3202. SA6 A3
  3203. SA7 A1
  3204. RJ CDD CONVERT PAGE NUMBER
  3205. MX1 60-12
  3206. LX6 4*6 STORE PAGE NUMBER
  3207. BX6 X1*X6
  3208. SA6 PAGE
  3209. CLOCK TIME
  3210. WRITEW O,(=1H1),1
  3211. SA1 TL
  3212. WRITEW X2,X1,4
  3213. WRITEW X2,TITL,TITLL
  3214. WRITEC O,(=2L )
  3215. WRITEC O,(=2L )
  3216. SA1 WOFA RESTORE REQUEST
  3217. SA2 A1+B1
  3218. WOF1 SB7 X2
  3219. SB6 X1
  3220. SX2 O
  3221. NZ B7,WOF2 IF *S* FORMAT
  3222. WRITEC X2,B6
  3223. EQ WOF RETURN
  3224.  
  3225. WOFA CON 0,0
  3226. WTB SPACE 4,15
  3227. ** WTB - WRITE BLOCK.
  3228. * WRITE BLOCK TO SYSTEM FILE VIA *SLL* BUFFER.
  3229. * *SLL* IS PRESUMED TO BE ACTIVE.
  3230. *
  3231. * ENTRY (WC) = WORD COUNT OF BLOCK.
  3232. * (BUF - BUF+77B) = BLOCK.
  3233. *
  3234. * EXIT (SN) ADVANCED BY 1.
  3235. *
  3236. * USES X - 1, 2, 3, 4, 6, 7.
  3237. * B - NONE.
  3238. * A - 1, 2, 3, 4, 6, 7.
  3239.  
  3240.  
  3241. WTB PS ENTRY/EXIT
  3242. SA1 WC WRITE BLOCK
  3243. WRITEW S,A1,X1+B1
  3244. SA1 SN ADVANCE SECTOR NUMBER
  3245. SA2 S+6 ADVANCE SECTOR COUNT
  3246. SX3 B1
  3247. IX6 X1+X3
  3248. IX7 X2+X3
  3249. SA6 A1
  3250. SA7 A2
  3251. EQ WTB RETURN
  3252. SPACE 4,5
  3253. ** COMMON DECKS.
  3254.  
  3255.  
  3256. *CALL COMCCIO
  3257. *CALL COMCCDD
  3258. *CALL COMCCVL
  3259. *CALL COMCCPT
  3260. *CALL COMCMTP
  3261. *CALL COMCMVE
  3262. *CALL COMCRDS
  3263. *CALL COMCRDW
  3264. *CALL COMCSFN
  3265. *CALL COMCSRT
  3266. *CALL COMCSST
  3267. *CALL COMCSTF
  3268. *CALL COMCSYS
  3269. *CALL COMCWTC
  3270. *CALL COMCWTS
  3271. *CALL COMCWTW
  3272. *CALL COMCDXB
  3273. *CALL COMCLFM
  3274. TITLE DIRECTIVE CARD PROCESSING.
  3275. QUAL RDC
  3276.  
  3277. I BSS 0
  3278. INPUT FILEC IBUF,IBUFL,(FET=8)
  3279.  
  3280. LC CON 0 LIBRARY CHANGE FLAG
  3281. ZO CON 0 NON-ZERO IF *Z* OPTION SELECTED
  3282. RDC SPACE 4,5
  3283. ** RDC - READ DIRECTIVE CARDS.
  3284.  
  3285.  
  3286. RDC2 SA1 LC
  3287. ZR X1,RDC3 IF NO LIBRARY CHANGES
  3288. WRITER S DUMP SCRATCH FILE
  3289. SA2 S ADD FILE TO FILE TABLE
  3290. MX3 42
  3291. ADDWRD TFIL,X3*X2
  3292. SA1 SC SET SYSTEM CHANGE FLAG
  3293. SX6 X1+B1
  3294. SA6 A1
  3295. RDC3 RECALL S
  3296. SA1 X2+B1 SET IN = OUT = FIRST
  3297. SX6 X1
  3298. SA6 A1+B1
  3299. SA6 A6+B1
  3300.  
  3301. RDC PS ENTRY/EXIT
  3302. SX7 0
  3303. SA1 I
  3304. SX6 RDC1 SET ERROR RETURN
  3305. SA7 EC CLEAR ERROR COUNT
  3306. SA2 ZO
  3307. SA6 ER SET ERROR RETURN
  3308. NZ X2,RDC1 IF *Z* OPTION SELECTED
  3309. ZR X1,RDC3 IF NO INPUT FILE
  3310. SX2 I CHECK FOR TERMINAL INPUT
  3311. RJ STF
  3312. ZR X6,RDC1.1 IF INPUT ASSIGNED TO TERMINAL
  3313. READ I
  3314. RDC1 READS I,LBUF,LBUFL READ DIRECTIVE CARD
  3315. NZ X1,RDC2 IF EOR
  3316.  
  3317. * PROCESS KEYWORDS.
  3318.  
  3319.  
  3320. SB7 COM SET COMMENT PROCESSOR ADDRESS
  3321. KEYWD AD,ADR
  3322. KEYWD CM,CMR
  3323. KEYWD D,DELETE
  3324. KEYWD DELETE
  3325. KEYWD FILE
  3326. KEYWD FL,FLO
  3327. KEYWD IGNORE
  3328. KEYWD MS,MSR
  3329. KEYWD PPSYN
  3330. KEYWD PROC,LDC *PROC ACCEPTED BUT NO LONGER REQUIRED
  3331. KEYWD SC,SCC
  3332.  
  3333. EQ /ERR/ILD ILLEGAL DIRECTIVE
  3334.  
  3335. RDC1.1 SX0 =C/ TERMINAL INPUT NOT VALID. USE *I* OR *Z* OPTION./
  3336. EQ ABT ABORT
  3337. AD SPACE 4,5
  3338. *** *AD E,TY1/REC1,TY2/REC2,...,TYN/RECN
  3339. *
  3340. * DEFINE MASS STORAGE RESIDENCY ON ALTERNATE EQUIPMENT
  3341. * *E* FOR RECORDS *TYN/RECN*
  3342.  
  3343.  
  3344. ADR SA2 M2
  3345. RJ ASN
  3346. SB2 X1-1R, CHECK SEPARATOR
  3347. SA1 A1+1
  3348. NZ B2,/ERR/ISP IF NOT COMMA
  3349. SA2 ADRA MASK FOR PERMISSIBLE RECORD TYPES
  3350. JP CMR1
  3351.  
  3352.  
  3353. * MASK FOR PERMISSIBLE *AD RECORD TYPES.
  3354.  
  3355. ADRA CONRT (PPRT,RLRT,OVRT,ABRT,PLRT),60
  3356. CM SPACE 4,5
  3357. *** *CM TY1/REC1,TY2/REC2,...,TYN/RECN
  3358. *
  3359. * DEFINE CENTRAL MEMORY RESIDENCY FOR RECORDS *TYN/RECN*.
  3360.  
  3361.  
  3362. CMR SA2 CMRB MASK FOR PERMISSIBLE RECORD TYPES
  3363.  
  3364. CMR1 BX7 X2
  3365. SA7 CMRA
  3366. CMR2 RJ ARN ASSEMBLE RECORD NAME
  3367. SA2 CMRA CHECK TYPE
  3368. SB2 X6
  3369. LX3 X2,B2
  3370. PL X3,/ERR/ICM IF NOT LEGAL CM/AD RESIDENCE
  3371. SB2 X1-1R CHECK SEPARATOR
  3372. ZR B2,ALC IF END OF DIRECTIVE
  3373. SA1 A1+1 SKIP SEPARATOR
  3374. EQ B2,B1,CMR2 IF *,*
  3375. EQ /ERR/ISP ILLEGAL SEPARATOR
  3376.  
  3377.  
  3378. CMRA CON 0
  3379. * CONRT (PPRT,RLRT,OVRT,ABRT,PLRT),60 IF *AD DIRECTIVE
  3380. * CONRT (PPRT,OVRT,ABRT,PLRT),60 IF *CM DIRECTIVE
  3381.  
  3382. * MASK FOR PERMISSIBLE *CM RECORD TYPES.
  3383.  
  3384. CMRB CONRT (PPRT,OVRT,ABRT,PLRT),60
  3385. COM SPACE 4,10
  3386. *** */ - COMMENT.
  3387. *
  3388. * INSERT COMMENTS IN LIBDECK AND ON LISTING.
  3389.  
  3390.  
  3391. COM BSS 0
  3392. EQ ALC LIST DIRECTIVE
  3393. MS SPACE 4,5
  3394. *** *MS TY1/REC1,TY2/REC2,...,TYN/RECN
  3395. *
  3396. * DEFINE MASS STORAGE RESIDENCY FOR RECORDS *TYN/RECN*.
  3397.  
  3398.  
  3399. MSR RJ ARN ASSEMBLE RECORD NAME
  3400. SB2 X1-1R CHECK SEPARATOR
  3401. ZR B2,ALC ADD LIBRARY CHANGE IF * *
  3402. SA1 A1+1 SKIP SEPARATOR
  3403. EQ B2,B1,MSR IF *,*
  3404. EQ /ERR/ISP
  3405. DELETE SPACE 4,5
  3406. *** *DELETE TY1/REC1,TY2/REC2,...,TYN/RECN
  3407. * *D TY1/REC1,TY2/REC2,...,TYN/RECN
  3408. *
  3409. * DELETE RECORDS *TYN/RECN* FROM SYSTEM LIBRARY.
  3410.  
  3411.  
  3412. DELETE RJ ARN ASSEMBLE RECORD NAME
  3413. SB6 A1 SAVE SEPARATOR ADDRESS
  3414. SB2 X1-1R
  3415. SEARCH TRCD,X6 SEARCH FOR RECORD
  3416. ZR X2,/ERR/RNF IF NOT FOUND
  3417. SX1 X2-ULRT CHECK TYPE = *ULIB*
  3418. ZR X1,DEL1 IF *ULIB*
  3419. ADDWRD TDLT,X2 ENTER DELETE TABLE
  3420. SA1 SC SET SYSTEM CHANGE FLAG
  3421. SX6 X1+B1
  3422. SA6 A1
  3423. DEL1 ZR B2,LDC IF END OF DIRECTIVE
  3424. SA1 B6+1 ADVANCE CHARACTER ADDRESS
  3425. EQ B2,B1,DELETE LOOP IF *,*
  3426. EQ /ERR/ISP
  3427. FILE SPACE 4,5
  3428. *** *FILE LFN
  3429. * *FILE LFN,NR
  3430. *
  3431. * DEFINE FILE *LFN* AS A SYSTEM CHANGE FILE. IF *NR* IS
  3432. * NOT PRESENT, *LFN* WILL BE REWOUND BEFORE PROCESSING.
  3433.  
  3434.  
  3435. FILE SA2 M2 ASSEMBLE NAME
  3436. RJ ASN
  3437. SB2 X1-1R CHECK SEPARATOR
  3438. ZR B2,FIL1 IF SPACE
  3439. NE B2,B1,/ERR/NME IF NOT *,*
  3440. SA1 A1+B1 SKIP SEPARATOR
  3441. BX5 X6
  3442. RJ ASN
  3443. SB2 X1-1R
  3444. NZ B2,/ERR/IFS IF NOT SPACE
  3445. LX6 18
  3446. SX2 B1
  3447. SX7 X6-2LNR
  3448. NZ X7,/ERR/IFS IF NOT *NR*
  3449. BX6 X5+X2
  3450. FIL1 ADDWRD TFIL,X6 ENTER FILE NAME
  3451. SA1 SC SET SYSTEM CHANGE FLAG
  3452. SX6 X1+B1
  3453. SA6 A1
  3454. EQ LDC LIST DIRECTIVE
  3455. FL SPACE 4,5
  3456. *** *FL TY1/REC1-FL1,TY2/REC2-FL2,...,TYN/RECN-FLN
  3457. *
  3458. * SET FIELD LENGTH OVERRIDE *FLN* FOR RECORD *TYN/RECN*.
  3459.  
  3460.  
  3461. FLO RJ ARN ASSEMBLE RECORD NAME
  3462. SB2 X1-1R- CHECK SEPARATOR
  3463. SB7 B0 SET OCTAL CONVERSION
  3464. SA1 A1+B1 SKIP SEPARATOR
  3465. NZ B2,/ERR/ISP IF ILLEGAL SEPARATOR
  3466. SA2 M2
  3467. RJ ASN ASSEMBLE FIELD LENGTH
  3468. SB6 A1 SAVE CHARACTER ADDRESS
  3469. BX5 X6 CONVERT FIELD LENGTH
  3470. RJ DXB
  3471. NZ X4,/ERR/ILD IF CONVERSION ERROR
  3472. AX6 12
  3473. SA2 B6
  3474. NZ X6,/ERR/ILD IF FIELD LENGTH TOO LARGE
  3475. SB2 X2-1R CHECK SEPARATOR
  3476. ZR B2,ALC IF END OF DIRECTIVE
  3477. SA1 B6+1 SKIP SEPARATOR
  3478. EQ B2,B1,FLO LOOP IF *,*
  3479. JP /ERR/ISP ILLEGAL SEPARATOR
  3480. IGNORE SPACE 4,5
  3481. *** *IGNORE TY1/REC1,TY2/REC2,...,TYN/RECN
  3482. *
  3483. * IGNORE RECORDS *TYN/RECN* ON CURRENT CHANGE FILE.
  3484.  
  3485.  
  3486. IGNORE SA2 L.TFIL SET FILE INDEX
  3487. SX0 X2-1
  3488. LX0 12
  3489. IGN1 RJ ARN ASSEMBLE RECORD NAME
  3490. SB6 A1 SAVE CHARACTER ADDRESS
  3491. SB2 X1-1R
  3492. ADDWRD TINR,X6+X0 ENTER RECORD IGNORE TABLE
  3493. ZR B2,LDC IF END OF DIRECTIVE
  3494. SA1 B6+1
  3495. EQ B2,B1,IGN1 IF *,*
  3496. EQ /ERR/ISP ILLEGAL SEPARATOR
  3497. PPSYN SPACE 4,5
  3498. *** *PPSYN NAM/NAM1,NAM2,...,NAMN
  3499. *
  3500. * ADD ENTRIES TO LIBRARY TO PROVIDE SYNONYMS *NAMN* FOR
  3501. * PPU PROGRAM *NAM*.
  3502.  
  3503.  
  3504. PPSYN SA2 M2 ASSEMBLE NAME
  3505. RJ ASN
  3506. SB2 X1-1R/ CHECK SEPARATOR
  3507. SA1 A1+1 SKIP SEPARATOR
  3508. NZ B2,/ERR/ISP IF NOT */*
  3509. MX2 -42 CHECK NAME
  3510. BX7 -X2*X6
  3511. NZ X7,/ERR/IPN
  3512. LX6 6
  3513. SX3 X6-1R0
  3514. PL X3,/ERR/IPN IF NUMERIC
  3515. PPS1 SA2 M2 ASSEMBLE SYNONYM
  3516. RJ ASN
  3517. MX2 -42 CHECK NAME
  3518. BX7 -X2*X6
  3519. NZ X7,/ERR/IPN
  3520. LX6 6
  3521. SX3 X6-1R0
  3522. PL X3,/ERR/IPN IF NUMERIC
  3523. SB2 X1-1R CHECK SEPARATOR
  3524. ZR B2,ALC IF * *
  3525. SA1 A1+1
  3526. EQ B2,B1,PPS1 LOOP IF *,*
  3527. EQ /ERR/ISP
  3528. SC SPACE 4,5
  3529. *** *SC TY1/REC1,TY2/REC2,...,TYN/RECN
  3530. *
  3531. * DEFINE RECORDS *TYN/RECN* AS SCOPE CONTROL CARDS.
  3532.  
  3533.  
  3534. SCC RJ ARN ASSEMBLE RECORD NAME
  3535. SA2 SCCA
  3536. SB2 X6 SET TYPE
  3537. LX3 B2,X2
  3538. PL X3,/ERR/ISR IF NOT *OVL*/*ABS*
  3539. SB2 X1-1R
  3540. ZR B2,ALC ADD LIBRARY CHANGE IF * *
  3541. SA1 A1+1
  3542. EQ B2,B1,SCC IF *,*
  3543. JP /ERR/ISP ILLEGAL SEPARATOR
  3544.  
  3545.  
  3546. SCCA CONRT (RLRT,OVRT,ABRT),60 MASK FOR REL, OVL OR ABS
  3547. TITLE DIRECTIVE PROCESSING ROUTINES.
  3548. ALC SPACE 4,5
  3549. ** ALC - ADD LIBRARY CONTROL.
  3550. *
  3551. * EXIT (LC) SET.
  3552.  
  3553.  
  3554. ALC WRITES S,LBUF,LBUFL WRITE CARD TO SCRATCH FILE
  3555. SX6 1 SET LIBRARY CONTROL FLAG
  3556. SA6 LC
  3557. EQ LDC LIST DIRECTIVE
  3558. ERR SPACE 4,5
  3559. ** ERROR PROCESSOR.
  3560.  
  3561.  
  3562. QUAL ERR
  3563.  
  3564. BKN SX0 =C*BLANK NAME FIELD.*
  3565. EQ /RDC/LDC1
  3566.  
  3567. ICM SX0 =C*ILLEGAL CM/AD RESIDENCE.*
  3568. EQ /RDC/LDC1
  3569.  
  3570. IFS SX0 =C*ILLEGAL FILE SPECIFICATION.*
  3571. EQ /RDC/LDC1
  3572.  
  3573. ILD SX0 =C*ILLEGAL DIRECTIVE.*
  3574. EQ /RDC/LDC1
  3575.  
  3576. IPN SX0 =C*ILLEGAL PPU PROGRAM NAME.*
  3577. EQ /RDC/LDC1
  3578.  
  3579. ISP SX0 =C*ILLEGAL SEPARATOR.*
  3580. SX6 A1-1
  3581. SA6 CA
  3582. EQ /RDC/LDC1
  3583.  
  3584. ISR SX0 =C*ILLEGAL RECORD, MUST BE REL, OVL OR ABS.*
  3585. EQ /RDC/LDC1
  3586.  
  3587. NME SX0 =C*ILLEGAL CHARACTER IN NAME.*
  3588. EQ /RDC/LDC1 LIST ILLEGAL DIRECTIVE
  3589.  
  3590. RNF SX0 =C*RECORD NOT FOUND.*
  3591. EQ /RDC/LDC1
  3592.  
  3593. TMC SX0 =C*TOO MANY CHARACTERS IN NAME FIELD.*
  3594. EQ /RDC/LDC1
  3595.  
  3596. TYP SX0 =C*ILLEGAL RECORD TYPE.*
  3597. EQ /RDC/LDC1
  3598.  
  3599. QUAL *
  3600. LDC SPACE 4,5
  3601. ** LDC - LIST DIRECTIVE CARD.
  3602. *
  3603. * ENTRY (X0) = ADDRESS OF ERROR MESSAGE.
  3604.  
  3605.  
  3606. LDC SX0 0
  3607. LDC1 ZR X0,LDC2 IF NO ERROR MESSAGE
  3608. SA1 =10H *ERROR*
  3609. MX2 -6 ENTER ERROR CODE
  3610. SB2 -10
  3611. LX1 6
  3612. + BX6 -X2*X1
  3613. LX1 6
  3614. SA6 LBUF+B2
  3615. SB2 B2+B1
  3616. NG B2,*-1
  3617. SA1 O CHECK OUTPUT FILE
  3618. NZ X1,LDC2 IF DEFINED
  3619. SA2 =0LOUTPUT SET FILE NAME
  3620. SX3 15B
  3621. BX6 X2+X3
  3622. SX7 99999 FORCE EJECT
  3623. SA6 A1
  3624. SA7 //LC
  3625. LDC2 PRINT LBUF-10,LBUFL+10
  3626. ZR X0,RDC1 IF NO ERROR MESSAGE
  3627. SX7 1R CLEAR LBUFFER
  3628. SB2 LBUFL+10
  3629. SA7 LBUF-10
  3630. + SA7 A7+B1
  3631. SB2 B2-B1
  3632. NE B2,B1,*
  3633. SA1 CA ENTER POINTER TO ERROR
  3634. SX6 1R*
  3635. SA6 X1
  3636. WRITES O,LBUF-10,LBUFL+10
  3637. WRITEW O,(=10H ****** ),1
  3638. WRITEC O,X0
  3639. SA1 //LC ADVANCE LINE COUNT
  3640. SA2 EC ADVANCE ERROR COUNT
  3641. SX6 X1+2
  3642. SA3 ER READ ERROR RETURN
  3643. SX7 X2+B1
  3644. SA6 A1
  3645. SB2 X3
  3646. SA7 A2
  3647. JP B2
  3648. SPACE 4
  3649. KEYWD HERE
  3650. CON 0 TERMINATE TABLE
  3651. TITLE DATA AND LBUFFERS.
  3652. QUAL
  3653. TRCN SPACE 4,10
  3654. ** TRCN - TABLE OF RECORD NAMES.
  3655. * ENTRY = 1 WORD.
  3656. * INDEXED BY RECORD TYPE CODE.
  3657. *
  3658. *T 42/ TYPE,18/
  3659. * TYPE RECORD TYPE NAME
  3660.  
  3661.  
  3662. TRCN BSS 0
  3663. LOC 0
  3664.  
  3665. .E ECHO ,RT=("RTMIC")
  3666. .A IFC NE,/RT//
  3667. DATA L/RT/
  3668. .A ELSE
  3669. DATA -1
  3670. .A ENDIF
  3671. .E ENDD
  3672.  
  3673. LOC *O
  3674. CON 0 TABLE TERMINATOR
  3675. PLR SPACE 4,10
  3676. ** PLR - PROCESS LIBDECK RECORD.
  3677. *
  3678. * EXIT LIBDECK RECORD COPIED TO SCRATCH FILE *SCR*.
  3679.  
  3680.  
  3681. PLR READS F,LBUF,LBUFL READ DIRECTIVE CARD
  3682. NZ X1,SYE IF EOR/EOF
  3683. RJ ERS ENTER RESIDENCY STATUS
  3684. WRITES S,LBUF,LBUFL COPY DIRECTIVE TO SCRATCH FILE
  3685. EQ PLR LOOP
  3686. TITL SPACE 4,5
  3687. * TITLE LINE.
  3688.  
  3689.  
  3690. TITL DATA 20H
  3691. DATA 20HSYSEDIT - VER 1.
  3692. DATE DATA 1H
  3693. TIME DATA 1H
  3694. DATA 4APAGE
  3695. PAGE DATA 1H
  3696. TITLL EQU *-TITL
  3697. BUFFERS SPACE 4,5
  3698. * BUFFERS.
  3699.  
  3700.  
  3701. USE //
  3702. SEG
  3703. WC CON 0 SECTOR WORD COUNT
  3704. BUF BSS 100B SECTOR BUFFER
  3705. BUFL EQU *-BUF
  3706.  
  3707. DUP 10,1 LEADING SPACES FOR LIST
  3708. CON 1R
  3709. LBUF EQU *
  3710. IBUF EQU LBUF+LBUFL+1
  3711. OBUF EQU IBUF+IBUFL
  3712. FBUF EQU OBUF+OBUFL
  3713. SBUF EQU FBUF+FBUFL
  3714. MEML EQU SBUF+SBUFL
  3715. TITLE PRESET ROUTINES.
  3716. PRS SPACE 4,5
  3717. ** PRS - PRESET PROGRAM.
  3718.  
  3719.  
  3720. ORG OBUF
  3721. SYSEDIT SX6 A0-10B SET END OF MANAGED TABLES
  3722. SA6 F.TEND
  3723. SB1 1
  3724. DATE DATE SET DATE
  3725. GETPP BUF,LL,BUF GET PAGE SIZE PARAMETERS
  3726. WRITEC O,BUF WRITE PRINT DENSITY FORMAT EFFECTOR
  3727. SA1 ACTR CHECK ARGUMENT COUNT
  3728. SB4 X1+
  3729. ZR X1,PRS1 IF NO ARGUMENTS
  3730. SA4 ARGR FIRST ARGUMENT
  3731. SB5 PRSA
  3732. RJ ARG PROCESS ARGUMENTS
  3733. PRS1 NZ X1,PRS7 IF ARGUMENT ERROR
  3734. SYSTEM RSB,R,PRSJ
  3735. SA1 PRSK
  3736. LX1 59-30
  3737. NG X1,PRS1.1 IF *PROBE* DISABLED
  3738. SX7 3 SET CHECKPOINT FLAG
  3739. SA7 CF
  3740. PRS1.1 SA3 PRSB
  3741. BX6 X3 SET POINTER TO OUTPUT FET
  3742. MX7 0
  3743. SA6 B1+B1
  3744. SA7 A6+B1
  3745. SA7 LS CLEAR LIBDECK NOT FOUND FLAG
  3746. SA1 CCDR-1 SPACE FILL CONTROL STATEMENT
  3747. SB7 4
  3748. PRS2 SA1 A1+B1
  3749. SB7 B7-B1
  3750. RJ SFN
  3751. SA6 A1
  3752. NZ B7,PRS2
  3753. SA1 /RDC/ZO CHECK *Z* OPTION
  3754. ZR X1,PRS3 IF *Z* NOT SELECTED
  3755. SX2 /RDC/I INPUT FET ADDRESS
  3756. RJ ZAP PROCESS *Z* OPTION
  3757. PRS3 SA1 PRSD CHECK BINARY FILE NAME
  3758. ZR X1,PRS4 IF NO BINARY FILE
  3759. MX0 42
  3760. ADDWRD TFIL,X0*X1 ENTER BINARY FILE
  3761. SX6 B1+ SET SYSTEM CHANGE FLAG
  3762. SA6 SC
  3763. PRS4 SA5 PRSE
  3764. ZR X5,PRS5 IF NO RESTORE OPTION
  3765. SX6 B1 SET SYSTEM CHANGE FLAG
  3766. SA6 SC
  3767. SB7 B1
  3768. RJ DXB
  3769. NZ X4,PRS7 IF ASSEMBLY ERROR
  3770. SX5 X6+B1
  3771. PRS5 SA1 O CHECK OUTPUT FILE
  3772. AX1 18
  3773. BX6 X6-X6
  3774. NZ X1,PRS6 IF OUTPUT FILE SPECIFIED
  3775. SA6 O
  3776. PRS6 RJ ISF INITIALIZE SYSTEM FILE
  3777. SX2 S
  3778. SA3 PRSG SET SCRATCH FILE NAME
  3779. BX7 X3
  3780. SA7 X2
  3781. RETURN X2,R
  3782. SA4 LN SEARCH FOR LIBDECK
  3783. SEARCH TRCD,X4
  3784. ZR X2,PRS8 IF LIBDECK NOT FOUND
  3785. SA1 A2+B1 SET RANDOM INDEX
  3786. BX6 X1
  3787. SA6 F+6
  3788. READ F
  3789. EQ PLR PROCESS LIBDECK
  3790.  
  3791. PRS7 SX0 =C*SYSEDIT ARGUMENT ERROR.*
  3792. EQ ABT
  3793.  
  3794. PRS8 WRITEW S,A4,B1 CREATE LIBDECK
  3795. JP SYE
  3796.  
  3797. PRSA BSS 0
  3798. I ARG (/RDC/I),(/RDC/I)
  3799. L ARG PRSC,O
  3800. B ARG PRSD,PRSD
  3801. R ARG PRSF,PRSE
  3802. C ARG PRSH,CF
  3803. Z ARG -*,(/RDC/ZO)
  3804. NA ARG -NZ,PRSI
  3805. CON 0
  3806.  
  3807. PRSB CON 0LOUTPUT+O
  3808. PRSC CON 0LOUTPUT+15B
  3809. PRSD CON 0LLGO
  3810. PRSE CON 0
  3811. PRSF CON 0L0
  3812. PRSG CON 0LSCR+3
  3813. PRSH CON 3
  3814. PRSI CON 0
  3815. PRSJ VFD 12/0,12/1,18/SSTL,18/PRSK
  3816. PRSK CON -1
  3817.  
  3818. NZ CON 1 NON-ZERO WORD FOR ARG. DEFAULT
  3819. ISF SPACE 4,5
  3820. ** ISF - INITIALIZE SYSTEM FILE.
  3821. *
  3822. * ENTRY (X5) = RESTORE NUMBER.
  3823.  
  3824.  
  3825. ISF6 ALLOC TLST,31 ALLOCATE SPACE FOR ASR DEVICES
  3826. SA1 F.TLST
  3827. SA2 .EAD
  3828. LX1 12
  3829. BX7 X2+X1
  3830. SA7 SL
  3831. RECALL A7
  3832. SA1 ISFB PUT DSD TEXT OVERLAY IN BEGINNING OF RPL
  3833. ADDWRD TRES,X1
  3834. SA1 LN
  3835. SA3 DL
  3836. BX7 X1 SET LIBDECK NAME IN ERROR MESSAGE
  3837. SA7 ERSA+1
  3838. SA7 SYEC+2
  3839. NZ X3,SYE1 IF DEAD START LOAD
  3840.  
  3841. ISF PS ENTRY/EXIT
  3842. RETURN F,R RETURN *SYSTEM*
  3843. SA3 S
  3844. BX6 X5 SET RESTORE NUMBER
  3845. SX2 A3
  3846. SA6 T2
  3847. RETURN X2,R RETURN *PPULIB*
  3848. SA1 S+9
  3849. SX6 3
  3850. BX7 X1+X6
  3851. SA7 A3 RETURN *ALTSYS*
  3852. RETURN X2,R
  3853. BX7 X3 RESTORE FET
  3854. SA7 A3
  3855. SA1 PRSI
  3856. SYSTEM SLL,,SL,X1
  3857. RECALL SL
  3858. SX7 B1+ SET *SLL* PRESENT FLAG
  3859. SA7 SP
  3860. SKIPEI S
  3861. SKIPEI F,R
  3862. RECALL S
  3863. SA1 F+6 SET SYSTEM FILE EOI
  3864. SA2 S+6 SET PPU LIBRARY EOI
  3865. BX6 X1
  3866. AX2 30
  3867. BX7 X2
  3868. AX6 30
  3869. SA6 SN
  3870. SA7 PE
  3871. SKIPB F,2
  3872. READ F
  3873. ISF1 READW F,T1,1 READ FIRST WORD
  3874. SA2 T1 CHECK FIRST WORD
  3875. NZ X1,ISF5 IF EOR/EOF
  3876. LX2 18
  3877. SX6 X2-770000B
  3878. LX2 6
  3879. SB2 X2-16B CHECK WORD COUNT
  3880. NZ X6,ISF5 IF NOT 7700 TABLE
  3881. NZ B2,ISF5 IF WRONG WORD COUNT
  3882. READW F,BUF,17B READ 7700 TABLE
  3883. SA5 BUF+16B CHECK FIRST WORD
  3884. SX1 X5
  3885. LX5 18
  3886. SX6 X5-700000B
  3887. NZ X6,ISF5 IF NOT 7000 TABLE
  3888. ALLOC TRCD,X1 ALLOCATE FOR TABLE
  3889. READW F,X2,X3
  3890. SA1 BUF SET DIRECTORY NAME
  3891. SA2 F.TRCD SET SEARCH PARAMETERS
  3892. BX7 X1
  3893. SA3 L.TRCD
  3894. SB2 B1+B1
  3895. SA5 T2 SET RESTORE COUNT
  3896. SA7 WDRA+1
  3897. BX6 X6-X6
  3898. SA1 X2 FIRST WORD
  3899. SB3 X3
  3900. SA3 =C*(00)*
  3901. ISF2 NZ X1,ISF2.1 IF NOT ZERO LENGTH RECORD ENTRY
  3902. BX7 X3
  3903. SA7 A1 CHANGE RECORD NAME
  3904. ISF2.1 SX7 X1-ODRT CHECK RECORD TYPE
  3905. SB3 B3-B2
  3906. SA1 A1+B2
  3907. NZ X7,ISF3 IF NOT OPLD
  3908. SX6 X6+B1 COUNT OPLD
  3909. ZR X5,ISF3 IF NO RESTORE REQUESTED
  3910. SX5 X5-1 COUNT CHANGE
  3911. ZR X5,ISF4 IF FOUND
  3912. ISF3 NZ B3,ISF2 LOOP TO END OF TABLE
  3913. SA6 CN SET CHANGE NUMBER
  3914. ZR X5,ISF6
  3915. SX0 =C*REQUESTED RESTORATION NOT FOUND.*
  3916. EQ ABT
  3917.  
  3918. ISF4 SA4 A1-B1 SET RANDOM ADDRESS
  3919. MX7 0 CLEAR RESTORE COUNT
  3920. SA7 A5
  3921. SA7 L.TRCD CLEAR RECORD TABLE
  3922. RECALL F
  3923. BX6 X4
  3924. SA6 F+6
  3925. READ F BEGIN READ
  3926. EQ ISF1
  3927.  
  3928. ISF5 SX0 =C*SYSTEM FILE FORMAT ERROR.*
  3929. EQ ABT
  3930.  
  3931. ISFA CON 0
  3932. ISFB VFD 42/0L9TA,6/40B,12/1
  3933. SPACE 4
  3934. ** COMMON DECKS.
  3935.  
  3936.  
  3937. QUAL$ EQU 1 PREVENT QUALIFICATION
  3938. *CALL COMCARG
  3939. *CALL COMCCPM
  3940. *CALL COMCUSB
  3941. *CALL COMCZAP
  3942. DSL SPACE 4,5
  3943. ** DSL - DEAD START LOAD.
  3944.  
  3945.  
  3946. DSL1 SX6 A0-10B SET FIELD LENGTH
  3947. SA6 F.TEND
  3948. MX6 0 CLEAR OUTPUT FET
  3949. SA6 O
  3950. SA1 DSLB ENTER TAPE FILE
  3951. ADDWRD TFIL,X1
  3952. SX7 SL SET *SLL* CONTROL WORD ADDRESS
  3953. SA6 F SET FILE NAME IN FET
  3954. SX6 F SET FET ADDRESS
  3955. SA6 B1+B1
  3956. SA7 A6+B1
  3957. SA5 .DS1 CHANGE MODE INSTRUCTION
  3958. SA2 DSLC CHANGE MESSAGE
  3959. MX3 42
  3960. BX6 X3*X5
  3961. LX7 X2
  3962. SA6 A5
  3963. SA7 CPFA
  3964. RECALL SL
  3965. SX6 1 SET DEAD START LOAD FLAG
  3966. SA6 DL
  3967. SA6 SC SET SYSTEM CHANGE
  3968. ZR B3,ISF6 IF TAPE DEADSTART
  3969. SA3 DSLD
  3970. BX6 X3 MODIFY INSTRUCTIONS FOR DISK DEADSTART
  3971. SA6 A5
  3972. READCW F,17B
  3973. EQ ISF6
  3974.  
  3975. DSLA SA5 RDBA
  3976. EQ RDB4 (DEADSTART LOAD)
  3977.  
  3978. DSLB CON 0LSDF+3
  3979.  
  3980. DSLC CON 10H LOADING
  3981.  
  3982. DSLD EQ CCF2 (DISK DEADSTART)
  3983.  
  3984. RFL= EQU MEML+11000B
  3985.  
  3986. END
cdc/nos2.source/opl871/sysedit.txt ยท Last modified: 2023/08/05 17:24 by Site Administrator