%CONTROL K'100001' %BEGIN ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! *** OWN ROUTINES FOR DRIVING INTECOLOUR DISPLAY ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! %OWNINTEGER CBACK %OWNINTEGER CFORE ! ! %ROUTINE SET CURSOR(%INTEGER X,Y) PRINTSYMBOL(3) PRINTSYMBOL(X); PRINTSYMBOL(Y) PRINTSYMBOL(K'100000') %END ! !FILE 'FEP_MONALLS' ! FILE 'FEP_MONALLS' !********************** !* MONS/MONY * !* DATE: 25.SEP.79 * !********************* %CONSTSTRING (7) VSN = "VSN001B" !! STACK = 300, STREAMS = 1 ! BRIAN BIT $$$$$$$$ %SYSTEMROUTINESPEC ALARM(%INTEGER TICKS) %%RECORDFORMAT ITPF(%BYTEINTEGER CNSL,HB1,HB2,LEN, %C %BYTEINTEGERARRAY DATA(0:127)) %RECORDFORMAT NSI1F(%BYTEINTEGER FN,SUFL,ST,SS,FLAG,UFLAG, %C %RECORD(ITPF) ITP) %RECORDFORMAT NSI2F(%BYTEINTEGER FN,SUFL,ST,SS,%C SN, DN, DT, DS, FLAG, UFL, %C %BYTEINTEGERARRAY A(0:3), %INTEGER USERS,STA,CPU,PKTS,SBR,BYT, %C RJEO, RJEI) %RECORDFORMAT MEF(%RECORD(MEF)%NAME LINK,%BYTEINTEGER LEN,TYPE, %C %RECORD(NSI1F) NSL) %RECORDFORMAT ME2F(%RECORD(ME2F)%NAME LINK,%BYTEINTEGER LEN,TYPE, %C %RECORD(NSI2F) NSL) %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,FN,PORT, %C %RECORD(MEF)%NAME MES,%BYTEINTEGER LEN,S1) %RECORD (PF) P %CONSTBYTEINTEGERNAME ID = K'160030' %CONSTBYTEINTEGERNAME INT = K'160060' %RECORDFORMAT LNEF(%INTEGER CPU, PKTS, SBR, RJEO, BYT, RJEI) %OWNRECORD (LNEF) %ARRAY LNEA(0:5) %OWNRECORD (LNEF) %NAME LNE %OWNINTEGERARRAY NODE(0:5) = 9, 1, 5, 9, 9, 9 %OWNINTEGERARRAY TERM(0:5) = 180, 181, 182, 73, 74, 75 %CONSTINTEGERARRAY CPU IDLE(0:5) = 118, 118, 118, 150, 100, 1 %CONSTSTRING (41) %ARRAY TEXT(0:9) = "0 5 10 15 20 25 30 35 USE", "RS 45 50 55 60 65 70", "0 10 20 30 40 50 60 70 CP", "U 90 100", "0 100 200 300 400 500 600 700 PACK", "ETS 1000 1200", "0 100 200 300 400 RJE-OUT 700 ", "0 100 200 300 RJE-IN 600", "0 50 100 150 200 250 300 350 ITP", "-OUT 500 550 600 650 700" %CONSTSTRING (5) %ARRAY NAME(0:5) = "80(0)", "80(1)", "80(2)", "72(0)", "72(1)", "72(2)" %CONSTINTEGER GATE SER=16, BUFFER MANAGER=17 %CONSTINTEGER REQUEST BUFFER=0, RELEASE BUFFER=1 %CONSTINTEGER OPEN MESSAGE=9 %INTEGER I, STRM, J, X, Y, Z %OWNINTEGER POLL = -1 %OWNINTEGER STA, BYT, TIM %OWNINTEGER FLAG %ROUTINE GET BUFFER(%INTEGER REASON) P_SERVICE=BUFFER MANAGER; P_REPLY=ID P_FN=REQUEST BUFFER; P_LEN=64; P_S1=REASON PON(P) %END %ROUTINE FREE BUFFER(%RECORD(MEF)%NAME MES) P_SERVICE=BUFFER MANAGER; P_REPLY=ID P_FN=RELEASE BUFFER; P_MES==MES PON(P) %END %ROUTINE TO GATE(%INTEGER FN,%RECORD(MEF)%NAME MES,%INTEGER FLAG) P_SERVICE=GATE SER; P_REPLY=ID P_FN=FN; P_MES==MES; P_S1=FLAG PON(P) %END %ROUTINE SCALE(%INTEGER LINE) %INTEGER I, J SET CURSOR(0, LINE) SPACES(8) %CYCLE I = 0, 1, 13 PRINTSYMBOL('!') PRINTSYMBOL('.') %FOR J = 1, 1, 4 %REPEAT %END %ROUTINE MESSAGE(%RECORD (MEF) %NAME MES, %INTEGER WHO) %RECORD (NSI2F) %NAME NSI NSI == MES_NSL NSI_DS = STRM NSI_UFL = 5; NSI_A(0) = 1; NSI_A(1) = NL MES_LEN = 10+2+20 P_LEN = NODE(WHO) TO GATE(OPEN MESSAGE, MES, TERM(WHO)) %END %ROUTINE OUT(%INTEGER N, Y) %OWNINTEGERARRAY SCALE1(0:5) = 1, 1, 1, 1, 1, 1 %OWNINTEGERARRAY SCALE2(0:5) = 1, 2, 20, 20, 20, 10 %INTEGER I, Q, W, X %RETURN %IF Y = -255 X = 0 %IF Y > 128 %START Y = Y-128; X=40 %FINISH N = (N*SCALE1(Y)) Q = SCALE2(Y) N = N//Q LAB: W = 0 %IF Y < 0 %START Y = (-Y)-10; W = 1 %FINISH SET CURSOR(X, (Y*7)+3+POLL) %IF X = 0 %START PRINTSTRING(NAME(POLL)); PRINTSTRING(" - ") %IF N < 0 %AND Y = 0 %START PRINTSTRING("Mainframe Down") %RETURN %FINISH %FINISH %IF W = 1 %START PRINTSTRING("Fep Down!") %RETURN %FINISH %IF N > 70 %THEN N = 70 %IF N< 0 %THEN N = 0 %IF N > 0 %START %CYCLE I = 1, 1, N PRINTSYMBOL('*') %REPEAT %IF N < 70 %START SPACE %FOR I = N, 1, 70 %FINISH %FINISH %END %ROUTINE DO REPLY(%RECORD (MEF) %NAME MES) %INTEGER N, WHO, Z, I %RECORD (NSI2F) %NAME NSI %INTEGERFN CALC(%INTEGER NEW, %INTEGERNAME OLD, %INTEGER X,Y) %INTEGER N, Z N = NEW-OLD %IF N < 0 %THEN N = -N %IF X < 0 %START Z = CPU IDLE(WHO) Z = (N*100)//Z LAB2: OUT(100-Z, Y) %ELSE %IF X = 4 %START; ! BYTES OUT((N*8)//(128*60), Y) %ELSE OUT(N*2*X, Y) %FINISH %FINISH OLD = NEW %RESULT = N*2*X %END NSI == MES_NSL N = NSI_DT %IF N>=180 %THEN WHO = N-180 %ELSE WHO = N-73+3 LNE == LNEA(WHO) %IF NSI_SUFL#0 %START %IF FLAG = 0 %START FLAG = 1 %FINISH OUT(0, I) %FOR I = -10, -1, -14 TIM = TIM+1 %RETURN %FINISH TIM = TIM+1 STA = NSI_STA OUT(NSI_USERS, 0) X = CALC(NSI_CPU, LNE_CPU, -1, 1) X = CALC(NSI_PKTS, LNE_PKTS, 1, 2) Y = CALC(NSI_SBR, LNE_SBR, 1, -255) Z = CALC(NSI_RJEO, LNE_RJEO, 1, 3) ! CALC(NSI_BYT, LNE_BYT, 4, -1) ! I = CALC(NSI_RJEI, LNE_RJEI, 1, 128+3) OUT(X-Y-Z, 4) NEWLINE %END MAP VIRT(BUFFER MANAGER, 4, 3) MAP VIRT(BUFFER MANAGER, 5, 4) MAP VIRT(BUFFER MANAGER, 6, 5) STRM = 21 STA = 1 ALARM(5*50); ! 5 SECS PRINTSYMBOL(12) PRINTSTRING(" FRONT END STATISTICS ") SCALE(1) SET CURSOR(0, 2) %CYCLE J = 0, 2, 8 SPACES(8) PRINTSTRING(TEXT(J)) PRINTSTRING(TEXT(J+1)) NEWLINES(7) %REPEAT SCALE(29) %CYCLE P_SERVICE = 0; POFF(P) %IF P_REPLY = 0 %START; ! CLOCK %EXIT %IF INT='A' ALARM(5*50); ! 5 SECS POLL = POLL+1 %IF POLL = 6 %THEN POLL = 0 GET BUFFER(POLL) %IF '0' <= INT <= '5' %START I = INT-'0' PROMPT("Change Address of "); PROMPT(NAME(I)) PROMPT(", NODE & TERM?") READ(NODE(I)); READ(TERM(I)) INT = 0 FLAG = 0 %FINISH %CONTINUE %FINISH %IF P_REPLY = BUFFER MANAGER %START MESSAGE(P_MES,POLL) %CONTINUE %FINISH %IF P_REPLY = GATE SER %START DO REPLY(P_MES) FREE BUFFER(P_MES); ! REPLY %CONTINUE %FINISH %REPEAT %ENDOFPROGRAM ") I = INT-'0'