User Tools

Site Tools


plato:source:plaopl:esmcp

Table of Contents

ESMCP

Table Of Contents

  • [00009] ESM - CONTROL EXTENDED SEMI-CONDUCTOR MEMORY.
  • [00117] MAIN PROGRAM.
  • [00253] PKD - PROCESS *K* DISPLAY.
  • [00331] FUNCTION PROCESSORS.
  • [00345] CON - CONFIGURE ESM.
  • [00909] SUBROUTINES.
  • [01159] SYN - GENERATE SYNDROME TO BIT CONVERSION
  • [01653] FRM - FORM RELOCATION MEMORY
  • [01717] MAS - CALL PP PROGRAM *MAS*.
  • [01739] ROL - ROLLOUT FOR A WHILE
  • [01752] RSP - ASSIGN SIDE-DOOR PORT.
  • [01864] UEL - UNPACK ERROR LOG
  • [01927] WEM - WRITE ERROR MESSAGE
  • [02129] DATA STORAGE.

Source Code

ESMCP.txt
  1. ESMCP
  2. * /--- FILE TYPE = E
  3. * /--- BLOCK IDENT 00 000 79/10/16 12.59
  4. IDENT ESM,ESM CONTROL EXTENDED SEMI-CONDUCTOR MEMORY
  5.  
  6. ABS
  7. SST MA,T1
  8.  
  9. TITLE ESM - CONTROL EXTENDED SEMI-CONDUCTOR MEMORY.
  10.  
  11. ENTRY ESM
  12. ENTRY RFL=
  13.  
  14. SYSCOM B1
  15.  
  16. COMMENT CONTROL EXTENDED SEMI-CONDUCTOR MEMORY
  17. COMMENT COPYRIGHT CONTROL DATA CORP. 1978.
  18. SPACE 5,11
  19. *** ESM - CONTROL ESM.
  20. *
  21. * ESM CONTROLS ESM - EXTENDED SEMI-CONDUCTOR MEMORY.
  22. *
  23. * FUNCTIONS INCLUDE
  24. *
  25. * ERROR LOG MONITORING / DISPLAYING.
  26. * RELOCATION MEMORY MODIFICATION / LOADING.
  27. SPACE 5
  28. * SINGLE / DOUBLE BITS ERRORS ARE WRITTEN TO
  29. * THE NOS ERROR LOG AND THE PLATO DATASET *S0ESMERR*.
  30. *
  31. * FORMAT OF PLATO DATASET
  32. *
  33. * RECORD 1 / WORD 1 - *S0ESMERR*
  34. * RECORD 1 / WORD 2 - CURRENT RECORD TO WRITE TO
  35. * RECORD 1 / WORD 3 - NEXT WORD CURRENT RECORD
  36. *
  37. * REST OF DATASET - *PMSGL* WORDS / ERROR MESSAGE
  38. *
  39. * 320 WORDS RECORDS REQUIRED
  40. SPACE 5,11
  41.  
  42. * *MACREF* BACKSTITCHED FROM HIGHER LEVEL NOS.
  43.  
  44. PURGMAC MACREF
  45. MACREF MACRO N
  46. QUAL MACROS
  47. N SET *
  48. QUAL *
  49. ENDM
  50. *** ESM CONTROL CARD.
  51. *
  52. * ESM(F=LFN1,NK)
  53. *
  54. * LFN1- FILE WHERE ESM RELOCATION MEMORY STORED.
  55. * DEFAULT - ESMRM/UI=377777.
  56. * NK - DO NOT REQUEST *K* DISPLAY.
  57. * INITIALIZE RELOCATION MEMORY ONLY.
  58. * CLEAR ERROR LOG.
  59. * MONITOR ERROR LOG FOR PARITY ERRORS.
  60.  
  61.  
  62. * /--- BLOCK MACROS 00 000 80/09/19 11.02
  63. SPACE 5,11
  64. *CALL COMCMAC
  65. *CALL COMCDCM
  66. *CALL PLASMRC
  67. *CALL PLASESM
  68.  
  69. **** ASSEMBLY CONSTANTS.
  70.  
  71. BUFL EQU 301B BUFFER LENGTH
  72. ESML EQU 130 LENGTH OF RELOCATION FILE
  73. ERL EQU 64 LENGTH OF MEMORY ERROR LOG
  74. BLKLTH EQU 320 PLATO BLOCK LENGTH
  75. DSBLKS EQU 7 BLOCKS / PART
  76. RECX EQU 0 ECS BUFFER ADDRESS
  77. DSET MICRO 1,, S0ESMERR PLATO DATA SET NAME
  78. MSGL EQU 7 MESSAGE LENGTH IN ERROR LOG
  79. PMSGL EQU MSGL+2 MESSAGE LENGTH IN DATA SET
  80. EFL EQU BLKLTH ECS FIELD LENGTH
  81.  
  82. ****
  83. MACROS SPACE 5,11
  84. *** DSL - DEFINE DATA FOR DISPLAY.
  85. *
  86. * DSL X,Y,A
  87. *
  88. * X - X LINE NUMBER.
  89. * Y - Y CHARACTER POSITION.
  90. * A - DATA TO DISPLAY.
  91.  
  92. NOREF B,C,D
  93. PURGMAC DSL
  94.  
  95. DSL MACRO X,Y,A
  96. B MICRO 1,6,$A$
  97. C MICRO 7,,$A$
  98. D SET Y D+1
  99. VFD 12/6000B+X*8,12/7756B-D*10,36/6H"B"
  100. DATA H$"C"$
  101. ENDM
  102.  
  103. ** DEFINE SINGLE WORD ESM TRANSFERS
  104.  
  105. PURGDEF RXX
  106.  
  107. RXX OPDEF I,J
  108. + VFD 9/014B,3/I,3/J,15/0
  109. ENDM
  110.  
  111. PURGDEF WXX
  112.  
  113. WXX OPDEF I,J
  114. + VFD 9/015B,3/I,3/J,15/0
  115. ENDM
  116. * /--- BLOCK MAIN 00 000 79/11/06 19.41
  117. TITLE MAIN PROGRAM.
  118. ORG 120B
  119. ESM SB1 1 (B1) = 1
  120. SA1 ACTR GET ARGUMENT COUNT
  121. SA4 ARGR GET FIRST ARGUMENT
  122. SB5 ARGS (B5) = ARGUMENT TABLE
  123. SB4 X1
  124. RJ ARG PROCESS ARGUMENTS
  125. ZR X1,ESM2 IF NO ERRORS
  126. ESM1 MESSAGE (=C* ARGUMENT ERRORS.*)
  127. ABORT
  128.  
  129. ESM2 SA1 ARGF CHECK IF *F* PARAMETER USED
  130. NG X1,ESM4 IF *F* PRESENT
  131. ESM3 BSS 0
  132. GETPFP PFA SAVE PACKNAM, USERNUM, USERIND
  133. SETUI 377777B GET FILE FROM SYSTEM USER INDEX
  134. GET RF
  135. ESM4 SA1 KD CHECK IF *K* DISPLAY REQUESTED
  136. NZ X1,NKO IF *NK* PARAMETER PRESENT
  137. EQ PKD
  138.  
  139. * TERMINATE PROGRAM
  140. * (B2) = 0 IF NORMAL TERMINATION
  141. * MESSAGE IF ABNORMAL CONDITION.
  142.  
  143. ESM5 NZ B2,ESM7 IF NOT NORMAL TERMINATION
  144. SA1 KD CHECK IF *NK* OPTION
  145. NZ X1,MEL IF SO MONITOR ERROR LOG
  146. SA1 ARGF CHECK IF MUST RESET UI/PACKNAM
  147. NG X1,ESM6 IF *F* PRESENT
  148. SA3 PFA READ GET,SET/PFP 1ST PARM WORD
  149. MX6 -3
  150. BX6 -X6+X3 OR IN SET OF 3 FLAG BITS
  151. SA6 A3 RESET 1ST PARAMETER WORD
  152. SETPFP A3 RESET PACKNAM, USERNUM, USERIND
  153. ESM6 ENDRUN TERMINATE PROGRAM
  154.  
  155. ESM7 MESSAGE B2 ISSUE DAYFILE MESSAGE
  156. MOVE 2,B2,KERR MOVE MESSAGE
  157. SA1 KD CHECK IF IN *K* DISPLAY
  158. BX6 X6-X6
  159. SA6 A1
  160. ZR X1,PKD2 IF IN *K* DISPLAY
  161. MOVE KDL,CKD,LSA CLEAR LEFT SCREEN
  162. MOVE HLPL,HLPA,RSA
  163. EQ PKD1 REQUEST *K* DISPLAY
  164. * /--- BLOCK MEL 00 000 79/10/15 18.21
  165. MEL TITLE MONITOR ERROR LOG
  166. *** MEL - MONITOR ERROR LOG.
  167.  
  168.  
  169. MEL RJ RSP
  170. SX0 ELR READ ERROR LOG
  171. RJ FNC
  172. SX0 REL
  173. RJ FNC
  174. RJ UEL
  175.  
  176. * PROCESS DOUBLE BIT ERRORS
  177.  
  178. SB5 15
  179. SX5 B0 (X5) = COUNT LENGTH OF LOG
  180. MEL1 SA1 ERB1+B5
  181. PL X1,MEL2 IF NO DATA IN THIS WORD
  182. SB2 ERB2 SEARCH FOR DOUBLE BIT ERROR
  183. SB3 ERL
  184. SX5 X5+B1 COUNT THIS ENTRY
  185. RJ STB SEARCH TABLE
  186. ZR X6,MEL2 IF FOUND
  187. SA2 FEMC
  188. RJ FEM FORMAT ERROR MESSAGE
  189. RJ WEM WRITE ERROR MESSAGE
  190. MEL2 SB5 B5-B1
  191. GE B5,MEL1 IF MORE ENTRIES
  192.  
  193. * PROCESS SINGLE BIT ERRORS
  194.  
  195. SB5 15
  196. MEL3 SA1 ERB1+16+B5
  197. MX0 12
  198. BX2 X0*X1
  199. ZR X2,MEL4 IF NO DATA IN THIS WORD
  200. SB2 ERB3 SEARCH FOR SINGLE BIT ERROR
  201. SB3 ERL
  202. SX5 X5+100B COUNT THIS ENTRY
  203. RJ STB
  204. ZR X6,MEL4 IF FOUND
  205. SA2 FEMB
  206. RJ FEM FORMAT ERROR MESSAGE
  207. RJ WEM WRITE ERROR MESSAGE
  208. MEL4 SB5 B5-B1
  209. GE B5,MEL3 IF MORE ENTRIES
  210. RJ CPF CLOSE PLATO FILE
  211.  
  212. * CHECK IF TIME TO CLEAR ERROR LOG
  213.  
  214. LX5 12
  215. SX6 X5
  216. SX6 X6-160000B
  217. PL X6,MEL5 IF OVER 14 DOUBLE ERRORS
  218. AX5 12+6
  219. SX6 X5-15
  220. NG X6,MEL6 IF UNDER 15 SINGLE ERRORS
  221. MEL5 RJ RSP
  222. SX0 CEL CLEAR ERROR LOG
  223. RJ FNC
  224. SX0 REL
  225. RJ FNC
  226.  
  227. * ROLLOUT FOR A WHILE
  228.  
  229. MEL6 RJ CPF CLOSE PLATO FILE IS NEEDED
  230.  
  231. * IF OPERATOR ROLLIN, PROCESS *K* DISPLAY
  232.  
  233. RTIME T1
  234. ROLLOUT MELA
  235. SA5 T1
  236. RTIME T1
  237. SA1 T1
  238. AX5 36 (X5) = SECONDS AT ROLLOUT
  239. AX1 36 (X1) = CURRENT SECONDS
  240. SA2 MELA (X2) = SECONDS TO ROLL OUT
  241. IX1 X1-X5 (X1) = SECONDS ACTUALLY ROLLED
  242. IX1 X2-X1
  243. SX1 X1-2
  244. NG X1,MEL IF TIMED ROLLIN
  245. SA1 =0LERRORS. DISPLAY ERROR LOG
  246. BX6 X1
  247. SA6 KB
  248. EQ PKD PROCESS *K* DISPLAY
  249.  
  250. MELA CON 5*60 ROLLOUT FOR 5 MINUTES
  251. * /--- BLOCK PKD 00 000 79/11/13 13.59
  252. PKD TITLE PROCESS *K* DISPLAY
  253. ** PKD - PROCESS *K* DISPLAY.
  254.  
  255. PKD MOVE KDL,CKD,LSA CLEAR LEFT SCREEN
  256. MOVE HLPL,HLPA,RSA
  257. REWIND RF READ EXISTING RELOCATION FILE
  258. READ RF
  259. READW RF,SMB,ESML
  260. NZ X1,PKD1 IF NOT ENOUGH DATA
  261. SA1 SMB CHECK HEADER WORD
  262. SA2 ESMH
  263. BX1 X1-X2
  264. NZ X1,PKD1 IF IN ERROR
  265. RJ FKD FORMAT *K* DISPLAY
  266. PKD1 CONSOLE KR
  267. PKD2 SA5 KB CHECK IF ANY DATA TYPED IN
  268. NZ X5,PKD3 IF DATA
  269. RECALL
  270. EQ PKD2
  271.  
  272. PKD3 MOVE 5,KB,KDT MOVE INPUT TO DISPLAY
  273. SA1 =10H
  274. BX7 X1
  275. SA7 KERR CLEAR ERROR FLAG
  276. SA7 A7+B1
  277. SA5 KB
  278. SB7 ARGR UNPACK CONTROL CARD
  279. RJ UPC
  280. SX7 B6-B1 SAVE PARAMETER COUNT
  281. SA7 T1
  282. BX7 X7-X7 CLEAR KEYBOARD BUFFER
  283. SB2 7
  284. PKD4 SA7 KB+B2
  285. SB2 B2-B1
  286. GE B2,PKD4
  287. ZR X6,PKD6 IF NO ERROR
  288. PKD5 SA5 =0HERROR.
  289. BX6 X5
  290. SA6 KERR
  291. EQ PKD2 GET NEXT INPUT
  292.  
  293. PKD6 SA1 ARGR GET FUNCTION CODE
  294. SA2 PKDA
  295. MX0 42
  296. PKD7 BX6 X1-X2
  297. BX6 X0*X6
  298. ZR X6,PKD8 IF A MATCH
  299. SA2 A2+B1
  300. NZ X2,PKD7 IF MORE ARGUMENTS
  301. EQ PKD5
  302.  
  303. PKD8 SB2 X2 GET PROCESSOR ADDDRESS
  304. JP B2 PROCESS FUNCTION
  305.  
  306. * COMMON RETURN POINT FROM PROCESSORS
  307.  
  308. PKDX SA5 =0HCOMPLETE.
  309. BX6 X5
  310. SA6 KERR SET FUNCTION COMPLETE
  311. EQ PKD2 WAIT FOR NEXT COMMAND
  312.  
  313. PKDA VFD 42/0LCLEAR,18/CLE
  314. VFD 42/0LCONFIG,18/CON
  315. VFD 42/0LEND,18/END
  316. VFD 42/0LERRORS,18/ERD
  317. VFD 42/0LFLAW,18/FLW
  318. VFD 42/0LGO,18/GO
  319. VFD 42/0LHELP,18/HLP
  320. VFD 42/0LINIT,18/INI
  321. VFD 42/0LLOAD,18/LOA
  322. VFD 42/0LMA,18/PMA
  323. VFD 42/0LPA,18/PPA
  324. VFD 42/0LRELOC,18/DRM
  325. VFD 42/0LSAVE,18/SAV
  326. VFD 42/0LSET,18/SET
  327. VFD 42/0LSTOP,18/STP
  328. VFD 42/0LZERO,18/ZER
  329. CON 0
  330. * /--- BLOCK CLE 00 000 78/02/13 11.21
  331. TITLE FUNCTION PROCESSORS.
  332. CLE SPACE 5,11
  333. *** CLE - CLEAR ERROR LOG.
  334.  
  335. CLE RJ RSP RESERVE SIDE-DOOR PORT
  336. SX0 CLEA SEND CLEAR FUNCTION
  337. RJ FNC
  338. SX0 REL RELEASE SIDE-DOOR PORT
  339. RJ FNC
  340. EQ PKDX
  341.  
  342. CLEA CON RSEF RESET ERROR LOG
  343. * /--- BLOCK CONFIG 00 000 79/10/30 11.38
  344. CONFIG SPACE 5,11
  345. ** CON - CONFIGURE ESM.
  346. *
  347. * THE CHIP TYPE OF EACH BANK AS WELL AS THE
  348. * NUMBER OF BANKS IS DETERMINED.
  349. *
  350. * CONFIG.
  351.  
  352.  
  353. CON SA1 ESMH SET HEADER FOR FILE
  354. BX6 X1
  355. SA6 SMB
  356. RJ RSP ASSIGN SIDE-DOOR PORT
  357. SX6 B0+ SET UP RELOCATION MEMORY (16M)
  358. SB2 128
  359. CON1 SA6 SMB+2+X6
  360. SX6 X6+B1
  361. SB2 B2-B1
  362. GT B2,CON1 STORE REST OF MEMORY
  363. BX7 X7-X7 CLEAR LAST ENTRY
  364. SA7 SMB+2+X6
  365. RJ FRM FORMAT MEMORY
  366. SX0 RMB LOAD RELOCATION MEMORY
  367. RJ FNC
  368. SX6 177B SET MAXIMUM ADDRESS
  369. LX6 48
  370. SX0 MA
  371. SA6 X0+B1
  372. RJ FNC
  373. SX0 SXP SET UP EXCHANGE PACKAGE
  374. RJ FNC
  375. SX0 REL RELEASE SIDE-DOOR PORT
  376. RJ FNC
  377. BX0 X0-X0 SAVE WORD ZERO
  378. SA0 T1 SAVE ADDRESS ZERO IN (T1)
  379. + RE 1
  380. RJ ECSPRTY
  381. * /--- BLOCK CONFIG 00 000 79/10/29 17.46
  382.  
  383. * WRITE ADDRESES TO ESM AND READ BACK
  384.  
  385. SX0 B0 (X0) = ESM ADDRESS
  386. SB2 B0 (B2) = INDEX INTO MEMORY
  387. SX6 B1 (X6) = DATA TO WRITE
  388. SA1 CONA (X1) = 512K INCREMENT
  389. SA0 CONB (A0) = LOCATION TO READ/WRITE FROM/TO
  390. CON2 BX2 X0 (X2) = BEGINNING ADDRESS
  391. BX3 X6 (X3) = BEGINNING DATA
  392. SA6 A0 PREPARE TO WRITE (X6) TO (X0)
  393. + WE 1
  394. EQ CON3
  395. SX7 1000B
  396. IX0 X0+X7
  397. IX6 X6+X7
  398. SA6 A0 PREPARE TO WRITE (X6) TO (X0)
  399. + WE 1
  400. EQ CON3
  401. BX4 X6 (X4) = ENDING DATA WRITTEN
  402. BX0 X2 RESET X0
  403. BX6 X3 RESET X6
  404.  
  405. * READ DATA WRITTEN TO ESM AND VERIFY
  406.  
  407. + RE 1
  408. EQ CON3
  409. SA5 A0
  410. BX7 X5
  411. BX5 X7-X6 CHECK IF CORRECT DATA
  412. NZ X5,CON4 IF MISMATCH
  413. SX7 1000B
  414. IX0 X0+X7
  415. IX6 X6+X7
  416. + RE 1
  417. EQ CON3
  418. SA5 A0
  419. BX7 X5
  420. BX5 X7-X6 CHECK IF CORRECT DATA
  421. NZ X5,CON4 IF MISMATCH
  422.  
  423. * SKIP TO NEXT BANK
  424.  
  425. CON2.1 IX0 X2+X1 INCREMENT ADDRESSES BY 512K
  426. IX6 X3+X1
  427. SB2 B2+4 INCREMENT RELOCATION MEMORY
  428. BX2 X0 CHECK IF DONE
  429. LX2 59-24
  430. PL X2,CON2 CONTINUE CHECKING
  431.  
  432. * END OF MEMORY REACHED
  433.  
  434. SX6 B2-1 SET MAXIMUM ADDRESS
  435. SX7 B2-1
  436. LX7 12
  437. BX6 X6+X7
  438. SA6 SMB+1
  439. RJ FKD FORMAT *K* DISPLAY
  440. RJ LRM LOAD RELOCATION MEMORY
  441. SA0 T1 RE-WRITE WORD ZERO
  442. BX0 X0-X0
  443. WE 1
  444. + SX0 CXP CLEAR EXCHANGE PACKAGE
  445. RJ FNC
  446. EQ PKDX
  447. * /--- BLOCK CONFIG 00 000 79/10/29 17.24
  448.  
  449. * ESM ABORT SIGNAL
  450. * DELETE THIS 512K BANK
  451.  
  452. CON3 SA4 SMB+2+B2+4 MOVE MEMORY UP FOUR WORDS
  453. CON3.1 BX7 X4
  454. SA7 A4-4
  455. ZR X4,CON3.2 IF END OF MEMORY
  456. SA4 A4+B1
  457. EQ CON3.1
  458.  
  459. CON3.2 SA7 A7+B1 CLEAR NEXT FOUR WORDS
  460. SA7 A7+B1
  461. SA7 A7+B1
  462. SA7 A7+B1
  463. SB2 B2-4
  464. EQ CON2.1 CONTINUE UNTIL END OF MEMORY
  465.  
  466. * DATA DID NOT MATCH ON READ
  467.  
  468. CON4 BX6 X2-X0 CHECK IF AT BEGINNING OF BANK
  469. NZ X6,CON7 IF NOT AT BEGINNING BANK
  470. ZR X7,CON3 IF ZERO WORD READ
  471. BX6 X7-X4 CHECK IF HIGH ADDRESS READ
  472. NZ X6,CON7 IF NOT HIGH ADDRESS
  473.  
  474. * FOUND A 16K BOARD
  475. * MOVE RELOCATION MEMORY UP TO ACCOUNT FOR IT
  476.  
  477. SA4 SMB+2+B2 SET 16K CHIP BIT
  478. SX7 1S7
  479. BX7 X7+X4
  480. SA7 A4
  481. SA4 A4+4 MOVE RELOCATION MEMORY UP 3
  482. CON5 BX7 X4
  483. SA7 A4-3
  484. ZR X4,CON6 IF END OF MEMORY
  485. SA4 A4+B1
  486. EQ CON5
  487.  
  488. CON6 SA7 A7+B1 CLEAR NEXT 3 WORDS
  489. SA7 A7+B1
  490. SA7 A7+B1
  491. SB2 B2-3
  492. EQ CON2.1
  493.  
  494. * UNKNOWN ERROR ENCOUNTERED
  495.  
  496. CON7 BX6 X6-X6
  497. SA6 SMB+1
  498. SA6 A6+B1
  499. SA0 T1 RE-WRITE WORD ZERO
  500. BX0 X0-X0
  501. WE 1
  502. + SX0 CXP CLEAR EXCHANGE PACKAGE
  503. RJ FNC
  504. EQ PKD5 SEND ERROR MESSAGE
  505.  
  506.  
  507. CONA CON 512S10 512K
  508. CONB DATA 0
  509. * /--- BLOCK DRM/END 00 000 79/11/12 20.14
  510. DRM SPACE 5,11
  511. *** DRM - DISPLAY RELOCATION MEMORY.
  512. *
  513. * RELOC.
  514.  
  515.  
  516. DRM RJ FKD FORMAT *K* DISPLAY
  517. EQ PKDX EXIT
  518. END SPACE 5,11
  519. *** END - TERMINATE WITHOUT LOADING RELOCATION
  520. * MEMORY, BUT SAVE ON FILE
  521. *
  522. * END.
  523.  
  524. END RJ SRM SAVE RELOCATION MEMORY
  525. EQ GO1 TERMINATE
  526. * /--- BLOCK ERD 00 000 79/10/22 20.49
  527. ERD SPACE 5,11
  528. *** ERD - DISPLAY ERROR LOG.
  529.  
  530. ERD RJ RSP ASSIGN SIDE-DOOR PORT
  531. SX0 SBR STATUS BIT READ
  532. RJ FNC
  533. SX0 ELR ERROR LOG READ FUNCTION
  534. RJ FNC
  535. SX0 REL RELEASE SIDE-DOOR PORT
  536. RJ FNC
  537. RJ UEL UNPACK ERROR LOG
  538. MOVE KDL,CKD,LSA CLEAR LEFT SCREEN
  539. MOVE ERDL,ERDB,LSH MOVE HEADER LINE
  540. MOVE ERDL,ERDC,LSH+ERDL+16*MSGL
  541. MOVE HLPL,HLPA,RSA SET HELP TO RIGHT SCREEN
  542.  
  543. * PROCESS DOUBLE BIT ERRORS
  544.  
  545. SB6 B0
  546. SB5 15
  547. ERD1 SA1 ERB1+B5
  548. PL X1,ERD2 IF NO DATA IN THIS WORD
  549. SA2 ERDD
  550. SX6 B6+28 COMPUTE Y = 7756B-10*(I+28)
  551. SX3 -10
  552. IX6 X6*X3
  553. SX6 X6+7756B
  554. LX6 36
  555. BX2 X2+X6 SET Y AXIS
  556. RJ FEM FORMAT ERROR MESSAGE
  557. SX2 MSGL
  558. SX3 B6+16
  559. IX3 X3*X2
  560. MOVE MSGL,FEMA,LSH+2*ERDL+X3
  561. SB6 B6+B1
  562. ERD2 SB5 B5-B1
  563. GE B5,ERD1 IF MORE ENTRIES
  564.  
  565. * PROCESS SINGLE BIT ERRORS
  566.  
  567. SB6 B0
  568. SB5 15
  569. MX0 12
  570. ERD3 SA1 ERB1+16+B5
  571. BX2 X0*X1
  572. ZR X2,ERD4 IF NO DATA IN THIS WORD
  573. SA2 ERDA
  574. SX6 B6+10 COMPUTE Y = 7756B-10*(I+10)
  575. SX3 -10
  576. IX6 X6*X3
  577. SX6 X6+7756B
  578. LX6 36
  579. BX2 X2+X6 SET Y AXIS
  580. RJ FEM FORMAT ERROR MESSAGE
  581. SX2 MSGL
  582. SX3 B6
  583. IX3 X3*X2
  584. MOVE MSGL,FEMA,LSH+ERDL+X3
  585. SB6 B6+B1
  586. MX0 12
  587. ERD4 SB5 B5-B1
  588. GE B5,ERD3 IF MORE ENTRIES
  589. EQ PKDX GET NEXT COMMAND
  590.  
  591. ERDA VFD 12/6000B,12/0,12/6000B,12/6000B,12/6000B
  592. DATA C* 0 00 0 0 00 00 00-00
  593. ,000*
  594.  
  595. ERDB DSL 24,8,(SINGLE BIT ERRORS)
  596. DSL 0,,( BSU BANK SCAN CS BIT CABINET MODULE
  597. , CHIP)
  598. ERDL EQU *-ERDB
  599. D SET D+16
  600.  
  601. ERDC DSL 24,,(DOUBLE BIT ERRORS)
  602. DSL 0,,( BSU BANK SCAN CS ADDR CABINET MODULE
  603. , )
  604.  
  605. ERDD VFD 12/6000B,12/0,12/6000B,12/6000B,12/6000B
  606. DATA C* 0 00 0 0 00000 00 00-00
  607. , *
  608. * /--- BLOCK FLW 00 000 78/08/30 12.39
  609. FLW SPACE 5,11
  610. *** FLW - FLAW / CLEAR FLAW IN ESM.
  611. *
  612. * FLAW,BSU,BANK.
  613.  
  614.  
  615. FLW SA1 T1 GET ARGUMENT COUNT
  616. SA5 ARGR+1
  617. ZR X1,PKD5 IF NO PARAMETERS
  618. BX6 X6-X6
  619. SX1 X1-1
  620. ZR X1,FLW1 IF NO BSU ASSUME = 0
  621. SB7 B0
  622. MX0 42
  623. BX5 X0*X5
  624. RJ DXB CONVERT BSU
  625. NZ X4,PKD5 IF ERROR
  626. SX1 X6-2
  627. PL X1,PKD5 IF TOO LARGE
  628. SA5 A5+B1
  629. FLW1 SB6 X6
  630. MX0 42
  631. BX5 X0*X5
  632. SB7 B0
  633. RJ DXB CONVERT BANK
  634. NZ X4,PKD5 IF ERROR
  635. SX1 X6-16
  636. PL X1,PKD5 IF TOO LARGE
  637. SX7 B6 MERGE BSU AND BANK
  638. LX7 4
  639. BX6 X6+X7 (X6) = BSU /BANK TO FLAW
  640. LX6 2 POSITION TO RELOCATION SLOTS
  641. SA1 SMB+1 SEARCH FOR THIS BANK
  642. MX0 -12
  643. AX1 12
  644. BX1 -X0*X1
  645. SB2 X1 (B2) = NUMBER PHYSICAL BANKS
  646. SX3 1S9 (X3) = FLAW BIT POSITION
  647. SX0 174B (X0) = MASK FOR BSU/BANK
  648. FLW2 SA1 A1+B1 GET NEXT RELOCATION ENTRY
  649. BX2 X0*X1
  650. BX2 X2-X6
  651. NZ X2,FLW3 IF THIS ENTRY IS NOT THIS BANK
  652. BX7 X3-X1 TOGGLE FLAW BIT
  653. SA7 A1
  654. FLW3 SB2 B2-B1
  655. GT B2,FLW2 PROCESS REST OF ENTRIES
  656. RJ SOR SORT RELOCATION MEMORY
  657. RJ FKD FORMAT *K* DISPLAY
  658. EQ PKDX GET NEXT COMMAND
  659. * /--- BLOCK GO/HLP/IN 00 000 79/10/10 11.17
  660. GO SPACE 5,11
  661. *** GO - LOAD AND SAVE RELOCATION MEMORY.
  662. *
  663. * GO.
  664.  
  665. GO RJ LRM LOAD RELOCATIN MEMORY
  666. RJ SRM SAVE RELOCATION MEMORY
  667. GO1 MESSAGE (=C* ESM COMPLETE.*)
  668. SB2 B0 SET NORMAL TERMINATION
  669. EQ ESM5
  670. HLP SPACE 5,11
  671. *** HLP - DISPLAY HELP MESSAGES TO DESCRIBE COMMANDS
  672. *
  673. * HELP.
  674.  
  675.  
  676. HLP MOVE KDL,CKD,RSA CLEAR RIGHT SCREEN
  677. MOVE HLPL,HLPA,RSA SET UP HELP SCREEN
  678. SA1 =10HSEE RIGHT
  679. SA2 =10HSCREEN.
  680. BX6 X1
  681. BX7 X2
  682. SA6 KERR
  683. SA7 A6+B1
  684. EQ PKD2
  685. INI SPACE 5,11
  686. *** INI - INITIALIZE RELOCATION MEMORY TABLE
  687. *
  688. * INIT.
  689.  
  690. INI SA1 ESMH
  691. SB2 128
  692. BX6 X1
  693. SX7 B2
  694. SA6 SMB SET HEADER WORD
  695. LX7 12 SET NUMBER OF PHYSICAL BANKS
  696. SA7 A6+B1 SET NUMBER OF BANKS
  697. BX7 X7-X7
  698. INI1 SA7 A7+B1 SET NEXT RELOCATION ENTRY
  699. SB2 B2-B1
  700. SX7 X7+B1
  701. GE B2,INI1 IF MORE ENTRIES
  702. RJ FKD FORMAT K DISPLAY
  703. EQ PKDX GET NEXT COMMAND
  704. * /--- BLOCK LOA/NKO 00 000 79/10/10 11.17
  705. LOA SPACE 5,11
  706. *** LOA - LOAD RELOCATION MEMORY.
  707. *
  708. * LOAD.
  709.  
  710. LOA RJ LRM LOAD MEMORY
  711. EQ PKDX GET NEXT COMMAND
  712. NKO SPACE 5,11
  713. *** NKO - NO *K* DISPLAY OPTION.
  714. *
  715. * THE RELOCATION MEMORY FILE IS READ
  716. * AND STORE IN ESM RELOCATION MEMORY.
  717.  
  718. NKO NORERUN
  719. REWIND RF
  720. READ RF
  721. READW RF,SMB,ESML READ RELOCATION MEMORY
  722. NZ X1,NKO1 IF NOT ENOUGH DATA
  723. SA1 SMB CHECK HEADER WORD
  724. SA2 ESMH
  725. BX1 X1-X2
  726. ZR X1,NKO2 IF HEADER CHECKS
  727. NKO1 SB2 =C* FILE FORMAT ERROR.*
  728. EQ ESM5
  729.  
  730. NKO2 RJ LRM LOAD RELOCATION MEMORY
  731.  
  732. * CLEAR ERROR LOG
  733.  
  734. RJ RSP RESERVE SIDE-DOOR PORT
  735. SX0 CLEA SEND CLEAR FUNCTION
  736. RJ FNC
  737. SX0 REL RELEASE SIDE-DOOR PORT
  738. RJ FNC
  739. MESSAGE (=C* LOAD COMPLETE.*)
  740. EQ MEL MONITOR ERROR LOG
  741. * /--- BLOCK PMA/PPA/SA 00 000 78/02/13 11.22
  742. PMA SPACE 5,11
  743. *** PMA - PROCESS MAXIMUM ADDRESS
  744. *
  745. * MA,ADDRESS.
  746.  
  747.  
  748. PMA MX0 42
  749. SA1 ARGR+1
  750. BX5 X1*X0
  751. SB7 B0
  752. RJ DXB CONVERT NUMBER TO BINARY
  753. NZ X4,PKD5 IF ERROR
  754. SA2 SMB+1 CHECK IF GREATER THAN BANKS
  755. MX0 -12
  756. BX1 X2
  757. AX1 12
  758. BX1 -X0*X1
  759. IX1 X1-X6
  760. NG X1,PKD5 IF GREATER THAN PHYSICAL BANKS
  761. BX1 X0*X2
  762. BX6 X1+X6
  763. SA6 A2
  764. RJ FKD FORMAT *K* DISPLAY
  765. EQ PKDX COMPLETE
  766. PPA SPACE 5,11
  767. *** PPA - PROCESS MAXIMUM PHYSICAL ADDRESS.
  768. *
  769. * PA,ADDRESS.
  770.  
  771.  
  772. PPA MX0 42
  773. SA1 ARGR+1
  774. BX5 X1*X0
  775. SB7 B0
  776. RJ DXB CONVERT NUMBER TO BINARY
  777. NZ X4,PKD5 IF ERROR
  778. SA1 SMB+1 CHECK IF GREATER THAN 127
  779. MX0 -7
  780. BX2 X0*X6
  781. NZ X2,PKD5 IF TOO LARGE
  782. MX0 -12
  783. LX1 -12
  784. BX1 X0*X1
  785. BX7 X6+X1 INSERT NEW MAX BANK
  786. LX7 12
  787. BX1 -X0*X7 GET MAXIMUM LOGICAL ADDRESS
  788. IX2 X6-X1
  789. PL X2,PPA1 IF LOGICAL .LE. PHYSICAL
  790. BX7 X0*X7 SET LOGICAL = PHYSICAL MAX
  791. BX7 X7+X6
  792. PPA1 SA7 A1
  793. RJ FKD FORMAT *K* DISPLAY
  794. EQ PKDX COMPLETE
  795. SAV SPACE 5,11
  796. *** SAV - SAVE NEW COPY OF RELOCATION MEMORY
  797. *
  798. * SAVE.
  799.  
  800.  
  801. SAV RJ SRM SAVE RELOCATION MEMORY
  802. EQ PKDX EXIT
  803. * /--- BLOCK SET/STP 00 000 79/11/12 20.19
  804. SET SPACE 5,11
  805. *** SET - SET A LOGICAL ADDRESS TO A PHYSICAL ADDRESS
  806. *
  807. * SET,LA=LOGICAL ADDRESS,PA=PHYSICAL ADDRESS.
  808.  
  809.  
  810. SET SB5 SETA (B5) = ARGUMENT TABLE
  811. SA4 ARGR+1 (X4) = ARGUMENTS
  812. SA1 T1
  813. BX6 X6-X6
  814. SB4 X1
  815. SA6 SETB CLEAR ARGUMENTS
  816. SA6 A6+B1
  817. RJ ARG
  818. NZ X1,PKD5 IF ERROR
  819. SA5 SETB GET *LA*
  820. ZR X5,PKD5
  821. SB7 B0
  822. RJ DXB CONVERT TO BINARY
  823. NZ X4,PKD5
  824. SB6 X6 SAVE VALUE
  825. SX6 X6-128
  826. PL X6,PKD5 IF TOO LARGE
  827. SA5 A5+B1 GET *PA*
  828. ZR X5,PKD5 IF NONE
  829. SB7 B0
  830. RJ DXB CONVERT TO BINARY
  831. SX1 X6-512
  832. PL X1,PKD5 IF TOO LARGE
  833. SA6 SMB+2+B6
  834. RJ FKD FORMAT*K* DISPLAY
  835. EQ PKDX
  836.  
  837. SETA BSS 0
  838. VFD 12/0LLA,18/=0,12/4000B,18/SETB
  839. VFD 12/0LPA,18/=0,12/4000B,18/SETC
  840. DATA 0
  841.  
  842. SETB CON 0 *LA* PARAMETER
  843. SETC CON 0 *PA* PARAMETER
  844. STP SPACE 5,11
  845. *** STP - TERMINATE PROGRAM WITHOUT SAVING CHANGES.
  846. *
  847. * STOP.
  848.  
  849.  
  850. STP EQU GO1
  851. * /--- BLOCK ZER 00 000 79/11/13 14.04
  852. ZER SPACE 5,11
  853. *** ZER - ZERO ESM.
  854. *
  855. * ZERO.
  856. *
  857. * WRITE ZEROS TO ALL OF ESM TO CLEAR PARITY ERRORS.
  858.  
  859.  
  860. ZER SX0 SXP SET UP EXCHANGE PACKAGE
  861. RJ FNC
  862.  
  863. * ZERO 100B WORD CM BUFFER
  864.  
  865. SA0 RECD
  866. SB4 100B-1
  867. BX6 X6-X6
  868. ZER1 SA6 A0+B4
  869. SB4 B4-B1
  870. GE B4,ZER1 IF MORE WORDS TO ZERO
  871.  
  872. * COMPUTE LWA TO ZERO
  873.  
  874. SA1 SMB+1
  875. MX0 -12
  876. BX1 -X0*X1 (X1) = MAXIMUM LOGICAL ADDRESS
  877. SA2 ZERA (X2) = 128K
  878. IX2 X1*X2 (X2) = LWA + 1 TO ZERO
  879. BX0 X0-X0
  880. SX1 100B
  881.  
  882. * ZERO ALL OF MEMORY
  883.  
  884. ZER2 WE 100B
  885. EQ ZER3
  886. IX0 X0+X1
  887. BX6 X0-X2
  888. NZ X6,ZER2 IF MORE TO ZERO
  889. SX0 CXP CLEAR EXCHANGE PACKAGE
  890. RJ FNC
  891. EQ PKDX EXIT
  892.  
  893. * PROCESS WRITE ABORT
  894.  
  895. ZER3 BX1 X0
  896. RJ COD
  897. SA1 ZERB
  898. BX6 X1
  899. BX7 X4
  900. SA6 KERR
  901. SA7 A6+B1
  902. SX0 CXP CLEAR EXCHANGE PACKAGE
  903. RJ FNC
  904. EQ PKD2 EXIT
  905.  
  906. ZERA CON 128S10 128K
  907. ZERB DATA 10HABORT AT
  908. * /--- BLOCK CPF 00 000 79/10/15 19.16
  909. TITLE SUBROUTINES.
  910. CPF SPACE 5,11
  911. *** CPF - CLOSE PLATO FILE
  912. *
  913. * IF PLATO FILE IS ATTACHED, CLOSE FILE
  914. * AND RELEASE ECS.
  915.  
  916.  
  917. CPF SUBR
  918. SA1 WPFG CHECK IF FILE OPEN
  919. ZR X1,CPFX IF NOT OPEN
  920. NG X1,CPF1 IF ONLY ECS GOTTEN
  921. SB2 WPFE CLOSE FILE
  922. SA1 WPFH SET PLATO FILE NAME
  923. BX6 X1
  924. SA6 B2+B1
  925. SX0 B0
  926. RJ MAS
  927. CPF1 SX6 B0 RELEASE ECS
  928. SB2 WPFA
  929. SA6 B2+B1
  930. RJ MAS
  931. BX6 X6-X6 SHOW FILE CLOSED
  932. SA6 WPFG
  933. EQ CPFX EXIT
  934. * /--- BLOCK FEM 00 000 79/10/22 20.01
  935. FEM SPACE 5,11
  936. *** FEM - FORMAT ERROR MESSAGE
  937. *
  938. * FORMAT ERROR MESSAGE FOR THE ERROR LOG
  939. *
  940. * ENTRY - (X1) - ERROR
  941. * (A2) - MESSAGE SKELETON ADDRESS
  942. *
  943. * EXIT - (FEMA) - FORMATTED ERROR MESSAGE
  944.  
  945.  
  946. FEM SUBR
  947. BX0 X1 (X0) = ERROR LOG ENTRY
  948. BX6 X2 SAVE FIRST WORD OF MESSAGE
  949. SA6 FEMA SET ERROR TYPE
  950. SA2 A2+B1
  951. NG X0,FEM3 IF DOUBLE BIT ERROR
  952. * /--- BLOCK FEM 00 000 79/10/22 20.02
  953.  
  954. * PROCESS SINGLE BIT ERROR
  955.  
  956. MX6 -1
  957. BX1 X0
  958. AX1 12 GET BSU
  959. BX1 -X6*X1
  960. LX1 18
  961. IX6 X1+X2
  962. SA6 A6+B1
  963. BX1 X0
  964. MX6 -4
  965. AX1 5 GET BANK
  966. BX1 -X6*X1
  967. SX1 X1+100B
  968. RJ COD
  969. SA2 A2+B1
  970. MX7 -12
  971. LX6 36
  972. LX7 36
  973. BX2 X2*X7
  974. BX6 -X7*X6
  975. BX6 X6+X2
  976. MX1 -3 SET SCAN
  977. BX1 -X1*X0
  978. IX6 X1+X6
  979. SA6 A6+B1
  980. SA2 A2+B1
  981. BX1 X0 GET CHIP SELECT
  982. AX1 3
  983. MX6 -2
  984. BX1 -X6*X1
  985. LX1 36
  986. IX2 X1+X2
  987. BX1 X0 GET SYNDRONE BITS
  988. MX6 -8
  989. AX1 13
  990. BX6 -X6*X1
  991. SA3 FEMD+X6 CONVERT SYNDROME TO BIT
  992. MX6 -12
  993. BX3 -X6*X3
  994. BX2 X2*X6
  995. BX6 X2+X3
  996. SA6 A6+B1
  997. SA2 A2+B1
  998. BX1 X0 GET CABINET
  999. MX6 -4
  1000. AX1 5
  1001. BX6 -X6*X1
  1002. SA3 FEME+X6
  1003. BX1 X0
  1004. LX1 59-12
  1005. PL X1,FEM1 IF BSU 0
  1006. AX3 12
  1007. FEM1 MX6 -12
  1008. LX6 24
  1009. LX3 24
  1010. BX2 X6*X2
  1011. BX3 -X6*X3
  1012. BX6 X3+X2
  1013. SA6 A6+B1
  1014. SA2 A2+B1
  1015. BX1 X0 GET MODULE (BANK)
  1016. AX1 5
  1017. MX6 -4
  1018. BX6 -X6*X1
  1019. SA3 FEMF+X6
  1020. MX6 -12
  1021. LX3 30
  1022. LX6 30
  1023. BX2 X6*X2
  1024. BX2 X3+X2
  1025. BX1 X0 GET MODULE (SCAN)
  1026. MX6 -3
  1027. BX6 -X6*X1
  1028. SA3 FEMG+X6
  1029. MX6 -12
  1030. LX3 12
  1031. LX6 12
  1032. BX2 X6*X2
  1033. BX6 X2+X3
  1034. SA6 A6+B1
  1035. SA2 A2+B1
  1036. BX1 X0
  1037. AX1 13 GET CHIP (SYNDROME)
  1038. MX6 -8
  1039. BX6 -X6*X1
  1040. SA3 FEMD+X6
  1041. MX6 -18
  1042. AX3 18
  1043. BX1 X0
  1044. LX1 59-4
  1045. PL X1,FEM2 IF CHIP SELECT 0 - 1
  1046. AX3 18
  1047. FEM2 LX6 24
  1048. LX3 24
  1049. BX2 X6*X2
  1050. BX3 -X6*X3
  1051. BX6 X2+X3
  1052. SA6 A6+B1
  1053. EQ FEM5
  1054. * /--- BLOCK FEM 00 000 79/10/22 20.40
  1055.  
  1056. * PROCESS DOUBLE BIT ERROR
  1057.  
  1058. FEM3 MX6 -1 GET BSU
  1059. BX1 X0
  1060. AX1 22
  1061. BX1 -X6*X1
  1062. LX1 18
  1063. IX6 X1+X2
  1064. SA6 A6+B1
  1065. BX1 X0
  1066. MX6 -4 GET BANK
  1067. AX1 18
  1068. BX1 -X6*X1
  1069. SX1 X1+100B
  1070. RJ COD
  1071. SA2 A2+B1
  1072. MX7 -12
  1073. LX6 36
  1074. LX7 36
  1075. BX2 X2*X7
  1076. BX6 -X7*X6
  1077. BX6 X6+X2
  1078. MX1 -3 SET SCAN
  1079. BX1 -X1*X0
  1080. IX6 X1+X6
  1081. SA6 A6+B1
  1082. BX1 X0 GET REST OF ADDRESS
  1083. MX2 -13
  1084. AX1 3
  1085. BX1 -X2*X1
  1086. SX1 X1+100000B
  1087. RJ COD
  1088. SA2 A2+B1
  1089. MX3 30
  1090. BX6 -X3*X6
  1091. BX2 X2*X3
  1092. BX2 X2+X6
  1093. BX1 X0 GET CHIP SELECT
  1094. AX1 16
  1095. MX3 -2
  1096. BX1 -X3*X1
  1097. LX1 36
  1098. IX6 X1+X2
  1099. SA6 A6+B1
  1100. SA2 A2+B1
  1101. BX1 X0 GET CABINET
  1102. MX6 -4
  1103. AX1 18
  1104. BX6 -X6*X1
  1105. SA3 FEME+X6
  1106. BX1 X0
  1107. LX1 59-22
  1108. PL X1,FEM4 IF BSU 0
  1109. AX3 12
  1110. FEM4 MX6 -12
  1111. LX6 24
  1112. LX3 24
  1113. BX2 X6*X2
  1114. BX3 -X6*X3
  1115. BX6 X3+X2
  1116. SA6 A6+B1
  1117. SA2 A2+B1
  1118. BX1 X0 GET MODULE (BANK)
  1119. AX1 5
  1120. MX6 -4
  1121. BX6 -X6*X1
  1122. SA3 FEMF+X6
  1123. MX6 -12
  1124. LX3 30
  1125. LX6 30
  1126. BX2 X6*X2
  1127. BX2 X3+X2
  1128. BX1 X0 GET MODULE (SCAN)
  1129. MX6 -3
  1130. BX6 -X6*X1
  1131. SA3 FEMG+X6
  1132. MX6 -12
  1133. LX3 12
  1134. LX6 12
  1135. BX2 X6*X2
  1136. BX6 X2+X3
  1137. SA6 A6+B1
  1138. * /--- BLOCK FEM 00 000 79/10/31 12.39
  1139.  
  1140. * MOVE REST OF MESSAGE
  1141.  
  1142. FEM5 MX1 -12 MOVE REST OF MESSAGE
  1143. BX6 -X1*X6
  1144. ZR X6,FEMX IF END OF MESSAGE
  1145. SA2 A2+B1
  1146. BX6 X2
  1147. SA6 A6+B1 MOVE NEXT WORD
  1148. EQ FEM5
  1149.  
  1150. DATA 0 DATE
  1151. DATA 0 CLOCK
  1152. FEMA BSSZ MSGL MESSAGE BUFFER
  1153. FEMB DATA C*ESM SNGL ERR,BSU0,BANK00,SCAN0,CS0,BIT00 CAB00,MODULE
  1154. ,00-00,CHIP000.*
  1155. FEMC DATA C*ESM DBLE ERR,BSU0,BANK00,SCAN0,CS0,00000 CAB00,MODULE
  1156. ,00-00. *
  1157.  
  1158.  
  1159. ** SYN - GENERATE SYNDROME TO BIT CONVERSION
  1160. *
  1161. * SYN BIT
  1162. *
  1163. * INDEXED BY SYNDROME BITS
  1164. *
  1165. * 6/0, 18/CHIP1, 18/CHIP2, 18/BIT NUMBER
  1166. *
  1167. * CHIP1 - CHIP LOCATION FOR CHIP SELECT 2 - 3
  1168. * CHIP2 - CHIP LOCATION FOR CHIP SELECT 0 - 1
  1169.  
  1170.  
  1171. NOREF .1,.2,.3,.4,.5
  1172.  
  1173. SYN MACRO B
  1174. .1 IFC NE,$B$$
  1175. .2 SET B/4
  1176. .3 SET B-.2*4
  1177. .4 DECMIC .2,2
  1178. .5 DECMIC B,2
  1179. .6 MICRO .3+1,1, KHFD
  1180. .7 MICRO .3+1,1, JGEC
  1181. VFD 6/0,6/1R".6",12/2R".4",6/1R".7",12/2R".4",18/2R".5"
  1182. .1 ELSE
  1183. VFD 6/0,18/3R ,18/3R ,18/2RMB
  1184. .1 ENDIF
  1185. ENDM
  1186. * /--- BLOCK FEM/SYN 00 000 79/10/19 14.01
  1187.  
  1188. FEMD BSS 0 SYNDROME TO BIT CONVERSION
  1189. LOC 0
  1190.  
  1191. SYN
  1192. SYN 64
  1193. SYN 65
  1194. SYN
  1195. SYN 66
  1196. SYN
  1197. SYN
  1198. SYN 40
  1199.  
  1200. SYN 67
  1201. SYN
  1202. SYN
  1203. SYN 48
  1204. SYN
  1205. SYN 56
  1206. SYN 32
  1207. SYN
  1208.  
  1209. SYN 68
  1210. SYN
  1211. SYN
  1212. SYN
  1213. SYN
  1214. SYN
  1215. SYN
  1216. SYN
  1217.  
  1218. SYN
  1219. SYN
  1220. SYN
  1221. SYN
  1222. SYN
  1223. SYN
  1224. SYN
  1225. SYN
  1226.  
  1227. SYN 69
  1228. SYN
  1229. SYN
  1230. SYN
  1231. SYN
  1232. SYN
  1233. SYN
  1234. SYN
  1235.  
  1236. SYN
  1237. SYN
  1238. SYN
  1239. SYN
  1240. SYN
  1241. SYN
  1242. SYN
  1243. SYN
  1244.  
  1245. SYN
  1246. SYN
  1247. SYN
  1248. SYN
  1249. SYN
  1250. SYN
  1251. SYN
  1252. SYN 43
  1253.  
  1254. SYN
  1255. SYN
  1256. SYN
  1257. SYN 51
  1258. SYN
  1259. SYN 59
  1260. SYN 35
  1261. SYN
  1262.  
  1263. SYN 70
  1264. SYN
  1265. SYN
  1266. SYN
  1267. SYN
  1268. SYN
  1269. SYN
  1270. SYN
  1271.  
  1272. SYN
  1273. SYN
  1274. SYN
  1275. SYN
  1276. SYN
  1277. SYN
  1278. SYN
  1279. SYN
  1280.  
  1281. SYN
  1282. SYN
  1283. SYN
  1284. SYN
  1285. SYN
  1286. SYN
  1287. SYN
  1288. SYN 45
  1289.  
  1290. SYN
  1291. SYN
  1292. SYN
  1293. SYN 53
  1294. SYN
  1295. SYN 61
  1296. SYN 37
  1297. SYN
  1298.  
  1299. SYN
  1300. SYN
  1301. SYN
  1302. SYN
  1303. SYN
  1304. SYN
  1305. SYN
  1306. SYN 46
  1307.  
  1308. SYN
  1309. SYN
  1310. SYN
  1311. SYN 54
  1312. SYN
  1313. SYN 62
  1314. SYN 38
  1315. SYN
  1316.  
  1317. SYN 24
  1318. SYN
  1319. SYN
  1320. SYN 27
  1321. SYN
  1322. SYN 29
  1323. SYN 30
  1324. SYN
  1325.  
  1326. SYN
  1327. SYN 25
  1328. SYN 26
  1329. SYN
  1330. SYN 28
  1331. SYN
  1332. SYN
  1333. SYN 31
  1334. * /--- BLOCK FEM/SYN 00 000 79/10/19 14.07
  1335.  
  1336. SYN 71
  1337. SYN
  1338. SYN
  1339. SYN
  1340. SYN
  1341. SYN
  1342. SYN
  1343. SYN
  1344.  
  1345. SYN
  1346. SYN
  1347. SYN
  1348. SYN
  1349. SYN
  1350. SYN
  1351. SYN
  1352. SYN
  1353.  
  1354. SYN
  1355. SYN
  1356. SYN
  1357. SYN
  1358. SYN
  1359. SYN
  1360. SYN
  1361. SYN 41
  1362.  
  1363. SYN
  1364. SYN
  1365. SYN
  1366. SYN 49
  1367. SYN
  1368. SYN 57
  1369. SYN 33
  1370. SYN
  1371.  
  1372. SYN
  1373. SYN
  1374. SYN
  1375. SYN
  1376. SYN
  1377. SYN
  1378. SYN
  1379. SYN 42
  1380.  
  1381. SYN
  1382. SYN
  1383. SYN
  1384. SYN 50
  1385. SYN
  1386. SYN 58
  1387. SYN 34
  1388. SYN
  1389.  
  1390. SYN 16
  1391. SYN
  1392. SYN
  1393. SYN 19
  1394. SYN
  1395. SYN 21
  1396. SYN 22
  1397. SYN
  1398.  
  1399. SYN
  1400. SYN 17
  1401. SYN 18
  1402. SYN
  1403. SYN 20
  1404. SYN
  1405. SYN
  1406. SYN 23
  1407.  
  1408. SYN
  1409. SYN
  1410. SYN
  1411. SYN
  1412. SYN
  1413. SYN
  1414. SYN
  1415. SYN 44
  1416.  
  1417. SYN
  1418. SYN
  1419. SYN
  1420. SYN 52
  1421. SYN
  1422. SYN 60
  1423. SYN 36
  1424. SYN
  1425.  
  1426. SYN 08
  1427. SYN
  1428. SYN
  1429. SYN 11
  1430. SYN
  1431. SYN 13
  1432. SYN 14
  1433. SYN
  1434.  
  1435. SYN
  1436. SYN 09
  1437. SYN 10
  1438. SYN
  1439. SYN 12
  1440. SYN
  1441. SYN
  1442. SYN 15
  1443.  
  1444. SYN 00
  1445. SYN
  1446. SYN
  1447. SYN 03
  1448. SYN
  1449. SYN 05
  1450. SYN 06
  1451. SYN
  1452.  
  1453. SYN
  1454. SYN 01
  1455. SYN 02
  1456. SYN
  1457. SYN 04
  1458. SYN
  1459. SYN
  1460. SYN 07
  1461.  
  1462. SYN
  1463. SYN
  1464. SYN
  1465. SYN
  1466. SYN
  1467. SYN
  1468. SYN
  1469. SYN 47
  1470.  
  1471. SYN
  1472. SYN
  1473. SYN
  1474. SYN 55
  1475. SYN
  1476. SYN 63
  1477. SYN 39
  1478. SYN
  1479. LOC *O
  1480. * /--- BLOCK FEM/CAB 00 000 79/10/22 20.13
  1481.  
  1482. FEME BSS 0 CABINET CONVERSION TABLE
  1483. LOC 0
  1484. VFD 36/0,12/2RA2,12/2RA6
  1485. VFD 36/0,12/2RA2,12/2RA6
  1486. VFD 36/0,12/2RA2,12/2RA6
  1487. VFD 36/0,12/2RA2,12/2RA6
  1488. VFD 36/0,12/2RA1,12/2RA5
  1489. VFD 36/0,12/2RA1,12/2RA5
  1490. VFD 36/0,12/2RA1,12/2RA5
  1491. VFD 36/0,12/2RA1,12/2RA5
  1492. VFD 36/0,12/2RA1,12/2RA5
  1493. VFD 36/0,12/2RA1,12/2RA5
  1494. VFD 36/0,12/2RA3,12/2RA7
  1495. VFD 36/0,12/2RA3,12/2RA7
  1496. VFD 36/0,12/2RA3,12/2RA7
  1497. VFD 36/0,12/2RA3,12/2RA7
  1498. VFD 36/0,12/2RA3,12/2RA7
  1499. VFD 36/0,12/2RA3,12/2RA7
  1500. LOC *O
  1501.  
  1502. FEMF BSS 0 MODULE (BANK) CONVERSION
  1503. LOC 0
  1504. DATA 2RA1
  1505. DATA 2RA2
  1506. DATA 2RA5
  1507. DATA 2RA6
  1508. DATA 2RA1
  1509. DATA 2RA2
  1510. DATA 2RA3
  1511. DATA 2RA4
  1512. DATA 2RA5
  1513. DATA 2RA6
  1514. DATA 2RA1
  1515. DATA 2RA2
  1516. DATA 2RA3
  1517. DATA 2RA4
  1518. DATA 2RA5
  1519. DATA 2RA6
  1520. LOC *O
  1521.  
  1522. FEMG BSS 0 MODULE (SCAN) CONVERSION
  1523. LOC 0
  1524. DATA 2R04
  1525. DATA 2R12
  1526. DATA 2R05
  1527. DATA 2R13
  1528. DATA 2R06
  1529. DATA 2R14
  1530. DATA 2R07
  1531. DATA 2R15
  1532. LOC *O
  1533. * /--- BLOCK FKD 00 000 78/08/30 08.37
  1534. FKD SPACE 5,11
  1535. *** FKD - FORMAT *K* DISPLAY
  1536. *
  1537. * THE RELOCATION MEMORY IS FORMATTED AS
  1538. * DESCRIBED IN THE RELOCATION MEMORY
  1539.  
  1540. FKD SUBR
  1541. MOVE KDL,CKD,RSA CLEAR RIGHT SCREEN
  1542. MOVE KDL,CKD,LSA CLEAR LEFT SCREEN
  1543. MOVE RSA-RSH,RSH,LSH MOVE HEADER
  1544. SA5 SMB+1
  1545. MX0 -12
  1546. BX1 -X0*X5
  1547. SB6 X1+1 (B6) = MAX LOGICAL ADDRESS + 1
  1548. RJ COD
  1549. SA2 KMA
  1550. MX0 30
  1551. BX2 X0*X2
  1552. LX6 12
  1553. BX6 -X0*X6
  1554. BX6 X6+X2
  1555. SA6 A2 SET IN DISPLAY
  1556. AX5 12
  1557. BX1 -X0*X5
  1558. SB7 X1+1 (B7) = NUMBER OF BANKS
  1559. RJ COD
  1560. LX4 -12
  1561. BX6 X4
  1562. SA6 KPA SET IN DISPLAY
  1563. SB5 B0 (B5) = INDEX INTO QUARDENT
  1564. SA5 SMB+2 (X5) = RELOCATION ENTRY
  1565. * /--- BLOCK FKD 00 000 79/10/31 12.51
  1566. FKD1 MX0 -5
  1567. SX1 B5
  1568. BX2 -X0*X1
  1569. AX1 5
  1570. SA3 FKDA+X1 BASE TO THIS QUADRANT
  1571. SX4 7
  1572. DX4 X4*X2 INDEX INTO QUADRANT
  1573. IX7 X3+X4
  1574. BX6 X6-X6 SET (A6) / TERMINATE DISPLAY
  1575. SA6 X7
  1576. SX1 B5 (X1) = RELOCATION INDEX
  1577. RJ COD
  1578. LX6 36
  1579. SA1 =4R128K SET BANK TYPE
  1580. LX5 59-7
  1581. PL X5,FKD2 IF 4K CHIPS
  1582. SA1 =4R512K
  1583. FKD2 MX0 -24
  1584. BX6 X0*X6
  1585. BX6 X6+X1
  1586. LX6 6
  1587. SA6 A6 SET ENTRY IN DISPLAY
  1588. LX5 1+7-2 SET BANK NUMBER
  1589. MX0 -4
  1590. BX1 -X0*X5
  1591. RJ COD
  1592. LX6 18
  1593. SX1 1R0 SET BSU
  1594. LX5 59-6+2
  1595. PL X5,FKD3
  1596. SX1 1R1
  1597. FKD3 LX1 -6
  1598. MX0 6
  1599. BX6 -X0*X6
  1600. BX6 X1+X6
  1601. LX6 -12
  1602. SA6 A6+B1 SET IN DISPLAY
  1603. MX0 -2
  1604. LX5 6+1
  1605. BX1 -X0*X5 SET CHIP SELECT
  1606. RJ COD
  1607. LX6 -24-12
  1608. LX5 59-9 CHECK IF FLAWED
  1609. SX1 2R
  1610. PL X5,FKD4
  1611. SX1 2RF
  1612. FKD4 GT B6,FKD5 IF ADDRESSABLE
  1613. SX1 X1+1R*-1R
  1614. FKD5 MX0 -12
  1615. BX6 X0*X6
  1616. BX6 X1+X6
  1617. LX6 12
  1618. SA6 A6+B1 STORE IN DISPLAY
  1619. SA5 A5+B1 GET NEXT RELOCATION ENTRY
  1620. SB5 B5+B1
  1621. SB6 B6-B1
  1622. SB7 B7-B1
  1623. GT B7,FKD1 IF MORE RELOCATION ENTRIES
  1624. SB5 B5-64 CHECK IF RIGHT SCREEN IN USE
  1625. GT B5,FKDX IF IN USE
  1626. MOVE HLPL,HLPA,RSA MOVE HELP SCREEN
  1627. EQ FKDX EXIT
  1628.  
  1629. FKDA CON LSA+1 FIRST QUADRANT BASE
  1630. CON LSA+4 SECOND
  1631. CON RSA+1 THIRD QUADRANT BASE
  1632. CON RSA+4 FOURTH QUADRANT BASE
  1633. * /--- BLOCK FNC/FRM/LR 00 000 79/10/01 21.49
  1634. FNC SPACE 5,11
  1635. *** FNC - CALL *ESM* TO FUNCTION SIDE-DOOR PORT.
  1636. *
  1637. * ENTRY (X0) - FUNCTION WORD
  1638.  
  1639. FNC SUBR
  1640. SA1 X0
  1641. MX6 -1
  1642. BX6 X6*X1
  1643. SA6 A1
  1644. SYSTEM ESM,R,X0
  1645. SA1 X0 CHECK FOR ERROR
  1646. MX0 -12
  1647. AX1 12
  1648. BX1 -X0*X1
  1649. ZR X1,FNCX IF COMPLETED OKAY
  1650. SB2 =C*FUNCTION FAILED.*
  1651. EQ ESM5 PROCESS ERROR
  1652. FRM SPACE 5,11
  1653. ** FRM - FORM RELOCATION MEMORY
  1654. *
  1655. * ENTRY -
  1656. * SMB+2 - SMB+129 - COPY OF RELOCATION MEMORY
  1657. * ONE WORD PER WORD. NO PARITY.
  1658. *
  1659. * EXIT -
  1660. * RMB+1 - RMB+32 - RELOCATION MEMORY IN 12 BIT
  1661. * FORMAT WITH PARITY
  1662.  
  1663.  
  1664. FRM SUBR
  1665. SA1 SMB+2 LOAD FIRST WORD OF RELOCATION
  1666. SB3 RMB+1
  1667. SB4 5 (B4) = BYTES LEFT IN WORD
  1668. SB5 B1 (B5) = NUMBER OF WORDS STORED
  1669. MX0 -8
  1670. SX3 B1
  1671. BX6 X6-X6
  1672. FRM1 BX1 -X0*X1 GET RELOCATION DATA
  1673. CX2 X1 COMPUTE ODD PARITY
  1674. BX2 X2*X3
  1675. BX2 X2-X3
  1676. LX2 8
  1677. BX1 X1+X2
  1678. BX6 X1+X6 MERGE INTO WORD
  1679. SB4 B4-B1
  1680. NZ B4,FRM2 IF MORE BYTES IN WORD
  1681. SA6 RMB+B5
  1682. SB5 B5+B1
  1683. SB4 B5-33B CHECK IF MORE WORDS TO STORE
  1684. GE B4,FRMX IF COMPLETED
  1685. SB4 5
  1686. BX6 X6-X6
  1687. FRM2 SA1 A1+B1 GET NEXT WORD
  1688. LX6 12
  1689. EQ FRM1 LOOP
  1690. LRM SPACE 5,11
  1691. *** LRM - LOAD RELOCATION MEMORY
  1692. *
  1693. * THE RELOCATION FILE IS LOADED INTO
  1694. * ESM RELOCATION MEMORY
  1695.  
  1696.  
  1697. LRM SUBR
  1698. SA1 SMB+1 GET MAXIMUM LOGICAL ADDRESS
  1699. LX1 48
  1700. SA6 MA+1
  1701. RJ FRM FORM RELOCATION MEMORY
  1702. RJ RSP ASSIGN SIDE-DOOR PORT
  1703. SX0 RMB LOAD RELOCATION MEMORY
  1704. RJ FNC
  1705. SX0 MA SET MAXIMUM ADDRESS
  1706. SA1 SMB+1
  1707. LX1 48
  1708. MX6 12
  1709. BX6 X6*X1
  1710. SA6 X0+B1
  1711. RJ FNC
  1712. SX0 REL RELEASE SIDE-DOOR PORT
  1713. RJ FNC
  1714. EQ LRMX EXIT
  1715. * /--- BLOCK MAS/ROL/RS 00 000 80/07/01 16.17
  1716. MAS SPACE 5,11
  1717. ** MAS - CALL PP PROGRAM *MAS*.
  1718. *
  1719. * ENTRY - (B2) - ADDRESS OF REQUEST
  1720. * (X0) - NO ABORT OPTION
  1721. * 0 - ABORT
  1722. * 100 - NO ABORT
  1723. *
  1724. * EXIT - (X6) - ERROR CODE
  1725.  
  1726.  
  1727. MAS SUBR
  1728. SA1 B2 CLEAR REQUEST ERRORS
  1729. MX6 12
  1730. BX6 X6*X1
  1731. SA6 A1
  1732. SYSTEM MAS,R,B2,X0
  1733. SA1 B2
  1734. MX6 -11
  1735. AX1 12
  1736. BX6 -X6*X1
  1737. EQ MASX EXIT
  1738. ROL SPACE 5,11
  1739. ** ROL - ROLLOUT FOR A WHILE
  1740. *
  1741. * ENTRY - (X1) = DAYFILE MESSAGE ADDRESS
  1742.  
  1743.  
  1744. ROL SUBR
  1745. MESSAGE X1,1
  1746. ROLLOUT ROLA
  1747. MESSAGE =0,1 CLEAR *B* DISPLAY
  1748. EQ ROLX
  1749.  
  1750. ROLA VFD 36/0,12/0,12/60 ROLLOUT FOR 60 SECONDS
  1751. RSP SPACE 5,11
  1752. ** RSP - ASSIGN SIDE-DOOR PORT.
  1753.  
  1754. RSP SUBR
  1755. SA1 REQ CLEAR OLD ERRORS
  1756. MX6 -11
  1757. LX6 1
  1758. BX6 -X6*X1
  1759. SA6 A1
  1760. SYSTEM ESM,R,A6 ASSIGN SIDE-DOOR PORT
  1761. SA1 REQ
  1762. MX0 -12
  1763. AX1 12
  1764. BX1 -X0*X1
  1765. ZR X1,RSPX IF ASSIGNED
  1766. SB2 =C*SIDE-DOOR PORT BUSY.*
  1767. EQ ESM5
  1768. * /--- BLOCK SOR/SRM 00 000 78/08/22 15.15
  1769. SOR SPACE 5,11
  1770. *** SOR - SORT RELOCATION MEMORY
  1771. *
  1772. * THE RELOCATION MEMORY IS SORTED SO THAT
  1773. * ALL FLAWED BANKS GO TO HIGH END OF RELOCATION
  1774. * IN BSU/BANK ORDER
  1775.  
  1776.  
  1777. SOR SUBR
  1778. SA1 SMB+1 GET PHYSICAL BANKS
  1779. MX0 -12
  1780. AX1 12
  1781. BX1 -X0*X1
  1782. SB2 B0 (B2) = BASE FOR SORT
  1783. SB4 X1 (B4) = NUMBER PHYSICAL BANKS
  1784. SB5 B4-B1
  1785. SX0 177B (X0) = BSU / BANK / CHIP MASK
  1786. SX1 1S9 (X1) = FLAW MASK
  1787. SOR1 BX6 X6-X6 CLEAR SWAP FLAG
  1788. SA2 SMB+2+B2 (X2) = SORT ENTRY
  1789. SOR2 SA3 SMB+3+B2 (X3) = SORT ENTRY + 1
  1790. BX4 X1*X2 SORT ON FLAW BIT
  1791. BX5 X1*X3
  1792. IX4 X5-X4
  1793. NG X4,SOR3 SORT FLAWED ENTRY TO BOTTOM
  1794. NZ X4,SOR4 IF FLAWED ENTRY ON BOTTOM
  1795. BX4 X0*X2 SORT ON BSU / BANK
  1796. BX5 X0*X3
  1797. IX4 X5-X4
  1798. PL X4,SOR4 IF IN CORRECT ORDER
  1799. SOR3 BX6 X2 SWAP ENTRIES
  1800. SA6 A3
  1801. BX7 X3
  1802. SA7 A3-B1
  1803. BX3 X2
  1804. SX6 B1 SET SWAP FLAG
  1805. SOR4 SB2 B2+B1
  1806. BX2 X3 SET TO SORT NEXT ENTRY
  1807. LT B2,B5,SOR2 IF MORE TO SORT
  1808. SB5 B5-B1 SET SIZE OF SORT ONE LESS
  1809. SB2 B0
  1810. LE B5,B1,SORX IF END OF SORT
  1811. NZ X6,SOR1 RE-ENTER LOOP IF A SWAP OCCURED
  1812. EQ SORX
  1813. SRM SPACE 5,11
  1814. *** SRM - SAVE RELOCATION MEMORY
  1815. *
  1816. * THE RELOCATION MEMORY IS WRITTEN AND REPLACED
  1817. * ON THE RELOCATION FILE.
  1818.  
  1819.  
  1820. SRM SUBR
  1821. REWIND RF,R WRITE TO RELOCATION FILE
  1822. WRITEW RF,SMB,ESML
  1823. WRITER RF
  1824. SA1 ARGF CHECK IF *F* OPTION PRESENT
  1825. NG X1,SRMX IF PRESENT EXIT
  1826. REPLACE RF
  1827. EQ SRMX EXIT
  1828. * /--- BLOCK STB/UEL 00 000 79/10/08 20.59
  1829. STB SPACE 5,11
  1830. *** STB - SEARCH / UPDATE TABLE.
  1831. *
  1832. * ENTRY - (B2) - ADDRESS OF TABLE
  1833. * (B3) - LENGTH OF TABLE
  1834. * (X1) - ENTRY TO SEARCH FOR
  1835. *
  1836. * EXIT - (X6) = 0 IF ENTRY FOUND
  1837.  
  1838. STB1 BX7 X1
  1839. SA7 A2 UPDATE ENTRY IN TABLE
  1840.  
  1841. STB SUBR
  1842. SB4 B0
  1843. MX0 -24 (X0) = MASK TO SEARCH ON
  1844. STB2 SA2 B2+B4
  1845. BX6 X1-X2
  1846. BX6 -X0*X6
  1847. ZR X6,STB1 IF ENTRY FOUND
  1848. SB4 B4+B1
  1849. LT B4,B3,STB2 CONTINUE SEARCH
  1850.  
  1851. * INSERT ENTRY INTO THE TABLE
  1852.  
  1853. SA2 B2-B1 LOAD POINTER TO NEXT WORD
  1854. BX6 X1
  1855. SA6 B2+X2 PLACE ENTRY IN TABLE
  1856. SX6 X2+B1
  1857. SB4 X6
  1858. NE B3,B4,STB3 IF NOT AT LIMIT
  1859. SX6 B0
  1860. STB3 SA6 A2 UPDATE POINTER TO NEXT WORD
  1861. SX6 B1 (X6) = ENTRY NOT FOUND
  1862. EQ STBX EXIT
  1863. UEL SPACE 5,11
  1864. ** UEL - UNPACK ERROR LOG
  1865. *
  1866. * UNPACKS THE ERROR LOG FROM ERB0 TO ERB1
  1867.  
  1868.  
  1869. UEL SUBR
  1870. MX0 -12
  1871. SB6 B0
  1872. SB5 B1+B1
  1873. SA1 ERB0
  1874. LX1 36
  1875. UEL0 NZ B5,UEL1 IF MORE BYTES IN THIS WORD
  1876. SA1 A1+B1 GET NEXT WORD
  1877. SB5 5
  1878. UEL1 LX1 12
  1879. BX6 -X0*X1
  1880. LX6 12
  1881. SB5 B5-B1
  1882. NZ B5,UEL2 IF MORE BYTES IN THIS WORD
  1883. SA1 A1+B1
  1884. SB5 5
  1885. UEL2 LX1 12
  1886. BX7 -X0*X1
  1887. BX6 X6+X7 MERGE TWO BYTES
  1888. SA6 ERB1+B6
  1889. SB5 B5-B1
  1890. SB6 B6+B1
  1891. SB7 B6-32
  1892. LT B7,UEL0
  1893.  
  1894. * INSERT SINGLE BIT COUNTERS
  1895.  
  1896. SB6 16
  1897. SA2 ERB1+16
  1898. UEL3 NZ B5,UEL4 IF MORE BYTES
  1899. SA1 A1+B1
  1900. SB5 5
  1901. UEL4 LX1 12
  1902. BX6 -X0*X1
  1903. LX6 48
  1904. BX6 X2+X6
  1905. SA6 A2
  1906. SB5 B5-B1
  1907. SB6 B6-B1
  1908. SA2 A2+B1
  1909. GT B6,UEL3 IF MORE COUNTERS
  1910.  
  1911. * MOVE DOUBLE BIT VALID TO HIGH BIT
  1912.  
  1913. SB6 15
  1914. MX0 1
  1915. LX0 23-59
  1916. UEL5 SA1 ERB1+B6
  1917. BX6 X0*X1 ISOLATE VALID BIT
  1918. BX1 -X0*X1 CLEAR VALID BIT
  1919. LX6 59-23
  1920. BX6 X1+X6
  1921. SA6 A1
  1922. SB6 B6-B1
  1923. GE B6,UEL5 IF MORE WORDS
  1924. EQ UELX
  1925. * /--- BLOCK WEM 00 000 79/10/10 12.28
  1926. WEM SPACE 5,11
  1927. ** WEM - WRITE ERROR MESSAGE
  1928. *
  1929. * WRITE ERROR MESSAGE TO APPROPRIATE LOGS
  1930. *
  1931. * ENTRY - (FEMA) - ERROR MESSAGE
  1932.  
  1933.  
  1934. WEM SUBR
  1935. MESSAGE FEMA PLACE IN DAYFILE
  1936. MESSAGE FEMA,4 PLACE IN ERRLOG
  1937. DATE FEMA-2 SET DATE OF ERROR
  1938. CLOCK FEMA-1 SET TIME OF ERROR
  1939. SB6 FEMA-2 SET ADDRESS OF MESSAGE
  1940. RJ WPF WRITE ERROR TO PLATO FILE
  1941. EQ WEMX
  1942. * /--- BLOCK WPF 00 000 79/11/06 19.32
  1943. WPF SPACE 5,11
  1944. *** WPF - WRITE ERROR TO PLATO FILE
  1945. *
  1946. * ECS TO GOTTEN, THE PLATO FILE OPENED,
  1947. * END THE ERROR WRITTEN TO THE FILE
  1948. *
  1949. * ENTRY - (B6) - ADDRESS OF ERROR MESSAGE
  1950.  
  1951. WPF SUBR
  1952. SA1 WPFG CHECK IF FILE OPEN
  1953. NG X1,WPF3 IF ONLY ECS GOTTEN
  1954. NZ X1,WPF5 IF FILE OPEN
  1955. WPF1 SB2 WPFA REQUEST ECS
  1956. SX6 EFL SET AMOUNT OF ECS NEEDED
  1957. SA6 B2+B1
  1958. SX0 100B (X0) - NO ABORT
  1959. RJ MAS CALL *MAS*
  1960. ZR X6,WPF3 IF ECS GOTTEN
  1961. SX1 X6-77B CHECK FOR MASTOR NOT ACTIVE
  1962. ZR X1,WPFX IF MASTOR NOT AROUND
  1963. SX1 X6-2
  1964. NZ X1,WPFX IF NOT ECS NOT AVIALABLE
  1965. SX1 =C* WAITING FOR ECS.*
  1966. RJ ROL
  1967. EQ WPF1 RE-TRY THE REQUEST
  1968.  
  1969. WPF3 SX6 -1 SHOW ECS GOTTEN
  1970. SA6 WPFG
  1971. SX0 B0
  1972. SB2 WPFB OPEN PLATO FILE
  1973. SA1 WPFH SET PLATO FILE NAME
  1974. BX6 X1
  1975. SA6 B2+B1
  1976. RJ MAS
  1977. ZR X6,WPF5 IF FILE OPENED
  1978. SX6 X6-4
  1979. ZR X6,WPF4 IF FILE BUSY
  1980. SX6 X6-6+4
  1981. NZ X6,WPFX IF NOT FILE TABLE FULL
  1982. WPF4 SX1 =C* WAITING FOR PLATO FILE.*
  1983. RJ ROL
  1984. EQ WPF3 TRY AGAIN
  1985.  
  1986. WPF5 SX6 B1 SHOW FILE OPEN
  1987. SA6 WPFG
  1988.  
  1989. * READ RECORD ONE OF FILE
  1990.  
  1991. SB2 WPFC
  1992. SA1 WPFH SET PLATO FILE NAME
  1993. BX6 X1
  1994. SA6 B2+B1
  1995. SX6 B1
  1996. SA6 B2+2
  1997. RJ MAS
  1998. NZ X6,WPF8 IF ERROR
  1999. SA0 RECD READ RECORD FROM ECS
  2000. SX0 RECX
  2001. RE BLKLTH
  2002. RJ ECSPRTY
  2003. SA1 A0
  2004. SA2 WPFF CHECK HEADER
  2005. BX2 X1-X2
  2006. ZR X2,WPF6 IF HEADER OKAY
  2007. WPF5.1 MESSAGE (=C* PLATO FILE HEADER BAD.*)
  2008. EQ WPFX
  2009.  
  2010. * /--- BLOCK WPF 00 000 79/11/06 19.33
  2011.  
  2012. * READ NEXT RECORD TO STORE MESSAGE
  2013.  
  2014. WPF6 SA1 A1+B1 READ NEXT RECORD TO STORE
  2015. SA3 A1+B1 NEXT WORD IN RECORD
  2016. SX2 X1-2
  2017. NG X2,WPF5.1 IF NEXT RECORD NUMBER TOO SMALL
  2018. SX6 X3-BLKLTH+PMSGL
  2019. NG X6,WPF7 IF NEXT MESSAGE FITS
  2020. SX1 X1+B1 BUMP TO NEXT RECORD
  2021. SX3 B0
  2022.  
  2023. * CHECK IF NEW RECORD IN BOUNDS OF FILE
  2024.  
  2025. SA2 WPFB+1
  2026. MX6 -6
  2027. AX2 24
  2028. BX2 -X6*X2 (X2) = NUMBER OF PARTS IN FILE
  2029. SX6 DSBLKS (X6) = BLOCKS / PART
  2030. IX6 X2*X6
  2031. IX2 X1-X6
  2032. NG X2,WPF7 IF WITHIN RANGE
  2033. SX1 B1+B1 RESET BACK TO FIRST RECORD
  2034. WPF7 SX7 X3+PMSGL BUMP TO NEXT MESSAGE SLOT
  2035. BX6 X1
  2036. SA6 WPFC+2
  2037. SA6 WPFD+2
  2038. SA6 A1 UPDATE POINTER RECORD
  2039. SA7 A3 UPDATE POINTER WORD
  2040. SB2 WPFC
  2041. SA1 WPFH SET PLATO FILE NAME
  2042. BX6 X1
  2043. SA6 B2+B1
  2044. SX0 B0
  2045. RJ MAS
  2046. NZ X6,WPF8 IF ERROR
  2047. SA0 RECB
  2048. SX0 RECX
  2049. RE BLKLTH
  2050. RJ ECSPRTY
  2051.  
  2052. * MOVE ERROR MESSAGE TO RECORD
  2053.  
  2054. MOVE PMSGL,B6,RECB+X3
  2055. WE BLKLTH
  2056. RJ ECSPRTY
  2057. SB2 WPFD WRITE RECORD
  2058. SA1 WPFH SET PLATO FILE NAME
  2059. BX6 X1
  2060. SA6 B2+B1
  2061. SX0 B0
  2062. RJ MAS
  2063. NZ X6,WPF9 IF ERROR
  2064. SA0 RECD RE-WRITE POINTER RECORD
  2065. SX0 RECX
  2066. WE BLKLTH
  2067. RJ ECSPRTY
  2068. SB2 WPFD
  2069. SA1 WPFH SET PLATO FILE NAME
  2070. BX6 X1
  2071. SA6 B2+B1
  2072. SX6 B1
  2073. SX0 B0
  2074. SA6 B2+2
  2075. RJ MAS
  2076. NZ X6,WPF9 IF ERROR
  2077. EQ WPFX EXIT
  2078.  
  2079. WPF8 MESSAGE (=C* PLATO FILE READ ERROR.*)
  2080. EQ WPFX
  2081.  
  2082. WPF9 MESSAGE (=C* PLATO FILE WRITE ERROR.*)
  2083. EQ WPFX
  2084.  
  2085.  
  2086. * /--- BLOCK WPF 00 000 79/10/15 18.35
  2087. WPFA VFD 12/MS.ECS,48/0
  2088. BSSZ MS.MDIM-1
  2089. WPFB VFD 12/MS.OPF,48/0
  2090. VFD 60/0 FILE NAME
  2091. VFD 60/0LWRITE
  2092. BSSZ MS.MDIM-3
  2093. WPFC VFD 12/MS.RPF,48/0
  2094. VFD 60/0 FILE NAME
  2095. VFD 60/0 BLOCK NUMBER
  2096. VFD 60/0 ECS ADDRESS
  2097. BSSZ MS.MDIM-4
  2098. WPFD VFD 12/MS.WPF,48/0
  2099. VFD 60/0 FILE NAME
  2100. VFD 60/0 BLOCK NUMBER
  2101. VFD 60/0 ECS ADDRESS
  2102. BSSZ MS.MDIM-4
  2103. WPFE VFD 12/MS.CPF,48/0
  2104. VFD 60/0 FILE NAME
  2105. BSSZ MS.MDIM-2
  2106.  
  2107. WPFF VFD 60/0LESMERRS RECORD HEADER
  2108. WPFG CON 0 FLAG TO SHOW ECS / FILE OPEN
  2109. WPFH DATA 0L"DSET" PLATO FILE NAME
  2110. * /--- BLOCK COM 00 000 78/08/29 11.26
  2111. SPACE 5,11
  2112. ** COMMON DECKS.
  2113.  
  2114. *CALL COMCARG
  2115. *CALL COMCCIO
  2116. *CALL COMCCOD
  2117. *CALL COMCCPM
  2118. *CALL COMCDXB
  2119. *CALL COMCMVE
  2120. *CALL COMCPFM
  2121. *CALL COMCRDH
  2122. *CALL COMCRDW
  2123. *CALL COMCSFN
  2124. *CALL COMCSYS
  2125. *CALL COMCUPC
  2126. *CALL COMCWTW
  2127. *CALL ECSPRTY
  2128. * /--- BLOCK KDISP 00 000 79/11/12 19.58
  2129. TITLE DATA STORAGE.
  2130. KDISP SPACE 5,11
  2131. *** KDISP - BUFFERS FOR *K* DISPLAY.
  2132.  
  2133. KR VFD 24/KB,18/RS,18/LS
  2134. KB BSSZ 8
  2135.  
  2136. LS VFD 10/0,1/0,1/0,48/0
  2137. DSL 21,5,(ESM CONFIGURATION)
  2138. DSL 4,7,(MAX LOGICAL ADDRESS)
  2139. KMA EQU *-1
  2140. DATA H*MAX PHYSICAL ADDRESS*
  2141. KPA DATA 10H
  2142. LSH DSL 0,9,( RM TYPE BSU BANK CS )
  2143. DATA H*FA RM TYPE BSU BANK CS FA*
  2144. LSA BSS 0
  2145. DUP 35,1
  2146. DATA 70H
  2147. DSL 0,44,( )
  2148. KERR DATA 20H
  2149. DSL 0,45,( )
  2150. KDT DATA 50H
  2151.  
  2152. RS VFD 10/0,1/0,1/0,48/0
  2153. RSH DSL 0,9,( RM TYPE BSU BANK CS )
  2154. DATA H*FA RM TYPE BSU BANK CS FA*
  2155. RSA BSS 0
  2156. DUP 35,1
  2157. DATA 70H
  2158. DATA 0 END DISPLAY
  2159.  
  2160. * BLANK FORMATTED SCREEN
  2161.  
  2162. CKD BSS 0
  2163. D SET 7756B-11*10
  2164. DUP 35,3
  2165. VFD 12/6000B,12/6000B,12/6000B,12/6000B,12/D
  2166. DATA 60H
  2167. D SET D-10
  2168. KDL EQU *-CKD
  2169. * /--- BLOCK KDISP 00 000 79/11/12 20.04
  2170.  
  2171. * HELP SCREEN
  2172.  
  2173. HLPA BSS 0
  2174. DSL 0,11,(THE FOLLOWING COMMANDS ARE AVAILABLE)
  2175. D SET D+1
  2176. DSL 0,,(CLEAR. CLEAR ERROR LOGS.)
  2177. DSL 0,,(CONFIG. DETERMINE ESM CONFIGURATION.)
  2178. DSL 0,,(END. SAVE RELOCATION MEMORY,)
  2179. DSL 0,,( TERMINATE PROGRAM.)
  2180. DSL 0,,( DO NOT LOAD RELOCATION MEMORY.)
  2181. DSL 0,,(ERRORS. DISPLAY ERROR LOGS.)
  2182. DSL 0,,(FLAW,BSU,BANK.)
  2183. DSL 0,,(FLAW,BANK.)
  2184. DSL 0,,( TOGGLE THE FLAW STATUS OF PHYSICAL)
  2185. DSL 0,,( BANK. THIS SORTS THE RELOCATION MEMORY)
  2186. DSL 0,,( IN BANK ORDER AND PLACES FLAWED )
  2187. DSL 0,,( ENTRIES AT THE HIGH END.)
  2188. DSL 0,,(GO. SAVE AND LOAD RELOCATION MEMORY,)
  2189. DSL 0,,( TERMINATE PROGRAM.)
  2190. DSL 0,,(HELP. DISPLAY THIS SCREEN.)
  2191. DSL 0,,(INIT. INITIALIZE RELOCATION MEMORY TO 16M WORDS.)
  2192. DSL 0,,(LOAD. LOAD RELOCATION MEMORY.)
  2193. DSL 0,,(MA,ADDR. SET *ADDR* AS HIGHEST LOGICAL ENTRY
  2194. DSL 0,,( IN USE IN RELOCATION MEMORY.)
  2195. DSL 0,,(PA,ADDR. SET *ADDR* AS HIGHEST PHYSICAL ENTRY)
  2196. DSL 0,,( IN USE IN RELOCATION MEMORY.)
  2197. DSL 0,,(RELOC. DISPLAY RELOCATION MEMORY.)
  2198. DSL 0,,(SAVE. WRITE RELOCATION MEMORY TO FILE.)
  2199. DSL 0,,(STOP. TERMINATE PROGRAM.)
  2200. DSL 0,,(SET,LA=ADDR,PA=ADDR.)
  2201. DSL 0,,( SET RELOCATION ENTRY *LA* TO *PA*.)
  2202. DSL 0,,(ZERO. WRITE ZEROES TO ALL OF ESM.)
  2203. D SET D+1 SKIP A LINE
  2204. DSL 0,,(* - NOT ADDRESSABLE, F - FLAWED.)
  2205. DSL 0,,(IF THE *NK* OPTION IS CHOSEN, THE *GO*
  2206. DSL 0,,(COMMAND IS EXECUTED.)
  2207.  
  2208. HLPL EQU *-HLPA
  2209. ERRPL HLPL-KDL HELP SCREEN TOO LARGE
  2210. * /--- BLOCK DATA 00 000 79/10/30 11.39
  2211. SPACE 5,11
  2212. RF BSS 0
  2213. ESMRM FILEB BUF1,BUFL,EPR
  2214.  
  2215. KD DATA 0 *K* DISPLAY OPTION
  2216. T1 DATA 0 TEMPORARY
  2217. ESMH CON 0LESM+ESML HEADER ON RELOCATION FILE
  2218.  
  2219. PFA VFD 42/0,18/0 FAMILY NAME, 0
  2220. PNA VFD 42/0,18/0 PACK NAME, 0
  2221. UNA VFD 42/0,18/0 USER NUMBER, USER INDEX
  2222.  
  2223. ARGS BSS 0 ARGUMENT TABLE FOR *COMCARG*
  2224. ARGF VFD 12/0LF,18/RF,12/0,18/RF
  2225. VFD 12/0LNK,18/=-1,12/0,18/KD
  2226. CON 0
  2227.  
  2228. SXP VFD 24/0,24/77777700B,12/SXPF
  2229.  
  2230. CXP VFD 24/0,24/0,12/SXPF
  2231.  
  2232. SMB BSSZ 1 RELOCATION MEMORY BUFFER HDR
  2233. PLM BSSZ 1 36/,12/MAX PHYS BANK,12/MAX LOG
  2234. RLM BSSZ ESML RELOCATION MEMORY (CM)
  2235.  
  2236. CEL CON RSEF CLEAR ERROR LOG
  2237.  
  2238. MA CON SMAF LOAD MAXIMUM ADDRESS
  2239. DATA 0
  2240.  
  2241. RMB CON WRMF WRITE RELOCATION MEMORY
  2242. BSSZ 32
  2243.  
  2244. REQ CON RSPF REQUEST SIDE-DOOR PORT
  2245. REL CON REPF RELEASE SIDE-DOOR PORT
  2246.  
  2247. SBR CON RSBF READ STATUS BITS
  2248. DATA 0
  2249.  
  2250. * ERROR LOG BUFFERS
  2251.  
  2252. ELR CON RELF READ ERROR LOG
  2253. ERB0 BSSZ 17 ACTUAL ERROR LOG
  2254.  
  2255. * UNPACKED ERROR LOG
  2256. *
  2257. * FIRST 16 WORDS - DOUBLE BIT ERRORS
  2258. * 1/VALID BIT, 35/0, 24/ADDRESS
  2259. *
  2260. * SECOND 16 WORDS - SINGLE BIT ERRORS
  2261. * 12/COUNTER, 24/0, 24/ADDRESS
  2262.  
  2263. ERB1 BSSZ 32 UNPACKED ERROR LOG
  2264.  
  2265. CON 0 NUMBER OF ENTRIES IN TABLE
  2266. ERB2 BSSZ ERL DOUBLE BIT ERROR LOG
  2267.  
  2268. CON 0 NUMBER OF ENTRIES IN TABLE
  2269. ERB3 BSSZ ERL SINGLE BIT ERROR LOG
  2270.  
  2271. USE //
  2272. BUF1 BSS BUFL
  2273. RECD BSS BLKLTH PLATO RECORD BUFFER
  2274. RECB BSS BLKLTH PLATO RECORD BUFFER
  2275. RFL= EQU *+10B
  2276. USE *
  2277.  
  2278. END ESM
plato/source/plaopl/esmcp.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator