1! & ! ***************************************** & ! * * & ! * Brian D. Lockrey * & ! * ITT North Technology Center * & ! * P. O. Box 20345 * & ! * Columbus, Ohio 43220 * & ! * 614-436-4109 Ext. 319 * & ! * * & ! ***************************************** & ! & ! RELEASE 2.01 & ! & ! H I S T O G & ! & ! DESCRIPTION: & ! & ! Display's a histrogram of the RSTS/E V7.1 & ! Monitor Statistics on the VT125 terminal. & ! & ! ENTRY POINTS: & ! & ! 100 - The only entry point & ! & ! EXTERNAL ROUTINES: & ! & ! None & ! & ! CHANGE ACTIVITIES: & ! & ! DATE PGM-# DESCRIPTION & ! ---- ----- ----------- & ! 28-Apr-82 2.01 Original Release & ! 100 EXTEND & \ DIM EXEC(70%), H0%(30%), H1%(30%) & \ PROGRAM$ = "HISTOG" \ VERSION$ = "Version 2.01" \ SITE$ = RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(0%)),3%) \ SITE$ = CVT$$(SITE$,128%) \ PRINT PROGRAM$; " "; VERSION$; " "; SITE$ \ DO% = -1% & \ LOW.A% = 97% & \ LOW.B% = 98% & \ CPU% = PEEK(PEEK(156%)+2%) & \ E$ = CHR$(155%) & \ CLEAR$ = E$+"<"+E$+"[2J"+E$+"Pp s(e)"+E$+"\" & \ REGIS$ = E$ + "Pp" & \ NORMAL$ = E$ + "\" & \ PRINT CLEAR$ & \ JUNK$ = SYS(CHR$(6%)+CHR$(-7%)) ! ^C Trap & \ ON ERROR GOTO 19000 & \ GOSUB 1000 & ! 200 WHILE DO% & \ T$ = "'" + DATE$(0%) + SPACE$(8%) + TIME$(0%) + "'" & \ PRINT REGIS$;"p[160,100] w(f3) t(s2,a0)"; T$ & \ TICKS = PEEK(CPU%) & \ UPTIME = FNC(2%) & \ UPSECS = UPTIME / TICKS & \ SYSTEM = FNC(8%) & \ LOST = FNC(12%) & \ UNCHARGED = FNC(16%) & \ IDLE = FNC(20%) & \ USER = UPTIME - SYSTEM - LOST - UNCHARGED - IDLE & \ PRINT REGIS$; "w(f2)" & \ X = FNPERCENT(SYSTEM,UPTIME) & \ PRINT FNBAR$("p[205,210]",X) & \ X = FNPERCENT(LOST,UPTIME) & \ PRINT FNBAR$("p[205,260]",X) & \ X = FNPERCENT(UNCHARGED,UPTIME) & \ PRINT FNBAR$("p[205,310]",X) & \ X = FNPERCENT(IDLE,UPTIME) & \ PRINT FNBAR$("p[205,360]",X) & \ X = FNPERCENT(USER,UPTIME) & \ PRINT FNBAR$("p[205,410]",X) & \ PRINT NORMAL$ & \ SLEEP 5% & \ NEXT & \ STOP & ! 1000 ! & ! Initalize some REGIS stuff on the VT125 & ! & PRINT REGIS$ & \ PRINT "cw(v,i(w),f3,m1,n0,p1,p(m2),s2) p[] s(e) t(a0)" & \ PRINT "p[150,0] t(s4)'RSTS/E Status'" & \ PRINT "p[0,200] t(s2)'System'" & \ PRINT "p[0,250] t(s2)'Lost'" & \ PRINT "p[0,300] t(s2)'Uncharged'" & \ PRINT "p[0,350] t(s2)'Idle'" & \ PRINT "p[0,400] t(s2)'User'" & \ PRINT "p[200,455] t(s1)'0 10 20 30 40 50 60 70 80 90 100'" & \ PRINT "w(f1)" & \ PRINT "p[205,450] v[205,200]" & \ PRINT "p[250,450] v[250,200]" & \ PRINT "p[295,450] v[295,200]" & \ PRINT "p[340,450] v[340,200]" & \ PRINT "p[385,450] v[385,200]" & \ PRINT "p[430,450] v[430,200]" & \ PRINT "p[475,450] v[475,200]" & \ PRINT "p[520,450] v[520,200]" & \ PRINT "p[565,450] v[565,200]" & \ PRINT "p[610,450] v[610,200]" & \ PRINT "p[655,450] v[655,200]" & \ PRINT "p[205,200] v[655,200]" & \ PRINT "p[205,450] v[655,450]" & \ PRINT "w(f3)" & \ PRINT "l(a1)" & \ PRINT 'l"a",FF,FF,FF,FF,FF,FF,FF,FF,FF,FF;' & \ PRINT 'l"b",00,00,00,00,00,00,00,00,00,00;' & \ PRINT "t(a1)" & \ PRINT "w(f2)" & \ RETURN & ! 2000 DEF FNC(Q%) & \ Q = FNV(CPU% + Q%) & \ FNC = Q - EXEC(Q%/2%) & \ EXEC(Q%/2%) = Q & \ FNEND & ! & ! RETURN CPU DATUM & ! 2100 DEF FNV(Q%) & \ Q = PEEK(Q%) & \ Q = Q + 65536.0 IF Q < 0.0 & \ FNV = PEEK(Q%+2%) * 65536.0 + Q & \ FNEND & ! & ! RETURN A PEEKED VALUE & ! 2200 DEF FNPERCENT(Q1,Q2) & \ FNPERCENT = Q1 / Q2 * 100.0 & \ FNEND & ! & ! CALCULATE PERCENTAGES & ! 2300 DEF FNBAR$(T$,X) & \ X1 = X / 2 & \ PRINT T$; & \ PRINT "w(r)" & \ T$ = "'" + STRING$(X1,LOW.A%) + STRING$(50-X1,LOW.B%) + "'" & \ PRINT " t(s1,a1)"; T$ & \ FNEND & ! & ! PRINT THE BAR & ! 19000 RESUME 32767 IF ERR = 28% & \ ON ERROR GOTO 0 & \ STOP & ! 32767 PRINT CLEAR$ & \ PRINT FOR I% = 1% TO 10% & \ PRINT "The terminal is all your now!" & \ END & ! & ! THATS ALL... & !