!************ !* MOTH6S * !* 27.NOV.79* !************ CONTROL K'101011' PERMINTEGERFNSPEC SVC(INTEGER EP, R0, R1) BEGIN SYSTEMROUTINESPEC LINKIN(INTEGER SER) SYSTEMROUTINESPEC MAP HWR(INTEGER TOSEG) RECORDFORMAT PF(BYTEINTEGER SERVICE, REPLY, INTEGER A1, A2, A3) RECORD (PF)P CONSTINTEGER MAP PSECT = 16; ! SUPERVISOR CALL CONSTINTEGERNAME SR0 = K'117572' ! INDEXED INTO SEG 4 CONSTINTEGERNAME SR2 = K'117576' ROUTINESPEC OCTAL(INTEGER N) RECORDFORMAT PSECTF(INTEGER Q, C BYTEINTEGER STATE, ID, BYTEINTEGERARRAY C NAME(0:4)) CONSTINTEGER MESS LIM = 7 CONSTSTRING (13) ARRAY FLTS(0:MESS LIM) = 'NOT READY!', 'BAD SEGMENT', 'ADDRESS ERROR', 'ILLEGAL INSTR', 'BPT TRAP', 'ILLEGAL SVC', 'BAD SER', 'TIME FAULT' SWITCH SW(0:MESS LIM) RECORDFORMAT D1F(INTEGER X) RECORDFORMAT D2F(RECORD (PSECTF) NAME X) RECORD (D1F)D1 RECORD (D2F) NAME D2 RECORD (PSECTF) NAME PST INTEGER I, J, K, FAULT, ID D2 == D1 LINKIN(-4); ! ADDRESS ERROR MAP HWR(4); ! TO SEGMENT 4 CYCLE P_SERVICE = 0 POFF(P) IF P_SERVICE = 7 START ID = P_REPLY; FAULT = 0 ELSE IF P_SERVICE # (-4)&X'FF' START PRINTSTRING('?? ') CONTINUE FINISH ID = P_A2; FAULT = P_A3 FINISH D1_X = SVC(MAP PSECT, ID, 3) PST == D2_X PRINTSTRING("***") PRINTSYMBOL(PST_NAME(I)) FOR I = 0, 1, 3; PRINTSYMBOL(':') PRINTSTRING(FLTS(FAULT)) -> SW(FAULT) SW(2):SW(3):SW(4):SW(5):SW(7): NEWLINE CONTINUE SW(0): ! NOT READY SW(6): ! BAD SER SPACE OCTAL(P_A1); NEWLINE CONTINUE SW(1): ! SEGMENTATION TRAP SPACE OCTAL(SR0); OCTAL(SR2); SR0 = 1; NEWLINE; CONTINUE REPEAT ROUTINE OCTAL(INTEGER N) INTEGER I PRINTSYMBOL((N >> I)&7+'0') FOR I = 15, -3, 0 SPACE END ENDOFPROGRAM