Table of Contents

CPMEM

Table Of Contents

  • [00025] CPMEM - CONTROL POINT MEMORY UTILITIES.
  • [00027] CONTROL POINT MEMORY UTILITIES.
  • [00037] LOCAL SYMBOLS.
  • [00058] FET DEFINITIONS AND GLOBAL STORAGE.
  • [01316] SUBROUTINES.
  • [01318] ACA - ASSEMBLE CORRECTION ADDRESS.
  • [01348] ACD - ASSEMBLE CORRECTION DATA.
  • [01369] ACS - ASSEMBLE CHARACTER STRING.
  • [01410] ARG - PROCESS ARGUMENTS.
  • [01478] CMP - COMPARE WORD PAIRS.
  • [01506] COF - SET OUTPUT FILE NAME AND CHECK FILE ASSIGNMENT.
  • [01577] DCK - STRING OUT DATA.
  • [01634] DCM - DUMP CENTRAL MEMORY.
  • [01778] DEC - DUMP EXTENDED CORE STORAGE (ECS).
  • [01901] DXP - DUMP EXCHANGE PACKAGE.
  • [02129] EBF - EMPTY BUFFER.
  • [02148] END - PROCESS END.
  • [02158] ERR - PROCESS ERROR.
  • [02171] LDF - LOAD MEMORY FROM FILE.
  • [02239] LDW - LOAD ONE WORD.
  • [02291] OCB - CONVERT OCTAL BY BYTES.
  • [02340] OCT - LIST OCTAL OR OCTAL WITH DISPLAY.
  • [02442] PEP - PREPARE EXCHANGE PACKAGE.
  • [02493] RMW - READ MEMORY WORDS.
  • [02526] RNC - READ NEXT CORRECTION.
  • [02551] ROW - READ ONE WORD FROM DUMP FILE.
  • [02594] SDC - SET DISABLE TERMINAL CONTROL.
  • [02620] SHI - SET HEADER INFORMATION.
  • [02635] SHL - SET HEADER LINE.
  • [02708] SUE - SET USER EM SHIFT COUNT.
  • [02731] WPT - WRITE PREFIX TABLE.
  • [02800] WTF - WRITE MEMORY TO FILE.

Source Code

