Table of Contents

CPUMLD

Table Of Contents

  • [00009] CPUMLD - CPUMTR LOADER.
  • [00011] CPUMTR LOADER.
  • [00069] BAST - BLOCK ASSOCIATION TABLE MACRO.
  • [00092] INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  • [00401] TVFD - DEFINE A RELOCATABLE *VFD*.
  • [00552] LTPT - LOADER TABLE PROCESSOR TABLE.
  • [00584] GLOBAL STORAGE.
  • [00604] LOADER TABLE PROCESSORS.
  • [00606] ABP - ADVANCE BUFFER POINTER.
  • [00631] ENT - PROCESS ENTR TABLE.
  • [00655] FIL - PROCESS FILL TABLE.
  • [00725] PID - PROCESS PIDL TABLE.
  • [00875] TXT - PROCESS TEXT TABLE.
  • [00935] TXTA - TABLE OF COMPLEMENT RELOCATION ADDRESSES.
  • [00992] TXTB - TABLE OF ADDRESS MASKS.
  • [01022] VFD - PROCESS XFILL (VFD) TABLE.
  • [01070] XFR - PROCESS TRANSFER TABLE.
  • [01077] SUBROUTINES.
  • [01079] ERR - PROCESS LOADER TABLE ERROR.
  • [01122] ROW - READ ONE WORD FROM RELOCATABLE BUFFER.
  • [01153] RRB - READ RELOCATABLE BLOCK.
  • [01199] RTB - READ ONE TABLE.
  • [01256] SBT - SEARCH KNOWN BLOCK TABLE.
  • [01281] ZIO - READ ONE BLOCK FROM DISK FILE.
  • [01312] PRS - PRESET.
  • [01363] DBL - DISABLE BLOCK LOAD.
  • [01380] DLB - DETERMINE LOAD BLOCKS.
  • [01621] SWT - SWITCH CONTROL BYTES FOR ASSOCIATED BLOCK ENTRIES.
  • [01642] REL - RELOCATE VALUES USED IN THE *T* INSTRUCTIONS.

Source Code

