!************ !* 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