plato:source:plaopl:ecserr
Table of Contents
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
- ECSERR
- * /--- FILE TYPE = E
- * /--- BLOCK IDENT 00 000 78/02/28 01.20
- IDENT ECSERR
- TITLE ECSERR ECS ERROR PROCCESSING
- TITLE ECSERR
- *
- CST GET SYMBOL DEFINITIONS
- *
- *CALL COMCMAC
- *
- *
- *
- * -ECSERR-
- * RECORD ECS PARITY ERROR INFORMATION FOR NON-FATAL
- * ERRORS
- *
- * -ECSERRB-
- * ALTERNATE ENTRY POINT WHICH CAN BE CALLED FROM
- * ONE LEVEL DEEP IN RETURN JUMPS AFTER RE/WE
- *
- * ALL REGISTERS EXCEPT A7,X7 ARE PRESERVED
- *
- * ON RETURN - X7 = -1
- *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- * -ECSPRTY-
- * PROCESS FATAL ECS ERROR, DOES NOT RETURN TO CALLER
- *
- *
- * -ECSPRTZ-
- * PROCESS FATAL ECS ERROR WITHOUT ANY TESTING OF THE
- * FAILING ECS LOCATION.
- *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- *
- * ALL ENTRY POINTS BUT -ECSPRTZ- DO SOME TESTING
- * OF THE FAILING ECS ADDRESS. -ECSPRTY- WILL SPEND
- * MORE TIME IN THIS PROCESS THAN THE TWO RECOVERING
- * ROUNTINES, HOWEVER. -ECSPRTY- AND -ECSPRTZ- WILL
- * SET THE JOB CONTROL R1 = 3RECS, AND, IF THE FAIL-
- * ING ADDRESS IS KNOWN BUT THE FAILING BIT IS NOT,
- * R2= 200000B + THE BOTTOM 16 BITS OF THE ECS ADD.
- *
- *
- *
- * 'C'E'R'L NOTE'; THESE MESSAGES ARE EXTRACTED FROM
- * THE DAYFILE BY PROGRAM *ECSERRS* UNDER USER *SYS*
- * AS PART OF THE OPERATORS'7 DAILY LOG DUMPS. 'INFO
- * IS DUMPED TO DATASET *ECSERRLOG* WHICH IS READ
- * FROM LESSON *ECSLOG* ADH 78/1/18
- *
- *
- *
- *
- EXT ECSRA
- * /--- BLOCK @ 00 000 78/02/25 01.19
- *
- ENTRY ECSERR
- ECSERR EQ *
- RJ SAVRR SAVE REGISTERS
- SA1 ECSERR GET ADDRESS OF CALLING ROUTINE
- SX7 0 FLAG AS RECOVERABLE ERROR
- RJ ECSERRX
- EQ ECSERR
- *
- *
- *
- ENTRY ECSERRB
- ECSERRB EQ *
- RJ SAVRR
- SA1 ECSERRB GET ADDRESS OF CALL TO ECSERRB
- LX1 30
- SA1 X1-2 GET ADDRESS OF CALL
- SX7 0 SET FOR RECOVERABLE ERROR
- RJ ECSERRX
- EQ ECSERRB
- *
- *
- ENTRY ECSPRTY NOT A RECOVERABLE ERROR
- ECSPRTY EQ *
- RJ SAVRR SET UP B-REGISTER CELLS
- SA1 ECSPRTY
- SX7 20000-REPCNT FLAG NON-RECOVERABLE
- RJ ECSERRX
- ENTRY ECSPRTZ NONRECOVERABLE ERROR,NO TESTING
- ECSPRTZ EQ *
- RJ SAVRR
- SA1 ECSPRTZ
- SX7 -1 MARK NON-RECOVERABLE, NO TEST
- RJ ECSERRX
- * /--- BLOCK ECSERRX 00 000 78/02/28 01.21
- TITLE ECSERRX
- *
- *
- *
- * -ECSERRX- PROCESS ECS PARITY ERROR
- *
- * ON ENTRY,
- * X7=0 FOR RECOVERABLE ERROR, NONZERO FOR
- * A FATAL ERROR
- * = NEG FOR NO TESTING, POS FOR TESTING OF
- * OF THE FAILING ECS LOCATION
- *
- ECSERRX EQ *
- SA7 FLAG
- ERR05 LX1 30
- SX6 X1-1 CALLING ADDRESS
- SA6 PLOC
- SA1 X6 LOAD RE/WE INSTRUCTION
- *
- * GET B-REGISTER NUMBER AND TRANSFER LENGTH
- *
- LX1 12 POSITION B-REGISTER NUMBER
- MX2 -3
- BX2 -X2*X1 MASK OFF B-REGISTER NUMBER
- ZR X2,ERR10 IF *B0* ASSUME 0
- SA2 SB-1+X2 LOAD B REGISTER
- ERR10 LX1 18 POSITION LENGTH OF RE/WE
- SB1 X1
- SX6 B1+X2 COMPUTE LENGTH OF TRANSFER
- SA6 TLTH SAVE LENGTH OF TRANSFER
- BX6 X0
- SA6 TFWA SAVE FWA OF ECS TRANSFER
- MX6 -1
- SA6 JCRWD MARK EXACT ADDR NOT KNOWN YET
- SA1 NONFAT
- ZR X7,ERR12 IF NON-FATAL ERROR
- SA1 FAT
- ERR12 BX6 X1
- SA6 LINE1 SET FATAL/NON FATAL MESSAGE
- DATE LINE0+1
- CALL S=MSG,LINE0
- CALL S=MSG,LINE1
- *
- * SEARCH TO FIND THE EXACT ADDRESS OF THE ERROR
- *
- SA1 TFWA
- BX0 X1
- SA1 TLTH
- SB1 X1
- SX1 1
- SA0 CONTNT
- *
- ERR20 SB1 B1-1 END TEST
- NG B1,ERR40 EXIT IF CANNOT FIND ERROR
- + RE 1
- EQ ERR30 JUMP IF FOUND THE ERROR
- IX0 X0+X1 ADVANCE ECS ADDRESS
- EQ ERR20
- * /--- BLOCK ECSERR 00 000 78/02/24 23.53
- *
- * PUT OUT DAYFILE MESSAGE WITH FAILING ADDRESS/CONT.
- *
- ERR30 BX6 X0 SAVE EXACT ADDRESS OF ERROR
- SA6 ERRADD
- SA6 JCRWD
- SA2 ECSRA LOAD ECS REFERENCE ADDRESS
- IX1 X0+X2 ADD TO FAILING ADDRESS
- CALL S=OTOA
- MX0 42
- LX7 18 POSTION 7 CHAR DISPLAY CODES
- BX7 X0*X7
- SA7 LINE2+1
- *
- SA1 CONTNT LOAD CONTENTS OF FAILING WORD
- CALL S=OTOA
- SA6 LINE6+1
- SA7 LINE6+2
- CALL S=MSG,LINE2
- CALL S=MSG,LINE6
- *
- SA5 FLAG CHECK IF TESTING IS SAFE
- NG X5,ERR40 IF CANNOT TEST FAILING LOCATION
- SA1 ERRADD
- SA0 TESTPAT
- BX0 X1
- MX6 0
- SA6 A0 OVERWRITE WITH ZERO*S PATTERN
- SB1 REPCNT+X5 REPETITION COUNT
- + WE 1
- ERR30A RE 1 RE-READ BAD LOCATION
- - EQ ERR36 IF WE GOT A PARITY ERROR
- SB1 B1-1
- PL B1,ERR30A TRY REPCNT TIMES
- ERR30B SB1 REPCNT+X5
- MX6 -0
- SA6 A0 OVERWRITE WITH ONES PATTERN
- + WE 1
- ERR30C RE 1 RE-READ BAD LOCATION
- - EQ ERR36 IF GOT A PARITY ERROR
- SB1 B1-1
- PL B1,ERR30C REPEAT REPCNT TIMES
- * /--- BLOCK ECSERR 00 000 78/02/28 01.22
- * TRY THE CONTENTS OBTAINED FROM THE PARITY LOCATION
- * AS A TEST PATTERN
- ERR32 SA1 CONTNT CONTENTS OF PARITY LOCATION
- BX6 X1
- SA6 A0 STORE TEST PATTERN
- SB1 REPCNT+X5
- + WE 1
- ERR32A RE 1 READ TO CHECK PARITY
- - EQ ERR36 IF FOUND AN ERROR
- SB1 B1-1
- PL B1,ERR32A REPEAT READ REPCNT TIMES
- * MAKE AND TRY 60 TEST PATTERNS BY SUCCESSIVELY
- * COMPLEMENTING EACH BIT OF THE DATA READ FROM THE
- * BAD LOCATION
- MX2 1
- ERR34 SB1 REPCNT+X5
- BX6 X1-X2 COMPLEMENT 1 BIT OF DATA PATT.
- SA6 A0
- WE 1
- ERR34A RE 1
- - EQ ERR36 IF FORCED A PARITY ERROR
- SB1 B1-1
- PL B1,ERR34A REPEAT READ REPCNT TIMES
- LX2 -1
- PL X2,ERR34 IF HAVEN'7T DONE ALL 60 BITS
- EQ ERR40 SORRY, NO NEW INFO
- * /--- BLOCK ECSERR 00 000 78/02/25 00.06
- * FORMAT DAYFILE MESSAGE WITH INFO OBTAINED
- ERR36 BX1 X6 FAILING TEST PATTERN
- CALL S=OTOA
- SA6 LINE9+1
- SA7 LINE9+2
- CALL S=MSG,LINE9
- SA1 TESTPAT
- CALL S=OTOA
- SA6 LINE10+1
- SA7 LINE10+2
- CALL S=MSG,LINE10
- * HAVE LOCATED EXACT BIT, DO NOT BRING UP BACKGROUND
- * TEST PROGRAM
- ERR38 MX6 -1
- SA6 JCRWD FLAG ERROR IDENTIFIED
- *
- *
- *
- ERR40 BSS 0
- *
- * FORMAT ECS ERROR DAYFILE MESSAGES
- *
- SA1 TFWA LOAD ECS FWA OF TRANSFER
- SA2 ECSRA LOAD ECS REFERENCE ADDRESS
- IX1 X1+X2
- CALL S=OTOA
- MX0 42
- LX7 18 POSTION 7 CHAR DISPLAY CODES
- BX7 X0*X7
- SA7 LINE3+1
- CALL S=MSG,LINE3
- *
- SA1 TLTH LOAD LENGTH OF ECS TRANSFER
- CALL S=OTOA
- MX0 42
- LX7 18 POSTION 7 CHAR DISPLAY CODES
- BX7 X0*X7
- SA7 LINE4+1
- CALL S=MSG,LINE4
- *
- SA1 PLOC LOAD PROGRAM ADDRESS
- CALL S=OTOA
- MX0 42
- LX7 18 POSTION 7 CHAR DISPLAY CODES
- BX7 X0*X7
- SA7 LINE5+1
- CALL S=MSG,LINE5
- CALL S=MSG,LINE0
- * /--- BLOCK ECSERR 00 000 78/02/26 23.39
- SA5 FLAG
- NZ X5,ERR60 IF *ECSPRTY* OR *ECSPRTZ*
- CALL S=BMSG,LINE1 OUTPUT B-DISPLAY MESSAGE
- RJ RESTRR RESTORE REGISTERS
- MX7 -1 RETURN X7 = -1
- EQ ECSERRX
- *
- *
- * SET THE APPROPRIATE JOB CONTROL REGISTERS
- ERR60 GETJCR TESTPAT OBTAIN CURRENT REG. VALUES
- SA1 TESTPAT
- MX6 -36
- BX7 X6*X1 CLEAR *R1* AND *R2* FIELDS
- SA1 JCRWD
- NG X1,ERR62 IF SHOULDN'7T LOAD ECS TESTER
- * SET R2 = BIT 17 + BOTTOM 16 BITS OF FAILING ADDR.
- SA2 ECSRA JOBS RA
- IX1 X1+X2 + REL ADDR. OF FAILING LOCATION
- MX2 -16
- BX1 -X2*X1 EXTRACT BOTTOM 16 BITS
- SX1 X1+200000B AND SET 17TH BIT
- LX1 18
- BX7 X1+X7 MERGE WITH REST OF REG IMAGE
- ERR62 SX1 3RECS SET R1 = *ECS*
- BX7 X1+X7
- SA7 A1
- SETJCR JCRWD
- ENDRUN
- *
- *
- * /--- BLOCK ECSERR 00 000 78/02/28 01.24
- *
- *
- KSB1 SB1 X1+B0
- *
- LINE0 DIS ,*+++++++++++++++++++++++++++++++++++*
- LINE1 DIS ,*NON FATAL ECS PARITY ERROR*
- LINE2 DIS ,*ECS ADDR UNKNOWN*
- LINE3 DIS ,*FWA TRANS XXXXXXX*
- LINE4 DIS ,*LTH TRANS XXXXXXX*
- LINE5 DIS ,*CALL ADDR XXXXXXX*
- LINE6 DIS ,*CONTENTS UNKNOWN *
- LINE9 DIS ,*TEST DATA *
- LINE10 DIS ,* READ AS *
- FAT DATA 10H FATAL
- NONFAT DATA 10HNON FATAL
- *
- REPCNT EQU 2000 TIMES TO REPEAT TEST PATTERNS
- TFWA BSSZ 1 FWA OF ECS TRANSFER
- TLTH BSSZ 1 LENGTH OF TRANSFER
- ERRADD BSSZ 1 ECS ADDRESS OF BAD WORD
- CONTNT BSSZ 1 CONTENTS OF BAD WORD
- PLOC BSSZ 1 PROGRAM CALL LOCATION
- FLAG BSSZ 1
- TESTPAT BSSZ 1 HOLD TEST PATTERN
- JCRWD VFD 60/-1
- *
- * /--- BLOCK SAVE 00 000 78/02/16 02.04
- TITLE SAVE REGISTERS
- *
- *
- *
- ENTRY SAVRR
- SAVRR EQ *
- SX7 B1
- SA7 SB
- SX7 B2
- SB1 1
- SA7 A7+B1
- SX7 B3
- SA7 A7+B1
- SX7 B4
- SA7 A7+B1
- SX7 B5
- SA7 A7+B1
- SX7 B6
- SA7 A7+B1
- SX7 B7
- SA7 A7+B1
- BX7 X0
- SA7 A7+B1
- BX7 X1
- SA7 A7+B1
- BX7 X2
- SA7 A7+B1
- BX7 X3
- SA7 A7+B1
- BX7 X4
- SA7 A7+B1
- BX7 X5
- SA7 A7+B1
- BX7 X6
- SA7 A7+B1
- SX7 A0
- SA7 A7+B1
- SX7 A1
- SA7 A7+B1
- SX7 A2
- SA7 A7+B1
- SX7 A3
- SA7 A7+B1
- SX7 A4
- SA7 A7+B1
- SX7 A5
- SA7 A7+B1
- SX7 A6
- SA7 A7+B1
- EQ SAVRR
- *
- *
- * /--- BLOCK RESTORE 00 000 78/02/16 02.08
- TITLE RESTORE REGISTERS
- *
- *
- *
- ENTRY RESTRR
- RESTRR EQ *
- SA1 SA
- SA0 X1
- SA1 SA+2
- SA2 X1
- SA1 SA+3
- SA3 X1
- SA1 SA+4
- SA4 X1
- SA1 SA+5
- SA5 X1
- SA1 SA+6
- SA1 X1 LOAD WORD TO WHICH A6 POINTS
- BX6 X1 PLACE IN X6 TO REWRITE
- SA6 A1 RESTORE A6
- SA1 SB
- SB1 X1
- SA1 SB+1
- SB2 X1
- SA1 SB+2
- SB3 X1
- SA1 SB+3
- SB4 X1
- SA1 SB+4
- SB5 X1
- SA1 SB+5
- SB6 X1
- SA1 SB+6
- SB7 X1
- SA1 SX
- BX0 X1
- SA1 SX+1
- BX7 X1
- SA1 SX+2
- BX2 X1
- SA1 SX+3
- BX3 X1
- SA1 SX+4
- BX4 X1
- SA1 SX+5
- BX5 X1
- SA1 SX+6
- BX6 X1
- SA1 SA+1
- SA1 X1
- BX1 X7
- EQ RESTRR
- *
- *
- * ********** CAUTION ***********
- * THE FOLLOWING MUST REMAIN IN ORDER UNLESS THE
- * SAVE ROUTINE IS REWRITTEN. MWW 2/16/78
- SB BSS 7
- SX BSS 7
- SA BSS 7
- *
- *
- * /--- BLOCK EINIT 00 000 78/02/28 00.46
- TITLE -EINIT- INITIALIZE -A- REGISTERS
- *
- *
- *
- * -EINIT-
- * CALLED DURING LOAD TIME INITIALIZATIONS TO SET
- * ALL -A- REGISTERS IN BOUNDS TO AVOID ERROR EXIT
- * IN SAVE/RESTORE ROUTINES
- *
- *
- ENTRY EINIT
- EINIT EQ *
- SA1 B0
- SA2 B0
- SA3 B0
- SA4 B0
- SA5 B0
- SA6 SX
- SA7 A6
- EQ EINIT
- *
- *
- END
plato/source/plaopl/ecserr.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator