User Tools

Site Tools


plato:source:plaopl:ecserr

ECSERR

Table Of Contents

  • [00005] ECSERR ECS ERROR PROCCESSING
  • [00006] ECSERR
  • [00103] ECSERRX
  • [00361] SAVE REGISTERS
  • [00414] RESTORE REGISTERS
  • [00480] -EINIT- INITIALIZE -A- REGISTERS

Source Code

ECSERR.txt
  1. ECSERR
  2. * /--- FILE TYPE = E
  3. * /--- BLOCK IDENT 00 000 78/02/28 01.20
  4. IDENT ECSERR
  5. TITLE ECSERR ECS ERROR PROCCESSING
  6. TITLE ECSERR
  7. *
  8. CST GET SYMBOL DEFINITIONS
  9. *
  10. *CALL COMCMAC
  11. *
  12. *
  13. *
  14. * -ECSERR-
  15. * RECORD ECS PARITY ERROR INFORMATION FOR NON-FATAL
  16. * ERRORS
  17. *
  18. * -ECSERRB-
  19. * ALTERNATE ENTRY POINT WHICH CAN BE CALLED FROM
  20. * ONE LEVEL DEEP IN RETURN JUMPS AFTER RE/WE
  21. *
  22. * ALL REGISTERS EXCEPT A7,X7 ARE PRESERVED
  23. *
  24. * ON RETURN - X7 = -1
  25.  
  26.  
  27. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  28.  
  29. * -ECSPRTY-
  30. * PROCESS FATAL ECS ERROR, DOES NOT RETURN TO CALLER
  31. *
  32. *
  33. * -ECSPRTZ-
  34. * PROCESS FATAL ECS ERROR WITHOUT ANY TESTING OF THE
  35. * FAILING ECS LOCATION.
  36.  
  37. *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  38.  
  39. *
  40. * ALL ENTRY POINTS BUT -ECSPRTZ- DO SOME TESTING
  41. * OF THE FAILING ECS ADDRESS. -ECSPRTY- WILL SPEND
  42. * MORE TIME IN THIS PROCESS THAN THE TWO RECOVERING
  43. * ROUNTINES, HOWEVER. -ECSPRTY- AND -ECSPRTZ- WILL
  44. * SET THE JOB CONTROL R1 = 3RECS, AND, IF THE FAIL-
  45. * ING ADDRESS IS KNOWN BUT THE FAILING BIT IS NOT,
  46. * R2= 200000B + THE BOTTOM 16 BITS OF THE ECS ADD.
  47. *
  48. *
  49. *
  50. * 'C'E'R'L NOTE'; THESE MESSAGES ARE EXTRACTED FROM
  51. * THE DAYFILE BY PROGRAM *ECSERRS* UNDER USER *SYS*
  52. * AS PART OF THE OPERATORS'7 DAILY LOG DUMPS. 'INFO
  53. * IS DUMPED TO DATASET *ECSERRLOG* WHICH IS READ
  54. * FROM LESSON *ECSLOG* ADH 78/1/18
  55. *
  56. *
  57. *
  58. *
  59. EXT ECSRA
  60. * /--- BLOCK @ 00 000 78/02/25 01.19
  61. *
  62. ENTRY ECSERR
  63. ECSERR EQ *
  64. RJ SAVRR SAVE REGISTERS
  65. SA1 ECSERR GET ADDRESS OF CALLING ROUTINE
  66. SX7 0 FLAG AS RECOVERABLE ERROR
  67. RJ ECSERRX
  68. EQ ECSERR
  69. *
  70. *
  71. *
  72. ENTRY ECSERRB
  73. ECSERRB EQ *
  74. RJ SAVRR
  75. SA1 ECSERRB GET ADDRESS OF CALL TO ECSERRB
  76. LX1 30
  77. SA1 X1-2 GET ADDRESS OF CALL
  78. SX7 0 SET FOR RECOVERABLE ERROR
  79. RJ ECSERRX
  80. EQ ECSERRB
  81. *
  82. *
  83.  
  84.  
  85. ENTRY ECSPRTY NOT A RECOVERABLE ERROR
  86.  
  87. ECSPRTY EQ *
  88. RJ SAVRR SET UP B-REGISTER CELLS
  89. SA1 ECSPRTY
  90. SX7 20000-REPCNT FLAG NON-RECOVERABLE
  91. RJ ECSERRX
  92.  
  93.  
  94.  
  95. ENTRY ECSPRTZ NONRECOVERABLE ERROR,NO TESTING
  96.  
  97. ECSPRTZ EQ *
  98. RJ SAVRR
  99. SA1 ECSPRTZ
  100. SX7 -1 MARK NON-RECOVERABLE, NO TEST
  101. RJ ECSERRX
  102. * /--- BLOCK ECSERRX 00 000 78/02/28 01.21
  103. TITLE ECSERRX
  104. *
  105. *
  106. *
  107. * -ECSERRX- PROCESS ECS PARITY ERROR
  108. *
  109. * ON ENTRY,
  110. * X7=0 FOR RECOVERABLE ERROR, NONZERO FOR
  111. * A FATAL ERROR
  112. * = NEG FOR NO TESTING, POS FOR TESTING OF
  113. * OF THE FAILING ECS LOCATION
  114. *
  115. ECSERRX EQ *
  116. SA7 FLAG
  117. ERR05 LX1 30
  118. SX6 X1-1 CALLING ADDRESS
  119. SA6 PLOC
  120. SA1 X6 LOAD RE/WE INSTRUCTION
  121. *
  122. * GET B-REGISTER NUMBER AND TRANSFER LENGTH
  123. *
  124. LX1 12 POSITION B-REGISTER NUMBER
  125. MX2 -3
  126. BX2 -X2*X1 MASK OFF B-REGISTER NUMBER
  127. ZR X2,ERR10 IF *B0* ASSUME 0
  128. SA2 SB-1+X2 LOAD B REGISTER
  129. ERR10 LX1 18 POSITION LENGTH OF RE/WE
  130. SB1 X1
  131. SX6 B1+X2 COMPUTE LENGTH OF TRANSFER
  132. SA6 TLTH SAVE LENGTH OF TRANSFER
  133. BX6 X0
  134. SA6 TFWA SAVE FWA OF ECS TRANSFER
  135. MX6 -1
  136. SA6 JCRWD MARK EXACT ADDR NOT KNOWN YET
  137. SA1 NONFAT
  138. ZR X7,ERR12 IF NON-FATAL ERROR
  139. SA1 FAT
  140. ERR12 BX6 X1
  141. SA6 LINE1 SET FATAL/NON FATAL MESSAGE
  142. DATE LINE0+1
  143. CALL S=MSG,LINE0
  144. CALL S=MSG,LINE1
  145. *
  146. * SEARCH TO FIND THE EXACT ADDRESS OF THE ERROR
  147. *
  148. SA1 TFWA
  149. BX0 X1
  150. SA1 TLTH
  151. SB1 X1
  152. SX1 1
  153. SA0 CONTNT
  154. *
  155. ERR20 SB1 B1-1 END TEST
  156. NG B1,ERR40 EXIT IF CANNOT FIND ERROR
  157. + RE 1
  158. EQ ERR30 JUMP IF FOUND THE ERROR
  159. IX0 X0+X1 ADVANCE ECS ADDRESS
  160. EQ ERR20
  161. * /--- BLOCK ECSERR 00 000 78/02/24 23.53
  162. *
  163. * PUT OUT DAYFILE MESSAGE WITH FAILING ADDRESS/CONT.
  164. *
  165. ERR30 BX6 X0 SAVE EXACT ADDRESS OF ERROR
  166. SA6 ERRADD
  167. SA6 JCRWD
  168. SA2 ECSRA LOAD ECS REFERENCE ADDRESS
  169. IX1 X0+X2 ADD TO FAILING ADDRESS
  170. CALL S=OTOA
  171. MX0 42
  172. LX7 18 POSTION 7 CHAR DISPLAY CODES
  173. BX7 X0*X7
  174. SA7 LINE2+1
  175. *
  176. SA1 CONTNT LOAD CONTENTS OF FAILING WORD
  177. CALL S=OTOA
  178. SA6 LINE6+1
  179. SA7 LINE6+2
  180.  
  181. CALL S=MSG,LINE2
  182. CALL S=MSG,LINE6
  183. *
  184. SA5 FLAG CHECK IF TESTING IS SAFE
  185. NG X5,ERR40 IF CANNOT TEST FAILING LOCATION
  186. SA1 ERRADD
  187. SA0 TESTPAT
  188. BX0 X1
  189. MX6 0
  190. SA6 A0 OVERWRITE WITH ZERO*S PATTERN
  191. SB1 REPCNT+X5 REPETITION COUNT
  192. + WE 1
  193. ERR30A RE 1 RE-READ BAD LOCATION
  194. - EQ ERR36 IF WE GOT A PARITY ERROR
  195. SB1 B1-1
  196. PL B1,ERR30A TRY REPCNT TIMES
  197.  
  198. ERR30B SB1 REPCNT+X5
  199. MX6 -0
  200. SA6 A0 OVERWRITE WITH ONES PATTERN
  201. + WE 1
  202. ERR30C RE 1 RE-READ BAD LOCATION
  203. - EQ ERR36 IF GOT A PARITY ERROR
  204. SB1 B1-1
  205. PL B1,ERR30C REPEAT REPCNT TIMES
  206. * /--- BLOCK ECSERR 00 000 78/02/28 01.22
  207.  
  208.  
  209. * TRY THE CONTENTS OBTAINED FROM THE PARITY LOCATION
  210. * AS A TEST PATTERN
  211.  
  212. ERR32 SA1 CONTNT CONTENTS OF PARITY LOCATION
  213. BX6 X1
  214. SA6 A0 STORE TEST PATTERN
  215. SB1 REPCNT+X5
  216. + WE 1
  217. ERR32A RE 1 READ TO CHECK PARITY
  218. - EQ ERR36 IF FOUND AN ERROR
  219. SB1 B1-1
  220. PL B1,ERR32A REPEAT READ REPCNT TIMES
  221.  
  222. * MAKE AND TRY 60 TEST PATTERNS BY SUCCESSIVELY
  223. * COMPLEMENTING EACH BIT OF THE DATA READ FROM THE
  224. * BAD LOCATION
  225.  
  226. MX2 1
  227. ERR34 SB1 REPCNT+X5
  228. BX6 X1-X2 COMPLEMENT 1 BIT OF DATA PATT.
  229. SA6 A0
  230. WE 1
  231. ERR34A RE 1
  232. - EQ ERR36 IF FORCED A PARITY ERROR
  233. SB1 B1-1
  234. PL B1,ERR34A REPEAT READ REPCNT TIMES
  235. LX2 -1
  236. PL X2,ERR34 IF HAVEN'7T DONE ALL 60 BITS
  237. EQ ERR40 SORRY, NO NEW INFO
  238. * /--- BLOCK ECSERR 00 000 78/02/25 00.06
  239.  
  240. * FORMAT DAYFILE MESSAGE WITH INFO OBTAINED
  241.  
  242. ERR36 BX1 X6 FAILING TEST PATTERN
  243. CALL S=OTOA
  244. SA6 LINE9+1
  245. SA7 LINE9+2
  246. CALL S=MSG,LINE9
  247.  
  248. SA1 TESTPAT
  249. CALL S=OTOA
  250. SA6 LINE10+1
  251. SA7 LINE10+2
  252. CALL S=MSG,LINE10
  253.  
  254. * HAVE LOCATED EXACT BIT, DO NOT BRING UP BACKGROUND
  255. * TEST PROGRAM
  256.  
  257. ERR38 MX6 -1
  258. SA6 JCRWD FLAG ERROR IDENTIFIED
  259.  
  260. *
  261. *
  262. *
  263. ERR40 BSS 0
  264. *
  265. * FORMAT ECS ERROR DAYFILE MESSAGES
  266. *
  267.  
  268. SA1 TFWA LOAD ECS FWA OF TRANSFER
  269. SA2 ECSRA LOAD ECS REFERENCE ADDRESS
  270. IX1 X1+X2
  271. CALL S=OTOA
  272. MX0 42
  273. LX7 18 POSTION 7 CHAR DISPLAY CODES
  274. BX7 X0*X7
  275. SA7 LINE3+1
  276. CALL S=MSG,LINE3
  277. *
  278. SA1 TLTH LOAD LENGTH OF ECS TRANSFER
  279. CALL S=OTOA
  280. MX0 42
  281. LX7 18 POSTION 7 CHAR DISPLAY CODES
  282. BX7 X0*X7
  283. SA7 LINE4+1
  284. CALL S=MSG,LINE4
  285. *
  286. SA1 PLOC LOAD PROGRAM ADDRESS
  287. CALL S=OTOA
  288. MX0 42
  289. LX7 18 POSTION 7 CHAR DISPLAY CODES
  290. BX7 X0*X7
  291. SA7 LINE5+1
  292. CALL S=MSG,LINE5
  293. CALL S=MSG,LINE0
  294. * /--- BLOCK ECSERR 00 000 78/02/26 23.39
  295. SA5 FLAG
  296. NZ X5,ERR60 IF *ECSPRTY* OR *ECSPRTZ*
  297. CALL S=BMSG,LINE1 OUTPUT B-DISPLAY MESSAGE
  298. RJ RESTRR RESTORE REGISTERS
  299. MX7 -1 RETURN X7 = -1
  300. EQ ECSERRX
  301. *
  302. *
  303.  
  304. * SET THE APPROPRIATE JOB CONTROL REGISTERS
  305.  
  306.  
  307. ERR60 GETJCR TESTPAT OBTAIN CURRENT REG. VALUES
  308. SA1 TESTPAT
  309. MX6 -36
  310. BX7 X6*X1 CLEAR *R1* AND *R2* FIELDS
  311. SA1 JCRWD
  312. NG X1,ERR62 IF SHOULDN'7T LOAD ECS TESTER
  313.  
  314. * SET R2 = BIT 17 + BOTTOM 16 BITS OF FAILING ADDR.
  315.  
  316. SA2 ECSRA JOBS RA
  317. IX1 X1+X2 + REL ADDR. OF FAILING LOCATION
  318. MX2 -16
  319. BX1 -X2*X1 EXTRACT BOTTOM 16 BITS
  320. SX1 X1+200000B AND SET 17TH BIT
  321. LX1 18
  322. BX7 X1+X7 MERGE WITH REST OF REG IMAGE
  323. ERR62 SX1 3RECS SET R1 = *ECS*
  324. BX7 X1+X7
  325. SA7 A1
  326.  
  327. SETJCR JCRWD
  328. ENDRUN
  329.  
  330. *
  331. *
  332. * /--- BLOCK ECSERR 00 000 78/02/28 01.24
  333. *
  334. *
  335. KSB1 SB1 X1+B0
  336. *
  337. LINE0 DIS ,*+++++++++++++++++++++++++++++++++++*
  338. LINE1 DIS ,*NON FATAL ECS PARITY ERROR*
  339. LINE2 DIS ,*ECS ADDR UNKNOWN*
  340. LINE3 DIS ,*FWA TRANS XXXXXXX*
  341. LINE4 DIS ,*LTH TRANS XXXXXXX*
  342. LINE5 DIS ,*CALL ADDR XXXXXXX*
  343. LINE6 DIS ,*CONTENTS UNKNOWN *
  344. LINE9 DIS ,*TEST DATA *
  345. LINE10 DIS ,* READ AS *
  346.  
  347. FAT DATA 10H FATAL
  348. NONFAT DATA 10HNON FATAL
  349. *
  350. REPCNT EQU 2000 TIMES TO REPEAT TEST PATTERNS
  351. TFWA BSSZ 1 FWA OF ECS TRANSFER
  352. TLTH BSSZ 1 LENGTH OF TRANSFER
  353. ERRADD BSSZ 1 ECS ADDRESS OF BAD WORD
  354. CONTNT BSSZ 1 CONTENTS OF BAD WORD
  355. PLOC BSSZ 1 PROGRAM CALL LOCATION
  356. FLAG BSSZ 1
  357. TESTPAT BSSZ 1 HOLD TEST PATTERN
  358. JCRWD VFD 60/-1
  359. *
  360. * /--- BLOCK SAVE 00 000 78/02/16 02.04
  361. TITLE SAVE REGISTERS
  362. *
  363. *
  364. *
  365. ENTRY SAVRR
  366. SAVRR EQ *
  367. SX7 B1
  368. SA7 SB
  369. SX7 B2
  370. SB1 1
  371. SA7 A7+B1
  372. SX7 B3
  373. SA7 A7+B1
  374. SX7 B4
  375. SA7 A7+B1
  376. SX7 B5
  377. SA7 A7+B1
  378. SX7 B6
  379. SA7 A7+B1
  380. SX7 B7
  381. SA7 A7+B1
  382. BX7 X0
  383. SA7 A7+B1
  384. BX7 X1
  385. SA7 A7+B1
  386. BX7 X2
  387. SA7 A7+B1
  388. BX7 X3
  389. SA7 A7+B1
  390. BX7 X4
  391. SA7 A7+B1
  392. BX7 X5
  393. SA7 A7+B1
  394. BX7 X6
  395. SA7 A7+B1
  396. SX7 A0
  397. SA7 A7+B1
  398. SX7 A1
  399. SA7 A7+B1
  400. SX7 A2
  401. SA7 A7+B1
  402. SX7 A3
  403. SA7 A7+B1
  404. SX7 A4
  405. SA7 A7+B1
  406. SX7 A5
  407. SA7 A7+B1
  408. SX7 A6
  409. SA7 A7+B1
  410. EQ SAVRR
  411. *
  412. *
  413. * /--- BLOCK RESTORE 00 000 78/02/16 02.08
  414. TITLE RESTORE REGISTERS
  415. *
  416. *
  417. *
  418. ENTRY RESTRR
  419. RESTRR EQ *
  420. SA1 SA
  421. SA0 X1
  422. SA1 SA+2
  423. SA2 X1
  424. SA1 SA+3
  425. SA3 X1
  426. SA1 SA+4
  427. SA4 X1
  428. SA1 SA+5
  429. SA5 X1
  430. SA1 SA+6
  431. SA1 X1 LOAD WORD TO WHICH A6 POINTS
  432. BX6 X1 PLACE IN X6 TO REWRITE
  433. SA6 A1 RESTORE A6
  434. SA1 SB
  435. SB1 X1
  436. SA1 SB+1
  437. SB2 X1
  438. SA1 SB+2
  439. SB3 X1
  440. SA1 SB+3
  441. SB4 X1
  442. SA1 SB+4
  443. SB5 X1
  444. SA1 SB+5
  445. SB6 X1
  446. SA1 SB+6
  447. SB7 X1
  448. SA1 SX
  449. BX0 X1
  450. SA1 SX+1
  451. BX7 X1
  452. SA1 SX+2
  453. BX2 X1
  454. SA1 SX+3
  455. BX3 X1
  456. SA1 SX+4
  457. BX4 X1
  458. SA1 SX+5
  459. BX5 X1
  460. SA1 SX+6
  461. BX6 X1
  462. SA1 SA+1
  463. SA1 X1
  464. BX1 X7
  465. EQ RESTRR
  466. *
  467. *
  468.  
  469. * ********** CAUTION ***********
  470.  
  471. * THE FOLLOWING MUST REMAIN IN ORDER UNLESS THE
  472. * SAVE ROUTINE IS REWRITTEN. MWW 2/16/78
  473.  
  474. SB BSS 7
  475. SX BSS 7
  476. SA BSS 7
  477. *
  478. *
  479. * /--- BLOCK EINIT 00 000 78/02/28 00.46
  480. TITLE -EINIT- INITIALIZE -A- REGISTERS
  481. *
  482. *
  483. *
  484. * -EINIT-
  485. * CALLED DURING LOAD TIME INITIALIZATIONS TO SET
  486. * ALL -A- REGISTERS IN BOUNDS TO AVOID ERROR EXIT
  487. * IN SAVE/RESTORE ROUTINES
  488. *
  489. *
  490. ENTRY EINIT
  491. EINIT EQ *
  492. SA1 B0
  493. SA2 B0
  494. SA3 B0
  495. SA4 B0
  496. SA5 B0
  497. SA6 SX
  498. SA7 A6
  499. EQ EINIT
  500. *
  501. *
  502. END
plato/source/plaopl/ecserr.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator