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