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