290 lines
6.2 KiB
Text
290 lines
6.2 KiB
Text
SUBTTL *UUOERR* OLD-UUO ERROR HANDLER SUBROUTINE, V75B, APR 22,1975
|
|
|
|
;THIS SUBROUTINE PROVIDES ERROR REPORTING THRU THE USE OF UUO'S.
|
|
|
|
ERRMES: MOVEM 0,%ERAC0# ;SAVE AC0
|
|
IFDEF EXCASB,<IFDEF KI10,<
|
|
SKIPN KAIFLG
|
|
JRST .+5
|
|
SKIPE USER ;USER MODE ?
|
|
JRST .+3
|
|
SKIPE MARGIN
|
|
DATAO APR,[IMGNOF,,ISPDOF] ;CLR MARGINS >>
|
|
MOVEM 1,%ERAC1# ;SAVE AC1
|
|
MOVEM 2,%ERAC2# ;SAVE AC2
|
|
AOS ERRTLS ;INCREMENT ERROR TOTALS
|
|
HRRZ 0,$SVUPC ;GET PC OF UUO
|
|
CAMN 0,ERRPC ;PC = PC OF LAST ERROR ?
|
|
AOS MICNT# ;YES, ADD 1 TO ERROR COUNT
|
|
MOVE 0,MICNT
|
|
HRL 0,$SVUPC
|
|
SKIPN KLFLG ;NOT KL10
|
|
SKIPE USER ;AND NOT USER?
|
|
JRST .+2
|
|
DATAO PI,0 ;YES, DISPLAY ERROR PC,ERROR COUNT
|
|
SETZM PROCED# ;CLEAR PROCEED FLAG
|
|
SWITCH
|
|
TLNE NOPNT ;PRINTOUT ?
|
|
JRST %ERRS1 ;NO, RESTORE AC'S AND RETURN
|
|
MOVE 1,$SVUUO
|
|
LSH 1,-^D27
|
|
MOVEM 1,%ACS1A# ;SAVE UUO NUMBER
|
|
MOVE 0,%ERAC0
|
|
MOVE 1,%ERAC1
|
|
SKIPGE @ERRLOP ;ERR LOOP AC > OR = 0 ?
|
|
JRST %ERRS4 ;NO, SEE IF PRINT ALL
|
|
%ERMS1: SETZM MICNT ;CLEAR ERROR COUNT
|
|
SKIPL MONCTL ;DIAG MON OR SYS EXER ?
|
|
JRST .+4 ;NO, DON'T NEED TITLE
|
|
SKIPN %ERFST# ;FIRST ERROR ?
|
|
PNTNM ;YES, PRINT PROGRAM TITLE
|
|
SETOM %ERFST
|
|
SKIPN PASCNT ;FIRST PASS ?
|
|
JRST .+4 ;YES
|
|
PMSG <^TEST PASS COUNT = >
|
|
MOVE PASCNT
|
|
PNTDEC
|
|
PMSG <^PC = >
|
|
HRRZ 0,$SVUPC ;GET PC OF UUO
|
|
MOVEM 0,ERRPC ;SAVE FOR COMPARE
|
|
PNT6 ;PRINT UUO ADDRESS
|
|
XLIST
|
|
IFDEF ERDIAG,<LIST
|
|
;DIAGNOSTIC FORMAT ERROR PRINTER
|
|
|
|
;PRINT RESULT
|
|
|
|
%ERMS2: PMSG <^RESULT = >
|
|
MOVE 1,$SVUUO ;GET AC # OF UUO
|
|
LSH 1,-27
|
|
ANDI 1,17
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,1 ;IS AC # = TO SAVE AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
PNTHW ;PRINT C(AC)
|
|
|
|
MOVE CONSW
|
|
TLNE TXTINH ;PRINT FAILURE DES AND FLT NBR ?
|
|
JRST %ERMORE ;NO, RESTORE AC'S ETC.
|
|
|
|
;PRINT FAILURE DESCRIPTOR
|
|
|
|
MOVE 1,%ACS1A ;GET UUO NUMBER
|
|
CAIG 1,1 ;PRINT DESCRIPTOR ?
|
|
JRST %ERMS3 ;NO, JUST PRINT FAULT NUMBER
|
|
PCRL
|
|
MOVE %FLTTB(1)
|
|
PNTAL ;PRINT FAULT DESCRIPTOR
|
|
|
|
;PRINT FAULT NUMBER
|
|
|
|
%ERMS3: PMSG <^FAULT NUMBER = >
|
|
MOVEI TLET
|
|
PNTA ;PRINT TEST LETTER
|
|
|
|
HRRZ $SVUUO
|
|
TRNE 700000
|
|
JRST %ER6X
|
|
TRNE 070000
|
|
JRST %ER5X
|
|
TRNE 007000
|
|
JRST %ER4X
|
|
PNT3 ;PRINT FAULT NUMBER
|
|
%ER7X: PCRL
|
|
JRST %ERMORE
|
|
|
|
%ER4X: PNT4
|
|
JRST %ER7X
|
|
%ER5X: PNT5
|
|
JRST %ER7X
|
|
%ER6X: PNT6
|
|
JRST %ER7X
|
|
|
|
;FAILURE DESCRIPTORS
|
|
|
|
TLET: 0 ;TEST LETTER
|
|
%FLTTB: 0 ;DESCRIPTOR TABLE
|
|
%NODES: [0] ;NO DESCRIPTOR
|
|
SPDES: [0] ;SPECIAL USER FAILURE DESCRIPTOR
|
|
$ACF: [ASCIZ/C(AC) FAILED/]
|
|
%AC1F: [ASCIZ/C(AC+1) FAILED/]
|
|
%EF: [ASCIZ/C(E) FAILED/]
|
|
%E1F: [ASCIZ/C(E+1) FAILED/]
|
|
%ARF: [ASCIZ/C(C(ACR)) FAILED/]
|
|
%AR1F: [ASCIZ/C(C(ACR+1)) FAILED/]
|
|
%ALF: [ASCIZ/C(C(ACL)) FAILED/]
|
|
%EEF: [ASCIZ/C(C(E)) FAILED/]
|
|
%FF: [ASCIZ/FLAG FAILED/]
|
|
>
|
|
XLIST
|
|
IFDEF ERRELB,<
|
|
LIST
|
|
;RELIABILITY FORMAT ERROR PRINTER
|
|
|
|
%ERMS2: SETZM %RAND# ;CLEAR PNT C(RAN) FLAG
|
|
MOVE 1,%ACS1A
|
|
CAIL 1,11 ;UUO # 11-13
|
|
SETOM %RAND ;YES, SET PNT C(RAN) FLAG
|
|
TRZ 1,10 ;MAKE UUO # 1-7
|
|
MOVEM 1,%ACS1A
|
|
MOVE 2,ERRPC ;GET UUO ADDRESS
|
|
MOVE 2,-1(2) ;GET INST IN UUO-1
|
|
CAIL 1,4 ;UUO # < THAN 4 ?
|
|
MOVE 2,$SVUUO ;YES, GET UUO
|
|
MOVEM 2,%CNTE# ;SAVE E ADDRESS
|
|
MOVE 2,%ERAC2
|
|
MOVE 1,%ERAC1
|
|
MOVE 0,%ERAC0
|
|
MOVEI 1,@%CNTE ;GET ADRS FIELD OF UUO OR UUO-1
|
|
MOVEM 1,%EE1#
|
|
MOVE 1,%ERAC1
|
|
MOVE 1,@%EE1 ;GET C(E)
|
|
MOVEM 1,%EE1A#
|
|
MOVE 1,%ERAC1
|
|
MOVEI 1,@$SVUUO ;GET ADDRESS FIELD OF UUO
|
|
MOVEM 1,%EE2#
|
|
MOVE 1,%ACS1A
|
|
CAIN 1,3 ;UUO # 3 ?
|
|
JRST .+4 ;YES
|
|
MOVE 1,%ERAC1
|
|
MOVE 1,@%EE2 ;GET C(E) OF UUO
|
|
MOVEM 1,%EE2A#
|
|
MOVE 2,%ACS1A ;GET UUO #
|
|
MOVE 1,%CNTE
|
|
LSH 1,-27 ;GET AC NUMBER
|
|
ANDI 1,17
|
|
CAIG 2,5 ;UUO # 6,7 OR 2
|
|
CAIN 2,2
|
|
JRST %ERR2 ;YES, GO PNT E AND C(E)
|
|
;PRINT ERROR AC
|
|
|
|
PMSG <^AC = >
|
|
MOVE 0,1
|
|
PNT2 ;PRINT AC NUMBER
|
|
PMSG <^C(AC)= >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
%ERRB: PNTHW ;PRINT C(AC) OR UUO2 (E)
|
|
|
|
;PRINT ERROR INFO
|
|
|
|
CAIN 2,5 ;UUO # 5
|
|
JRST %ERR4 ;YES, GO PNT 'TST','SKP', OR ETC.
|
|
|
|
PMSG <^COR = >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
CAIE 2,2
|
|
MOVE 0,%EE1A ;UUO # 2, GET C(E)
|
|
PNTHW ;PRINT C(E) OR UUO2 C(AC)
|
|
CAIL 2,4 ;UUO # >3 ?
|
|
JRST %ERRC ;YES, RESTORE AC'S AND RETURN
|
|
|
|
PMSG <^ ORIGINAL>
|
|
%ERRB1: MOVE 1,$SVUUO
|
|
LSH 1,-27 ;GET AC # OF UUO
|
|
ANDI 1,17
|
|
PMSG <^C(AC)= >
|
|
MOVE 0,(1) ;GET C(AC)
|
|
CAIG 1,2 ;IS AC # = SAVED AC ?
|
|
MOVE 0,%ERAC0(1) ;YES, GET SAVED AC
|
|
SKIPE %RAND ;PRINT C(RAN) FLAG SET ?
|
|
MOVE 0,RAN# ;YES
|
|
PNTHW ;PRINT C(AC) OR C(RAN)
|
|
CAIN 2,3 ;UUO # 3 ?
|
|
JRST %ERR2 ;YES, PRINT E, RESTORE AC'S AND RETURN
|
|
CAIN 2,7 ;UUO # 7 ?
|
|
JRST %ERRC ;YES, BYPASS PRINTING C(E)
|
|
PMSG <^C(E) = >
|
|
MOVE 0,%EE2A
|
|
PNTHW ;PRINT C(E)
|
|
JRST %ERRC
|
|
|
|
%ERR2: PMSG <^E = >
|
|
MOVE 0,%EE2
|
|
CAIN 2,2 ;UUO # 2 ?
|
|
MOVE 0,%EE1
|
|
PNT6 ;PRINT E OF UUO OR UUO-1
|
|
CAIL 2,6 ;UUO 6 OR 7 ?
|
|
JRST %ERRB1 ;YES, GO PNT C(AC), C(E) AND RETURN
|
|
CAIN 2,3 ;UUO # 3 ?
|
|
JRST %ERRC ;YES, RESTORE AC'S AND RETURN
|
|
|
|
PMSG <^C(E) = >
|
|
MOVE 0,%EE1A ;GET C(E)
|
|
JRST %ERRB
|
|
;PRINT ASCII COMMENT
|
|
|
|
%ERR4: HRRZI 0,@$SVUUO
|
|
PNTA ;PRINT 'TST','SKP', OR ETC.
|
|
JRST %ERRC
|
|
|
|
;COMPLETE PRINTOUT
|
|
|
|
%ERRC: PCRL
|
|
|
|
XLIST
|
|
IFDEF UUOTXT,<
|
|
LIST
|
|
MOVE 0,CONSW
|
|
TLNN TXTINH ;PRINT DIAGNOSTIC COMMENT ?
|
|
CAIE 2,7 ;UUO # 7 ?
|
|
JRST %ERMORE ;NO, RESTORE AC'S AND RETURN
|
|
MOVE 0,%EE2 ;YES
|
|
PNTAL ;PRINT DIAGNOSTIC COMMENT
|
|
PCRL
|
|
>
|
|
LIST
|
|
JRST %ERMORE
|
|
|
|
>
|
|
LIST
|
|
;RESTORE AC'S AND RETURN OR HALT
|
|
|
|
%ERMORE:XCT ERMORE
|
|
PNTMGN ;PRINT MARGINS
|
|
SWITCH
|
|
|
|
%ERRS1: TTALTM ;ALTMODE CHECK
|
|
JRST .+4 ;NONE
|
|
MOVEI .+3 ;SAVE CONT ADDRESS
|
|
MOVEM JOBOPC
|
|
JRST @ALTMGO ;PERFORM TRANSFER
|
|
MOVE CONSW
|
|
TLNE 0,ERSTOP ;HALT ON ERROR SWITCH SET ?
|
|
ERRHLT ;YES
|
|
TLNN 0,LOOPER ;LOOP ON ERROR SWITCH SET ?
|
|
SETOM PROCED ;NO, SET THE PROCEED FLAG
|
|
TLNE 0,DING ;RING BELL SWITCH SET ?
|
|
PBELL ;YES, GO RING BELL
|
|
|
|
%ERRS2: MOVE 2,%ERAC2 ;RESTORE AC'S
|
|
MOVE 1,%ERAC1
|
|
SETOM @ERRLOP ;SET C(ERR LOOP AC) TO -1
|
|
SKIPN PROCED ;LOOP ON ERROR ?
|
|
JRST %ERRS5 ;YES
|
|
AOS @ERRLOP ;NO, INC C(ERR LOOP AC)
|
|
AOS @ERRLOP ;SO IT ='S 1
|
|
SKIPL MONCTL ;UNDER DIAGNOSTIC MONITOR ?
|
|
JRST %ERRS5 ;NO, CONTINUE PROGRAM
|
|
MOVE 0,ERRTLS ;YES
|
|
CAIL 0,5 ;PRINTED ALLOWED ERRORS ?
|
|
JRST $BEND2
|
|
|
|
%ERRS5: MOVE 0,%ERAC0 ;NO, CONTINUE PROGRAM
|
|
IFDEF EXCASB,<IFDEF KI10,<
|
|
SKIPN KAIFLG
|
|
JRST .+5
|
|
SKIPE USER
|
|
JRST .+3
|
|
SKIPE MARGIN
|
|
DATAO APR,MARGIN ;RESET MARGIN SYSTEM >>
|
|
JRST UUOEXT
|
|
|
|
%ERRS4: MOVE 0,CONSW
|
|
TLNN PALERS ;PRINT ALL ERRORS ?
|
|
JRST %ERRS1 ;NO
|
|
JRST %ERMS1 ;YES
|
|
|