CPUMLD.txt
  1. IDENT CPUMLD
  2. SST
  3.  
  4. ENTRY CPUMLD
  5.  
  6. SYSCOM B1
  7. *COMMENT CPUMLD - *CPUMTR* LOADER.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. TITLE CPUMLD - CPUMTR LOADER.
  10. SPACE 4
  11. *** CPUMLD - CPUMTR LOADER.
  12. * J.R. HOGUE/J.C. BOHNHOFF. 75/02/17.
  13. SPACE 4
  14. *** CPUMLD LOADS AND RELOCATES CPUMTR.
  15. *
  16. * CPUMTR IS ORGANIZED TO PLACE OPTIONAL CODE INTO BLOCKS
  17. * WHICH CAN BE LOADED OR IGNORED AT DEAD START TIME, DEPENDING
  18. * UPON WHICH FEATURES ARE TO BE USED BY THE OPERATING SYSTEM.
  19. * CPUMLD IS A SIMPLE RELOCATING LOADER WHICH WILL BE
  20. * LOADED INTO CENTRAL CORE AT DEAD START TIME BY STL. CPUMLD
  21. * WILL THEN READ THE CPUMTR BINARIES FROM THE DEAD START TAPE
  22. * (USING STL FOR THE TAPE READS) AND WILL DECIDE WHICH BLOCKS
  23. * ARE TO BE LOADED AND WHICH ARE TO BE BYPASSED.
  24. *
  25. * CPUMLD CAN BE USED IN BATCH MODE FOR VALIDATION THAT A
  26. * CPUMTR BINARY WILL LOAD WITHOUT ERRORS. IN SUCH A CASE,
  27. * CPUMLD REWINDS AND READS THE CPUMTR BINARIES FROM FILE
  28. * *LGO*. THE LOAD ADDRESS FOR THE MAIN PART OF *CPUMTR*
  29. * IS SET TO 20000B. THE LOAD ADDRESS FOR THE PRESET PART
  30. * OF *CPUMTR* IS SET TO 10000B. NORMALLY, THE MAIN PART
  31. * OF *CPUMTR* WILL BE LOADED IN ITS PROPER PLACE IN *CMR*.
  32. SPACE 4,10
  33. *** DAYFILE MESSAGES (BATCH MODE).
  34. * SYSTEM CONTROL POINT MESSAGES (DEADSTART LOAD).
  35. *
  36. * * BLOCK ORIGIN TABLE OVERFLOW.* - TOO MANY COMMON BLOCKS FOR
  37. * ASSEMBLED BLOCK ORIGIN TABLE BUFFER SIZE.
  38. *
  39. * * INVALID LOADER INPUT.* - UNIDENTIFIED LOADER TABLE
  40. * ENCOUNTERED, PREMATURE EOR ENCOUNTERED, OR FILL OR XFILL
  41. * TABLE HAS CONDITIONAL RELOCATION BASE DESIGNATOR SPECIFIED
  42. * IN ITS HEADER WORD.
  43. *
  44. * * LOADER TABLE OVERFLOW.* - PRFX, TEXT, ENTR, OR XFER
  45. * LOADER TABLE WAS ENCOUNTERED THAT WAS TOO LARGE FOR
  46. * ASSEMBLED LOADER TABLE BUFFER SIZE.
  47. *
  48. * * RELOCATION TABLE OVERFLOW.* - ASSEMBLED FILL OR XFILL
  49. * TABLE BUFFER SIZE WAS NOT LARGE ENOUGH TO ACCOMODATE ALL
  50. * ACCUMULATED FILL OR XFILL TABLE RELOCATION ENTRIES.
  51. SPACE 4
  52. * COMMON DECKS.
  53.  
  54.  
  55. *CALL,COMCMAC
  56. QUAL DSL
  57. *CALL COMSDSL
  58. QUAL *
  59. SPACE 4
  60. * TABLE LENGTHS.
  61.  
  62. .BOL EQU /DSL/CPBL MAXIMUM NUMBER OF BLOCKS
  63. .FBL EQU 10000B FILL TABLE LENGTH
  64. .TBL EQU 20B LOADER TABLE LENGTH
  65. .XFL EQU 400B XFILL TABLE LENGTH
  66. MACROS SPACE 4,10
  67. * MACROS.
  68.  
  69. ** BAST - BLOCK ASSOCIATION TABLE MACRO.
  70. *
  71. * BAST IS USED TO DEFINE BLOCKS WHICH ARE TO BE LOADED OR
  72. * IGNORED AT DEAD START. THIS MACRO MAY BE USED TO DEFINE TWO
  73. * ASSOCIATED BLOCKS OF WHICH ONE IS LOADED DURING DEADSTART OR
  74. * IT MAY BE USED TO DEFINE A SINGLE BLOCK WHICH MAY BE
  75. * LOADED OR IGNORED AT DEADSTART.
  76. *
  77. * FORMAT -
  78. *
  79. * TAG BAST BN,ABN
  80. *
  81. * ENTRY BN - BLOCK NAME. (DEFAULT BLOCK TO LOAD)
  82. * ABN - ALTERNATE BLOCK TO LOAD IF PRESENT.
  83.  
  84.  
  85. MACRO BAST,TAG,BN,ABN
  86. TAG VFD 42/0L_BN,18/1
  87. IFC NE,*ABN**,1
  88. VFD 42/0L_ABN,18/0
  89. ENDM
  90. MACROS TITLE RELOCATION MACROS.
  91. INMOD SPACE 4
  92. ** INMOD - THIS MACRO IN CONJUNCTION WITH THE FOLLOWING OPDEF,S
  93. * MAKES IT POSSIBLE TO SPECIFY A MODIFIER ON ALL 30 BIT
  94. * INCREMENT INSTRUCTIONS. THIS MODIFER MUST BE IN THE FORM
  95. * OF A POINTER TO ONE OF THE TABLE POINTERS THAT IS SET
  96. * DYNAMICALLY AT INITIALIZATION TIME. THE INSTRUCTION WILL
  97. * BE MODIFIED DURING INITIALIZATION.
  98. * THIS IS USEFUL FOR ACCESSING THE POINTERS THAT ARE
  99. * DYNAMICALLY SET AT INITIALIZATION TIME SUCH AS THE ORGIN
  100. * ADDRESS.
  101. *
  102. * DEFINITIONS.
  103. *
  104. * INMOD PTRA,LWAF
  105. *
  106. * PTRA = POINTER DESIRED.
  107. * LWAF = IF DEFINED TAKE LWA INSTEAD OF FWA.
  108. *
  109. * EXAMPLE-
  110. * TX6 0,OB
  111. * THIS WILL GENERATE A 30 BIT INSTRUCTION OF THE FOLLOWING FORM
  112. * SX6 B0+K
  113. * WHERE K = THE FIRST WORD ADDRESS FOR CPUMTR RELOCATION.
  114.  
  115.  
  116. INMOD MACRO PTRA,LWAF
  117. LOCAL INM1,INM2
  118. INM1 SET *P
  119. INM2 SET *
  120. IFEQ INM1,60,2
  121. INM1 SET 0
  122. INM2 SET *-1
  123. TINST RMT
  124. VFD 12/2000B+INM1
  125. VFD 18/PTRA
  126. IFC EQ,*LWAF**
  127. VFD 12/0
  128. ELSE 1
  129. VFD 12/4000B
  130. VFD 18/INM2
  131. TINST RMT
  132. ENDM
  133. OPDEFS SPACE 4
  134. ** OPDEF,S USED WITH INMOD.
  135.  
  136.  
  137. TAAQ,Q OPDEF P1,P2,P3,P4
  138. SA.P1 A.P2+P3
  139. INMOD P4
  140. ENDM
  141.  
  142.  
  143. TAA,Q OPDEF P1,P2,P4
  144. SA.P1 A.P2+0
  145. INMOD P4
  146. ENDM
  147.  
  148.  
  149. TAAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  150. SA.P1 A.P2+P3
  151. INMOD P4,P5
  152. ENDM
  153.  
  154.  
  155. CTEXT REMAINING OPDEF,S USED WITH INMOD.
  156. TAA,Q,Q OPDEF P1,P2,P4,P5
  157. SA.P1 A.P2+0
  158. INMOD P4,P5
  159. ENDM
  160.  
  161.  
  162. TABQ,Q OPDEF P1,P2,P3,P4
  163. SA.P1 B.P2+P3
  164. INMOD P4
  165. ENDM
  166.  
  167.  
  168. TAB,Q OPDEF P1,P2,P4
  169. SA.P1 B.P2+0
  170. INMOD P4
  171. ENDM
  172.  
  173.  
  174. TABQ,Q,Q OPDEF P1,P2,P3,P4,P5
  175. SA.P1 B.P2+P3
  176. INMOD P4,P5
  177. ENDM
  178.  
  179.  
  180. TAB,Q,Q OPDEF P1,P2,P4,P5
  181. SA.P1 B.P2+0
  182. INMOD P4,P5
  183. ENDM
  184.  
  185.  
  186. TAXQ,Q OPDEF P1,P2,P3,P4
  187. SA.P1 X.P2+P3
  188. INMOD P4
  189. ENDM
  190.  
  191.  
  192. TAX,Q OPDEF P1,P2,P4
  193. SA.P1 X.P2+0
  194. INMOD P4
  195. ENDM
  196.  
  197.  
  198. TAXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  199. SA.P1 X.P2+P3
  200. INMOD P4,P5
  201. ENDM
  202.  
  203.  
  204. TAX,Q,Q OPDEF P1,P2,P4,P5
  205. SA.P1 X.P2+0
  206. INMOD P4,P5
  207. ENDM
  208.  
  209.  
  210. TAQ,Q OPDEF P1,P3,P4
  211. SA.P1 B0+P3
  212. INMOD P4
  213. ENDM
  214.  
  215. TAQ,Q,Q OPDEF P1,P3,P4,P5
  216. SA.P1 B0+P3
  217. INMOD P4,P5
  218. ENDM
  219.  
  220.  
  221. TBAQ,Q OPDEF P1,P2,P3,P4
  222. SB.P1 A.P2+P3
  223. INMOD P4
  224. ENDM
  225.  
  226.  
  227. TBA,Q OPDEF P1,P2,P4
  228. SB.P1 A.P2+0
  229. INMOD P4
  230. ENDM
  231.  
  232.  
  233. TBAQ,Q,Q OPDEF P1,P2,P3,P4,Q5
  234. SB.P1 A.P2+P3
  235. INMOD P4,P5
  236. ENDM
  237.  
  238.  
  239. TBA,Q,Q OPDEF P1,P2,P4,P5
  240. SB.P1 A.P2+0
  241. INMOD P4,P5
  242. ENDM
  243.  
  244.  
  245. TBBQ,Q OPDEF P1,P2,P3,P4
  246. SB.P1 B.P2+P3
  247. INMOD P4
  248. ENDM
  249.  
  250.  
  251. TBB,Q OPDEF P1,P2,P4
  252. SB.P1 B.P2+0
  253. INMOD P4
  254. ENDM
  255.  
  256. TBBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  257. SB.P1 B.P2+P3
  258. INMOD P4,P5
  259. ENDM
  260.  
  261.  
  262. TBB,Q,Q OPDEF P1,P2,P4,P5
  263. SB.P1 B.P2+0
  264. INMOD P4,P5
  265. ENDM
  266.  
  267.  
  268. TBXQ,Q OPDEF P1,P2,P3,P4
  269. SB.P1 X.P2+P3
  270. INMOD P4
  271. ENDM
  272.  
  273.  
  274. TBX,Q OPDEF P1,P2,P4
  275. SB.P1 X.P2+0
  276. INMOD P4
  277. ENDM
  278.  
  279.  
  280. TBXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  281. SB.P1 X.P2+P3
  282. INMOD P4,P5
  283. ENDM
  284.  
  285.  
  286. TBX,Q,Q OPDEF P1,P2,P4,P5
  287. SB.P1 X.P2+0
  288. INMOD P4,P5
  289. ENDM
  290.  
  291.  
  292. TBQ,Q OPDEF P1,P3,P4
  293. SB.P1 B0+P3
  294. INMOD P4
  295. ENDM
  296.  
  297.  
  298. TBQ,Q,Q OPDEF P1,P3,P4,P5
  299. SB.P1 B0+P3
  300. INMOD P4,P5
  301. ENDM
  302.  
  303.  
  304. TXAQ,Q OPDEF P1,P2,P3,P4
  305. SX.P1 A.P2+P3
  306. INMOD P4
  307. ENDM
  308.  
  309.  
  310. TXA,Q OPDEF P1,P2,P4
  311. SX.P1 A.P2+0
  312. INMOD P4
  313. ENDM
  314.  
  315.  
  316. TXAQ,Q,Q OPDEF P1,P2,P3,P4,P5
  317. SX.P1 A.P2+P3
  318. INMOD P4,P5
  319. ENDM
  320.  
  321.  
  322. TXA,Q,Q OPDEF P1,P2,P4,P5
  323. SX.P1 A.P2+0
  324. INMOD P4,P5
  325. ENDM
  326.  
  327.  
  328. TXBQ,Q OPDEF P1,P2,P3,P4
  329. SX.P1 B.P2+P3
  330. INMOD P4
  331. ENDM
  332.  
  333.  
  334. TXB,Q OPDEF P1,P2,P4
  335. SX.P1 B.P2+0
  336. INMOD P4
  337. ENDM
  338.  
  339.  
  340. TXBQ,Q,Q OPDEF P1,P2,P3,P4,P5
  341. SX.P1 B.P2+P3
  342. INMOD P4,P5
  343. ENDM
  344.  
  345. TXB,Q,Q OPDEF P1,P2,P4,P5
  346. SX.P1 B.P2+0
  347. INMOD P4,P5
  348. ENDM
  349.  
  350.  
  351. TXXQ,Q OPDEF P1,P2,P3,P4
  352. SX.P1 X.P2+P3
  353. INMOD P4
  354. ENDM
  355.  
  356.  
  357. TXX,Q OPDEF P1,P2,P4
  358. SX.P1 X.P2+0
  359. INMOD P4
  360. ENDM
  361.  
  362.  
  363. TXXQ,Q,Q OPDEF P1,P2,P3,P4,P5
  364. SX.P1 X.P2+P3
  365. INMOD P4,P5
  366. ENDM
  367.  
  368.  
  369. TXX,Q,Q OPDEF P1,P2,P4,P5
  370. SX.P1 X.P2+0
  371. INMOD P4,P5
  372. ENDM
  373.  
  374.  
  375. TXQ,Q OPDEF P1,P3,P4
  376. SX.P1 B0+P3
  377. INMOD P4
  378. ENDM
  379.  
  380.  
  381. TXQ,Q,Q OPDEF P1,P3,P4,P5
  382. SX.P1 B0+P3
  383. INMOD P4,P5
  384. ENDM
  385.  
  386.  
  387. TJP MACRO P1,P3
  388. .1 MICRO 1,, P1
  389. JP ".1"
  390. INMOD P3
  391. ENDM
  392.  
  393.  
  394. TNZ MACRO P1,P3
  395. .1 MICRO 1,, P1
  396. NZ ".1",0
  397. INMOD P3
  398. ENDM
  399. ENDX
  400. TVFD SPACE 4
  401. ** TVFD - DEFINE A RELOCATABLE *VFD*.
  402. *
  403. * TVFD N/V,X
  404. *
  405. * ENTRY *N* = BIT COUNT
  406. * *V* = VALUE
  407. * *R* = ADDRESS OF RELOCATION VALUE
  408. * IF *R* IS NOT PRESENT, THE ORIGIN WILL BE USED
  409. * FOR RELOCATION.
  410.  
  411.  
  412. TVFD MACRO V,R
  413. * EXTRACT FIELD WIDTH
  414. .1 MICRO 1,,/V
  415. .1 MICCNT .1
  416. * CHECK FOR RELOCATION REQUIRED
  417. .2 MICRO .1+2,, V
  418. IF DEF,".2",3
  419. IF -REL,".2",2
  420. VFD ".1"/".2"
  421. .1 SKIP
  422. * PROCESS RELOCATION
  423. VFD ".1"/".2"-ORG
  424. INMOD OB
  425. .1 ENDIF
  426. IFC NE,$R$$,1
  427. INMOD R
  428. ENDM
  429. CPUMLD TITLE MAIN PROGRAM.
  430.  
  431. ORG BSS 0 FWA OF PROGRAM
  432.  
  433. CPUMLD SPACE 4,10
  434. ** MAIN PROGRAM.
  435. *
  436. * ENTRY (X4) = MACHINE FL IF DEADSTART MODE.
  437. * = 0 IF BATCH MODE.
  438. * (X5) = MACHINE FLX IF DEADSTART MODE.
  439. * = UNDEFINED IF BATCH MODE.
  440. * (B6) = ECS EQUIPMENT.
  441. * CPUMLD SAVES B3 - B6, X2 - X5 FOR ENTRY TO CPUMTR.
  442.  
  443. CPUMLD BSS 0 ENTRY
  444.  
  445. * INITIALIZE.
  446.  
  447. SB1 1 CONSTANT ONE
  448. RJ PRS PRESET
  449. RJ RRB READ RELOCATABLE BLOCK
  450. SA2 .RL SET BUFFER LENGTH
  451. BX7 X2
  452. SA7 RRBA
  453. SB3 LTPT2
  454. RJ RTB SKIP 77 TABLE
  455. ZR X1,ERR1 IF NO 77 TABLE
  456.  
  457. * PROCESS LOADER TABLES.
  458.  
  459. CPUR BSS 0 RETURN FROM TABLE PROCESSORS
  460. SB3 LTPT
  461. RJ RTB READ ONE TABLE
  462. ZR X1,CPU2 IF EOR
  463.  
  464. ** ENTRY CONDITIONS FOR TABLE PROCESSORS -
  465. * TABLE IN .BO, .FB, .TB, OR .XF BUFFER, AS DEFINED BY
  466. * *LTPT* TABLE.
  467. * (B2) = WORD COUNT OF TABLE.
  468. * (B3) = ADDRESS OF ENTRY IN *LTPT* TABLE + 2.
  469. * (B4) = LWA+1 LOADER TABLE IN BUFFER.
  470. * (X3) = *ERRA* ERROR MESSAGE ADDRESS.
  471. * (X5) = FIRST WORD OF TABLE.
  472.  
  473. JP B6 PROCESS TABLE
  474.  
  475. * RELOCATE ADDRESSES IN *CPUMTR* BINARY.
  476.  
  477. CPU2 RJ FIL PROCESS RELOCATION ENTRIES
  478. RJ VFD PROCESS VFD RELOCATION ENTRIES
  479.  
  480. * SET EXIT ADDRESS AFTER REGISTER MOVE.
  481.  
  482. SA1 .BC
  483. NZ X1,CPU3 IF NOT BATCH MODE
  484. SX7 CPU6 REENTER AT *CPU6* AFTER RESTORE
  485. SA7 .EP
  486. * JP CPU3
  487.  
  488. * PLACE LIST OF LOADED BLOCK NAMES AT END OF BINARIES.
  489.  
  490. CPU3 SA5 .LL BINARY LOAD LENGTH
  491. SB3 .BOL-2
  492. BX7 X7-X7
  493. SB7 X5
  494. SA1 .CP+2 INITIALIZE SEARCH FOR LOADED BLOCKS
  495.  
  496. CPU4 SB3 B3-B1
  497. ZR B3,CPU5 IF ALL BLOCKS CHECKED
  498. SA1 A1+B1 CHECK NEXT BLOCK
  499. ZR X1,CPU4 IF BLOCK NOT LOADED
  500. SA2 A1+.BO-.CP READ BLOCK NAME
  501. BX6 X2
  502. SB7 B7+B1 ADVANCE LOAD LENGTH
  503. SA6 B7-1
  504. EQ CPU4
  505.  
  506. CPU5 SA7 B7+ TERMINATE LIST
  507. SB7 B7+1
  508. SA3 .EP SET ENTRY POINT ADDRESS
  509. SB2 X3
  510. SA3 .ER RESTORE REGISTERS
  511. SA2 A3+B1
  512. SB3 X3
  513. SB4 X2
  514. SA3 A2+B1
  515. SB5 X3
  516. SA3 A3+B1
  517. SA2 A3+B1
  518. BX5 X3
  519. SA3 A2+B1
  520. BX4 X2
  521. SA2 A3+1
  522. JP B2 ENTER *CPUMTR*
  523.  
  524. * INITIALIZE LOW CORE FOR BATCH MODE CHECKPOINTING.
  525.  
  526. CPU6 SB3 * CLEAR LOW CORE
  527. SB2 B1+B1
  528. BX7 X7-X7
  529.  
  530. + SA7 B2
  531. SB2 B2+B1
  532. NE B2,B3,* LOOP
  533.  
  534. TB3 0,PBUF CLEAR HIGH CORE TO START OF *PRESET*
  535. SB2 ENOV
  536.  
  537. + SA7 B2
  538. SB2 B2+B1
  539. NE B2,B3,* LOOP
  540.  
  541. MESSAGE CPUC,1 * END CPUMLD.*
  542.  
  543. ENDRUN
  544.  
  545.  
  546. CPUC DATA C* END CPUMLD.*
  547. SPACE 4
  548. *CALL COMCSYS
  549.  
  550. ENOV BSS 0 END OF NONOVERLAYABLE AREA
  551. SPACE 4,10
  552. ** LTPT - LOADER TABLE PROCESSOR TABLE.
  553. *
  554. * 2 WORD ENTRIES -
  555. *T 12/TID,30/,18/PRAD
  556. *T 6/,18/EMOF,18/BUFL,18/FWA
  557. * TID LOADER TABLE BINARY IDENTIFIER
  558. * PRAD LOADER TABLE PROCESSOR ADDRESS
  559. * EMOF TABLE OVERFLOW ERROR MESSAGE OFFSET
  560. * BUFL LOADER TABLE BUFFER LENGTH
  561. * FWA FWA LOADER TABLE BUFFER
  562.  
  563.  
  564. LTPT BSS 0
  565. VFD 12/3400B,30/0,18/PID PIDL LOADER TABLE
  566. VFD 6/0,18/ERRB-ERRA,18/.BOL,18/.BO+2
  567. VFD 12/3600B,30/0,18/ENT ENTR LOADER TABLE
  568. VFD 6/0,18/ERRD-ERRA,18/.TBL,18/.TB
  569. VFD 12/4000B,30/0,18/TXT TEXT LOADER TABLE
  570. VFD 6/0,18/ERRD-ERRA,18/.TBL,18/.TB
  571. VFD 12/4200B,30/0,18/ABP FILL LOADER TABLE
  572. FBAE VFD 6/0,18/ERRC-ERRA,18/.FBL,18/.FB
  573. VFD 12/4100B,30/0,18/ABP XFILL LOADER TABLE
  574. XFAE VFD 6/0,18/ERRC-ERRA,18/.XFL,18/.XF
  575. VFD 12/4600B,30/0,18/XFR XFER LOADER TABLE
  576. VFD 6/0,18/ERRD-ERRA,18/.TBL,18/.TB
  577. CON 0 END OF TABLE
  578.  
  579.  
  580. LTPT2 BSS 0
  581. VFD 12/7700B,30/0,18/0 PRFX TABLE
  582. VFD 6/0,18/ERRD-ERRA,18/.TBL,18/.TB
  583. CON 0 END OF TABLE
  584. TITLE GLOBAL STORAGE.
  585. * GLOBAL STORAGE.
  586.  
  587.  
  588. .ER BSS 7 BUFFER TO SAVE REGISTERS FOR *CPUMTR*
  589. .RP CON 0,0 NEXT RELOCATABLE WORD POINTER
  590. .RL EQU .RP+1 CURRENT RELOCATABLE BUFFER LIMIT
  591. .TB BSS .TBL LOADER TABLE BUFFER
  592. .BO VFD 42/0 BLOCK ORIGINS
  593. TVFD 18/0,OB
  594. BSS .BOL-1
  595. .CP CON 0 CURRENT POSITION IN LOAD BUFFER
  596. VFD 42/0
  597. TVFD 18/0,MBUF
  598. BSS .BOL-2
  599. .LL CON 0 TOTAL LOAD LENGTH
  600. .EP CON 0 CPUMTR ENTRY POINT ADDRESS
  601. .BC CON 1 BATCH MODE FLAG
  602. .FB BSS .FBL FILL TABLE
  603. .XF BSS .XFL XFILL TABLE
  604. TITLE LOADER TABLE PROCESSORS.
  605. ABP SPACE 4,10
  606. ** ABP - ADVANCE BUFFER POINTER.
  607. *
  608. * EXIT *LTPT* TABLE ENTRY BUFFER FWA ADVANCED.
  609. * TO *ERR1* IF HEADER WORD HAS CONDITIONAL RELOCATION
  610. * BASE DESIGNATOR SPECIFIED.
  611. *
  612. * USES A - 2, 6.
  613. * X - 0, 1, 4, 5, 6.
  614.  
  615.  
  616. ABP BSS 0 ENTRY
  617. SA2 B3-B1 ADVANCE BUFFER FWA
  618. MX0 42
  619. SX4 B2 DECREMENT BUFFER LENGTH
  620. SX1 B4
  621. BX6 X0*X2
  622. LX4 18
  623. BX6 X6+X1
  624. LX5 59-20
  625. IX6 X6-X4
  626. AX5 51
  627. SA6 A2+
  628. NZ X5,ERR1 IF CONDITIONAL RELOCATION BASE SPECIFIED
  629. EQ CPUR RETURN
  630. ENT SPACE 4,10
  631. ** ENT - PROCESS ENTR TABLE.
  632. *
  633. * EXIT (.EP)= ADDRESS OF CPUMTR ENTRY.
  634. *
  635. * USES A - 1, 6.
  636. * X - 0, 1, 2, 6, 7.
  637.  
  638.  
  639. ENT BSS 0 ENTRY
  640. MX7 -18
  641. SA1 .TB+B1 READ ENTRY LOCATION
  642. SX2 X1 RELATIVE ADDRESS
  643. LX1 0-18 EXTRACT BLOCK NUMBER
  644. MX0 -9
  645. BX6 -X0*X1
  646. SX0 X6-3
  647. SA1 .BO ASSUME PROGRAM BLOCK RELOCATION
  648. NG X0,ENT1 IF PROGRAM BLOCK
  649. SA1 .BO+X6 READ COMMON BLOCK ORIGIN ADDRESS
  650. ENT1 BX7 -X7*X1 RELOCATE ENTRY
  651. IX6 X7+X2
  652. SA6 .EP
  653. JP CPUR RETURN
  654. FIL SPACE 4,10
  655. ** FIL - PROCESS FILL TABLE.
  656. *
  657. * ENTRY (.FB) = ACCUMULATED FILL TABLE DATA.
  658. * (FBAE) = LWA+1 DATA IN FILL TABLE.
  659. *
  660. * USES A - 1, 3, 5, 6, 7.
  661. * B - 2, 3, 5, 6, 7.
  662. * X - ALL.
  663.  
  664.  
  665. FIL SUBR ENTRY/EXIT
  666. SA1 FBAE GET LWA+1 DATA IN FILL TABLE
  667. MX4 2 CONTROL BIT MASK
  668. SB2 X1
  669. SB5 B1+B1 SET RELOCATABLE ENTRIES PER WORD COUNT
  670. LX4 2+27
  671. SA5 .FB FIRST WORD IN FILL TABLE
  672.  
  673. * RELOCATE ADDRESSES.
  674.  
  675. FIL1 MX0 -9
  676. PL X5,FIL4 IF CONTROL BYTE
  677. LX5 12 EXTRACT RELOCATION INDEX
  678. BX2 -X0*X5
  679. SA3 .CP+X2 BLOCK WHICH CONTAINS RELOCATION WORD
  680. LX5 18
  681. SB6 X3
  682. ZR B6,FIL2 IF RELOCATING IN A NON-LOADED BLOCK
  683. BX2 X4*X5 EXTRACT CONTROL BITS
  684. LX2 -27
  685. SA3 X5+B6 WORD TO BE RELOCATED
  686. SA2 X2+FILA SHIFT COUNT FOR RELOCATION POSITION
  687. BX6 X1
  688. MX7 -18
  689. SB3 X2 SHIFT COUNT FOR RELOCATION POSITION
  690. LX7 30
  691. AX6 X6,B3
  692. AX7 X7,B3
  693. BX2 X7+X3 EXTRACT FIELD TO RELOCATE
  694. IX6 X2+X6 ADD RELOCATION VALUE
  695. BX3 X7*X3 CLEAR FIELD IN WORD
  696. BX6 -X7*X6 EXTRACT RELOCATED FIELD
  697. BX6 X3+X6 MERGE RELOCATED FIELD
  698. SA6 A3
  699. FIL2 SB5 B5-B1
  700. NZ B5,FIL1 IF MORE RELOCATABLE ENTRIES IN WORD
  701. SB5 B1+B1 RESET RELOCATABLE ENTRIES PER WORD COUNT
  702. SB7 A5+B1
  703. GE B7,B2,FILX IF END OF FILL TABLE
  704. SA5 B7
  705. EQ FIL1 PROCESS NEXT RELOCATION ENTRY
  706.  
  707. * REPLACE BLOCK INDEX.
  708.  
  709. FIL4 LX5 30 SET BLOCK ORIGIN
  710. BX2 -X0*X5
  711. SA1 .BO+X2
  712. SX1 X1
  713. LX1 30
  714. EQ FIL2
  715.  
  716.  
  717. * SHIFT COUNTS TO POSITION RELOCATION VALUE.
  718.  
  719. FILA BSS 0
  720. CON 30 LOWER
  721. CON 15 MIDDLE
  722. CON 0 UPPER
  723. CON 48 UNDEFINED (SHIFT END OFF)
  724. PID SPACE 4,10
  725. ** PID - PROCESS PIDL TABLE.
  726. *
  727. * ENTRY (B2) = TABLE WORD COUNT.
  728. *
  729. * EXIT (.BO) = BLOCK ORIGINS.
  730. * (.LL) = TOTAL LOAD LENGTH.
  731. *
  732. * USES B - 2, 3.
  733. * A - 1, 2, 3, 4, 6, 7.
  734. * X - 0, 1, 2, 3, 4, 6, 7.
  735. *
  736. * CALLS SBT.
  737.  
  738.  
  739. PID BSS 0 ENTRY
  740. TX6 0,OB PRESET PROGRAM BLOCK ORIGIN
  741. SA1 .BO+2 ASSIGN BLOCK ORIGINS
  742. BX0 X6
  743. SA6 .BO
  744. BX7 -X0
  745. SX1 X1
  746. SA6 A6+B1
  747. IX0 X6+X1 ORIGIN OF NEXT BLOCK
  748. SA7 A6+B1
  749. PID1 SA1 A1+1
  750. SB2 B2-B1 DECREMENT BLOCK COUNT
  751. BX7 X0
  752. ZR B2,PID4 IF END OF BLOCKS
  753.  
  754. * CHECK IF BLOCK TO BE LOADED.
  755.  
  756. RJ SBT
  757. SX4 X4
  758. MX7 42
  759. SX2 X1 LOAD LENGTH OF THIS BLOCK
  760. BX1 X7*X1 BLOCK NAME
  761. ZR X4,PID3 IF BLOCK NOT TO BE LOADED
  762. SX6 A4-SPBOL
  763. PL X6,PID2 IF NOT SPECIAL ORIGIN BLOCK
  764. SX6 A1 SAVE POINTER
  765. SX3 A4-PIDA
  766. SX7 A4-SBDR
  767. SA6 SPBP+X3
  768. PL X7,PID1 IF BLOCK RELOCATION DEFERRED
  769. SA3 .BC
  770. ZR X3,PID2 IF BATCH MODE
  771. SA4 SPBO GET SPECIAL BLOCK ORIGIN ADDRESS
  772. BX7 X4
  773. IX6 X4+X2 ADVANCE SPECIAL BLOCK ORIGIN ADDRESS
  774. SA7 A1-.BO+.CP SET LOAD BUFFER ADDRESS
  775. SA6 A4
  776. EQ PID3 SET BLOCK ORIGIN ADDRESS
  777.  
  778. PID2 BX4 X0
  779. IX0 X0+X2 ADVANCE ORIGIN ADDRESS
  780. TX7 X4,-OB
  781. TX7 X7,MBUF
  782. SA7 A1-.BO+.CP RELOCATED ORIGIN ADDRESS
  783. SX6 A4-ECS
  784. NZ X6,PID3 IF NOT *EM* BLOCK
  785.  
  786. * REDUCE EM LWA.
  787.  
  788. SA2 MEFL
  789. SX0 X0-400B
  790. SX6 B1+B1
  791. MX7 -2
  792. LX2 -29
  793. BX2 -X7*X2
  794. SB3 X2+4
  795. LX6 B3
  796. IX0 X0+X6 LWA = LWA - (2*200B) + (2*SECTOR LIMIT)
  797. PID3 BX6 X4+X1 BLOCK NAME + ORIGIN ADDRESS
  798. SA6 A1 SET BLOCK ORIGIN ADDRESS
  799. EQ PID1 PROCESS NEXT BLOCK
  800.  
  801. PID4 TX0 0,PBUF LOAD ADDRESS FOR PRESET CODE
  802. SB2 SBDR-PIDA
  803. MX3 42
  804. BX7 X0
  805. PID5 SA2 SPBP+B2 GET POINTER
  806. SB2 B2+B1
  807. SA1 X2
  808. SX4 B2-SPBPL
  809. SX2 X1
  810. BX1 X3*X1 BLOCK NAME
  811. BX6 X1+X0
  812. IX0 X0+X2
  813. SA7 A1-.BO+.CP RELOCATED ORIGIN ADDRESS
  814. IX7 X7+X2
  815. SA6 A1 SET BLOCK ORIGIN ADDRESS
  816. NG X4,PID5 IF MORE RELOCATIONS
  817. SX7 X0 LWA+1 OF LOAD
  818. SA7 .LL
  819. EQ CPUR RETURN
  820.  
  821. * TABLE OF KNOWN CPUMTR BLOCKS.
  822.  
  823. PIDA BSS 0
  824.  
  825. XP176 BAST XP176
  826. XP819 BAST XP819
  827. SBDR EQU * START OF BLOCKS WITH DEFERRED RELOCATION
  828. PRESET BAST PRESET
  829. TREL BAST TREL RELOCATION DATA BLOCK
  830. TJMP BAST TJMP
  831. TBLK BAST TBLK LOADED BLOCKS NAME TABLE BLOCK
  832. SPBOL EQU * SPECIAL ORIGIN BLOCKS LIMIT
  833. CME BAST CME,0CME
  834. CMU BAST CMU,0CMU
  835. CMUMTR BAST CMUMTR,0CMUMTR
  836. CPP BAST CPP
  837. PCP BAST PCP
  838. DCP BAST DCP
  839. NVE BAST NVE
  840. SUBCP BAST SUBCP
  841. ISDMMF BAST ISDMMF
  842. MMF BAST MMF
  843. LSPMMF BAST LSPMMF
  844. BIOMMF BAST BIOMMF
  845. ISD BAST ISD
  846. VMS BAST VMS
  847. SCP BAST SCP
  848. SCPUEC BAST SCPUEC
  849. CSE BAST CSE
  850. ECS BAST ECS
  851. ECSBUF BAST ECSBUF
  852. EEC BAST EEC
  853. EUE BAST EUE
  854. SUE BAST SUE
  855. MMFBUF BAST MMFBUF
  856. CP830 BAST CP830
  857. CP176 BAST CP176
  858. IH819 BAST IH819
  859. IHPFMD BAST IHPFMD
  860. BUFIO BAST BUFIO
  861. PROBE BAST PROBE
  862. TRACE BAST TRACE
  863. MCE BAST MCE
  864. UEC BAST UEC
  865.  
  866. CON 1 DEFAULT LOAD ANY *UNKNOWN* BLOCK
  867.  
  868. PIDAL EQU *-PIDA
  869.  
  870. SPBO CON 0 SPECIAL BLOCKS ORIGIN
  871.  
  872. SPBP BSS SPBOL-PIDA SPECIAL BLOCK POINTERS
  873. SPBPL EQU *-SPBP
  874. TXT SPACE 4,10
  875. ** TXT - PROCESS TEXT TABLE.
  876. *
  877. * ENTRY (B2) = TABLE WORD COUNT.
  878. * (X5) = TEXT TABLE CONTROL WORD.
  879. *
  880. * USES A - 1, 2, 3, 5, 7.
  881. * B - 3, 4, 6, 7.
  882. * X - ALL.
  883.  
  884.  
  885. TXT BSS 0 ENTRY
  886.  
  887. * INITIALIZE TEXT RELOCATION LOOP.
  888.  
  889. SB6 X5 RELATIVE ADDRESS IN BLOCK
  890. SB7 B2-B1 (B7) = WORD COUNT
  891. LX5 -18
  892. SB4 X5
  893. SA2 X5+.CP CURRENT POSITION IN LOAD BUFFER
  894. ZR X2,CPUR IF NOT LOADING THIS BLOCK
  895. SB3 TXTB (B3) = ADDRESS MASKS
  896. SA1 .TB (X1) = CONTROL WORD
  897. SB6 B6+X2
  898. MX0 -4 BYTE MASK
  899. SA3 B6-B1
  900. LX1 4 SHIFT TO FIRST BYTE
  901. BX4 -X0*X1 FIRST CONTROL BYTE
  902. SA5 A1+B1 FIRST TEXT WORD
  903. BX7 X3
  904. SA2 B3+X4 FIRST ADDRESS MASK WORD
  905. LX1 4 SHIFT TO NEXT CONTROL BYTE
  906. SA4 A2+TXTA-TXTB FIRST RELOCATION WORD
  907. SA7 A3
  908.  
  909. * TEXT RELOCATION LOOP.
  910. * THE FOLLOWING PROCEDURE RELOCATES ADDRESSES IN ONES-S
  911. * COMPLEMENT ARITHMETIC FOR ALL ADDRESS FIELDS IN TEXT WORDS.
  912. * (1.) COMPLEMENT ADDRESSES.
  913. * (2.) ADD TO RELOCATE.
  914. * (3.) COMPLEMENT RESULT.
  915. * (4.) MERGE RELOCATED ADDRESSES WITH TEXT WORD.
  916.  
  917. TXT2 BX7 -X5*X2 EXTRACT COMPLEMENT ADDRESS FIELDS
  918. BX6 -X2*X5 REMOVE ADDRESSES FROM TEXT
  919. IX7 X7+X4 ADD COMPLEMENT ADDRESSES
  920. BX5 -X0*X1 NEXT RELOCATION BYTE
  921. BX3 -X2*X7 EXTRACT CARRYS
  922. BX7 -X7*X2 MASK AND COMPLIMENT ADDRESSES
  923. AX3 18
  924. SA2 X5+B3 NEXT ADDRESS MASK WORD
  925. SA5 A5+B1 NEXT TEXT WORD
  926. SA4 A2+TXTA-TXTB NEXT RELOCATION WORD
  927. IX7 X7-X3 ADD CARRYS
  928. LX1 4 SHIFT CONTROL WORD
  929. BX7 X7+X6 INSERT RELOCATED ADDRESSES
  930. SB7 B7-B1 DECREMENT WORD COUNT
  931. SA7 A7+B1 STORE PREVIOUS WORD
  932. NZ B7,TXT2 LOOP FOR ALL TEXT WORDS
  933. JP CPUR RETURN
  934. TXTA SPACE 4
  935. ** TXTA - TABLE OF COMPLEMENT RELOCATION ADDRESSES.
  936. * INDEXED BY RELOCATION CONTROL BYTES.
  937. * GENERATED BY *PIDL* PROCESSOR.
  938.  
  939.  
  940. TXTA BSS 0
  941.  
  942. VFD 60/0
  943. VFD 60/0
  944. VFD 42/0
  945. TVFD 18/0,-OB
  946. VFD 42/0
  947. TVFD 18/0,OB
  948.  
  949. VFD 27/0
  950. TVFD 18/0,-OB
  951. VFD 15/0
  952. VFD 27/0
  953. TVFD 18/0,-OB
  954. VFD 15/0
  955. VFD 27/0
  956. TVFD 18/0,OB
  957. VFD 15/0
  958. VFD 27/0
  959. TVFD 18/0,OB
  960. VFD 15/0
  961.  
  962. VFD 12/0
  963. TVFD 18/0,-OB
  964. VFD 30/0
  965. VFD 12/0
  966. TVFD 18/0,-OB
  967. VFD 30/0
  968. VFD 12/0
  969. TVFD 18/0,-OB
  970. VFD 12/0
  971. TVFD 18/0,-OB
  972. VFD 12/0
  973. TVFD 18/0,-OB
  974. VFD 12/0
  975. TVFD 18/0,OB
  976.  
  977. VFD 12/0
  978. TVFD 18/0,OB
  979. VFD 30/0
  980. VFD 12/0
  981. TVFD 18/0,OB
  982. VFD 30/0
  983. VFD 12/0
  984. TVFD 18/0,OB
  985. VFD 12/0
  986. TVFD 18/0,-OB
  987. VFD 12/0
  988. TVFD 18/0,OB
  989. VFD 12/0
  990. TVFD 18/0,OB
  991. TXTB SPACE 4
  992. ** TXTB - TABLE OF ADDRESS MASKS.
  993. * INDEXED BY RELOCATION CONTROL BYTES.
  994.  
  995.  
  996. BSS 1 (AVOID BANK CONFILCTS)
  997. TXTB BSS 0
  998. LOC 0
  999.  
  1000. VFD 60/0
  1001. VFD 60/0
  1002. VFD 42/0,18/-0
  1003. VFD 42/0,18/-0
  1004.  
  1005. VFD 27/0,18/-0,15/0
  1006. VFD 27/0,18/-0,15/0
  1007. VFD 27/0,18/-0,15/0
  1008. VFD 27/0,18/-0,15/0
  1009.  
  1010. VFD 12/0,18/-0,30/0
  1011. VFD 12/0,18/-0,30/0
  1012. VFD 12/0,18/-0,12/0,18/-0
  1013. VFD 12/0,18/-0,12/0,18/-0
  1014.  
  1015. VFD 12/0,18/-0,30/0
  1016. VFD 12/0,18/-0,30/0
  1017. VFD 12/0,18/-0,12/0,18/-0
  1018. VFD 12/0,18/-0,12/0,18/-0
  1019.  
  1020. LOC *O
  1021. VFD SPACE 4
  1022. ** VFD - PROCESS XFILL (VFD) TABLE.
  1023. *
  1024. * ENTRY (.XF) = ACCUMULATED XFILL TABLE DATA.
  1025. * (XFAE) = LWA+1 DATA IN XFILL TABLE.
  1026. *
  1027. * USES A - 1, 2, 5, 6.
  1028. * B - 2, 3, 6, 7.
  1029. * X - 1, 2, 4, 6, 7.
  1030.  
  1031.  
  1032. VFD SUBR ENTRY/EXIT
  1033. SA1 XFAE GET LWA+1 DATA IN XFILL BUFFER
  1034. SA5 .XF-1
  1035. SB7 X1+
  1036. VFD1 SB2 A5+B1
  1037. GE B2,B7,VFDX IF END OF XFILL TABLE
  1038. SA5 B2 GET NEXT RELOCATION ENTRY
  1039. MX4 -9
  1040. BX1 -X4*X5 BLOCK RELOCATION INDEX
  1041. SA1 X1+.CP
  1042. AX5 9
  1043. BX2 -X4*X5
  1044. SA2 X2+.BO BLOCK WHICH CONTAINS RELOCATION WORD
  1045. SX2 X2
  1046. AX5 9
  1047. MX4 -6
  1048. SB6 X1
  1049. ZR B6,VFD1 IF BLOCK NOT LOADED
  1050. BX1 -X4*X5 SIZE OF FIELD
  1051. AX5 6
  1052. BX4 -X4*X5 POSITION OF FIELD
  1053. AX5 6
  1054. SB2 X1-1
  1055. MX7 1 FORM FIELD MASK
  1056. AX7 X7,B2
  1057. SB3 X4
  1058. SB2 X1+B3
  1059. LX7 X7,B2
  1060. SA1 X5+B6 READ WORD TO RELOCATE
  1061. LX2 X2,B3 POSITION RELOCATION
  1062. BX6 -X7+X1 RELOCATE FIELD
  1063. IX6 X6+X2
  1064. BX1 -X7*X1
  1065. BX6 X7*X6
  1066. BX6 X6+X1
  1067. SA6 A1 STORE RELOCATED WORD
  1068. EQ VFD1 CONTINUE PROCESSING TABLE
  1069. XFR SPACE 4,10
  1070. ** XFR - PROCESS TRANSFER TABLE.
  1071. * THE TRANSFER ADDRESS IS IGNORED, THE ADDRESS FROM THE
  1072. * *ENTR* TABLE IS USED FOR THE ENTRY POINT ADDRESS.
  1073.  
  1074.  
  1075. XFR BSS 0 ENTRY
  1076. JP CPUR RETURN
  1077. TITLE SUBROUTINES.
  1078. ERR SPACE 4,10
  1079. ** ERR - PROCESS LOADER TABLE ERROR.
  1080. *
  1081. * ENTRY (X3) = ERROR CODE.
  1082.  
  1083.  
  1084. ERR SUBR ENTRY/EXIT
  1085. ERR1 SA2 .BC
  1086. NZ X2,ERR2 IF NOT BATCH MODE
  1087. MESSAGE X3,,R ISSUE DIAGNOSTIC MESSAGE
  1088. SA2 ERR
  1089. BX6 X6-X6
  1090. SA6 A2
  1091. NZ X2,ERRX IF RETURN DESIRED
  1092. ENDRUN
  1093.  
  1094. ERR2 R= A1,NCPL SET MESSAGE IN SYSTEM CONTROL POINT
  1095. MX0 -12
  1096. LX1 -36
  1097. BX1 -X0*X1 NUMBER OF CONTROL POINTS
  1098. LX1 7
  1099. SA3 X3
  1100. SA4 A3+B1
  1101. BX6 X3
  1102. LX7 X4
  1103. SA6 X1+MS1W+200B
  1104. SA3 A4+B1
  1105. SA7 A6+B1
  1106. BX6 X3
  1107. SA4 A3+B1
  1108. SA6 A7+B1
  1109. ERR3 BX7 X4
  1110. SA7 A6+B1
  1111. EQ ERR3 BLANK THE TOOBS
  1112.  
  1113.  
  1114. ERRA DATA C* INVALID LOADER INPUT.*
  1115.  
  1116. ERRB DATA C* BLOCK ORIGIN TABLE OVERFLOW.*
  1117.  
  1118. ERRC DATA C* RELOCATION TABLE OVERFLOW.*
  1119.  
  1120. ERRD DATA C* LOADER TABLE OVERFLOW.*
  1121. ROW SPACE 4,10
  1122. ** ROW - READ ONE WORD FROM RELOCATABLE BUFFER.
  1123. *
  1124. * ENTRY (.RP) = ADDRESS OF NEXT BUFFER WORD.
  1125. *
  1126. * EXIT (X6) = WORD.
  1127. * (.RP) = UPDATED.
  1128. * (X1) = 0 IF EOR.
  1129. *
  1130. * USES A - 2, 4, 6, 7.
  1131. * X - 2, 4, 6, 7.
  1132. *
  1133. * CALLS RRB.
  1134.  
  1135.  
  1136. ROW SUBR ENTRY/EXIT
  1137. ROW1 SA4 .RP READ BUFFER POINTER
  1138. SA2 .RL READ BUFFER LIMIT
  1139. IX6 X4-X2
  1140. PL X6,ROW2 IF BUFFER EMPTY
  1141. SA2 X4 READ WORD
  1142. SX1 B1 UPDATE POINTER
  1143. BX6 X2
  1144. IX7 X4+X1
  1145. SA7 A4
  1146. JP ROWX RETURN
  1147.  
  1148. ROW2 SX1 X2-RBUF-1 CHECK FOR SHORT BLOCK
  1149. ZR X1,ROWX IF EOR ENCOUNTERED
  1150. RJ RRB READ NEXT BLOCK
  1151. EQ ROW1
  1152. RRB SPACE 4,10
  1153. ** RRB - READ RELOCATABLE BLOCK.
  1154. *
  1155. * EXIT (.RL) = BUFFER LIMIT.
  1156. * (.RP) = ADDRESS OF CURRENT BUFFER WORD.
  1157. *
  1158. * USES A - 1, 2, 4, 6, 7.
  1159. * B - NONE.
  1160. * X - 1, 2, 4, 6, 7.
  1161. *
  1162. * CALLS ZIO.
  1163.  
  1164. RRB3 RJ ZIO READ NEXT BLOCK
  1165.  
  1166. RRB SUBR ENTRY/EXIT
  1167. SA4 .BC
  1168. ZR X4,RRB3 IF BATCH MODE
  1169. SA1 RRBB
  1170. SX2 B1
  1171. IX7 X1+X2 SET CURRENT BUFFER POSITION = LIMIT
  1172. SA7 .RP
  1173. SA4 A1-B1
  1174. ERRNZ RRBA+1-RRBB CODE DEPENDS ON VALUE
  1175. SA7 A7+B1
  1176. ZR X4,RRBX IF EOR
  1177. PX6 X1
  1178. SA6 B0
  1179.  
  1180. * REQUEST NEXT RELOCATABLE BLOCK.
  1181.  
  1182. RRB1 SA2 B0+
  1183. NO
  1184. MX1 -12
  1185. NZ X2,RRB1 IF READ NOT COMPLETE
  1186. SA2 X6
  1187. BX1 -X1*X2 WORD COUNT TRANSFERRED TO BUFFER
  1188. IX7 X7+X1 SET BUFFER LIMIT
  1189. BX6 X7-X4
  1190. SA7 .RL
  1191. ZR X6,RRBX IF BLOCK SIZE DID NOT CHANGE
  1192. BX6 X6-X6 SET EOR FLAG
  1193. SA6 A4
  1194. EQ RRBX RETURN
  1195.  
  1196. RRBA CON 1 EOR INDICATOR
  1197. RRBB VFD 42/0,18/RBUF
  1198. RTB SPACE 4,10
  1199. ** RTB - READ ONE TABLE.
  1200. *
  1201. * ENTRY (B3) = LOADER TABLE PROCESSOR TABLE ADDRESS.
  1202. *
  1203. * EXIT TABLE IN .BO, .FB, .TB, OR .XF BUFFER, AS DEFINED IN
  1204. * *LTPT* TABLE ENTRY.
  1205. * (X1) = 0, IF END OF RECORD ENCOUNTERED.
  1206. * (X3) = *ERRA* ERROR MESSAGE ADDRESS.
  1207. * (X5) = TABLE HEADER WORD.
  1208. * (B2) = TABLE WORD COUNT.
  1209. * (B3) = ADDRESS OF ENTRY IN *LTPT* TABLE + 2.
  1210. * (B4) = LWA+1 LOADER TABLE IN BUFFER.
  1211. * (B6) = PROCESSOR ADDRESS.
  1212. * TO *ERR1* IF UNIDENTIFIED LOADER TABLE OR PREMATURE
  1213. * EOR ENCOUNTERED, OR IF BUFFER OVERFLOWED.
  1214. *
  1215. * USES B - 2, 3, 4, 5, 6.
  1216. * A - 1, 2, 6.
  1217. * X - 0, 1, 2, 3, 5, 6, 7.
  1218. *
  1219. * CALLS ROW.
  1220.  
  1221.  
  1222. RTB SUBR ENTRY/EXIT
  1223. SX3 ERRA * INVALID LOADER INPUT.*
  1224. RJ ROW READ TABLE HEADER
  1225. ZR X1,RTBX IF EOR ENCOUNTERED
  1226. BX5 X6
  1227. MX0 12
  1228. RTB1 SA2 B3 IDENTIFY LOADER TABLE
  1229. ZR X2,ERR1 IF LOADER TABLE NOT VALID
  1230. BX6 X5-X2
  1231. SA1 A2+B1
  1232. BX6 X0*X6
  1233. SB6 X2 PROCESSOR ADDRESS
  1234. SB3 A1+B1
  1235. NZ X6,RTB1 IF NO MATCH
  1236. SB4 X1 FWA BUFFER
  1237. LX0 -12
  1238. AX1 18
  1239. BX7 X0*X5 LOADER TABLE WORD COUNT
  1240. SB5 X1 BUFFER LENGTH
  1241. LX7 -36
  1242. SB2 X7 WORD COUNT OF TABLE
  1243. GT B2,B5,RTB3 IF LOADER TABLE OVERFLOWS BUFFER
  1244. SB5 B4+B2 LWA+1 LOADER TABLE IN BUFFER
  1245. RTB2 RJ ROW READ TABLE
  1246. ZR X1,ERR1 IF PREMATURE EOR
  1247. SA6 B4
  1248. SB4 B4+B1
  1249. LT B4,B5,RTB2 IF NOT END OF TABLE
  1250. EQ RTBX RETURN
  1251.  
  1252. RTB3 AX1 18 SET ERROR MESSAGE ADDRESS
  1253. IX3 X3+X1
  1254. EQ ERR1 PROCESS ERROR
  1255. SBT SPACE 4,10
  1256. ** SBT - SEARCH KNOWN BLOCK TABLE.
  1257. *
  1258. * ENTRY (X1) = BLOCK NAME TO SEARCH FOR.
  1259. *
  1260. * EXIT (X4) = TABLE ENTRY OF MATCHED BLOCK NAME.
  1261. * = LAST WORD OF TABLE IF NO MATCH FOUND.
  1262. * (X6) .GE. 0 IF END OF TABLE REACHED.
  1263. * (A4) = ADDRESS OF MATCHED ENTRY OR LAST WORD OF TABLE.
  1264. *
  1265. * USES A - 4.
  1266. * X - 3, 4, 6, 7.
  1267.  
  1268.  
  1269. SBT SUBR ENTRY/EXIT
  1270. MX3 42
  1271. SA4 PIDA-1 BLOCK TABLE ADDRESS - 1
  1272. MX6 PIDAL
  1273. SBT1 SA4 A4+B1 NEXT TABLE ENTRY
  1274. LX6 1
  1275. PL X6,SBTX IF END OF TABLE
  1276. BX7 X4-X1
  1277. BX7 X3*X7
  1278. NZ X7,SBT1 IF NO MATCH ON BLOCK NAME
  1279. EQ SBTX RETURN
  1280. ZIO SPACE 4,10
  1281. ** ZIO - READ ONE BLOCK FROM DISK FILE.
  1282. *
  1283. * USES A - 1, 4, 6, 7.
  1284. * X - 1, 4, 6, 7.
  1285.  
  1286.  
  1287. ZIO SUBR ENTRY/EXIT
  1288. SA4 ZIOA+1 SET FIRST = IN = OUT
  1289. SX7 X4
  1290. SA7 A4+B1
  1291. SA7 A7+B1
  1292. READ ZIOA,R READ ONE BLOCK
  1293. SA4 ZIOA+2 SET BUFFER LIMIT
  1294. SX7 X4
  1295. SA4 A4-B1 RESET POSITION IN BUFFER
  1296. SA7 .RL
  1297. SX7 X4+
  1298. SA7 .RP
  1299. JP ZIOX RETURN
  1300.  
  1301. ZIOA BSS 0
  1302. *LGO FILEB RBUF+1,RBUFL-1,(FET=5)
  1303. VFD 42/0LLGO,18/1
  1304. VFD 42/,18/RBUF+1
  1305. VFD 42/,18/RBUF+1
  1306. VFD 42/,18/RBUF+1
  1307. VFD 42/,18/RBUF+RBUFL-1
  1308. SPACE 4
  1309. *CALL COMCCIO
  1310. PRESET TITLE PRESET ROUTINES.
  1311. PRS SPACE 4
  1312. ** PRS - PRESET.
  1313. *
  1314. * ENTRY X2, X4 AND X5 CONTAIN INFORMATION FOR *CPUMTR*.
  1315. * THEY ARE SAVED AND RESTORED.
  1316. * (X4) = 0 IF BATCH MODE.
  1317.  
  1318.  
  1319. PRS SUBR ENTRY/EXIT
  1320. SX6 B3 SAVE REGISTERS
  1321. SX7 B4
  1322. SA6 .ER
  1323. SA7 A6+B1
  1324. SX6 B5
  1325. SA6 A7+B1
  1326. BX6 X5
  1327. LX7 X4
  1328. SA6 A6+B1
  1329. SA7 A6+B1
  1330. BX6 X3
  1331. LX7 X2
  1332. SA6 A7+B1
  1333. SA7 A6+B1
  1334. BX7 X4
  1335. SA7 .BC
  1336. NZ X7,PRS1 IF NOT BATCH MODE
  1337. SX7 LBUF SET *CPUMTR* ORIGIN TO 20000B
  1338. SA7 OB
  1339.  
  1340. * GET ENOUGH MEMORY FOR FILE BUFFERS AND CPUMTR.
  1341.  
  1342. MEMORY CM,PRSA,R,LBUF+50000B
  1343.  
  1344. * REWIND *LGO* FILE.
  1345.  
  1346. REWIND ZIOA,R REWIND CPUMTR BINARY FILE
  1347.  
  1348. PRS1 RJ REL RELOCATE VARIABLE VALUES
  1349. RJ DLB DETERMINE LOAD BLOCKS
  1350.  
  1351. * CLEAR BLOCK POSITION TABLE.
  1352.  
  1353. BX6 X6-X6
  1354. SB6 .CP+1
  1355. SB7 B6+.BOL-2
  1356. PRS2 SB6 B6+B1
  1357. SA6 B6
  1358. NE B6,B7,PRS2 IF MORE TO CLEAR
  1359. EQ PRSX RETURN
  1360.  
  1361. PRSA BSS 1
  1362. DBL SPACE 4
  1363. ** DBL - DISABLE BLOCK LOAD.
  1364. *
  1365. * ENTRY (X1) = BLOCK CONTROL WORD.
  1366. * (A1) = ADDRESS OF BLOCK CONTROL WORD.
  1367. *
  1368. * EXIT NONE.
  1369. *
  1370. * USES X - 2, 6.
  1371. * A - 6.
  1372.  
  1373.  
  1374. DBL SUBR ENTRY/EXIT
  1375. MX2 -18
  1376. BX6 X2*X1 CLEAR LOAD STATUS
  1377. SA6 A1+
  1378. JP DBLX RETURN
  1379. DLB SPACE 4
  1380. ** DLB - DETERMINE LOAD BLOCKS.
  1381. *
  1382. * THIS ROUTINE EXAMINES CMR TO DETERMINE WHICH OPTIONAL
  1383. * CPUMTR BLOCKS TO SELECT FOR LOADING.
  1384. *
  1385. * EXIT - VALUES IN TABLE *PIDA* SET TO SELECT/DESELECT LOADING
  1386. * OF OPTIONAL CPUMTR BLOCKS.
  1387.  
  1388.  
  1389. DLB SUBR ENTRY/EXIT
  1390. SA1 .BC
  1391. ZR X1,DLBX IF BATCH MODE - LOAD DEFAULT BLOCKS
  1392. SA1 MABL CHECK MAINFRAME TYPE
  1393. LX1 59-47
  1394. PL X1,DLB1 IF CM EXTENSION PRESENT
  1395. SA1 CME
  1396. RJ SWT SWITCH TO *0CME* BLOCK
  1397. SA1 .ER+3 GET EXTENDED MEMORY FL
  1398. NZ X1,DLB1 IF EXTENDED MEMORY PRESENT
  1399. SA1 CSE
  1400. RJ DBL DISABLE BLOCK FOR CM STORAGE CLEAR VIA ECS
  1401. DLB1 SA3 EXML DETERMINE PRESENCE OF EM EQUIPMENT
  1402. MX1 -9
  1403. BX3 -X1*X3
  1404. NZ X3,DLB3 IF EM EQUIPMENT WITH CPU PATH
  1405. SA1 ECS
  1406. RJ DBL DISABLE ECS BLOCK
  1407. DLB2 SA1 EEC
  1408. RJ DBL DISABLE EXTERNAL ECS BLOCK
  1409. EQ DLB4 DISABLE SIMULTANEOUS UEM/ESM BLOCK
  1410.  
  1411. DLB3 SA1 ESTP CHECK EXTENDED MEMORY TYPE
  1412. SX2 ESTE
  1413. IX2 X2*X3
  1414. AX1 36
  1415. IX1 X1+X2
  1416. SA1 X1 READ EST
  1417. MX2 -12
  1418. BX2 -X2*X1
  1419. LX2 3
  1420. SA1 X2+DILL READ EM TYPE
  1421. AX1 18
  1422. MX2 -3
  1423. BX1 -X2*X1
  1424. SX1 X1-4
  1425. ZR X1,DLB2 IF TYPE IS UEM
  1426. SA1 UEML
  1427. LX1 59-1
  1428. NG X1,DLB5 IF SIMULTANEOUS UEM/ESM DEFINED
  1429. DLB4 SA1 SUE
  1430. RJ DBL DISABLE SIMULTANEOUS UEM/ESM BLOCK
  1431. DLB5 SA1 ECRL
  1432. LX1 12
  1433. MX0 12
  1434. BX1 X0*X1
  1435. NZ X1,DLB6 IF USER EM IS DEFINED
  1436. SA1 UEC
  1437. RJ DBL DISABLE LOAD OF USER ECS BLOCK
  1438. SA1 SCPUEC
  1439. RJ DBL DISABLE LOAD OF SCP USER ECS BLOCK
  1440. NZ X3,DLB6 IF EM EQUIPMENT DEFINED
  1441. SA1 EUE
  1442. RJ DBL DISABLE ECS OR USER ECS BLOCK
  1443. DLB6 SA4 MMFL DETERMINE PRESENCE OF MMF
  1444. BX5 X4
  1445. LX5 59-45
  1446. NG X5,DLB6.1 IF SHARED BUFFERED DEVICES PRESENT
  1447. SA1 BIOMMF
  1448. RJ DBL DISABLE LOAD OF *BIOMMF* BLOCK
  1449. DLB6.1 LX5 59-46-59+45
  1450. NG X5,DLB7 IF LOW SPEED PORT MMF
  1451. SA1 LSPMMF
  1452. RJ DBL DISABLE LOAD OF *LSPMMF* BLOCK
  1453. MX1 -9
  1454. LX1 36
  1455. BX5 -X1*X4
  1456. NZ X5,DLB8 IF MMF PRESENT
  1457. DLB7 SA1 MMF
  1458. RJ DBL DISABLE LOAD OF *MMF* BLOCK
  1459. SA1 ECRL
  1460. LX1 12
  1461. MX0 12
  1462. BX1 X0*X1
  1463. NZ X1,DLB8 IF USER EM DEFINED
  1464. SA1 ECSBUF
  1465. RJ DBL DISABLE LOAD OF ECS BUFFER
  1466. SA1 MMFBUF
  1467. RJ DBL DISABLE LOAD OF MMF BUFFERS
  1468. DLB8 LX4 59-47
  1469. NG X4,DLB9 IF INDEPENDENT SHARED DEVICES EXIST
  1470. SA1 ISD DISABLE ISD BLOCK
  1471. RJ DBL
  1472. NZ X5,DLB9 IF MMF PRESENT
  1473. SA1 ISDMMF DISABLE ISD/MMF COMMON CODE BLOCK
  1474. RJ DBL
  1475. DLB9 SA1 MABL GET HARDWARE OPTIONS
  1476. LX1 59-47
  1477. NG X1,DLB10 IF CM EXTENSION NOT PRESENT
  1478. SA1 CMU
  1479. RJ DBL DISABLE CMU
  1480. EQ DLB11 CONTINUE
  1481.  
  1482. DLB10 LX1 59-39-59+47
  1483. PL X1,DLB11 IF CMU PRESENT
  1484. SA1 CMU
  1485. RJ SWT SWITCH TO *0CMU* BLOCK
  1486. DLB11 SA2 SSTL CHECK PRESENCE OF SYSTEM CP (SCP)
  1487. LX2 59-39
  1488. PL X2,DLB12 IF SYSTEM CP (SCP) FACILITY PRESENT
  1489. SA1 SCP
  1490. RJ DBL DISABLE SCP BLOCK LOAD
  1491. SA1 SCPUEC
  1492. RJ DBL DISABLE LOAD OF SCP USER ECS BLOCK
  1493. DLB12 SA1 ACPL CHECK DUAL CPU STATUS
  1494. SA2 A1+B1
  1495. BX1 X1+X2
  1496. PL X1,DLB13 IF DUAL CPU
  1497. SA1 DCP
  1498. RJ DBL DISABLE LOAD OF *DCP* BLOCK
  1499. DLB13 SA1 SSTL CHECK FOR SUB-CONTROL POINTS DISABLED
  1500. LX1 59-35
  1501. PL X1,DLB14 IF SUBCP NOT DISABLED
  1502. SA1 SUBCP
  1503. RJ DBL DISABLE LOAD OF *SUBCP* BLOCK
  1504. DLB14 SA3 MABL
  1505. LX3 59-47
  1506. NG X3,DLB15 IF CME NOT PRESENT
  1507. SA1 CMUMTR
  1508. RJ DBL DISABLE CMU
  1509. EQ DLB16 CONTINUE
  1510.  
  1511. DLB15 LX3 59-37-59+47 CHECK CPU 1 ON
  1512. LX2 X3,B1 CHECK CPU 0 ON
  1513. BX2 X2+X3
  1514. LX3 59-42-59+37 CHECK FOR CYBER 170
  1515. BX1 -X3+X2
  1516. LX3 59-39-59+42 CHECK FOR CMU
  1517. BX1 -X3*X1
  1518. NG X1,DLB16 IF CMU .AND. (170 .OR. SINGLE CPU)
  1519. SA1 CMUMTR
  1520. RJ SWT SWITCH TO *0CMUMTR* BLOCK
  1521. DLB16 SA1 SSTL CHECK MASS STORAGE VALIDATION ENABLED
  1522. LX1 59-50
  1523. PL X1,DLB17 IF VALIDATION ENABLED
  1524. SA1 VMS
  1525. RJ DBL DISABLE LOAD OF *VMS* BLOCK
  1526. DLB17 SA3 MABL
  1527. SA2 EABL+DCEI SET CONSOLE DESCRIPTOR ADDRESS
  1528. LX2 36
  1529. MX6 -10
  1530. SA1 EABL+IOEI SET IOU DESCRIPTOR ADDRESS
  1531. LX1 18
  1532. SA1 X1+B1 READ IOU DESCRIPTOR FROM *SAB*
  1533. LX1 -12
  1534. SA2 X2 READ CONSOLE DESCRIPTOR FROM *SAB*
  1535. SX4 2020B SET MASK FOR *SCD* / *MDD*
  1536. LX2 -12
  1537. BX6 -X6*X1 CHECK BARREL 1 PPS
  1538. BX4 X4*X2 SET PRESENCE OF *SCD* / *MDD* IN BARREL 1
  1539. CX6 X6
  1540. CX4 X4 IGNORE OFF STATUS OF *SCD* / *MDD*
  1541. CX4 X4 *SCD* AND *MDD* OCCUPY THE SAME PP
  1542. IX6 X6-X4
  1543. NZ X6,DLB18 IF ANY PP-S OFF
  1544. BX1 X3
  1545. LX1 59-47
  1546. NG X1,DLB18 IF NOT CYBER 800
  1547. LX1 59-42-59+47
  1548. MX2 -8
  1549. PL X1,DLB18 IF 865/875 CPU
  1550. SA4 EABL+CPEI
  1551. LX4 18
  1552. SA1 X4 READ CPU-0 MODEL
  1553. AX1 28
  1554. BX6 -X2*X1
  1555. SX2 X6-0#13
  1556. ZR X2,DLB19 IF CYBER 810 CPU
  1557. SX2 X6-0#14
  1558. ZR X2,DLB19 IF CYBER 830 CPU
  1559. DLB18 SA1 CP830
  1560. RJ DBL DISABLE LOAD OF CYBER 810/830 CODE
  1561. DLB19 MX2 2
  1562. LX3 59-46
  1563. BX3 X2*X3
  1564. BX3 X3-X2
  1565. ZR X3,DLB20 IF CYBER 176
  1566. SA1 CP176
  1567. RJ DBL
  1568. SA1 XP176
  1569. RJ DBL
  1570. DLB20 SA2 BIOL CHECK FOR BUFFERED I/O
  1571. AX2 24
  1572. SX2 X2
  1573. NZ X2,DLB22 IF BUFFERED I/O IN USE
  1574. SA1 BUFIO
  1575. RJ DBL
  1576. SA1 IHPFMD
  1577. RJ DBL
  1578. DLB21 SA1 XP819
  1579. RJ DBL
  1580. SA1 IH819
  1581. RJ DBL
  1582. EQ DLB23 CONTINUE
  1583.  
  1584. DLB22 NZ X3,DLB21 IF NOT CYBER 176 (NO 819-S)
  1585. SA1 IHPFMD
  1586. RJ DBL
  1587. DLB23 SA1 SSTL CHECK DATA PROBE
  1588. LX1 59-30
  1589. PL X1,DLB24 IF DATA PROBE ENABLED
  1590. SA1 PROBE DISABLE DATA PROBE SEGMENT
  1591. RJ DBL
  1592. DLB24 SA1 SSTL CHECK FOR TRACE ENABLED
  1593. LX1 59-29
  1594. PL X1,DLB24.1 IF TRACE ENABLED
  1595. SA1 TRACE DISABLE TRACE SEGMENT
  1596. RJ DBL
  1597. DLB24.1 SA1 SSTL CHECK FOR *VE=* ENTERED AT DEADSTART
  1598. LX1 59-23
  1599. PL X1,DLB25 IF *VE=* ENTERED AT DEADSTART
  1600. SA1 NVE
  1601. RJ DBL DISABLE NVE BLOCK
  1602. DLB25 SA1 SSTL CHECK MEMORY CLEARING
  1603. LX1 59-58
  1604. PL X1,DLB26 IF MEMORY CLEARING ENABLED
  1605. SA1 MCE
  1606. RJ DBL DISABLE *MCE* BLOCK
  1607. DLB26 SA1 CPPL CHECK CONCURRENT CHANNELS/PP-S PRESENT
  1608. MX0 -6
  1609. LX0 11-0
  1610. BX1 -X0*X1
  1611. NZ X1,DLB27 IF CONCURRENT PP-S ARE PRESENT
  1612. SA1 CPP
  1613. RJ DBL DISABLE CPP BLOCK
  1614. DLB27 SA2 PCPP
  1615. SX2 X2+
  1616. NZ X2,DLB28 IF PSEUDO-CONTROL POINTS PRESENT
  1617. SA1 PCP
  1618. RJ DBL DISABLE PCP BLOCK
  1619. DLB28 EQ DLB RETURN
  1620. SWT SPACE 4,10
  1621. ** SWT - SWITCH CONTROL BYTES FOR ASSOCIATED BLOCK ENTRIES.
  1622. *
  1623. * ENTRY (A1) = ADDRESS OF FIRST CONTROL WORD.
  1624. *
  1625. * USES A - 3, 6, 7.
  1626. * X - 1, 2, 3, 6, 7.
  1627.  
  1628.  
  1629. SWT SUBR ENTRY/EXIT
  1630. MX2 42
  1631. SA3 A1+B1 ASSOCIATED CONTROL WORD
  1632. BX6 X2*X1
  1633. BX7 X2*X3
  1634. BX1 -X2*X1
  1635. BX3 -X2*X3
  1636. BX6 X6+X3 NAME + TOGGLED STATUS
  1637. BX7 X7+X1
  1638. SA6 A1
  1639. SA7 A3
  1640. EQ SWTX RETURN
  1641. REL SPACE 4,10
  1642. ** REL - RELOCATE VALUES USED IN THE *T* INSTRUCTIONS.
  1643.  
  1644.  
  1645. REL SUBR ENTRY/EXIT
  1646. SA1 .BC
  1647. SB7 TRLAL-1
  1648. ZR X1,REL1 IF BATCH MODE
  1649. SA2 ESTP LOCATE CYBER 176 EXCHANGE PACKAGE AREA
  1650. MX3 -12
  1651. LX2 24
  1652. SX6 X2+EQDE FWA EST
  1653. LX2 12
  1654. BX2 -X3*X2 SIZE OF EST
  1655. R= X3,ESTE
  1656. IX2 X2*X3
  1657. MX7 -9
  1658. SA1 BIOL SET BUFFER FOR CPUMTR ASSEMBLY
  1659. IX2 X6+X2 LWA + 1 OF EST
  1660. SX6 X1
  1661. IX2 X2-X7 ROUND TO NEAREST 1000B
  1662. AX1 48-6
  1663. BX7 X7*X2 BLOCK ORIGIN OF EXCHANGE PACKAGE AREA
  1664. SA6 MBUF SET ORIGIN OF LOAD
  1665. SA7 SPBO
  1666. SA6 OB
  1667. SA2 PBUF SET ORIGIN FOR *CPUMTR* PRESET BLOCK
  1668. MX7 12
  1669. IX6 X2+X1
  1670. SA7 CMCL SET NO MOVE PENDING AT CP ZERO
  1671. SA6 A2
  1672. REL1 SA1 TRLA+B7 SET NEXT RELOCATION WORD
  1673. SB7 B7-B1
  1674. UX4,B6 X1 SET POSITION IN WORD
  1675. SA2 X1 GET WORD
  1676. LX1 -30
  1677. SX3 X1
  1678. SX1 X1
  1679. LX4 59-29
  1680. PL X1,REL2 IF POSITIVE VALUE WANTED
  1681. BX1 -X1
  1682. REL2 SA1 X1
  1683. PL X4,REL3 IF FWA WANTED
  1684. AX1 24 GET LWA
  1685. REL3 PL X3,REL4 IF COMPLEMENT OF ADDRESS WANTED
  1686. BX1 -X1
  1687. REL4 MX7 -18
  1688. BX1 -X7*X1
  1689. SB5 B6-60
  1690. AX2 X2,B5 POSITION ADDRESS
  1691. BX3 -X7*X2 GET ADDRESS
  1692. BX2 X7*X2 MASK OUT ADDRESS
  1693. SX3 X3
  1694. IX3 X3+X1 GENERATE NEW ADDRESS
  1695. BX1 -X7*X3
  1696. BX3 X7*X3 OVERFLOW IF SUBTRACTION
  1697. LX3 -18
  1698. IX3 X3+X1
  1699. BX2 X2+X3 MERGE ADDRESS
  1700. LX6 X2,B6 REPOSITION INSTRUCTION
  1701. SA6 A2
  1702. PL B7,REL1 IF STILL MORE INSTRUCTIONS TO MODIFY
  1703. EQ RELX RETURN
  1704.  
  1705. * REMOTE CODE CONTAINING THE VARIABLE TABLE/BUFFER REFERENCES
  1706.  
  1707. TRLA BSS 0
  1708. TINST HERE
  1709. TRLAL EQU *-TRLA
  1710.  
  1711. * VALUES USED FOR RELOCATION AT PRESET TIME.
  1712.  
  1713. OB VFD 42/0,18/ORG
  1714. MBUF VFD 42/0,18/LBUF
  1715. PBUF VFD 42/0,18//DSL/CPML*100B
  1716. BUFFERS SPACE 4
  1717. * BUFFERS.
  1718.  
  1719.  
  1720. RBUF EQU PRS RELOCATABLE TEXT BUFFER
  1721. RBUFL EQU 1002B BUFFER LENGTH
  1722.  
  1723. .P1 EQU RBUF+RBUFL
  1724. .P2 EQU .P1-ORG+120B ALLOW FOR BATCH MODE LOAD LENGTH
  1725. ERRNG /DSL/CPML*100B-.P2 *CPUMLD* OVERFLOW
  1726.  
  1727. LBUF EQU /DSL/CPML*100B+/DSL/PRSL*100B LOAD BUFFER
  1728.  
  1729. CON 1
  1730.  
  1731. END CPUMLD