CPMEM.txt
  1. IDENT CPMEM,FETS
  2. ABS
  3. SST LA,FL,DMPL
  4.  
  5. ENTRY DED
  6. ENTRY DEP
  7. ENTRY DMB
  8. ENTRY DMDECS
  9. ENTRY DMPECS
  10. ENTRY DMD
  11. ENTRY DMM
  12. ENTRY DMP
  13. ENTRY LBC
  14. ENTRY LOC
  15. ENTRY PBC
  16. ENTRY RBR
  17. ENTRY WBR
  18. ENTRY DMP=
  19. ENTRY MFL=
  20. ENTRY SSJ=
  21.  
  22. *COMMENT CPMEM - CONTROL POINT MEMORY DUMP.
  23. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  24. SYSCOM B1
  25. TITLE CPMEM - CONTROL POINT MEMORY UTILITIES.
  26. SPACE 4
  27. *** CPMEM - CONTROL POINT MEMORY UTILITIES.
  28. * J.C. BOHNHOFF. CPD. 72/12/10.
  29. SPACE 4
  30. *** CPMEM PROVIDES UTILITIES FOR LOADING, DUMPING, AND
  31. * MODIFYING CONTROL POINT MEMORY.
  32. *
  33. * ALL NUMERIC ARGUMENTS SPECIFIED BELOW MAY BE IN EITHER OCTAL
  34. * OR DECIMAL BASE. IF THE LAST CHARACTER OF THE ARGUMENT IS *B*,
  35. * THEN THE NUMBER IS OCTAL - IF *D*, THE NUMBER IS DECIMAL. IF
  36. * NO RADIX IS SPECIFIED, OCTAL IS ASSUMED.
  37. TITLE LOCAL SYMBOLS.
  38. * LOCAL SYMBOLS.
  39.  
  40.  
  41. FBUFL EQU 2001B USER FILE BUFFER SIZE
  42. DBUFL EQU 401B SYSTEM DUMP FILE BUFFER SIZE
  43. PBUFL EQU 1301B *SFM* BUFFER LENGTH
  44. MBUFL EQU 1301B MACHINE DUMP BUFFER LENGTH
  45. PWDC EQU 135 PAGE WIDTH (DISPLAY CODE TRANSLATION)
  46. PWNI EQU 130 PAGE WIDTH (NO DISPLAY CODE TRANSLATION)
  47.  
  48. NOREF .1,.2,.3,.4,.5,.6,.7,.8,.9 SCRATCH SYMBOLS
  49. SPACE 4
  50. * COMMON DECKS.
  51.  
  52.  
  53. *CALL COMCMAC
  54. *CALL COMCCMD
  55. QUAL COMSSFM
  56. *CALL COMSSFM
  57. QUAL *
  58. TITLE FET DEFINITIONS AND GLOBAL STORAGE.
  59. * FETS.
  60.  
  61. ORG 120B
  62. FETS BSS 0
  63.  
  64.  
  65. F BSS 0 USER FILE
  66. TAPE1 FILEB FBUF,FBUFL,(FET=8)
  67.  
  68. D BSS 0 SYSTEM DUMP FILE
  69. DMPFIL RFILEB DBUF,DBUFL
  70.  
  71. DD EQU *
  72. ORG D
  73. VFD 42/3LDM*,18/3
  74. ORG DD
  75.  
  76. S BSS 0 *SFM* FET
  77. SFMCALL FILEB PBUF,PBUFL,(FET=6)
  78.  
  79. M BSS 0 MACHINE DUMP FILE
  80. ZZZZDMM FILEB MBUF,MBUFL,(FET=8)
  81.  
  82. INFIL CON 0LINPUT+3 INPUT FILE NAME
  83. OUTFIL CON 0LOUTPUT+3 OUTPUT FILE NAME
  84. PNCHFIL CON 0LPUNCHB+3 PUNCH FILE NAME
  85. TAPFIL CON 0LTAPE TAPE FILE NAME
  86. TTYFIL CON 0LZZZDUMP+3 OUTPUT FILE NAME IF TTY
  87. DMBFIL CON 0LZZZZDMB+3 BINARY DUMP FILE
  88. SPACE 4
  89. * GLOBAL STORAGE.
  90.  
  91.  
  92. * MAINTAIN THIS ORDER.
  93.  
  94. P1 CON 0 FIRST OR ONLY ARGUMENT
  95. P2 CON 0 SECOND ARGUMENT
  96. LA CON 0 LINE ADDRESS
  97. DB CON 0 DUMP BUFFER INDEX
  98. DC VFD 6/36B,18/,18/2,18/4 DUMP CONTROL WORD
  99. IND CON BUF2
  100. DI CON 0 DUMP FILE PRU ADDRESS
  101. CC CON 0 CURRENT COMMAND SCAN COLUMN - 1
  102. FL CON 0 CURRENT FIELD LENGTH
  103. AF CON 0 ABORT FLAG ("0 MEANS ABORT)
  104. DF CON 0 DUMP FORMAT ("0 MEANS *WITH DISPLAY*)
  105. DMPFL CON 0 DUMP FILE FL
  106. TICF CON 0 TERMINAL INTERRUPT CONTROL FLAG
  107. BA CON 0 BUFFER ADDRESS (USED BY ECS ROUTINES)
  108. ECSFL CON 0 EXTENDED MEMORY FIELD LENGTH
  109. DUPLIN DATA C* DUPLICATED LINES.*
  110. DUPLINL EQU *-DUPLIN
  111. PD CON 1LS PRINT DENSITY
  112. PL CON 0 PAGE LENGTH
  113. PW CON 0 PAGE WIDTH
  114. UESC VFD 1/1,59/0 USER EM SHIFT COUNT
  115. SPACE 4
  116. * DUMP HEADER.
  117.  
  118.  
  119. VERF CON VERS FWA OF DUMP HEADER
  120. VERL CON LHDR-VERS LENGTH OF HEADER
  121. VERS CON 10H1VERSION=
  122. VERW CON 0
  123. CON 0
  124. DATE CON 10H YY/MM/DD.
  125. TIME CON 10H HH.MM.SS.
  126. VERE EQU *
  127. CON 0 LINE TERMINATOR
  128. LFMT CON 2LR PRINTER AUTO EJECT
  129. BLNK CON 10H
  130. CON 0
  131. LHDR EQU *
  132. SPACE 4,10
  133. * MACHINE MEMORY RECORD HEADERS.
  134.  
  135.  
  136. MMFH VFD 42/0LM00,18/0 FILE HEADER
  137. MMDN VFD 12/0L00,48/1H DUMP NUMBER
  138.  
  139. MMCM VFD 42/3LCM ,18/0 MEMORY RECORD HEADER
  140. CON 0,0,0
  141. MMCML EQU *-MMCM
  142. SPACE 4
  143. * ERROR MESSAGES.
  144.  
  145.  
  146. ADRERR DATA C* FWA .GE. LWA+1.*
  147. ARGERR DATA C* ARGUMENT ERROR.*
  148. CALERR DATA C* JOB NOT SYSTEM ORIGIN.*
  149. RNGERR DATA C* FWA/LWA .GE. FL.*
  150. EORERR DATA C+ DM* TOO SHORT.+
  151. ECSERR DATA C* EXTENDED MEMORY READ ERROR.*
  152. DMB TITLE DMB - DUMP IN BINARY FORMAT.
  153. *** DMB(P1,P2)
  154. * DUMP EXCHANGE PACKAGE, CM, AND EXTENDED MEMORY IN BINARY.
  155. *
  156. * CALL OPTIONS-
  157. * DMB.
  158. * DUMP EXCHANGE PACKAGE AND CM IN BINARY.
  159. *
  160. * DMB(P1)
  161. * SAME AS *DMB* EXCEPT P1 IS PLACED IN THE DUMP RECORD NAME
  162. * IN CHARACTER POSITIONS 2 THROUGH 7. P1 IS AN OCTAL
  163. * NUMBER IN THE RANGE 0 - 777777B.
  164. *
  165. * DMB(P1,P2)
  166. * P1 IS USED IN THE SAME WAY AS DESCRIBED ABOVE. A NON-ZERO
  167. * VALUE FOR P2 WILL CAUSE ASSIGNED EXTENDED MEMORY TO BE DUMPED.
  168. *
  169. * IF P1 IS GREATER THAN 377777B, AN ABORT WILL BE DONE AT
  170. * DUMP COMPLETION.
  171. * IF EITHER P1 OR P2 IS NOT NUMERIC OR OUT OF RANGE, THE
  172. * MESSAGE *ARGUMENT ERROR* WILL BE ISSUED TO THE DAYFILE
  173. * AND AN ABORT WILL BE FORCED.
  174. *
  175. * THE DUMP FILE WILL BE NAMED *ZZZZDMB* AND IT WILL NOT BE
  176. * REWOUND BEFORE OR AFTER THE DUMP. IF THE FILE IS
  177. * ASSIGNED TO DEVICE *TT*, IT WILL BE RETURNED
  178. * BEFORE THE DUMP AND A MASS STORAGE FILE
  179. * WILL BE CREATED.
  180. *
  181. * BINARY DUMP FILE FORMAT-
  182. * EACH DUMP CREATES ONE LOGICAL RECORD ON *ZZZZDMB*.
  183. *
  184. * PREFIX TABLE
  185. *
  186. *T W0 12/ 7700,12/ 0016,36/ 0
  187. *T,W1 42/ *DNNNNNN*,18/ 0
  188. *T,W2 60/ * YY/MM/DD.*
  189. *T,W3 60/ * HH.MM.SS.*
  190. *T,W4 60/ (PGNR) BLANK FILLED
  191. *T,W5 60/ 0
  192. *T,W6-7 60/ 0
  193. *T,W10 60/ (PGNR) BLANK FILLED
  194. *T,W11-16 60/ (CCDR) - (CCDR)+5
  195. *
  196. * DUMP TEXT HEADER.
  197. *
  198. *T 42/ *DNNNNNN*,18/ 0
  199. *
  200. *T 42/ *ID*,18/ 5
  201. *T, W1 60/ VERSION
  202. *T, W2 60/ VERSION
  203. *T, W3 60/ * YY/MM/DD.*
  204. *T, W4 60/ * HH.MM.SS.*
  205. *T, W5 60/ MACHINE CHARACTERISTICS
  206. *
  207. *T 42/ *XP*,18/ 32B
  208. *T, W1-20 60/ EXCHANGE PACKAGE
  209. *T, W21 60/ ((A0 REGISTER))
  210. *T, 60/ ...
  211. *T, 60/ ...
  212. *T, W30 60/ ((A7 REGISTER))
  213. *T, W31 60/ (RA)
  214. *T, W32 60/ (RA+1)
  215. *
  216. *T 42/ *CM*,18/ CMFL/100B
  217. *T, W1-N 60/ CM WORDS
  218. *
  219. *T 42/ *ECS*,18/ ECFL/1000B
  220. *T, W1-N 60/ EXTENDED MEMORY WORDS
  221. *
  222. *T 42/ *END*,18/ 0
  223. *
  224. * IF AN ECS ERROR OCCURS, THE BLOCK IN ERROR WILL BE FILLED
  225. * WITH WORDS IN THE FOLLOWING FORMAT-
  226. *
  227. *T 48/ *ECSERROR*,12/ NNNN
  228. * WHERE NNNN IS THE WORD NUMBER IN THE BLOCK (STARTING WITH 1).
  229.  
  230.  
  231. DMB BSS 0 ENTRY
  232. SB1 1
  233. SB2 1 SET EXCHANGE OPTION
  234. SB3 DMBC SET EXCHANGE ADDRESS
  235. RJ SDC DISABLE TERMINAL CONTROL
  236. RJ SHI SET HEADER INFORMATION
  237. RJ SUE SET USER EM SHIFT
  238. RJ ARG PROCESS ARGUMENTS
  239. SA1 PGNR
  240. ZR X1,DMB2 IF *SFP* CALL
  241. ZR B7,DMB2 IF NO ARGUMENTS
  242. SA5 P1 CONVERT FIRST ARGUMENT
  243. ZR X5,DMB1 IF ABSENT
  244. SB7 0
  245. RJ DXB
  246. SX2 ARGERR
  247. NZ X4,ERR IF CONVERSION ERROR
  248. MX1 42
  249. BX1 X1*X6
  250. NZ X1,ERR IF OUT OF RANGE
  251. SA6 P1
  252. DMB1 SA5 P2 CONVERT SECOND ARGUMENT
  253. ZR X5,DMB2 IF ABSENT
  254. SB7 0
  255. RJ DXB
  256. SX2 ARGERR
  257. NZ X4,ERR IF CONVERSION ERROR
  258. SA6 P2
  259. DMB2 SA1 P1
  260. MX2 -17
  261. BX6 X2*X1 SET ABORT FLAG
  262. SA6 AF
  263.  
  264. * PREPARE REMAINDER OF HEADER.
  265.  
  266. RJ WOD GENERATE RECORD NAME
  267. MX2 -6*6
  268. SA1 BHDW
  269. BX2 -X2*X7
  270. LX2 53-35
  271. BX7 X1+X2
  272. SA7 BHDW
  273. GETMC DMBB
  274.  
  275. * PREPARE FET FOR DUMP FILE AND WRITE HEADER.
  276.  
  277. SA1 DMBFIL
  278. SX2 F
  279. BX6 X1
  280. SA6 X2
  281. RJ STF CHECK FOR *TT* FILE ASSIGNMENT
  282. NZ X6,DMB3 IF NOT *TT* ASSIGNMENT
  283. RETURN X2,R
  284. DMB3 RJ WPT WRITE PREFIX TABLE
  285. WRITEW X2,BHDW,BIDWE-BHDW
  286. WRITEW X2,VERW,VERE-VERW
  287. WRITEW X2,DMBB,B1
  288.  
  289. * DUMP EXCHANGE PACKAGE.
  290.  
  291. RJ PEP PREPARE EXCHANGE PACKAGE
  292. WRITEW F,BXPW,B1 WRITE HEADER
  293. WRITEW X2,EPB,32B WRITE PACKAGE DATA
  294.  
  295. * DUMP CM.
  296.  
  297. SA1 BCMW SET CM FL/100B IN HEADER
  298. SX6 A0
  299. AX6 6
  300. BX7 X1+X6
  301. SA7 A1
  302. WRITEW F,BCMW,B1 WRITE CM DUMP HEADER
  303. SX0 A0 DUMP LWA
  304. BX5 X5-X5 DUMP FWA
  305. ZR X0,DMB5 IF NO CM FL
  306. RECALL D
  307. SA2 D+1
  308. RJ EBF EMPTY BUFFER
  309. SX6 3 SET PRU OF FWA OF CM
  310. SA6 D+6
  311. READ D
  312. DMB4 READW D,BUF,100B
  313. NZ X1,DMB12 IF EOR
  314. WRITEW F,BUF,100B
  315. SX5 X5+100B
  316. IX1 X0-X5
  317. ZR X1,DMB5 IF END OF CM DUMP
  318. SX1 X5-DMPL
  319. NG X1,DMB4 IF NOT IN MEMORY
  320.  
  321. * DUMP FROM MEMORY.
  322.  
  323. IX2 X0-X5 REMAINING WORDS TO DUMP
  324. SB7 X2-10B
  325. NG B7,DMP5 IF END OF CM DUMP
  326. WRITEW F,DMPL,B7
  327. SX1 A0-10B-10B MOVE LAST WORDS TO *BUF*
  328. SB6 BUF
  329. SB7 10B
  330. RJ RMW
  331. WRITEW F,BUF,10B
  332.  
  333. * DUMP ECS.
  334.  
  335. DMB5 SA1 P2
  336. ZR X1,DMB9 IF NO EXTENDED MEMORY DUMP WANTED
  337. RECALL D
  338. SA2 D+1 EMPTY BUFFER
  339. RJ EBF
  340. SX6 B1 READ FIRST PRU
  341. SA6 D+6
  342. RPHR D,R
  343. SA1 DBUF+ECSW GET EXTENDED MEMORY FL
  344. MX0 -12
  345. BX6 -X0*X1
  346. SA4 UESC USER EM SHIFT COUNT
  347. SB4 X4+9
  348. LX6 B4
  349. SA6 ECSFL
  350. ZR X6,DMB9 IF NO EXTENDED MEMORY
  351.  
  352. * WRITE EXTENDED MEMORY DUMP HEADER.
  353.  
  354. SA1 BEMW PLACE EXTENDED MEMORY FL/1000B IN HEADER
  355. AX6 9
  356. BX6 X1+X6
  357. SA6 A1+
  358. WRITEW F,BEMW,B1
  359.  
  360. * DUMP ECS.
  361.  
  362. SA0 DBUF SET CM ADDRESS
  363. BX0 X0-X0 SET EXTENDED MEMORY FWA
  364. SX5 B0
  365. DMB6 SA1 ECSFL GET EXTENDED MEMORY LWA
  366. ERRNG DBUFL-400B
  367. SB3 400B
  368. IX2 X1-X0 CURRENT FWA-LWA
  369. SX4 B3+
  370. IX4 X2-X4
  371. ZR X2,DMB9 IF NO WORDS REMAINING
  372. PL X4,DMB7 IF 400B WORDS REMAIN
  373. SX5 B1 SET END OF DUMP FLAG
  374. SB3 X2
  375. DMB7 RE B3 READ ECS
  376. - EQ DMB10 IF READ ERROR
  377. DMB8 SX1 B3 ADVANCE FWA
  378. IX0 X0+X1
  379. WRITEW F,A0,B3
  380. ZR X5,DMB6 IF NOT END OF DUMP
  381. DMB9 WRITEW F,BENW,B1 TERMINATE DUMP FILE
  382. WRITER X2,R
  383. SA1 AF
  384. ZR X1,END IF NO ABORT
  385. SX2 ECSERR
  386. NG X1,ERR IF EXTENDED MEMORY READ ERROR
  387. ABORT
  388.  
  389. * PROCESS EXTENDED MEMORY READ ERROR.
  390.  
  391. DMB10 SA1 DMBA
  392. SB2 B0
  393. SX2 B1
  394. SA3 AF SET EXTENDED MEMORY READ ERROR FLAG
  395. MX7 1
  396. BX7 X7+X3
  397. SA7 AF
  398. DMB11 BX7 X1+X2
  399. SA7 A0+B2
  400. SB2 B2+B1
  401. SX2 X2+B1
  402. LT B2,B3,DMB11 IF NOT END OF BUFFER
  403. EQ DMB8 WRITE BUFFER
  404.  
  405. * PROCESS EOR ON DM* FILE.
  406.  
  407. DMB12 SX2 EORERR
  408. EQ ERR TERMINATE DUMP
  409.  
  410. * EXTENDED MEMORY READ ERROR FLAG WORD.
  411.  
  412. DMBA VFD 48/8HECSERROR,12/0
  413.  
  414. * MACHINE CHARACTERISTICS.
  415.  
  416. DMBB CON 0
  417.  
  418. * PROCESS TERMINAL INTERRUPT.
  419.  
  420. DMBC BSS 20B EXCHANGE PACKAGE
  421. EQ END TERMINATE PROGRAM
  422.  
  423. * FILE FORMAT HEADER WORDS.
  424.  
  425. BHDW VFD 42/0LD,18/0
  426. BIDW VFD 42/0LID,18/5
  427. BIDWE EQU *
  428. BXPW VFD 42/0LXP,18/32B
  429. BCMW VFD 42/0LCM,18/0
  430. BEMW VFD 42/0LECS,18/0
  431. BENW VFD 42/0LEND,18/0
  432. DMXECS TITLE DMPECS/DMDECS - DUMP ECS WITH/WITHOUT DISPLAY.
  433. *** DMDECS(FWA,LWA)
  434. * DMPECS(FWA,LWA,F,LFN)
  435. * DUMP EXTENDED CORE STORAGE (ECS) WITH DISPLAY.
  436. *
  437. * DMPECS(FWA,LWA)
  438. * DUMP ECS.
  439. *
  440. *
  441. * CALL OPTIONS -
  442. *
  443. * DMPECS(LWA) OR DMDECS(LWA).
  444. * DUMP EXTENDED MEMORY FROM 0 TO LWA.
  445. *
  446. * DMPECS(FWA,LWA) OR DMDECS(FWA,LWA).
  447. * DUMP EXTENDED MEMORY FROM FWA TO LWA.
  448. *
  449. * DMPECS(FWA,LWA,F,LFN).
  450. * DUMP ECS FROM FWA TO LWA ON FILE LFN WITH PRINT FORMAT F.
  451. * THE PRINT FORMAT PARAMETER IS IGNORED.
  452. *
  453. *
  454. * NOTE - IN ALL CASES ABOVE THE *DMDECS* CALLS AND THE FOUR
  455. * PARAMETER *DMPECS* CALL WILL INCLUDE THE DISPLAY
  456. * REPRESENTATION OF EXTENDED MEMORY WORDS.
  457. *
  458. *
  459. * THE DUMP WILL END AT FLE IF LWA IS .GT. FLE.
  460. *
  461. * IF FWA IS .GE. FLE, FWA IS SET TO FLE-10B.
  462. *
  463. * A DUMP TO A TERMINAL OUTPUT FILE WILL BE IN 72 COLUMN FORMAT.
  464. *
  465. * DAYFILE MESSAGES -
  466. *
  467. * *ARGUMENT ERROR.*
  468. * BAD ADDRESS SPECIFIED.
  469. * *ECS READ ERROR.*
  470. * AN UNRECOVERABLE EXTENDED MEMORY READ ERROR OCCURED.
  471. * *FWA .GE. LWA+1.*
  472. * THE FIRST DUMP ADDRESS IS .GT. THE FINAL ADDRESS.
  473. * *INCORRECT REQUEST.*
  474. * NO ADDRESS GIVEN ON COMMAND.
  475. * *NO EXTENDED MEMORY.*
  476. * NO EXTENDED MEMORY FIELD LENGTH EXISTS.
  477. *
  478. * OUTPUT FILE MESSAGES -
  479. *
  480. * * EXCHANGE PACKAGE/MEMORY DUMP ON FILE ZZZDUMP.*
  481. * INDICATES FILE *OUTPUT* IS ASSIGNED
  482. * TO THE TERMINAL AND THAT THE DUMP
  483. * WAS PRINTED ON FILE *ZZZDUMP*.
  484.  
  485.  
  486. DMPECS BSS 0
  487. SA1 ACTR CHECK FOR 4 PARAMETERS
  488. SB6 X1-4
  489. NZ B6,DEP IF NOT SPECIAL FORMAT
  490. SA1 ARGR+3 SET OUTPUT FILE NAME
  491. MX0 42
  492. BX6 X0*X1
  493. SX7 3
  494. BX6 X6+X7
  495. SA6 OUTFIL
  496.  
  497. DMDECS BSS 0
  498. DED BSS 0
  499. SX6 1 SET DISPLAY CODE INDICATOR
  500. SA6 DF
  501.  
  502. DEP BSS 0
  503. SB1 1
  504. SB2 1 SET *DISTC* EXCHANGE OPTION
  505. SB3 DMPG SET EXCHANGE ADDRESS
  506. RJ SDC SET DISABLE TERMINAL CONTROL
  507. RJ SHI SET HEADER INFORMATION
  508. RJ SUE SET USER EM SHIFT
  509. SA1 ACTR
  510. ZR X1,DEP2 IF NOT A COMMAND
  511. SB6 X1
  512. MX0 42
  513. SA1 ARGR FIRST ARGUMENT
  514. SX2 DEPB * INCORRECT REQUEST.*
  515. ZR B6,ERR IF NO LWA GIVEN
  516. EQ B6,B1,DEP1 IF ONLY 1 ARGUMENT - IMPLIES FWA = 0
  517. SB7 B0
  518. BX5 X0*X1
  519. RJ DXB CONVERT DISPLAY TO OCTAL
  520. SX2 ARGERR * ARGUMENT ERROR.*
  521. NZ X4,ERR IF BAD ADDRESS GIVEN
  522. SA6 P1 FWA IN OCTAL
  523. MX0 42
  524. SA1 A1+B1 SECOND PARAMETER
  525. DEP1 BX5 X0*X1
  526. SB7 B0
  527. RJ DXB CONVERT DISPLAY TO OCTAL
  528. SX2 ARGERR * ARGUMENT ERROR.*
  529. NZ X4,ERR IF BAD ADDRESS GIVEN
  530. SA6 P2 LWA IN OCTAL
  531. EQ DEP3 GET EXTENDED MEMORY FL
  532.  
  533. * PROCESS SYSTEM REQUEST CALL.
  534.  
  535. DEP2 MX0 -24 FWA / LWA
  536. SA1 SPPR+1
  537. BX6 -X0*X1 SAVE LWA
  538. AX1 24
  539. SA6 P2
  540. BX7 -X0*X1 SAVE FWA
  541. SA1 SPPR CLEAR STATUS BYTE
  542. MX0 48
  543. LX0 24
  544. SA7 P1
  545. BX7 X0*X1
  546. SA7 A1
  547.  
  548. * ENTRY FROM THE COMMAND.
  549.  
  550. DEP3 SX7 B1
  551. SA1 P1 FWA
  552. IX6 X6+X7 LWA+1
  553. SX2 ADRERR * FWA .GE. LWA+1.*
  554. IX6 X1-X6
  555. PL X6,ERR IF FWA .GE. LWA+1
  556. SA7 D+6 READ FIRST PRU
  557. RPHR D,R
  558. SA1 DBUF+ECSW GET EXTENDED MEMORY FL
  559. MX0 -12
  560. SX2 DEPC * NO EXTENDED MEMORY.*
  561. BX1 -X0*X1
  562. BX6 X1 SET EXTENDED MEMORY FL
  563. ZR X1,ERR IF NO EXTENDED MEMORY FIELD LENGTH
  564. SA3 DEPA NEW FIRST HEADER LINE
  565. SA4 UESC USER EM SHIFT COUNT
  566. SB4 X4+9
  567. LX6 B4
  568. BX7 X3
  569. SA6 ECSFL
  570. SA7 SHLA
  571. RJ COF CHECK FILE ASSIGNMENT
  572.  
  573. * DUMP ECS.
  574.  
  575. RJ DEC DUMP ECS
  576. WRITER F,R WRITE END OF RECORD ON OUTPUT FILE
  577. EQ END END DUMP
  578.  
  579. DEPA DATA 10H EM DUMP
  580. DEPB DATA C* INCORRECT REQUEST.*
  581. DEPC DATA C* NO EXTENDED MEMORY.*
  582. DMX TITLE DMP/DMD - DUMP CM WITH/WITHOUT DISPLAY.
  583. *** DMD(FWA,LWA)
  584. * DUMP CENTRAL MEMORY WITH DISPLAY.
  585. *
  586. * DMP(FWA,LWA)
  587. * DUMP CENTRAL MEMORY.
  588. *
  589. *
  590. * CALL OPTIONS -
  591. *
  592. * DMD. OR DMP.
  593. * DUMP THE EXCHANGE PACKAGE AND CM FROM P-40B TO P+40B.
  594. *
  595. * DMD,LWA. OR DMP,LWA.
  596. * DUMP CENTRAL MEMORY FROM 0 TO LWA.
  597. *
  598. * DMD,FWA,LWA. OR DMP,FWA,LWA.
  599. * DUMP CENTRAL MEMORY FROM FWA TO LWA.
  600. *
  601. *
  602. * NOTE - IN ALL CASES ABOVE THE *DMD* CALLS WILL INCLUDE
  603. * THE DISPLAY REPRESENTATION OF CENTRAL MEMORY WORDS.
  604. *
  605. *
  606. * DUMPING WILL ALWAYS STOP AT FL IF LWA IS .GT. FL.
  607. *
  608. * IF FWA IS .GE. FL, FWA IS SET TO FL-10B.
  609. *
  610. * IF FWA .GE. 400000B, FWA IS SET TO FWA - 400000B
  611. * AND AN ABORT IS FORCED AFTER THE DUMP IS COMPLETE.
  612. *
  613. * IF EITHER FWA OR LWA IS NON-NUMERIC, THE REQUEST
  614. * IS INTERPRETED AS *DMD.* OR *DMP.*.
  615. *
  616. * IF A JOB HAS A TIME-SHARING ORIGIN, THE DUMP IS
  617. * FORMATTED FOR A 72-COLUMN TERMINAL PRINTER.
  618. *
  619. * DAYFILE MESSAGES -
  620. *
  621. * * FWA .GE. LWA+1.*
  622. * IF FIRST DUMP ADDRESS IS > THE TERMINAL ADDRESS.
  623. *
  624. * OUTPUT FILE MESSAGES -
  625. *
  626. * * EXCHANGE PACKAGE/MEMORY DUMP ON FILE ZZZDUMP.*
  627. * INDICATES FILE *OUTPUT* IS ASSIGNED
  628. * TO THE TERMINAL AND THAT THE DUMP
  629. * WAS PRINTED ON FILE *ZZZDUMP*.
  630.  
  631.  
  632. DMD BSS 0 ENTRY
  633. SX6 1 SET DISPLAY REPRESENTATION FORMAT
  634. SA6 DF
  635.  
  636. DMP BSS 0
  637. SB1 1
  638. SB2 1 SET *DISTC* EXCHANGE OPTION
  639. SB3 DMPG SET EXCHANGE ADDRESS
  640. RJ SDC SET DISABLE TERMINAL CONTROL
  641. RJ SHI SET HEADER INFORMATION
  642. RJ ARG PROCESS ARGUMENTS
  643.  
  644. * CHECK ARGUMENTS.
  645.  
  646. SA1 PGNR CHECK THE COMMAND
  647. ZR X1,DMP3 IF *SFP* CALL
  648. NE B7,B1,DMP1 IF NOT ONLY 1 ARGUMENT
  649. SA1 P1 SET ARGUMENT 1 AS LWA
  650. BX6 X6-X6
  651. LX7 X1
  652. SA6 A1
  653. SA7 A1+B1
  654. DMP1 SA5 P1 CONVERT FWA
  655. ZR X5,DMP2 IF ABSENT
  656. SB7 0
  657. RJ DXB
  658. SX0 377777B EXTRACT ABORT FLAG
  659. BX7 -X0*X6
  660. BX6 X0*X6 CLEAN FWA
  661. SA7 AF
  662. SA6 A5+ STORE FWA
  663. ZR X4,DMP2 IF NO ADDRESS ERROR
  664. SX6 0 SET EXCHANGE PACKAGE DUMP
  665. SA6 P1
  666. SA6 P2
  667. SA6 AF CLEAR ABORT FLAG
  668. JP DMP5 DUMP
  669.  
  670. DMP2 SA5 P2 CONVERT LWA
  671. ZR X5,DMP3 IF ABSENT
  672. SB7 0
  673. RJ DXB
  674. SA6 P2
  675. ZR X4,DMP3 IF NO ADDRESS ERROR
  676. SX6 0 SET EXCHANGE PACKAGE DUMP
  677. SA6 P1
  678. SA6 P2
  679. JP DMP5 DUMP
  680.  
  681. * CHECK DUMP LIMITS.
  682.  
  683. DMP3 SA1 P1
  684. SA3 P2
  685. IX6 X3-X1
  686. SX4 A0
  687. IX7 X3-X4 LWA-FL
  688. IX5 X1-X4 FWA-FL
  689. NG X5,DMP4 IF FWA < FL
  690. SX0 A0+ CHECK FOR NO FL
  691. ZR X0,DMP4 IF NO FL
  692. SX6 A0-10B SET FWA=FL-10B
  693. SA6 P1
  694. BX1 X6
  695. IX6 X3-X1
  696. DMP4 SX2 ADRERR * FWA .GE. LWA+1.*
  697. NG X6,ERR IF FWA > LWA
  698. NG X7,DMP5 IF LWA .LE. FL
  699. SX6 A0 SET LWA = FL
  700. SA6 A3
  701. DMP5 SX5 B0
  702. RJ COF CHECK FILE ASSIGNMENT
  703.  
  704. * DUMP.
  705.  
  706. DMP6 SA2 P1 CHECK EXCHANGE PACKAGE DUMP
  707. SA3 P2
  708. BX7 X2+X3
  709. NZ X7,DMP7 IF NOT EXCHANGE PACKAGE
  710. RJ DXP DUMP EXCHANGE PACKAGE
  711. SX6 BLNK SET SO VERSION WILL NOT PRINT
  712. SA6 VERF
  713. SX6 LHDR-BLNK
  714. SA6 VERL
  715. DMP7 RJ DCM DUMP CENTRAL MEMORY
  716. WRITER F,R TERMINATE LIST RECORD
  717.  
  718. * CHECK POST-DUMP ABORT REQUESTED.
  719.  
  720. SA1 AF
  721. ZR X1,END IF NO ABORT
  722. ABORT
  723.  
  724. * PROCESS TERMINAL INTERRUPT.
  725.  
  726. DMPG BSS 20B EXCHANGE ADDRESS BEGINS EXCHANGE PACKAGE
  727. BX6 X6-X6 CLEAR FET ADDRESS AND FET
  728. SA6 B1+B1
  729. SA6 F
  730. EQ END TERMINATE PROGRAM
  731. DMM TITLE DMM - DUMP MACHINE MEMORY.
  732. *** DMM,N.
  733. * DUMP MACHINE MEMORY IN *DSDI* FORMAT.
  734. *
  735. * N = DUMP NUMBER IN OCTAL. DEFAULT = 0.
  736. * N MUST BE IN THE RANGE 0 - 77B. THE VALUE
  737. * OF N IS CONVERTED TO DISPLAY CODE AND PLACED
  738. * IN DUMP HEADER ONE.
  739. *
  740. * THE DUMP FILE WILL BE NAMED ZZZZDMM AND WILL NOT
  741. * BE REWOUND BEFORE OR AFTER THE DUMP. IF THE FILE
  742. * IS ASSIGNED TO DEVICE *TT*, IT WILL BE RETURNED
  743. * BEFORE THE DUMP AND A MASS STORAGE FILE WILL
  744. * BE CREATED.
  745. *
  746. * MACHINE MEMORY DUMP FILE FORMAT.
  747. * EACH DUMP WILL BE ONE LOGICAL FILE ON ZZZZDMM.
  748. *
  749. * DUMP HEADER ONE.
  750. *
  751. *T 18/ *MNN*,42/ 0
  752. *T, 60/ * YY/MM/DD.*
  753. *T, 60/ * HH.MM.SS.*
  754. *T, 12/ *NN*,48/ (BLANKS)
  755. * -EOR-
  756. *
  757. * DUMP HEADER TWO.
  758. *
  759. *T 18/ *CM *,42/ MEMORY SIZE/1000B
  760. *T, 60/ 0
  761. *T, 60/ 0
  762. *T, 60/ 0
  763. * -EOR-
  764. *T 60/ CONTENT OF MACHINE MEMORY
  765. *T, 60/ ...
  766. * -EOR-
  767. * -EOF-
  768.  
  769.  
  770. DMM BSS 0 ENTRY
  771. SB1 1
  772. SB2 1 SET EXCHANGE OPTION
  773. SB3 DMMA SET EXCHANGE ADDRESS
  774. RJ SDC DISABLE TERMINAL CONTROL
  775. RJ SHI SET HEADER INFORMATION
  776. SA1 JOPR
  777. SX2 CALERR
  778. AX1 24
  779. SX1 X1-SYOT
  780. NZ X1,ERR IF NOT SYSTEM ORIGIN
  781. RJ ARG PROCESS ARGUMENTS
  782. SA1 PGNR
  783. ZR X1,DMM1 IF *SFP* CALL
  784. ZR B7,DMM1 IF NO ARGUMENTS
  785. SA5 P1 CONVERT ARGUMENT
  786. ZR X5,DMM1 IF ABSENT
  787. SB7 0
  788. RJ DXB
  789. SX2 ARGERR
  790. NZ X4,ERR IF CONVERSION ERROR
  791. SX1 X6-100B
  792. PL X1,ERR IF OUT OF RANGE
  793. SA6 P1
  794. DMM1 SA1 P1 GENERATE DUMP HEADER
  795. RJ WOD
  796. SX2 1RM*10000B
  797. MX3 -12
  798. BX6 -X3*X7
  799. BX7 X2+X6
  800. LX7 59-17
  801. SA7 MMFH
  802. MX3 -48
  803. SA2 MMDN
  804. LX6 59-11
  805. BX2 -X3*X2
  806. BX6 X6+X2
  807. SA6 A2+
  808. SX2 M
  809. RJ STF CHECK FILE ASSIGNMENT
  810. NZ X6,DMM2 IF NOT *TT*
  811. RETURN X2,R
  812. DMM2 WRITEW X2,MMFH,B1 WRITE FILE HEADER ONE
  813. WRITEW X2,DATE,2
  814. WRITEW X2,MMDN,B1
  815. WRITER X2
  816.  
  817. * GET MEMORY SIZE.
  818.  
  819. SX2 S CALL *SFM*
  820. SX7 /COMSSFM/MDFF
  821. RJ SFM READ NEXT BLOCK
  822. SA1 S+5
  823. MX3 -21
  824. LX1 24-3 CONVERT CM/100 TO CM/1000
  825. BX6 -X3*X1
  826. SA2 MMCM
  827. BX7 X2+X6
  828. SA7 A2
  829.  
  830. * WRITE FILE HEADER TWO.
  831.  
  832. RECALL M
  833. WRITEW X2,MMCM,MMCML
  834. WRITER X2,R
  835. SX2 S
  836. EQ DMM4 DUMP FIRST BLOCK
  837.  
  838. * DUMP MEMORY BLOCKS.
  839.  
  840. DMM3 SX2 S
  841. SA1 X2+B1 RESET IN = OUT = FIRST
  842. SX6 X1
  843. SA6 A1+B1
  844. SX7 /COMSSFM/MDFF
  845. SA6 A6+B1
  846. RJ SFM
  847. DMM4 SA1 X2+2 IN
  848. SA3 A1+B1 OUT
  849. IX0 X1-X3
  850. ZR X0,DMM5 IF END OF DUMP
  851. WRITEW M,X3,X0
  852. AX0 6
  853. SA1 S+5 INCREMENT FWA
  854. MX3 24
  855. IX6 X1+X0
  856. BX4 X1*X3
  857. LX4 24 LIMIT VALUE
  858. SA6 A1 CURRENT FWA
  859. MX3 -24
  860. BX6 -X3*X6
  861. IX6 X6-X4
  862. NG X6,DMM3 IF NOT END OF DUMP
  863. DMM5 WRITEF M
  864. EQ END TERMINATE DUMP
  865.  
  866. * PROCESS INTERRUPT.
  867.  
  868. DMMA BSS 20B EXCHANGE PACKAGE
  869. EQ END TERMINATE DUMP
  870.  
  871. LBC TITLE LBC - LOAD BINARY DATA.
  872. *** LBC,A.
  873. *
  874. * LOAD THE NEXT RECORD FROM FILE *INPUT* TO MEMORY STARTING AT
  875. * LOCATION A. IF A IS ABSENT, LOAD STARTING AT 0.
  876. *
  877. * DAYFILE MESSAGES -
  878. *
  879. * * ARGUMENT ERROR.*
  880. * LOAD ADDRESS IS NOT NUMERIC.
  881. * * FWA/LWA .GE. FL.*
  882. * LOAD ADDRESS IS \ FIELD LENGTH.
  883. * *RECORD TOO LONG.*
  884. * THE RECORD IS TOO LONG TO FIT IN MEMORY. MEMORY IS
  885. * FILLED AND THE EXCESS DATA ON THE RECORD IS SKIPPED.
  886. *E
  887.  
  888.  
  889. LBC BSS 0 ENTRY
  890. SB1 1
  891. SB2 0 SET *DISTC* FLAG OPTION
  892. RJ SDC SET DISABLE TERMINAL CONTROL
  893. RJ ARG PROCESS ARGUMENT
  894. SA5 P1 CONVERT FWA
  895. ZR X5,LBC1 IF NOT SPECIFIED
  896. SB7 0
  897. RJ DXB
  898. SX2 ARGERR * ARGUMENT ERROR.*
  899. NZ X4,ERR IF ADDRESS ERROR
  900. SX5 X6+
  901. LBC1 SX6 A0 CHECK FWA \ FL
  902. IX7 X5-X6
  903. SX2 RNGERR * FWA/LWA .GE. FL.*
  904. PL X7,ERR IF ERROR
  905. SA1 INFIL INPUT FILE NAME
  906. SX0 X5 SET LOAD ADDRESS
  907. BX6 X1
  908. SA6 F
  909. READ F INITIATE READ
  910. RJ LDF LOAD FILE
  911. JP END TERMINATE PROGRAM
  912. LOC TITLE LOC - LOAD OCTAL CORRECTIONS.
  913. *** LOC,N,M.
  914. *
  915. * LOAD OCTAL CORRECTIONS INTO MEMORY AS SPECIFIED ON THE NEXT
  916. * RECORD ON FILE *INPUT*.
  917. *
  918. * CALL OPTIONS -
  919. *
  920. * LOC,N,M.
  921. *
  922. * LOC,M.
  923. *
  924. * LOC.
  925. *
  926. * IF N AND M ARE PRESENT AND NOT BOTH ZERO, CLEAR (ZERO)
  927. * STORAGE FROM LOCATION N TO LOCATION M BEFORE LOADING
  928. * CORRECTIONS. IF JUST M IS SPECIFIED CLEAR STORAGE FROM
  929. * LOCATION 0 TO LOCATION M BEFORE LOADING CORRECTIONS.
  930. *
  931. * ONE CORRECTION WORD IS SPECIFIED ON EACH INPUT LINE AS -
  932. *
  933. * ADDRESS DATA
  934. *
  935. * ADDRESS SPECIFIES THE LOCATION TO BE CORRECTED AND DATA
  936. * SPECIFIES THE DATA TO BE PLACED INTO THIS LOCATION. THE
  937. * ADDRESS FIELD IS SEPERATED FROM THE DATA FIELD BY A NON-OCTAL
  938. * CHARACTER OR 6 DIGITS OF ADDRESS. THE DATA FIELD IS TERMINATED
  939. * BY A NON-BLANK, NON-OCTAL CHARACTER OR 20 DIGITS. BOTH FIELDS
  940. * MAY START IN ANY COLUMN AS LONG AS THE ADDRESS PRECEDES
  941. * THE DATA.
  942. *
  943. * DAYFILE MESSAGES -
  944. *
  945. * * ARGUMENT ERROR.*
  946. * AN ARGUMENT IS NOT NUMERIC.
  947. * * FWA .GE. LWA+1.*
  948. * N .GE. LWA+1.
  949. * * FWA/LWA .GE. FL.*
  950. * M .GE. FL.
  951. * *ADDRESS OUT OF RANGE, AAAAAA*
  952. * THE ADDRESS AAAAAA ON A CORRECTION CARD IS \ FL. THE
  953. * CARD IS IGNORED AND LOC CONTINUES.
  954. *E
  955.  
  956.  
  957. LOC BSS 0 ENTRY
  958. SB1 1
  959. SB2 0 SET *DISTC* FLAG OPTION
  960. RJ SDC SET DISABLE TERMINAL CONTROL
  961. RJ ARG PROCESS ARGUMENTS
  962.  
  963. * CHECK ARGUMENTS.
  964.  
  965. SA5 P1 CONVERT FWA
  966. ZR X5,LOC1 IF FWA ABSENT
  967. SB7 0
  968. RJ DXB
  969. SX2 ARGERR * ARGUMENT ERROR.*
  970. NZ X4,ERR IF ADDRESS ERROR
  971. SA6 P1
  972. LOC1 SA5 P2 CONVERT LWA
  973. ZR X5,LOC2 IF LWA ABSENT
  974. SB7 0
  975. RJ DXB
  976. SX2 ARGERR * ARGUMENT ERROR.*
  977. NZ X4,ERR IF ADDRESS ERROR
  978. SA6 P2
  979. EQ LOC3 CHECK PARAMETER VALIDITY
  980.  
  981. LOC2 SA3 P1 SET LWA = P1, FWA = 0
  982. MX6 0
  983. SA6 A3
  984. SX6 X3+
  985. SA6 P2
  986. LOC3 SA5 P1 CHECK ARGUMENTS
  987. SA3 P2
  988. SA2 INFIL INPUT FILE NAME
  989. SX4 A0
  990. IX7 X3-X5
  991. BX6 X2
  992. SX2 ADRERR * FWA .GE. LWA+1.*
  993. BX1 X5-X3
  994. SA6 F
  995. NG X7,ERR IF FWA > LWA
  996. IX7 X3-X4
  997. BX1 X1+X5
  998. SX2 RNGERR * FWA/LWA .GE. FL.*
  999. PL X7,ERR IF LWA > FL
  1000. ZR X1,LOC5 IF FWA = LWA = 0
  1001.  
  1002. * CLEAR MEMORY.
  1003.  
  1004. LOC4 SX6 0 ZERO WORDS
  1005. RJ LDW
  1006. SA1 P2
  1007. SX5 X5+B1 ADVANCE LOAD ADDRESS
  1008. IX6 X1-X5
  1009. PL X6,LOC4 IF NOT DONE CLEARING MEMORY
  1010. READ F START READ OF CORRECTION FILE
  1011.  
  1012. * LOAD CORRECTION DATA.
  1013.  
  1014. LOC5 RJ RNC READ NEXT CORRECTION
  1015. NZ X1,LOC6 IF EOR
  1016. RJ ACA ASSEMBLE CORRECTION ADDRESS
  1017. SX6 A0
  1018. IX7 X5-X6 CHECK ADDRESS
  1019. PL X7,LOC7 IF ADDRESS .GE. FL
  1020. RJ ACD ASSEMBLE CORRECTION DATA
  1021. RJ LDW LOAD WORD
  1022. JP LOC5 LOOP TO EOR
  1023.  
  1024. * EMPTY DUMP PRU BUFFER.
  1025.  
  1026. LOC6 SA5 DI CHECK PRU BUFFER ACTIVE
  1027. ZR X5,END IF NOT ACTIVE
  1028. RECALL D
  1029. BX6 X5 REWRITE PRU
  1030. SX7 B0 INDICATE BUFFER INACTIVE
  1031. SA6 D+6
  1032. SA7 A5
  1033. WRITEW D,PBF,100B
  1034. REWRITE D
  1035. JP END TERMINATE PROGRAM
  1036.  
  1037. * ISSUE DIAGNOSTIC MESSAGE TO DAYFILE.
  1038.  
  1039. LOC7 BX1 X5 CONVERT ADDRESS
  1040. RJ COD
  1041. SA1 LOCB
  1042. LX6 6*2
  1043. BX7 X1-X6
  1044. SA7 LOCA+1
  1045. MESSAGE LOCA,3,R
  1046. JP LOC5 CONTINUE
  1047.  
  1048. LOCA DATA 20H ADDRESS OUT OF RANG
  1049. BSSZ 2
  1050. LOCB VFD 12/2LE,&2L ,36/0,12/2R
  1051. PBC TITLE PBC - PUNCH BINARY CARDS.
  1052. *** PBC,FWA,LWA.
  1053. *
  1054. * CALL OPTIONS -
  1055. *
  1056. * PBC,FWA,LWA.
  1057. *
  1058. * PBC,LWA.
  1059. *
  1060. * PBC.
  1061. * WRITE ONE RECORD FROM MEMORY TO THE FILE *PUNCHB* AS SPECIFIED
  1062. * BY FIRST WORD ADDRESS FWA AND LAST WORD ADDRESS LWA.
  1063. * IF JUST LWA IS SPECIFIED THEN FWA IS SET TO 0. IF BOTH
  1064. * ARGUMENTS ARE ABSENT OR ZERO, THEN FWA IS TAKEN TO BE 0 AND
  1065. * LWA IS FOUND IN BITS 0-17 OF LOCATION 0. IF BITS 48-59
  1066. * LOCATION 0 CONTAIN 7700, THEN THIS IS ASSUMED TO BE THE FIRST
  1067. * WORD OF A 77 TABLE AND THE RECORD LENGTH IS DERIVED FROM BITS
  1068. * 0-17 OF THE WORD FOLLOWING THIS TABLE.
  1069. *
  1070. * DAYFILE MESSAGES -
  1071. *
  1072. * * ARGUMENT ERROR.*
  1073. * AN ARGUMENT IS NON-NUMERIC.
  1074. * * FWA .GE. LWA+1.*
  1075. * THE FIRST WRITE ADDRESS IS > THE TERMINAL ADDRESS.
  1076. * * FWA/LWA .GE. FL.*
  1077. * LWA \ FL.
  1078. *E
  1079.  
  1080.  
  1081. PBC BSS 0 ENTRY
  1082. SB1 1
  1083. SB2 0 SET *DISTC* FLAG OPTION
  1084. RJ SDC SET DISABLE TERMINAL CONTROL
  1085. RJ ARG PROCESS ARGUMENTS
  1086. SA5 P1 CONVERT FWA
  1087. SB7 0
  1088. ZR X5,PBC1 IF FWA ABSENT
  1089. RJ DXB
  1090. SX2 ARGERR * ARGUMENT ERROR.*
  1091. NZ X4,ERR IF ADDRESS ERROR
  1092. SA6 P1
  1093. PBC1 SA5 P2 CONVERT LWA
  1094. ZR X5,PBC2 IF NO SECOND ARGUMENT
  1095. RJ DXB
  1096. SX2 ARGERR * ARGUMENT ERROR.*
  1097. NZ X4,ERR IF ADDRESS ERROR
  1098. SA6 P2
  1099. EQ PBC3 FIND LENGTH OF RECORD
  1100.  
  1101. PBC2 SA1 P1 SET LWA TO FIRST ARGUMENT
  1102. MX6 0 SET FWA = 0
  1103. SA6 A1
  1104. SX6 X1+
  1105. SA6 P2
  1106. PBC3 SA1 P1 CHECK RANGE SPECIFIED
  1107. SA2 P2
  1108. BX6 X1-X2
  1109. IX7 X6+X1
  1110. NZ X7,PBC5 IF EXPLICIT RANGE
  1111. RECALL D
  1112. SX6 3 READ (0)
  1113. SA6 D+6
  1114. RPHR D,R
  1115. READW D,BUF,B1 CHECK 77 TABLE
  1116. SA2 BUF
  1117. MX5 -12
  1118. LX2 12
  1119. BX6 -X5*X2
  1120. SB7 X6-7700B
  1121. LX2 -12
  1122. NZ B7,PBC4 IF NOT 77 TABLE
  1123. LX2 24 READ WORD FOLLOWING TABLE
  1124. BX5 -X5*X2
  1125. READW D,BUF,X5+B1
  1126. SA2 BUF+X5 SET NUMBER OF WORDS
  1127. SX2 X2+B1
  1128. IX2 X2+X5
  1129. PBC4 BX0 X0-X0
  1130. SX5 X2 SET LENGTH
  1131. JP PBC6 CHECK DUMP LENGTH
  1132.  
  1133. PBC5 IX6 X2-X1 CHECK LWA \ FWA
  1134. SX0 X1 SET FWA
  1135. SX2 ADRERR * FWA .GE. LWA+1.*
  1136. NG X6,ERR IF ERROR
  1137. SX5 X6+1 SET NUMBER OF WORDS
  1138. PBC6 IX6 X0+X5 CHECK DUMP TOO LONG
  1139. SX1 A0
  1140. SA3 PNCHFIL PUNCH FILE NAME
  1141. IX7 X1-X6
  1142. SX2 RNGERR * FWA/LWA .GE. FL.*
  1143. BX6 X3
  1144. NG X7,ERR IF LWA+1 > FL
  1145. SA6 F
  1146. RJ WTF WRITE MEMORY
  1147. JP END TERMINATE PROGRAM
  1148. RBR TITLE RBR - READ BINARY RECORD.
  1149. *** RBR,N,NAME.
  1150. *
  1151. * LOAD ONE RECORD INTO MEMORY STARTING AT LOCATION 0 FROM THE
  1152. * FILE SPECIFIED BY N. IF N IS LESS THAN 4 CHARACTERS AND IS
  1153. * NUMERIC, THEN N IS APPENDED TO *TAPE* TO OBTAIN THE FILE NAME.
  1154. * IF N CONTAINS A NON-NUMERIC CHARACTER OR IS 4 OR MORE
  1155. * CHARACTERS LONG, THEN N ITSELF IS USED AS THE FILE NAME. IF N
  1156. * IS ABSENT, *TAPE* IS USED. IF NAME IS PRESENT, A RECORD PREFIX
  1157. * IS PLACED IN MEMORY STARTING AT LOCATION 0 AND THE RECORD
  1158. * FOLLOWS. THE FORMAT OF THE PREFIX IS -
  1159. *
  1160. *T WD0 12/ 7700B,12/ 16B,18/ 0,18/ LENGTH
  1161. *T WD1 42/ NAME,18/ 0
  1162. *T WD2 60/ DATE ( YY/MM/DD.)
  1163. *T WD3-17 60/ 0
  1164. *T WD20 12/ 5200B,30/ 0,18/ LENGTH1
  1165. *
  1166. * WHERE - LENGTH= RECORD LENGTH INCLUDING PREFIX.
  1167. * LENGTH1= RECORD LENGTH MINUS WORDS 0-17.
  1168. *
  1169. * THE RECORD WITH PREFIX ADDED MAY THEN BE WRITTEN TO A FILE BY
  1170. * NEXT CALLING -
  1171. * WBR,N.
  1172. * -OR-
  1173. * PBC.
  1174. *
  1175. * DAYFILE MESSAGES -
  1176. *
  1177. * *RECORD TOO LONG.*
  1178. * THE RECORD IS TOO LONG TO FIT IN MEMORY. MEMORY IS
  1179. * FILLED AND THE EXCESS DATA ON THE RECORD IS SKIPPED.
  1180. *E
  1181.  
  1182.  
  1183. RBR BSS 0 ENTRY
  1184. SB1 1
  1185. SB2 0 SET *DISTC* FLAG OPTION
  1186. RJ SDC SET DISABLE TERMINAL CONTROL
  1187. RJ ARG PROCESS ARGUMENT
  1188. SA5 P1 CHECK NUMERIC ARGUMENT
  1189. RJ DXB
  1190. SA1 P1
  1191. NZ X4,RBR1 IF NON-NUMERIC
  1192. MX0 6*3 CHECK \ 4 CHARACTERS
  1193. BX6 -X0*X1
  1194. NZ X6,RBR1 IF \ 4 CHARACTERS
  1195. SA2 TAPFIL TAPE FILE NAME
  1196. LX1 -6*4
  1197. BX1 X2+X1
  1198. RBR1 MX2 42 SET FILE NAME
  1199. SX7 3
  1200. BX6 X2*X1
  1201. MX0 0 ASSUME FWA= 0
  1202. SA3 P2 CHECK 52 TABLE DESIRED
  1203. IX6 X6+X7
  1204. SA6 F
  1205. ZR X3,RBR2 IF NO 52 TABLE
  1206. SX0 RBRBL
  1207. RBR2 READ A6 START READ OF LOAD RECORD
  1208. RJ LDF LOAD FILE
  1209. SA1 P2
  1210. ZR X1,END IF NO 52 TABLE DESIRED
  1211.  
  1212. * PLACE 77 TABLE AND 52 TABLE AT 0-17.
  1213.  
  1214. MX2 42
  1215. SA3 RBRB SET RECORD LENGTH IN 77 TABLE
  1216. BX6 X2*X1 SET RECORD NAME IN 77 TABLE
  1217. BX7 X2*X3
  1218. SA6 A3+B1
  1219. SX1 X0-RBRBL+1 SET LENGTH IN 52 TABLE
  1220. BX7 X7+X0
  1221. SA3 RBRB+RBRBL-1
  1222. SA7 A6-B1
  1223. BX6 X2*X3
  1224. BX6 X6+X1
  1225. SA6 A3+
  1226. DATE RBRB+2 SET DATE IN 77 TABLE
  1227. SA5 RBRB LOAD TABLES
  1228. BX6 X5
  1229. MX5 0
  1230. RBR3 RJ LDW LOAD WORD
  1231. SX0 X5+B1 ADVANCE LOAD ADDRESS
  1232. SA5 A5+B1
  1233. SX1 X0-RBRBL
  1234. BX6 X5
  1235. LX5 X0
  1236. NG X1,RBR3 LOOP TO END OF TABLES
  1237. SA5 DI EMPTY DUMP PRU BUFFER
  1238. ZR X5,END IF BUFFER INACTIVE
  1239. RECALL D
  1240. BX6 X5
  1241. SX7 B0
  1242. SA6 D+6
  1243. SA7 A5
  1244. WRITEW D,PBF,100B
  1245. REWRITE D
  1246. JP END TERMINATE PROGRAM
  1247.  
  1248. RBRB VFD 12/7700B,12/16B,36/0
  1249. BSSZ 16B
  1250. VFD 12/5200B,48/0
  1251. RBRBL EQU *-RBRB
  1252. WBR TITLE WBR - WRITE BINARY RECORD.
  1253. *** WBR,N,L.
  1254. *
  1255. * WRITE ONE RECORD FROM MEMORY TO THE FILE SPECIFIED BY N. IF N
  1256. * IS LESS THAN 4 CHARACTERS AND IS NUMERIC, THEN N IS APPENDED
  1257. * TO *TAPE* TO OBTAIN THE FILE NAME. IF N CONTAINS A NON-NUMERIC
  1258. * CHARACTER OR IS 4 OR MORE CHARACTERS LONG, THEN N ITSELF IS
  1259. * USED AS THE FILE NAME. IF N IS ABSENT, THE FILE NAME IS
  1260. * *TAPE*. THE NUMBER OF WORDS TO WRITE IS SPECIFIED BY L. IF L
  1261. * IS 0 OR ABSENT, THE LENGTH IS TAKEN FROM BITS 0-17 OF
  1262. * LOCATION 0.
  1263. *
  1264. * DAYFILE MESSAGES -
  1265. *
  1266. * * ARGUMENT ERROR.*
  1267. * THE L ARGUMENT IS NON-NUMERIC.
  1268. * *RECORD TOO LONG.*
  1269. * THE WRITE LENGTH IS \ FL.
  1270. *E
  1271.  
  1272.  
  1273. WBR BSS 0 ENTRY
  1274. SB1 1
  1275. SB2 0 SET *DISTC* FLAG OPTION
  1276. RJ SDC SET DISABLE TERMINAL CONTROL
  1277. RJ ARG PROCESS ARGUMENTS
  1278. SA5 P1 CHECK NUMERIC ARGUMENT
  1279. RJ DXB
  1280. SA1 P1
  1281. NZ X4,WBR1 IF NON-NUMERIC
  1282. MX0 6*3 CHECK \ 4 CHARACTERS
  1283. BX6 -X0*X1
  1284. NZ X6,WBR1 IF \ 4 CHARACTERS
  1285. SA2 TAPFIL TAPE FILE NAME
  1286. LX1 -6*4
  1287. BX1 X2+X1
  1288. WBR1 MX2 42 SET FILE NAME
  1289. SX7 3
  1290. BX6 X2*X1
  1291. SA5 P2 CONVERT LENGTH
  1292. BX6 X6+X7
  1293. SB7 B0
  1294. SA6 F
  1295. ZR X5,WBR2 IF LENGTH ABSENT
  1296. RJ DXB
  1297. SX2 ARGERR * ARGUMENT ERROR.*
  1298. NZ X4,ERR IF ERROR
  1299. NZ X6,WBR3 IF EXPLICIT LENGTH
  1300. WBR2 SX6 3 READ (0)
  1301. SA6 D+6
  1302. RPHR D,R
  1303. READW D,BUF,B1
  1304. SA1 BUF SET LENGTH
  1305. SX6 X1+
  1306. WBR3 SB7 A0 CHECK LENGTH
  1307. BX0 X0-X0
  1308. SX2 WBRA * RECORD TOO LONG.*
  1309. SB6 X6
  1310. BX5 X6
  1311. GT B6,B7,ERR IF LENGTH .GT. FL
  1312. RJ WTF WRITE MEMORY
  1313. JP END TERMINATE PROGRAM
  1314.  
  1315. WBRA DATA C* RECORD TOO LONG.*
  1316. TITLE SUBROUTINES.
  1317. ACA SPACE 4,15
  1318. ** ACA - ASSEMBLE CORRECTION ADDRESS.
  1319. *
  1320. * ENTRY CORRECTION IN BUF.
  1321. *
  1322. * EXIT (X5)= ADDRESS.
  1323. * (CC)= NEXT CHARACTER POSITION.
  1324. *
  1325. * USES X - 2, 4, 5, 6.
  1326. * A - 2, 6.
  1327. * B - 2, 7.
  1328. *
  1329. * CALLS ACS.
  1330.  
  1331.  
  1332. ACA SUBR ENTRY/EXIT
  1333. MX4 6 SET DIGIT COUNTER
  1334. SA2 BUF READ FIRST CHARACTER
  1335. SB2 B0 SPECIFY *NO IGNORE CHARACTER*
  1336. JP ACA2 SKIP LEADING BLANKS
  1337.  
  1338. ACA1 SA2 A2+1 READ NEXT CHARACTER
  1339. ZR X2,ACA3 IF END OF LINE
  1340. ACA2 SB7 X2-1R
  1341. ZR B7,ACA1 IF BLANK
  1342. ACA3 RJ ACS ASSEMBLE CHARACTER STRING
  1343. BX5 X6
  1344. SX6 A2-BUF+1 SET CURRENT CHARACTER POSITION
  1345. SA6 CC
  1346. JP ACAX RETURN
  1347. ACD SPACE 4,15
  1348. ** ACD - ASSEMBLE CORRECTION DATA.
  1349. *
  1350. * ENTRY (CC)= CURRENT CHARACTER POSITION.
  1351. *
  1352. * EXIT (X6)= DATA.
  1353. *
  1354. * USES X - 2, 4.
  1355. * A - 2.
  1356. * B - 2.
  1357. *
  1358. * CALLS ACS.
  1359.  
  1360.  
  1361. ACD SUBR ENTRY/EXIT
  1362. SA2 CC READ CURRENT POSITION
  1363. SB2 -1R SPECIFY BLANK TO BE IGNORED
  1364. SA2 X2+BUF READ FIRST CHARACTER
  1365. MX4 20 SET DIGIT COUNTER
  1366. RJ ACS ASSEMBLE CHARACTER STRING
  1367. JP ACDX RETURN
  1368. ACS SPACE 4,15
  1369. ** ACS - ASSEMBLE CHARACTER STRING.
  1370. *
  1371. * ENTRY (A2)= ADDRESS OF FIRST CHARACTER.
  1372. * (X2)= FIRST CHARACTER.
  1373. * (X4)= DIGIT COUNT.
  1374. * (B2)= -CHARACTER TO BE IGNORED. =0 IF NONE.
  1375. *
  1376. * EXIT (X6)= CONVERTED DIGITS.
  1377. * (A2)= LAST+1 CHARACTER ADDRESS.
  1378. *
  1379. * USES X - 1, 2, 3, 4, 6.
  1380. * A - 1, 2.
  1381. * B - 6, 7.
  1382.  
  1383.  
  1384. ACS SUBR ENTRY/EXIT
  1385. SA1 ACSA READ OCTAL CHARACTER MASK
  1386. SX6 0 CLEAR ASSEMBLY
  1387. JP ACS2 ENTER LOOP
  1388.  
  1389. ACS1 SA2 A2+1 READ NEXT CHARACTER
  1390. ACS2 SB7 X2+B2 CHECK IGNORE
  1391. ZR X2,ACSX IF END OF LINE, RETURN
  1392. SB6 X2
  1393. ZR B7,ACS1 IF IGNORE, SKIP
  1394. LX3 X1,B6
  1395. SX2 X2-1R0
  1396. PL X3,ACSX IF NOT OCTAL, RETURN
  1397. LX6 3 INSERT DIGIT
  1398. NO
  1399. LX4 1 COUNT DIGIT
  1400. BX6 X6+X2
  1401. NG X4,ACS1 IF ASSEMBLY NOT FULL
  1402. JP ACSX RETURN
  1403.  
  1404. ACSA BSS 0
  1405. POS 60-1R0
  1406. VFD 8/377B
  1407. VFD $/0
  1408. BSS 0
  1409. ARG SPACE 4,15
  1410. ** ARG - PROCESS ARGUMENTS.
  1411. *
  1412. * ENTRY NONE.
  1413. *
  1414. * EXIT (P1)= FIRST ARGUMENT.
  1415. * (P2)= SECOND ARGUMENT.
  1416. * (B7)= ARGUMENT COUNT.
  1417. * (A0)= FL OF DUMP FILE.
  1418. * (FL)= CURRENT FL.
  1419. * (AF)= BIT 17 OF FIRST ARGUMENT IF *SFP* CALL, SIGN
  1420. * EXTENDED.
  1421. *
  1422. * USES X - 0, 1, 2, 6, 7.
  1423. * A - 0, 1, 2, 6, 7.
  1424. * B - 6, 7.
  1425. *
  1426. * CALLS EBF.
  1427. *
  1428. * MACROS RPHR.
  1429.  
  1430.  
  1431. ARG1 SA1 SPPR EXTRACT ARGUMENTS
  1432. SX6 X1
  1433. AX1 18
  1434. MX0 -17
  1435. SA6 P2
  1436. BX7 -X0*X1
  1437. BX1 X0*X1 SET ABORT FLAG
  1438. SB7 2
  1439. SX6 X1
  1440. SA7 P1
  1441. SA6 AF
  1442. MX0 48 CLEAR STATUS BYTE
  1443. SA1 SPPR
  1444. LX0 24
  1445. BX7 X0*X1
  1446. SA7 A1
  1447. ARG2 SX6 B1 READ DUMP FILE FL
  1448. SX0 B7 SAVE ARGUMENT COUNT
  1449. SA6 D+6
  1450. RPHR D,R
  1451. SA1 DBUF+2
  1452. SX6 A0 SET CURRENT FL
  1453. AX1 36
  1454. SB7 X0
  1455. SA6 FL
  1456. SA0 X1
  1457. SX6 X1 SAVE DUMP FILE FL
  1458. SA6 DMPFL
  1459. SA2 D+1 EMPTY BUFFER
  1460. RJ EBF
  1461.  
  1462. ARG SUBR ENTRY/EXIT
  1463. SA1 ACTR READ ARGUMENT COUNT
  1464. ZR X1,ARG1 IF NOT A COMMAND
  1465. MX0 42
  1466. SB7 X1
  1467. ZR B7,ARG2 IF NO ARGUMENTS
  1468. SA2 ARGR READ FIRST ARGUMENT
  1469. BX6 X0*X2
  1470. SB6 B7-B1
  1471. SA6 P1
  1472. ZR B6,ARG2 IF NOT A SECOND ARGUMENT
  1473. SA2 A2+B1 READ SECOND ARGUMENT
  1474. BX6 X0*X2
  1475. SA6 P2
  1476. JP ARG2
  1477. CMP SPACE 4,10
  1478. ** CMP - COMPARE WORD PAIRS.
  1479. *
  1480. * ENTRY (B6) = ADDRESS OF BUFFER WORD TO COMPARE WITH (B6-B7).
  1481. * (B7) = NUMBER OF WORDS TO COMPARE.
  1482. *
  1483. * EXIT (X7) = ACCUMULATED DIFFERENCES.
  1484. *
  1485. * USES X - 1, 2, 3, 4, 7.
  1486. * A - 1, 2, 3, 4.
  1487. * B - 3, 7.
  1488.  
  1489.  
  1490. CMP SUBR ENTRY/EXIT
  1491. SB3 B0
  1492. BX7 X7-X7
  1493. CMP1 SA1 B6-B7
  1494. SA2 A1+B1
  1495. SA3 B6+B3 WORD TO COMPARE WITH X1
  1496. SA4 A3+B1 NEXT WORD TO COMPARE WITH X2
  1497. BX1 X1-X3
  1498. SB7 B7-2 DECREMENT WORD PAIRS STILL TO PROCESS
  1499. BX7 X7+X1 ACCUMULATE DIFFERENCES
  1500. BX2 X2-X4
  1501. SB3 B3+2
  1502. BX7 X7+X2 ACCUMULATE DIFFERENCES
  1503. NZ B7,CMP1 IF MORE WORD PAIRS TO PROCESS
  1504. EQ CMPX RETURN
  1505. CFO SPACE 4,15
  1506. ** COF - SET OUTPUT FILE NAME AND CHECK FILE ASSIGNMENT.
  1507. *
  1508. * ENTRY (X5) = 0 IF CM DUMP REQUEST.
  1509. *
  1510. * EXIT IF FILE *OUTPUT* IS ASSIGNED TO
  1511. * THE TERMINAL, THEN DUMP WILL BE WRITTEN
  1512. * ON FILE *ZZZDUMP* RATHER THAN FILE *OUTPUT*.
  1513. *
  1514. * USES X - 1, 2, 3, 4, 6, 7.
  1515. * A - 1, 2, 3, 4, 6, 7.
  1516. *
  1517. * CALLS STF.
  1518. *
  1519. * MACROS GETPP, WRITER, WRITEW.
  1520.  
  1521.  
  1522. COF1 GETPP COFD,PL,PD,PW GET PAGE PARAMETERS
  1523. SA1 DF GET DISPLAY CODE FLAG
  1524. SX2 PWDC SET WIDTH FOR DISPLAY CODE TRANSLATION
  1525. NZ X1,COF2 IF DISPLAY CODE WIDTH IS REQUIRED
  1526. SX2 PWNI SET WIDTH FOR NO DISPLAY CODE TRANSLATION
  1527. COF2 SA1 PW GET JOB PAGE WIDTH
  1528. IX4 X1-X2
  1529. PL X4,COF3 IF PAGE WIDE ENOUGH
  1530. SX7 BUF1+2
  1531. SA3 COFB
  1532. SA7 IND RESET BUFFER POINTER
  1533. BX6 X3
  1534. SA6 DC SET NARROW PAGE WIDTH CONTROL WORD
  1535. COF3 WRITEW F,PD,B1 WRITE PRINT DENSITY
  1536.  
  1537. COF SUBR ENTRY/EXIT
  1538. SA1 OUTFIL OUTPUT FILE NAME
  1539. SX2 F
  1540. BX6 X1
  1541. SA6 X2
  1542. RJ STF CHECK FILE ASSIGNMENT
  1543. NZ X6,COF1 IF OUTPUT NOT ASSIGNED TO TERMINAL
  1544.  
  1545. * WRITE DUMP OUTPUT ON FILE *ZZZDUMP* IF TTY.
  1546.  
  1547. WRITEW F,COFC,COFCL
  1548. WRITER F,R
  1549. SA1 TTYFIL GET DUMP FILE FOR TTY
  1550. BX6 X1
  1551. SA6 X2 STORE NEW FILE NAME
  1552. SA4 COFB TERMINAL DUMP CONTROL WORD
  1553. SA1 COFA
  1554. BX6 X4
  1555. SA2 A1+B1 CLEAR AUTO EJECT
  1556. SA3 VERS
  1557. BX7 X2
  1558. SA6 DC NEW DUMP CONTROL WORD
  1559. SA7 LFMT
  1560. IX6 X3+X1 CLEAR PAGE EJECT
  1561. SA6 A3
  1562. NZ X5,COFX IF EXTENDED MEMORY DUMP REQUEST
  1563. SX7 BUF1+2
  1564. SA3 SHLB CLEAR PAGE EJECT
  1565. SA7 IND
  1566. IX7 X1+X3
  1567. SA7 A3
  1568. EQ COFX RETURN
  1569.  
  1570. COFA VFD 6/1R -1R1,54/0
  1571. CON 1L
  1572. COFB VFD 6/30B,18/0,18/1,18/2 TERMINAL DUMP CONTROL WORD
  1573. COFC DATA C* EXCHANGE PACKAGE/MEMORY DUMP ON FILE ZZZDUMP.*
  1574. COFCL EQU *-COFC LENGTH OF MESSAGE
  1575. COFD BSSZ 2 GETPP RESPONSE BLOCK
  1576. DCK SPACE 4,15
  1577. ** DCK - STRING OUT DATA.
  1578. *
  1579. * ENTRY (X6) = FIRST CONVERTED WORD OF DUMP.
  1580. * (X7) = SECOND CONVERTED WORD OF DUMP.
  1581. * (B3) = INDEX OF SPACE.
  1582. * (A7) = LOCATION IN DESTINATION LINE.
  1583. * (B7) = WORD COUNT.
  1584. *
  1585. * EXIT WORDS PACKED AND INTERPRETED INTO BUFFER.
  1586. *
  1587. * USES X - 2, 3, 4, 6, 7.
  1588. * A - 3, 6, 7.
  1589. * B - 2, 3, 4, 5.
  1590.  
  1591.  
  1592. DCK SUBR ENTRY/EXIT
  1593. SB4 B3
  1594. SB5 1
  1595. BX3 X6 SAVE (X6)
  1596. DCK1 SA4 B4+SBUF+19 MOVE DATA
  1597. SB4 B4-B1
  1598. BX6 X4
  1599. SA6 B4+SBUF
  1600. PL B4,DCK1 IF NO MORE WORDS TO MOVE
  1601. NG B7,DCK2 NO SPACE PRESENT
  1602. SX6 1R
  1603. SA6 B3+SBUF
  1604. SB3 B3+1
  1605. DCK2 SB2 10
  1606. MX2 6
  1607. DCK3 BX6 X2*X3
  1608. LX6 6
  1609. SA6 B3+SBUF
  1610. SB2 B2-B1 SHIFT COUNT
  1611. LX3 6
  1612. SB3 B3+1
  1613. NZ B2,DCK3 COMPLETE STRING
  1614. BX3 X7
  1615. SB5 B5-B1
  1616. ZR B5,DCK2 PROCESS SECOND WORD
  1617. SB5 B1
  1618. SB3 B0
  1619. DCK4 SB2 10
  1620. SX7 0
  1621. DCK5 SA3 B3+SBUF
  1622. NZ X3,DCK6 IF NOT A 0 CHARACTER
  1623. SX3 1R
  1624. DCK6 LX7 6
  1625. BX7 X7+X3
  1626. SB3 B3+B1
  1627. SB2 B2-B1
  1628. NZ B2,DCK5 COMPLETE STRING
  1629. SA7 A7+B1
  1630. SB5 B5-B1
  1631. ZR B5,DCK4 DO SECOND WORD
  1632. JP DCKX RETURN
  1633. DCM SPACE 4,20
  1634. ** DCM - DUMP CENTRAL MEMORY.
  1635. *
  1636. * ENTRY (P1)= FWA OF DUMP.
  1637. * (P2)= LWA OF DUMP.
  1638. * (DMPFL) = DUMP FILE FL.
  1639. *
  1640. * EXIT NONE.
  1641. *
  1642. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  1643. * A - 0, 1, 2, 3, 4, 5, 6, 7.
  1644. * B - 6, 7.
  1645. *
  1646. * CALLS COD, OCT, EBF, SHL, RDW=, RMW.
  1647. *
  1648. * MACROS READ, READW, RECALL, WRITEW.
  1649.  
  1650.  
  1651. DCM12 SA1 LA CONVERT ADDRESS
  1652. RJ COD
  1653. SA1 DB SET BLOCK INDEX
  1654. LX6 2*6
  1655. SA0 BUF1+X1
  1656. SA6 BUF
  1657. SB7 X5 LIST OCTAL
  1658. RJ OCT
  1659.  
  1660. DCM SUBR ENTRY/EXIT
  1661. RECALL D
  1662. SA2 D+1 EMPTY BUFFER
  1663. RJ EBF
  1664. RJ SHL SET HEADER LINE
  1665. SA4 DMPFL CHECK FL
  1666. ZR X4,DCMX IF NO FL, RETURN
  1667. SA1 P1 SET FIRST ADDRESS
  1668. SA3 P2
  1669. SX6 X3
  1670. BX5 X3-X1 LWA-FWA
  1671. IX2 X1-X4 FWA-FL
  1672. IX7 X3-X4 LWA-FL
  1673. SX2 X2+4 FWA-FL+4
  1674. ZR X5,DCM1 IF FWA = LWA
  1675. SX6 X3-1 SET LWA = LWA-1
  1676. DCM1 NG X7,DCM2 IF LWA < FL
  1677. SX6 X4-4 SET LWA = FL-4
  1678. DCM2 SA6 A3
  1679. SA5 DC SET DUMP CONTROL WORD
  1680. NG X2,DCM3 IF FWA < FL-4
  1681. SX7 X4-8 SET FWA = FL-8
  1682. SA7 A1
  1683. DCM3 SA1 A1 RESET X1 TO FIRST ADDRESS
  1684. BX0 X1
  1685. SX6 X1 SET LINE ADDRESS
  1686. SB7 X1-DMPL CHECK FWA IN MEMORY
  1687. SA6 LA
  1688. PL B7,DCM5 IF FWA IN MEMORY
  1689.  
  1690. * POSITION TO FWA.
  1691.  
  1692. SX6 X0+300B READ PRU CONTAINING FWA
  1693. AX6 6
  1694. SA6 D+6
  1695. READ D
  1696. MX6 -6
  1697. BX7 -X6*X0
  1698. ZR X7,DCM4 IF FWA IS XXXX00
  1699. READW D,BUF,X7
  1700.  
  1701. * READ FIRST BLOCK.
  1702.  
  1703. DCM4 READW D,BUF1,X5 READ FIRST BLOCK
  1704. JP DCM6
  1705.  
  1706. DCM5 SA2 LA COPY WORDS FROM MEMORY
  1707. SX3 X5
  1708. IX1 X2-X3
  1709. SA2 DCMB USE MEMORY AS WORD SOURCE
  1710. SB6 BUF1
  1711. BX6 X2
  1712. SB7 X5
  1713. SA6 DCMA FORCE DUMP FROM MEMORY
  1714. RJ RMW
  1715.  
  1716. * DUMP MEMORY.
  1717.  
  1718. DCM6 SA1 LA CONVERT ADDRESS
  1719. RJ COD
  1720. SA1 DB SET BLOCK INDEX
  1721. LX6 2*6
  1722. SA0 BUF1+X1
  1723. SA6 BUF
  1724. SB7 X5 LIST OCTAL
  1725. RJ OCT
  1726. SA5 DC SET DUMP CONTROL WORD
  1727. SA1 DB TOGGLE DUMP BLOCK
  1728. SX2 X5
  1729. BX6 X1-X2
  1730. SA6 A1
  1731. BX0 X1-X2
  1732. DCM7 SB6 BUF1+X0 READ NEXT BLOCK
  1733. SB7 X5
  1734. DCMA SX2 D (DUMP FROM FILE)
  1735. RJ =XRDW= ( READW D,BUF1+X0,X5 )
  1736. * SA1 LA (DUMP FROM MEMORY)
  1737. * RJ RMW
  1738. DCM8 SA3 LA ADVANCE LINE ADDRESS
  1739. NZ X1,DCM11 IF EOR
  1740. SA2 IND
  1741. SA1 BUF1 LOAD FIRST WORD PAIR
  1742. SA2 X2
  1743. LX4 X5,B1 SET WORD COUNT
  1744. SB2 X5
  1745. BX7 X7-X7 CLEAR DIFFERENCES
  1746. SX6 X3+B2
  1747. DCM9 BX3 X1-X2 COMPARE WORDS
  1748. LX4 1 COUNT WORD
  1749. SA1 A1+B1
  1750. BX7 X7+X3 ACCUMULATE DIFFERENCES
  1751. SA2 A2+B1
  1752. NG X4,DCM9 IF NOT END OF BLOCK
  1753. SA1 A3-B1 CHECK LIMIT
  1754. IX2 X6-X1
  1755. SA6 A3 STORE ADDRESS
  1756. PL X2,DCM10 IF LIMIT REACHED
  1757. NZ X7,DCM6 IF DIFFERENT WORD DETECTED
  1758. NG X7,DCM6 IF DIFFERENT WORD DETECTED
  1759. NG X5,DCM7 IF DUPLICATE LINE SET
  1760. WRITEW F,DUPLIN,DUPLINL
  1761. MX1 1 SET DUPLICATE LINE
  1762. BX5 X5+X1
  1763. JP DCM7 PROCESS NEXT BLOCK
  1764.  
  1765. DCM10 NZ X7,DCM12 IF NOT DUPLICATE LINE
  1766. NG X7,DCM12 IF NOT DUPLICATE LINE
  1767. NG X5,DCMX IF DUPLICATE LINE SET
  1768. WRITEW F,DUPLIN,DUPLINL
  1769. JP DCMX RETURN
  1770.  
  1771. DCM11 SA1 DCMB SET MEMORY COPY ENTRY
  1772. BX6 X1
  1773. SA6 DCMA FORCE DUMP FROM MEMORY
  1774. DCMB SA1 LA READ MEMORY WORDS
  1775. RJ RMW
  1776. JP DCM8
  1777. DEC SPACE 4,15
  1778. ** DEC - DUMP EXTENDED CORE STORAGE (ECS).
  1779. *
  1780. * ENTRY (P1) = FWA OF DUMP.
  1781. * (P2) = LWA OF DUMP.
  1782. * (DC) = DUMP CONTROL WORD.
  1783. * (ECSFL) = EXTENDED MEMORY FIELD LENGTH.
  1784. *
  1785. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  1786. * A - 0, 1, 2, 3, 4, 5, 6, 7.
  1787. * B - 3, 6, 7.
  1788. *
  1789. * CALLS CMP, COD, OCT, RMW, SHL.
  1790. *
  1791. * MACROS ENDRUN, MESSAGE, WRITEW.
  1792.  
  1793.  
  1794. DEC SUBR
  1795. RJ SHL WRITE HEADER LINE
  1796. SA5 DC DUMP CONTROL WORD
  1797. SA4 ECSFL
  1798. SA1 P1 FWA
  1799. SA3 A1+B1 LWA
  1800. IX2 X1-X4 FWA - FL
  1801. SX0 X5+ BLOCK SIZE
  1802. IX7 X3-X4 LWA - FL
  1803. IX2 X2+X0 FWA - FL + BLOCK SIZE
  1804. NG X7,DEC1 IF LWA .LT. FL
  1805. IX6 X4-X0 LWA = FL - BLOCK SIZE
  1806. SA6 A3
  1807. DEC1 BX7 X1
  1808. NG X2,DEC2 IF FWA .LT. FL - BLOCK SIZE
  1809. IX7 X4-X0 FWA = FL - (2 * BLOCK SIZE)
  1810. IX7 X7-X0
  1811. DEC2 SA7 P1 NEW FWA
  1812. SA2 A7+1 LWA
  1813. IX6 X2+X0
  1814. SA6 A2
  1815. SA7 LA LINE ADDRESS
  1816.  
  1817. * DUMP NEXT BLOCK.
  1818.  
  1819. DEC3 SA1 LA CURRENT FWA
  1820. SA2 P2 LWA
  1821. BX0 X1
  1822. IX3 X2-X1 LWA - CURRENT FWA
  1823. SX5 400B SIZE OF EXTENDED MEMORY BLOCK TO READ
  1824. SA0 DBUF FWA OF EXTENDED MEMORY BUFFER
  1825. SB3 X5+
  1826. IX4 X3-X5
  1827. LX5 30
  1828. PL X4,DEC4 IF 400B WORDS REMAINING
  1829. SB3 X3+ NUMBER OF WORDS TO TRANSFER
  1830. LX3 30
  1831. BX5 X3
  1832. DEC4 RE B3 READ ECS
  1833. - EQ DEC9 IF READ ERROR
  1834. SX6 DBUF FWA OF EXTENDED MEMORY BUFFER
  1835. BX6 X5+X6
  1836. SA6 BA INITIALIZE BUFFER ADDRESS WORD
  1837. DEC5 SA5 DC DUMP CONTROL WORD
  1838. SA1 DECA SET FIRST READ FLAG
  1839. SX6 B1
  1840. SA6 A1
  1841. ZR X1,DEC7 IF FIRST READ
  1842. SA2 BA
  1843. SB7 X5 NUMBER OF WORDS TO COMPARE
  1844. SB6 X2 FWA OF EXTENDED MEMORY BUFFER
  1845. RJ CMP
  1846. NZ X7,DEC6 IF NOT DUPLICATED LINES
  1847. NG X7,DEC6 IF NOT DUPLICATED LINES
  1848. NG X5,DEC8 IF *DUPLICATED LINES.* ALREADY WRITTEN
  1849. MX1 1
  1850. BX6 X5+X1 SET INDICATOR
  1851. SA6 DC NEW DUMP CONTROL WORD
  1852. WRITEW F,DUPLIN,DUPLINL
  1853. EQ DEC8 CONTINUE PROCESSING BUFFER
  1854.  
  1855. DEC6 PL X5,DEC7 IF DUPLICATED LINES INDICATOR NOT SET
  1856. MX1 1 CLEAR DUPLICATE LINES INDICATOR
  1857. BX6 -X1*X5
  1858. SA6 DC NEW DUMP CONTROL WORD
  1859. DEC7 SA1 LA LINE ADDRESS
  1860. RJ COD
  1861. SA1 BA BUFFER ADDRESS
  1862. LX6 2*6
  1863. SA0 X1
  1864. SA6 BUF
  1865. SB7 X5+ NUMBER OF WORDS TO PROCESS
  1866. RJ OCT
  1867. DEC8 SA2 LA LINE ADDRESS
  1868. SA5 DC DUMP CONTROL WORD
  1869. SA4 BA BUFFER ADDRESS
  1870. SX1 X5+
  1871. SA3 P2 LWA
  1872. IX6 X2+X1
  1873. IX7 X4+X1
  1874. BX3 X3-X6 LWA - LA
  1875. ZR X3,DECX IF NO MORE TO LIST - RETURN
  1876. AX4 30
  1877. SX3 X7+
  1878. SX4 X4+DBUF LWA + 1 OF BUFFER
  1879. SA6 LA NEW LINE ADDRESS
  1880. BX3 X3-X4
  1881. SA7 BA NEW BUFFER ADDRESS
  1882. NZ X3,DEC5 IF BUFFER NOT EMPTY
  1883. BX2 -X1
  1884. LX1 1 MOVE PREVIOUS LINE TO COMPARE BUFFER
  1885. SB6 DBUF+X2 DESTINATION ADDRESS
  1886. SB7 X5 WORD COUNT
  1887. IX1 X4-X1 SOURCE ADDRESS - WORD COUNT
  1888. RJ RMW
  1889. EQ DEC3 READ ANOTHER BUFFER FROM ECS
  1890.  
  1891. DEC9 MESSAGE DECB * EXTENDED MEMORY READ ERROR.*
  1892. WRITEW F,DECC,DECCL
  1893. WRITER X2
  1894. ENDRUN
  1895.  
  1896. DECA CON 0 FIRST READ FLAG
  1897. DECB DATA C* EXTENDED MEMORY READ ERROR.*
  1898. DECC DATA C*0 EXTENDED MEMORY READ ERROR - DUMP TERMINATED.*
  1899. DECCL EQU *-DECC
  1900. DXP SPACE 4,10
  1901. ** DXP - DUMP EXCHANGE PACKAGE.
  1902. *
  1903. * ENTRY (VERF) = FWA OF DUMP HEADER.
  1904. * (VERL) = LENGTH OF DUMP HEADER.
  1905. *
  1906. * USES A - 0, 1, 2, 3, 5, 6, 7.
  1907. * B - 2, 3.
  1908. * X - ALL.
  1909. *
  1910. * CALLS COD, OCB, PEP.
  1911. *
  1912. * MACROS GETMC, WRITEW.
  1913.  
  1914.  
  1915. DXP SUBR ENTRY/EXIT
  1916. GETMC DXPG
  1917. SA1 DXPG SAVE CYBER 176 FLAG
  1918. MX6 -2
  1919. AX1 18
  1920. BX6 -X6*X1
  1921. SA6 A1
  1922. RJ PEP PREPARE EXCHANGE PACKAGE
  1923. SA1 VERF GET HEADER FWA
  1924. SA3 VERL GET HEADER LENGTH
  1925. WRITEW F,X1,X3
  1926. WRITEW X2,DXPA,DXPAL WRITE HEADER
  1927. SA0 0 CLEAR REGISTER INDEX
  1928. SA5 EPB
  1929.  
  1930. * LIST (A), (B) REGISTERS AND ((A)).
  1931.  
  1932. DXP0 SA1 DXPB+A0 SET REGISTER NAME
  1933. SA2 DXPG
  1934. ZR X2,DXP1 IF NOT A CYBER 176
  1935. LX1 30 SET CYBER 176 REGISTER NAME
  1936. DXP1 SA2 DXPC
  1937. MX0 5*6
  1938. SB2 36 SET SHIFT COUNT
  1939. BX3 X0*X1
  1940. LX3 5*6
  1941. IX6 X2+X3
  1942. MX0 -18
  1943. SA6 BUF
  1944. NG X1,DXP4 IF BLANK FIELD
  1945. SB3 A0-1
  1946. ZR B3,DXP2 IF RA
  1947. SB3 A0-3
  1948. NG B3,DXP3 IF NOT TO EXIT MODE LINE
  1949. NZ B3,DXP2 IF PAST EXIT MODE LINE
  1950. SA1 DXPG
  1951. NZ X1,DXP3 IF CYBER 176 PSD REGISTER
  1952. SB2 48 SET SHIFT COUNT FOR EM
  1953. MX0 -12
  1954. EQ DXP3 EXTRACT VALUE
  1955.  
  1956. DXP2 SB3 A0-6
  1957. PL B3,DXP3 IF PAST FLE
  1958. MX0 -21
  1959. DXP3 AX2 X5,B2 EXTRACT VALUE
  1960. BX1 -X0*X2
  1961. RJ COD CONVERT
  1962. DXP4 LX6 4*6
  1963. SB3 A0-1
  1964. ZR B3,DXP5 IF RA
  1965. SB3 A0-4
  1966. EQ B3,B1,DXP5 IF PROCESSING FLE
  1967. NZ B3,DXP6 IF NOT RAE
  1968. DXP5 SA1 BUF SET UPPER CHARACTER IN PREVIOUS WORD
  1969. MX0 -6
  1970. BX7 -X0*X6
  1971. SX2 1R INSURE BLANK IN LOWER POSITION
  1972. BX6 X0*X6
  1973. BX1 X0*X1
  1974. BX6 X6+X2
  1975. BX7 X1+X7
  1976. SA7 A1+
  1977. DXP6 SX3 A0+2RA0-2R SET A-REGISTER NUMBER
  1978. IX6 X6+X3
  1979. SA6 A6+B1
  1980.  
  1981. * LIST (A) REGISTER.
  1982.  
  1983. LX5 -18 CONVERT A REGISTER
  1984. SX0 1RB-1R
  1985. MX2 -18
  1986. BX1 -X2*X5
  1987. RJ COD
  1988. LX6 3*6
  1989. IX6 X6+X0
  1990. SA6 A6+B1
  1991.  
  1992. * LIST (B) REGISTER.
  1993.  
  1994. LX5 18 CONVERT B REGISTER
  1995. SX0 1R0-1R +A0
  1996. MX2 -18
  1997. BX1 -X2*X5
  1998. LX0 54
  1999. RJ COD
  2000. LX6 2*6
  2001. IX6 X6+X0
  2002.  
  2003. * LIST ((A)).
  2004.  
  2005. SA6 A6+1
  2006. SA1 EPB+20B+A0
  2007. RJ OCB
  2008. MX0 24
  2009. SA1 A6-B1 GET SECOND WORD
  2010. BX5 X0*X6 SAVE THIRD WORD CARRY
  2011. LX5 24
  2012. BX4 X0*X1 SAVE SECOND WORD CARRY
  2013. BX1 -X0*X1
  2014. LX1 24
  2015. SA2 A1-B1 GET FIRST WORD
  2016. BX6 X5+X1
  2017. SA6 A6 SET SECOND WORD + THIRD WORD CARRY
  2018. BX5 X0*X2 SAVE FIRST WORD CARRY
  2019. LX4 24
  2020. BX2 -X0*X2
  2021. LX2 24
  2022. SA1 DXPD CONVERT (AX)
  2023. IX7 X4+X2
  2024. SA7 A6-B1 SET FIRST WORD + SECOND WORD CARRY
  2025. SX3 A0
  2026. LX3 6*6
  2027. LX5 24
  2028. IX4 X3+X1
  2029. IX7 X5+X4
  2030. SA7 A7-B1 SET (AX) + FIRST WORD CARRY
  2031. WRITEW F,BUF,A6-BUF+2
  2032. SA0 A0+1 ADVANCE REGISTER
  2033. SB2 A0-10B
  2034. SA5 EPB+A0
  2035. NZ B2,DXP0 IF NOT AS FAR AS X REGISTERS
  2036. WRITEW F,(=C* *),1
  2037.  
  2038. * LIST (X) REGISTERS.
  2039.  
  2040. DXP7 SA2 DXPE CONVERT X REGISTER
  2041. SX3 A0-10B
  2042. LX3 3*6
  2043. IX6 X2+X3
  2044. SA1 EPB+A0
  2045. SA6 BUF
  2046. RJ OCB
  2047. MX1 36 SET EOL IN LAST WORD
  2048. BX6 X1*X6
  2049. SA6 A6
  2050. WRITEW F,BUF,A6-BUF+1
  2051. SA0 A0+1
  2052. SB2 A0-20B
  2053. NZ B2,DXP7 IF NOT END OF X REGISTERS
  2054. WRITEW F,(=C* *),1
  2055.  
  2056. * LIST (RA - RA+1).
  2057.  
  2058. SA2 DXPF
  2059. SA1 EPB+30B
  2060. BX6 X2
  2061. SA6 BUF
  2062. RJ OCB
  2063. MX1 36 SET EOL IN LAST WORD
  2064. BX6 X1*X6
  2065. SA6 A6
  2066. WRITEW F,BUF,A6-BUF+1
  2067. SA2 DXPF+1
  2068. SA1 EPB+31B
  2069. BX6 X2
  2070. SA6 BUF
  2071. RJ OCB
  2072. MX1 36 SET EOL IN LAST WORD
  2073. BX6 X1*X6
  2074. SA6 A6
  2075. WRITEW F,BUF,A6-BUF+1
  2076. WRITEW F,(=C* *),1
  2077. WRITEW F,(=C* *),1
  2078.  
  2079. * PREPARE PROGRAM AREA DUMP.
  2080.  
  2081. SX6 B0+ DEFAULT DUMP 0 TO 74B
  2082. SX7 74B
  2083. SA1 EPB CHECK (P)
  2084. SA2 EPB+2
  2085. AX1 36
  2086. AX2 36
  2087. SX3 X1-2
  2088. PL X3,DXP8 IF (P) GREATER THAN 1
  2089. SA1 EPB+30B (P) = ERROR ADDRESS
  2090. AX1 30
  2091. DXP8 SX1 X1
  2092. PL X1,DXP8.1 IF (P) .GE. 0
  2093. MX3 -17 REMOVE 400000B BIAS
  2094. BX1 -X3*X1
  2095. DXP8.1 SX3 X1-40B
  2096. SX4 X1+40B
  2097. PL X3,DXP9 IF (P-40B) .GT. 0
  2098. SX3 B0+
  2099. EQ DXP10 DUMP 0 TO (P+40B)
  2100.  
  2101. DXP9 IX5 X3-X2
  2102. PL X5,DXP11 IF (P-40B) .GE. FL
  2103. IX5 X4-X2
  2104. NG X5,DXP10 IF (P+40B) .LT. FL
  2105. SX4 X2+ DUMP (P-40B) TO FL
  2106. DXP10 SX6 X3+
  2107. SX7 X4+
  2108. DXP11 SA6 P1
  2109. SA7 P2
  2110. EQ DXPX RETURN
  2111.  
  2112. DXPA DATA C* EXCHANGE PACKAGE.*
  2113. DXPAL EQU *-DXPA
  2114. DXPB VFD 30/0HP,30/0HP
  2115. VFD 30/0HRA,30/0HRA
  2116. VFD 30/0HFL,30/0HFL
  2117. VFD 30/0HEM,30/0HPSD
  2118. VFD 30/0HRAE,30/0HRAE
  2119. VFD 30/0HFLE,30/0HFLE
  2120. VFD 30/0HMA,30/0HMA
  2121. VFD 30/1H ,30/0HEEA
  2122. DXPC DATA 5L
  2123. DXPD VFD 6/1H ,24/0H(A0),6/1H ,24/0
  2124. DXPE DATA 5AX0
  2125. DXPF DATA 8A(RA)
  2126. DATA 8A(RA+1)
  2127. DXPG CON 0 CYBER 176 FLAG
  2128. EBF SPACE 4,15
  2129. ** EBF - EMPTY BUFFER.
  2130. *
  2131. * ENTRY (A2)= ADDRESS OF *FIRST*.
  2132. * (X2)= (FIRST)
  2133. *
  2134. * EXIT (IN)= (OUT)= (FIRST)
  2135. *
  2136. * USES X - 6.
  2137. * A - 6.
  2138. *
  2139. * CALLS NONE.
  2140.  
  2141.  
  2142. EBF SUBR ENTRY/EXIT
  2143. SX6 X2+
  2144. SA6 A2+B1 STORE IN
  2145. SA6 A6+B1 STORE OUT
  2146. JP EBFX RETURN
  2147. END SPACE 4,10
  2148. ** END - PROCESS END.
  2149. *
  2150. * ENTRY NONE.
  2151. *
  2152. * MACROS ENDRUN.
  2153.  
  2154.  
  2155. END BSS 0 ENTRY
  2156. ENDRUN
  2157. ERR SPACE 4,10
  2158. ** ERR - PROCESS ERROR.
  2159. *
  2160. * ENTRY (X2)= ADDRESS OF ERROR MESSAGE.
  2161. *
  2162. * EXIT NONE.
  2163. *
  2164. * MACROS ABORT, MESSAGE.
  2165.  
  2166.  
  2167. ERR BSS 0 ENTRY
  2168. MESSAGE X2,3,R ISSUE DAYFILE MESSAGE
  2169. ABORT
  2170. LDF SPACE 4,15
  2171. ** LDF - LOAD MEMORY FROM FILE.
  2172. *
  2173. * ENTRY (X0)= FWA OF LOAD.
  2174. *
  2175. * EXIT (X0)= LWA+1 LOADED.
  2176. *
  2177. * USES X - 0, 1, 5, 6, 7.
  2178. * A - 6.
  2179. * B - 7.
  2180. *
  2181. * MACROS MESSAGE, READW, RECALL, REWRITE, RPHR, WRITEW.
  2182.  
  2183.  
  2184. LDF5 SX0 X1+
  2185.  
  2186. LDF SUBR ENTRY/EXIT
  2187. LDF1 SB7 X0-DMPL
  2188. PL B7,LDF2 IF MEMORY LOAD
  2189. RECALL D
  2190. SA2 D+1 EMPTY BUFFER
  2191. RJ EBF
  2192. SX6 X0+300B UPDATE 1 PRU
  2193. MX5 -6
  2194. AX6 6
  2195. SA6 D+6
  2196. RPHR D,R
  2197. SA1 D SET EOR STATUS TO PREVENT READ-AHEAD
  2198. SX6 20B
  2199. BX6 X1+X6
  2200. SA6 A1
  2201. READW D,BUF,100B
  2202. SX6 X0+300B
  2203. BX7 -X5*X0 FIND LOAD ADDRESS WITHIN PRU
  2204. AX6 6
  2205. IX5 X5+X7 -(NUMBER OF WORD TO READ) + 1
  2206. SA6 D+6
  2207. BX5 -X5
  2208. READW F,BUF+X7,X5+B1 LOAD PRU
  2209. NG X1,LDFX IF EOF/EOI
  2210. SX6 X5+B1
  2211. BX5 X1 SAVE READ STATUS
  2212. IX0 X0+X6 ADVANCE LOAD ADDRESS
  2213. WRITEW D,BUF,100B REPLACE PRU
  2214. REWRITE D
  2215. ZR X5,LDF1 IF EOR NOT REACHED
  2216. SX5 X5-BUF-100B ADJUST LWA+1
  2217. IX0 X0+X5
  2218. JP LDFX RETURN
  2219.  
  2220. LDF2 SA1 FL FIND NUMBER OF WORDS TO FILL FL
  2221. IX5 X1-X0
  2222. SB7 X5-2
  2223. NG B7,LDF3 IF < 2 WORDS LEFT
  2224. READW F,X0,B7 LOAD ALL BUT LAST 2 WORDS
  2225. IX0 X0+X5 SET NEW LOAD ADDRESS
  2226. NZ X1,LDF5 IF EOR
  2227. SX5 2
  2228. IX0 X0-X5
  2229. LDF3 READW F,X0,X5 LOAD LAST WORDS
  2230. IX0 X0+X5
  2231. NZ X1,LDF5 IF EOR
  2232. MESSAGE LDFA,3,R *RECORD TOO LONG.*
  2233. LDF4 READW F,BUF,100B SKIP REST OF RECORD
  2234. ZR X1,LDF4
  2235. JP LDFX RETURN
  2236.  
  2237. LDFA DATA C* RECORD TOO LONG.*
  2238. LDW SPACE 4,15
  2239. ** LDW - LOAD ONE WORD.
  2240. *
  2241. * ENTRY (X5)= ADDRESS.
  2242. * (X6)= WORD.
  2243. *
  2244. * EXIT NONE.
  2245. *
  2246. * USES X - 0, 1, 2, 6, 7.
  2247. * A - 1, 6, 7.
  2248. * B - 7.
  2249. *
  2250. * MACROS READW, RECALL, REWRITE, RPHR, WRITEW.
  2251.  
  2252.  
  2253. LDW3 SA6 X5+ STORE WORD
  2254.  
  2255. LDW SUBR ENTRY/EXIT
  2256. SB7 X5-DMPL
  2257. PL B7,LDW3 IF ADDRESS IN MEMORY
  2258. SA1 DI CHECK ADDRESS IN BUFFER
  2259. SX7 X5+300B
  2260. AX7 6
  2261. BX2 X1-X7
  2262. ZR X2,LDW2 IF ADDRESS IN BUFFER
  2263. SA7 A1+ SET NEW DUMP INDEX
  2264. SA6 LDWA SAVE DATA
  2265. ZR X1,LDW1 IF BUFFER EMPTY
  2266. BX0 X1 REWRITE PRU
  2267. RECALL D
  2268. BX6 X0
  2269. SA6 D+6
  2270. WRITEW D,PBF,100B
  2271. REWRITE D
  2272. LDW1 RECALL D
  2273. SA1 DI READ PROPER PRU
  2274. BX6 X1
  2275. SA6 D+6
  2276. RPHR D,R
  2277. SA1 D SET EOR STATUS TO PREVENT READ-AHEAD
  2278. SX6 20B
  2279. BX6 X1+X6
  2280. SA6 A1
  2281. READW D,PBF,100B
  2282. SA1 LDWA
  2283. BX6 X1
  2284. LDW2 MX7 -6 STORE WORD
  2285. BX7 -X7*X5
  2286. SA6 PBF+X7
  2287. JP LDWX RETURN
  2288.  
  2289. LDWA CON 0
  2290. OCB SPACE 4,15
  2291. ** OCB - CONVERT OCTAL BY BYTES.
  2292. *
  2293. * ENTRY (X1) = WORD TO CONVERT.
  2294. * (A6) = BUFFER ADDRESS.
  2295. *
  2296. * EXIT (A6) = BUFFER ADDRESS ADVANCED.
  2297. * (X6) = LAST WORD CONVERTED.
  2298. *
  2299. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  2300. * A - 1, 6, 7.
  2301. *
  2302. * CALLS WOD.
  2303.  
  2304.  
  2305. OCB SUBR ENTRY/EXIT
  2306. RJ WOD CONVERT WORD (ABCDEFGHIJ KLMNOPQRST)
  2307. SA1 OCBA
  2308. MX2 -2*6
  2309. BX5 -X2*X6 ........IJ
  2310. MX0 4*6
  2311. BX3 X0*X6 ABCD......
  2312. LX0 -4*6
  2313. IX4 X1+X3 ABCD*....*
  2314. BX2 X0*X6
  2315. LX2 -6 .....EFGH.
  2316. BX6 X4+X2 ABCD*EFGH*
  2317. LX7 -4*6 QRSTKLMNOP
  2318. SA6 A6+B1
  2319. MX0 4*6
  2320. BX6 X0*X7 QRST......
  2321. LX5 8*6 IJ........
  2322. BX7 -X0*X7 ....KLMNOP
  2323. LX7 2*6 ..KLMONP..
  2324. IX2 X5+X7 IJKLMNOP..
  2325. BX3 X0*X2 IJKL......
  2326. LX0 -4*6
  2327. IX4 X1+X3 IJKL*....*
  2328. BX5 X0*X2 ....MNOP..
  2329. SA1 A1+B1 ....******
  2330. LX5 -6 .....MNOP.
  2331. IX7 X4+X5 IJKL*MNOP*
  2332. BX6 X1+X6 QRST******
  2333. SA7 A6+B1
  2334. SA6 A7+B1
  2335. JP OCBX RETURN
  2336.  
  2337. OCBA VFD 24/0,6/1R ,24/0,6/1R
  2338. VFD 24/0,36/6H
  2339. OCT SPACE 4,20
  2340. ** OCT - LIST OCTAL OR OCTAL WITH DISPLAY.
  2341. *
  2342. * ENTRY (B7) = WORD COUNT.
  2343. * (A0) = WORD ADDRESS.
  2344. * (A6) = DESTINATION ADDRESS - 1.
  2345. * (DF) = 1 IF DISPLAY DUMP.
  2346. *
  2347. * EXIT NONE.
  2348. *
  2349. * USES X - 0, 1, 2, 3, 4, 5, 6, 7.
  2350. * A - 1, 2, 3, 6, 7.
  2351. * B - 2, 3, 6, 7.
  2352. *
  2353. * CALLS DCK, WOD.
  2354. *
  2355. * MACROS WRITEW.
  2356.  
  2357.  
  2358. OCT SUBR ENTRY/EXIT
  2359. SA1 A0 READ FIRST WORD
  2360. SB6 B7
  2361. SA2 DF
  2362. NZ X2,OCT2 IF DISPLAY DUMP
  2363. OCT1 RJ WOD CONVERT WORD
  2364. MX5 5*6 BLOCK LINE INTO 15-BIT PARCELS
  2365. BX3 X5*X6 ABCDE.....
  2366. SA2 OCTA
  2367. LX3 -4*6 ....ABCDE.
  2368. BX1 -X5*X6 .....FGHIJ
  2369. IX6 X2+X3 ****ABCDE*
  2370. SA2 A2+B1
  2371. LX1 5*6 FGHIJ.....
  2372. BX4 -X5*X7 .....PQRST
  2373. MX3 -4*6
  2374. IX2 X2+X1 FGHIJ*....
  2375. SA6 A6+B1
  2376. LX7 -6*6 OPQRSTKLMN
  2377. BX0 -X3*X7 ......KLMN
  2378. SA3 A2+B1
  2379. IX6 X2+X0 FGHIJ*KLMN
  2380. MX5 1*6
  2381. SA6 A6+B1
  2382. IX4 X3+X4 ***.*PQRST
  2383. SB7 B7-B1
  2384. BX3 X5*X7 O.........
  2385. SA1 A1+B1 NEXT DUMP BLOCK WORD
  2386. LX4 3*6 .*PQRST***
  2387. IX6 X3+X4 O*PQRST***
  2388. SA6 A6+B1
  2389. NZ B7,OCT1 IF MORE WORDS TO CONVERT
  2390. MX6 0
  2391. SA6 A6+B1
  2392. WRITEW F,BUF,A6-BUF+1
  2393. JP OCTX RETURN
  2394.  
  2395. * LIST MEMORY WITH DISPLAY CODE INTERPRETATION.
  2396.  
  2397. OCT2 RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
  2398. SA6 A6+1
  2399. SA7 A6+1
  2400. OCT3 SA1 A1+1 NEXT DUMP BLOCK
  2401. RJ WOD CONVERT WORD TO OCTAL DISPLAY CODE
  2402. SB7 B7-1
  2403. ZR B7,OCT4 IF END OF NUMBER FORMATTING
  2404. SB2 3
  2405. SB3 B2-B7
  2406. RJ DCK
  2407. JP OCT3 PROCESS NEXT WORD
  2408.  
  2409. OCT4 SB6 B1
  2410. SA1 A0-B1
  2411. SB3 3
  2412. OCT5 SA1 A1+B1
  2413. BX6 X1
  2414. SA1 A1+B1
  2415. BX7 X1
  2416. RJ DCK
  2417. SB6 B6-B1
  2418. SB7 B7-B1
  2419. SB3 4
  2420. PL B6,OCT5 IF MORE COMMENTS
  2421. MX6 0
  2422. SX7 B0
  2423. RJ DCK FLUSH BUFFER AND ADD TERMINATING BYTE
  2424. SA1 DC DETERMINE FILE TYPE
  2425. SX1 X1
  2426. SX2 6
  2427. AX1 1
  2428. IX1 X1*X2
  2429. MX2 24
  2430. SA1 BUF+1+X1
  2431. BX6 X2*X1 SET TERMINATION BYTE
  2432. SA6 A1
  2433. WRITEW F,BUF,A6-BUF+1
  2434. JP OCTX RETURN
  2435.  
  2436. OCTA BSS 0
  2437. VFD 24/1H ,30/0,6/1H
  2438. VFD 30/0,6/1H ,24/0
  2439. VFD 18/1H ,6/0,6/1H ,30/0
  2440. OCTB CON 1H
  2441. PEP SPACE 4,20
  2442. ** PEP - PREPARE EXCHANGE PACKAGE.
  2443. *
  2444. * ENTRY (A0)= FL FROM DUMP FILE.
  2445. *
  2446. * EXIT (EPB - EPB+17B)= EXCHANGE PACKAGE.
  2447. * (EPB+20B - EPB+27B)= ((A REGISTERS))
  2448. * (EPB+30B - EPB+31B)= (RA), (RA+1).
  2449. *
  2450. * USES X - 1, 2, 5, 6, 7.
  2451. * A - 1, 2, 5, 6, 7.
  2452. * B - 7.
  2453. *
  2454. * CALLS ROW.
  2455. *
  2456. * MACROS READW, RECALL, RPHR.
  2457.  
  2458.  
  2459. PEP SUBR ENTRY/EXIT
  2460. RECALL D
  2461. SA2 D+1 EMPTY BUFFER
  2462. RJ EBF
  2463. SX6 1 READ EXCHANGE PACKAGE
  2464. SA6 D+6
  2465. RPHR D,R
  2466. SA1 D SET EOR TO PREVENT READ-AHEAD
  2467. SX6 20B
  2468. MX5 0 INITIALIZE A REGISTER INDEX
  2469. BX7 X1+X6
  2470. SA7 A1+
  2471. READW A1,EPB,20B
  2472. SA2 D+1 EMPTY BUFFER
  2473. RJ EBF
  2474. SX6 3 READ (RA), (RA+1)
  2475. SA6 D+6
  2476. RPHR D
  2477. READW D,EPB+30B,B1+B1
  2478. SA5 EPB READ (A0)
  2479. PEP1 AX5 18 READ ((AN))
  2480. SB7 X5+1 CHECK WORD IN RANGE
  2481. SX5 X5
  2482. BX6 X6-X6
  2483. SB7 A0-B7
  2484. NG X5,PEP2 IF WORD OUT OF RANGE
  2485. NG B7,PEP2 IF WORD OUT OF FL
  2486. RJ ROW READ WORD
  2487. PEP2 SA6 A5+20B STORE ((AN))
  2488. SB7 A5-EPB-7
  2489. SA5 A5+1 READ NEXT REGISTER
  2490. NG B7,PEP1 IF NOT END OF A REGISTERS
  2491. JP PEPX RETURN
  2492. RMW SPACE 4,15
  2493. ** RMW - READ MEMORY WORDS.
  2494. *
  2495. * ENTRY (X1) = SOURCE - WORD COUNT.
  2496. * (B6) = DESTINATION.
  2497. * (B7) = WORD COUNT. (MULTIPLE OF 2).
  2498. *
  2499. * EXIT (X1) = 0.
  2500. *
  2501. * USES X - 1, 2, 3, 6, 7.
  2502. * A - 2, 3, 6, 7.
  2503. * B - 2, 3, 4, 7.
  2504.  
  2505.  
  2506. RMW1 SA2 A2+B2 MOVE 2 WORDS
  2507. SA3 A3+B2
  2508. SB7 B7-B2
  2509. NO
  2510. RMW2 BX6 X2
  2511. LX7 X3
  2512. SA6 A2+B4
  2513. SA7 A3+B4
  2514. NZ B7,RMW1 IF NOT END OF WORDS
  2515. BX1 X1-X1
  2516.  
  2517. RMW SUBR ENTRY/EXIT
  2518. SB3 X1+B7 SET MOVE DIFFERENTIAL
  2519. SB2 B1+B1
  2520. SA2 B3 READ FIRST 2 WORDS
  2521. SA3 B3+B1
  2522. SB4 B6-B3
  2523. SB7 B7-B2
  2524. EQ RMW2 ENTER LOOP
  2525. RNC SPACE 4,15
  2526. ** RNC - READ NEXT CORRECTION.
  2527. *
  2528. * ENTRY NONE.
  2529. *
  2530. * EXIT (X1)" 0 IF EOR/EOF/EOI ENCOUNTERED.
  2531. * (CC)= 0.
  2532. *
  2533. * USES X - 1, 6.
  2534. * A - 6.
  2535. *
  2536. * MACROS READS.
  2537.  
  2538.  
  2539. RNC1 SA6 CC RESET CURRENT COLUMN
  2540. SX1 0 INDICATE NO EOR
  2541.  
  2542. RNC SUBR ENTRY/EXIT
  2543. READS F,BUF,90 READ CORRECTION
  2544. NZ X1,RNCX IF EOR
  2545. SX1 B6-BUF-73
  2546. SX6 0
  2547. NG X1,RNC1 IF CORRECTION ENDS BEFORE COL. 73
  2548. SA6 BUF+72 TERMINATE CORRECTION AT COLUMN 73
  2549. JP RNC1 NORMAL EXIT
  2550. ROW SPACE 4,15
  2551. ** ROW - READ ONE WORD FROM DUMP FILE.
  2552. *
  2553. * ENTRY (X5)= ADDRESS.
  2554. *
  2555. * EXIT (X6)= WORD.
  2556. *
  2557. * USES X - 0, 1, 2, 6, 7.
  2558. * A - 1, 2, 6, 7.
  2559. * B - 7.
  2560. *
  2561. * MACROS READW, RECALL, RPHR.
  2562.  
  2563.  
  2564. ROW2 SA1 X5+ READ WORD
  2565. BX6 X1
  2566.  
  2567. ROW SUBR ENTRY/EXIT
  2568. SB7 X5-DMPL
  2569. PL B7,ROW2 IF WORD IN MEMORY
  2570. SA1 DI CHECK WORD IS IN BUFFER
  2571. SX7 X5+300B
  2572. AX7 6
  2573. BX2 X1-X7
  2574. ZR X2,ROW1 IF IN BUFFER
  2575. SA7 A1 SET NEW DISK INDEX
  2576. BX0 X7
  2577. RECALL D
  2578. SA2 D+1 EMPTY BUFFER
  2579. RJ EBF
  2580. BX6 X0 READ PROPER PRU
  2581. SA6 D+6
  2582. RPHR D,R
  2583. SA1 D SET EOR
  2584. SX6 20B
  2585. BX7 X1+X6
  2586. SA7 A1
  2587. READW D,PBF,100B
  2588. ROW1 MX7 -6 READ WORD
  2589. BX7 -X7*X5
  2590. SA1 PBF+X7
  2591. BX6 X1
  2592. JP ROWX RETURN
  2593. SDC SPACE 4,15
  2594. ** SDC - SET DISABLE TERMINAL CONTROL.
  2595. *
  2596. * ENTRY (B2) .EQ. 0, SET *DISTC* FLAG OPTION.
  2597. * (B2) .NE. 0, SET *DISTC* EXCHANGE OPTION.
  2598. * (B3) .EQ. EXCHANGE ADDRESS IF (B2) .NE. 0.
  2599. *
  2600. * EXIT DISABLE TERMINAL CONTROL SELECTED WHERE APPROPRIATE.
  2601. * TICF = FLAG OPTION ADDRESS, IF FLAG OPTION SELECTED.
  2602. *
  2603. * USES X - 1, 2.
  2604. * A - 1.
  2605. *
  2606. * MACROS DISTC.
  2607.  
  2608.  
  2609. SDC1 DISTC ON,TICF SELECT FLAG OPTION
  2610.  
  2611. SDC SUBR ENTRY/EXIT
  2612. SA1 JOPR GET JOB ORIGIN
  2613. AX1 24 CHECK FOR *TXOT* ORIGIN TYPE
  2614. SX2 X1-TXOT
  2615. NZ X2,SDCX IF JOB NOT *TXOT* ORIGIN
  2616. ZR B2,SDC1 IF FLAG OPTION SELECTED
  2617. DISTC ON,B3,EX SELECT EXCHANGE OPTION
  2618. EQ SDCX EXIT
  2619. SHI SPACE 4,10
  2620. ** SHI - SET HEADER INFORMATION.
  2621. *
  2622. * EXIT VERSION, DATE, TIME SET IN HEADER LINE.
  2623. *
  2624. * MACROS CLOCK, DATE, VERSION.
  2625.  
  2626.  
  2627. SHI SUBR ENTRY/EXIT
  2628. CLOCK TIME
  2629. DATE DATE
  2630. VERSION SHIA
  2631. EQ SHIX RETURN
  2632.  
  2633. SHIA VFD 12/10,12/0,12/0,6/,18/VERW
  2634. SHL SPACE 4,15
  2635. ** SHL - SET HEADER LINE.
  2636. *
  2637. * ENTRY (P1)= FWA.
  2638. * (P2)= LWA.
  2639. * (DMPFL) = DUMP FILE FL.
  2640. * (ECSFL) = DUMP FILE EXTENDED MEMORY FL.
  2641. * (VERF) = FWA OF DUMP HEADER.
  2642. * (VERL) = LENGTH OF DUMP HEADER.
  2643. *
  2644. * USES X - 0, 1, 2, 3, 6, 7.
  2645. * A - 1, 2, 3, 6, 7.
  2646. * B - 5.
  2647. *
  2648. * CALLS COD.
  2649. *
  2650. * MACROS WRITEW.
  2651.  
  2652.  
  2653. SHL1 WRITEW F,SHLB,SHLBL *NO FIELD LENGTH TO DUMP.*
  2654.  
  2655. SHL SUBR ENTRY/EXIT
  2656. SA1 DMPFL CHECK FL
  2657. SA2 ECSFL
  2658. IX6 X1+X2
  2659. ZR X6,SHL1 IF NO FL TO DUMP
  2660. SA2 DC TRUNCATE FIRST WORD ADDRESS
  2661. SA1 P1
  2662. AX2 18
  2663. SB5 X2 DUMP CONTROL SHIFT COUNT
  2664. AX3 X1,B5
  2665. LX6 X3,B5
  2666. SA6 A1
  2667. RJ COD
  2668. SA2 SHLA+1
  2669. MX7 -5*6
  2670. SA1 A2+B1
  2671. LX6 -12
  2672. BX7 -X7*X6 MOST SIGNIFICANT 5 DIGITS
  2673. MX0 2*6
  2674. BX0 X0*X6 LEAST 2 SIGNIFICANT DIGITS
  2675. IX7 X7+X2
  2676. BX0 X0+X1
  2677. SA1 P2 LWA
  2678. SA7 A2 UPDATED SECOND WORD OF HEADER MESSAGE
  2679. AX3 X1,B5
  2680. LX7 X3,B5
  2681. SA7 A1
  2682. RJ COD
  2683. MX7 -4*6
  2684. LX6 -18
  2685. MX1 3*6
  2686. BX7 -X7*X6 MOST SIGNIFICANT FOUR DIGITS
  2687. SA2 SHLA+3
  2688. IX7 X7+X0
  2689. BX6 X1*X6 LEAST SIGNIFICANT THREE DIGITS
  2690. SA7 SHLA+2 UPDATED THIRD WORD OF HEADER MESSAGE
  2691. IX6 X6+X2
  2692. SA6 A7+B1 UPDATED FOURTH WORD OF HEADER MESSAGE
  2693. SA1 VERF GET FWA OF HEADER
  2694. SA3 VERL GET LENGTH OF HEADER
  2695. WRITEW F,X1,X3
  2696. WRITEW X2,SHLA,SHLAL
  2697. JP SHLX RETURN
  2698.  
  2699. SHLA DATA 10H CM DUMP
  2700. DATA 5LFROM
  2701. VFD 12/0,24/4H TO ,24/0
  2702. VFD 18/0,6/1H.,36/0
  2703. SHLAL EQU *-SHLA
  2704.  
  2705. SHLB DATA C*1NO FIELD LENGTH TO DUMP.*
  2706. SHLBL EQU *-SHLB
  2707. SUE SPACE 4,20
  2708. ** SUE - SET USER EM SHIFT COUNT.
  2709. *
  2710. * ENTRY NONE.
  2711. *
  2712. * EXIT (UESC) = USER EM SHIFT COUNT FROM CMR.
  2713. *
  2714. * USES X - 0, 1, 6.
  2715. * A - 1, 6.
  2716. *
  2717. * MACROS SYSTEM.
  2718.  
  2719.  
  2720. SUE SUBR ENTRY/EXIT
  2721. SYSTEM RSB,R,SUEA
  2722. SA1 UESC
  2723. LX1 0-33
  2724. MX0 -3
  2725. BX6 -X0*X1
  2726. SA6 A1
  2727. EQ SUEX USER EM SHIFT COUNT SAVED
  2728.  
  2729. SUEA VFD 24/1,18/MEFL,18/UESC
  2730. WPT SPACE 4,20
  2731. ** WPT - WRITE PREFIX TABLE.
  2732. *
  2733. * ENTRY (A0) = CM FIELD LENGTH.
  2734. * (BHDW) = DUMP RECORD NAME.
  2735. * (DATE, TIME) = DUMP DATE AND TIME.
  2736. *
  2737. * EXIT (A0) = UNCHANGED.
  2738. * (X2) = DUMP FILE FET ADDRESS.
  2739. * PREFIX TABLE WRITTEN TO DUMP FILE.
  2740. *
  2741. * USES X - 1, 2, 6, 7.
  2742. * A - 1, 2, 6, 7.
  2743. * B - 2.
  2744. *
  2745. * CALLS EBF, SFN.
  2746. *
  2747. * MACROS RECALL, RPHR, WRITEW.
  2748.  
  2749.  
  2750. WPT SUBR ENTRY/EXIT
  2751. MX1 16B CLEAR BUFFER
  2752. BX6 X6-X6
  2753. SA6 BUF
  2754. WPT1 LX1 1
  2755. SA6 A6+B1
  2756. NG X1,WPT1 IF NOT ALL CLEARED
  2757. SX1 0016B BUILD PREFIX HEADER
  2758. MX6 6 7700
  2759. LX1 47-11
  2760. SA2 BHDW DUMP NUMBER
  2761. BX6 X6+X1
  2762. BX7 X2
  2763. SA6 BUF STORE PREFIX TABLE HEADER
  2764. SA1 TIME
  2765. SA7 A6+B1 STORE DUMP NUMBER
  2766. SA2 DATE
  2767. BX6 X1
  2768. BX7 X2
  2769. SA7 BUF+2 STORE DATE
  2770. SA6 A7+B1 STORE TIME
  2771. RECALL D
  2772. SA2 X2+B1
  2773. RJ EBF EMPTY BUFFER
  2774. SX6 3 PRU OF FWA OF CM
  2775. SA6 D+6
  2776. SB2 A0
  2777. ZR B2,WPT3 IF NO FIELD LENGTH
  2778. RPHR D,R
  2779. SA1 DBUF+PGNR GET COMMAND NAME
  2780. MX2 42
  2781. BX1 X2*X1
  2782. RJ SFN BLANK FILL COMMAND NAME
  2783. SA6 BUF+4
  2784. SA6 BUF+10B
  2785.  
  2786. * COPY *CCDR* TO COMMENT FIELD.
  2787.  
  2788. SA1 DBUF+CCDR
  2789. SB2 B0
  2790. MX2 6
  2791. WPT2 BX6 X1
  2792. LX2 1
  2793. SA6 BUF+11B+B2
  2794. SA1 A1+B1
  2795. SB2 B2+B1
  2796. NG X2,WPT2 IF MORE TO MOVE
  2797. WPT3 WRITEW F,BUF,17B WRITE PREFIX TABLE
  2798. EQ WPTX RETURN
  2799. WTF SPACE 4,15
  2800. ** WTF - WRITE MEMORY TO FILE.
  2801. *
  2802. * ENTRY (X0)= FWA FOR WRITE.
  2803. * (X5)= NUMBER OF WORDS TO WRITE.
  2804. *
  2805. * EXIT NONE.
  2806. *
  2807. * USES X - 0, 1, 2, 5, 6, 7.
  2808. * A - 1, 2, 6.
  2809. * B - 5, 6, 7.
  2810. *
  2811. * CALLS EBF.
  2812. *
  2813. * MACROS READ, READW, RECALL, WRITER, WRITEW.
  2814.  
  2815.  
  2816. WTF SUBR ENTRY/EXIT
  2817. SB7 X0-DMPL
  2818. PL B7,WTF5 IF MEMORY WRITE
  2819. RECALL D
  2820. SA2 D+1 EMPTY BUFFER
  2821. RJ EBF
  2822. SX6 X0+300B POSITION TO FWA
  2823. AX6 6
  2824. SA6 D+6
  2825. READ D
  2826. MX6 -6
  2827. BX7 -X6*X0
  2828. ZR X7,WTF1 IF FWA=0
  2829. READW D,BUF,X7
  2830. WTF1 SX5 X5-100B
  2831. NG X5,WTF2 IF < 100 WORDS TO WRITE
  2832. READW D,BUF,100B
  2833. NZ X1,WTF4 IF EOR
  2834. WRITEW F,BUF,100B
  2835. SX0 X0+100B ADVANCE WRITE ADDRESS
  2836. JP WTF1 LOOP TO END
  2837.  
  2838. WTF2 SX5 X5+100B
  2839. SB7 X0-DMPL-1 FIND NUMBER OF WORDS TO DMP=
  2840. SX6 X5+B7
  2841. PL X6,WTF3 IF MEMORY INCLUDED IN WRITE
  2842. MX6 -1
  2843. SB7 X5-1
  2844. ZR X5,WTF8 IF NO WORDS TO WRITE
  2845. WTF3 SX5 X6+B1
  2846. SX0 B7+B1
  2847. READW D,BUF,B7+B1
  2848. WRITEW F,BUF,X0
  2849. SX0 DMPL
  2850. JP WTF5 WRITE FROM MEMORY
  2851.  
  2852. WTF4 SX6 B6-BUF
  2853. SX5 X5+100B
  2854. ZR X6,WTF5 IF NO DATA TRANSFERRED ON LAST READ
  2855. IX5 X5-X6
  2856. IX0 X0+X6
  2857. WRITEW F,BUF,X6
  2858. WTF5 SB7 X5-7
  2859. NG B7,WTF6 IF .LT. 7 WORDS
  2860. WRITEW F,X0,B7 WRITE ALL BUT LAST 7 WORDS
  2861. IX0 X0+X5 SET NEW WRITE ADDRESS
  2862. SX5 7
  2863. IX0 X0-X5
  2864. WTF6 ZR X5,WTF8 IF NO WORDS TO TRANSFER
  2865. SB6 X0 STARTING ADDRESS
  2866. SB7 X5 WORD COUNT
  2867. SB5 B0+
  2868. WTF7 SA1 B6+B5 MOVE LAST WORDS
  2869. BX6 X1
  2870. SA6 BUF+B5
  2871. SB5 B5+B1
  2872. LT B5,B7,WTF7 IF NOT END OF MOVE
  2873. WRITEW F,BUF,X5
  2874. WTF8 WRITER F
  2875. JP WTFX RETURN
  2876. SPACE 4
  2877. * COMMON DECKS.
  2878.  
  2879.  
  2880. *CALL,COMCSYS
  2881. *CALL,COMCCIO
  2882. *CALL,COMCCPM
  2883. *CALL COMCCVL
  2884. *CALL,COMCRDW
  2885. *CALL,COMCWTW
  2886. *CALL,COMCDXB
  2887. *CALL,COMCCOD
  2888. *CALL,COMCRDS
  2889. *CALL,COMCWOD
  2890. *CALL,COMCSTF
  2891. *CALL,COMCLFM
  2892. *CALL COMCSFM
  2893. *CALL,COMCSFN
  2894. BUFFS TITLE BUFFERS.
  2895. * BUFFERS.
  2896.  
  2897. BUFFERS BSS 0
  2898. USE //
  2899. SEG
  2900.  
  2901.  
  2902. BUF BSS 90D WORKING BUFFER
  2903. BUF1 BSS 4 DUMP ASSEMBLY BUFFER 1
  2904. BUF2 BSS 4 DUMP ASSEMBLY BUFFER 2
  2905. DBUF BSS DBUFL DM* FILE BUFFER / ECS DUMP BUFFER
  2906. PBF BSS 100B DUMP FILE PRU BUFFER
  2907. EPB BSS 20B+10B+2 EXCHANGE PACKAGE, ((AN)), (RA), (RA+1)
  2908. FBUF BSS FBUFL USER FILE BUFFER
  2909. BSS 10B ALLOW FOR *COMCRDW* READ AHEAD
  2910. SBUF EQU BUF1-24 BUF+67-STRING BUFFER FOR DISPLAY CODE
  2911. *
  2912. * MACHINE DUMP BUFFERS OVERLAY THOSE ABOVE.
  2913. *
  2914. PBUF EQU BUF *SFM* BUFFER
  2915. MBUF EQU PBUF+PBUFL DUMP FILE BUFFER
  2916. ERRNG *-MBUF-MBUFL-10
  2917.  
  2918.  
  2919. IDENT
  2920. .1 SET *+77B
  2921. DMP= EQU .1/100B+10000B
  2922. DMPL EQU .1/100B*100B END OF MEMORY CONTAINED IN FILE
  2923. MFL= EQU DMPL
  2924. SSJ= EQU 0
  2925.  
  2926.  
  2927. END