' sysinfo for Telehack (Cult Edition)
' by pbernicc & underwood
' essential variables
e$ = chr$(27)
file$ = argv$(0)
ver$ = "6.6.6"
curhost$ = th_re$( th_hostname$, "[^\s]+")
' ANSI colours
reset$ = e$ + "[m"
bold$ = e$ + "[1m"
red$ = e$ + "[91m"
green$ = e$ + "[92m"
yellow$ = e$ + "[93m"
blue$ = e$ + "[94m"
magenta$ = e$ + "[95m"
cyan$ = e$ + "[96m"
' colour choices (make this an option?)
primary$ = cyan$
secondary$ = green$
' underline and at-symbol styles
ul$ = secondary$ + string$(len(user$ + "@" + curhost$),"-") + reset$
at$ = primary$ + "@"
' string manipulation functions
def fnchomp$(s$) = th_sed$(s$, "(^\s+)|(\s+$)", "", "g")
def fncols$(a$,b$) = th_sprintf$(primary$ + bold$ + "%S " + reset$ + secondary$ + "%S" + reset$, a$, b$)
' colour chart 1
for i = 1 to 8 : c1$ = c1$ + e$ + "[" + str$(39+i) + "m " : next
c1$ = c1$ + reset$
' colour chart 2
for i = 1 to 8 : c2$ = c2$ + e$ + "[" + str$(99+i) + "m " : next
c2$ = c2$ + reset$
' help
if arg$ = "?" then ? file$ " v" ver$ : ? "usage: " : ? file$ " [1|2|3|4|5|6|7|8]" : end
' initial checks
if val( arg$ ) > 8 then ? "%invalid option" : end
if user$ = "guest" then ? "%login please" : end
if curhost$ <> "telehack" then ? "%unsupported os" : end
' gather data
th_exec "\show vmsize" ; vmsize$ : vmsize$ = fnchomp$(vmsize$)
th_exec "\w /tver|cut -f 1,8|grep \*" ; tver$ : tver$ = th_sed$(tver$,"(^\*\s)|(\s+$)","","g")
th_exec "\show uptime|head -n1" ; up$ : up$ = fnchomp$(up$)
th_exec "\stty|grep term" ; term$ : term$ = fnchomp$(term$)
th_exec "\ll *exe|cut -f3|grep " + user$ + "|wc -l" ; pack$ : pack$ = th_re$(pack$,"[^\s]+")
th_exec "\ps|grep memory used" ; memr$ : mem$ = th_re$(memr$,"background processes,\s(.*)","\1")
th_exec "\w /protocol /sock|grep \*|cut -f 1,8,9" ; socks$ : socks$ = fnchomp$(socks$)
th_exec "\df|cut -f1,2,5|grep -i user" ; diskl$
' adjust / format data
up$ = th_sed$(up$, "\s+[^\s]+$")
mem$ = th_sed$(mem$,"memory\s","","g")
pack$ = pack$ + " EXEs, " + th_re$(memr$,"([^\s]+)\sback","\1") + " TSRs running"
disk$ = th_re$(diskl$,"User\s+([^\s]+)","\1") + " (" + th_re$(diskl$,"User\s+([^\s]+)\s+([^\s]+)","\2") + " used)"
tver$ = th_sprintf$("0x%H",tver$) + " (" + tver$ + ")"
term$ = th_sed$(term$, "^term:\s")
prot$ = th_re$(socks$,"\*\s+([^\s]+)\s+","\1")
sock$ = th_re$(socks$,"\*\s+([^\s]+)\s+(.*)","\2")
f$(1) = secondary$ + user$ + at$ + secondary$ + curhost$ + reset$
f$(2) = ul$
f$(3) = fncols$("cpu" , "ColossusFrame Mark VII")
f$(4) = fncols$("dimensions" , str$(height) + "x" + str$(width))
f$(5) = fncols$("disk" , disk$)
f$(6) = fncols$("host" , th_hostname$)
f$(7) = fncols$("memory" , mem$)
f$(8) = fncols$("packages" , pack$)
f$(9) = fncols$("port" , str$(port%) + " via " + ups$(sock$) + ":" + prot$)
f$(10) = fncols$("syslevel" , str$(th_syslevel) + " (" + th_syslevel$ +")")
f$(11) = fncols$("term" , term$)
f$(12) = fncols$("tver" , tver$)
f$(13) = fncols$("uptime" , up$)
f$(14) = fncols$("vmsize" , vmsize$)
f$(15) = ""
f$(16) = c1$
f$(17) = c2$
' theme selection
if arg$ = "" then gosub 10
on val(arg$) gosub 10,20,30,40,50,60,70,80
' print it all
? bold$ file$ " v " ver$ reset$ : ?
for i = 1 to h : ? primary$ i$(i) f$(i) : next : ?
end
10 ' PBERNICC'S WONKY TRIANGLE
h = 17
i$( peek(-1) ) = " .@. "
i$( peek(-1) ) = " . @@@@@ . "
i$( peek(-1) ) = " . @, #@. "
i$( peek(-1) ) = " # @@@&@@@ ## "
i$( peek(-1) ) = " .@ @@/. @@@&&&@. "
i$( peek(-1) ) = " . @@@ @@ .@@@ @@@. "
i$( peek(-1) ) = " .@@@@@* @@@@@@ *@@@@, "
i$( peek(-1) ) = " .@@@@@@@@@ @@@@@@@@@. "
i$( peek(-1) ) = " ##%@,@@%@@@&((@@@@@@/%,@%#. "
i$( peek(-1) ) = " C O L O S S U S "
i$( peek(-1) ) = " COMPUTER "
i$( peek(-1) ) = " SYSTEMS "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
return
20 ' INVERTED WONK
h = 17
i$( peek(-1) ) = "@@@@@@@@@@@@@@@&@@@@@@@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@@@@@@@@ &@@@@@@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@@@@@@& @&@@@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@@@&@ %@@@@@% @&@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@@@*@@ . @@*@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@& @# #*((# @&@@@@@ "
i$( peek(-1) ) = "@@@@&@ @@ /( . @@ @@@@@ "
i$( peek(-1) ) = "@@@@. @@@ @@# %@@@ "
i$( peek(-1) ) = "@&& @@@@@ @@ "
i$( peek(-1) ) = "@@*@@%@@@@&&&@@@@&&&@@@@%@@*@@ "
i$( peek(-1) ) = "@@&&* C O L O S S U S &&&@@ "
i$( peek(-1) ) = "@@@@@@&@ COMPUTER @&@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@@ SYSTEMS @@@@@@@@@ "
i$( peek(-1) ) = "@@@@@@@&&&&&&&&&&&&&&&&@@@@@@@ "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
return
30 ' BIG TRIANGLE
h = 19
i$( peek(-1) ) = " . "
i$( peek(-1) ) = " . &@ "
i$( peek(-1) ) = " ,@@@@@ . "
i$( peek(-1) ) = " . @@@@@@@@/ "
i$( peek(-1) ) = " . #@@@@@@@@@@@ "
i$( peek(-1) ) = " .@&, .#@& . "
i$( peek(-1) ) = " . & *@@@@% ,/ "
i$( peek(-1) ) = " # .@@@@@#*@@@@@/ ( . "
i$( peek(-1) ) = " .@ %@@@@@(/%#@@(@@@ #& . "
i$( peek(-1) ) = " . @@( @@#&@(,/(((#@(@@@@@@@@, "
i$( peek(-1) ) = " (@@@@ @@@@/&,,,*(@&@@@(**/@@@@ . "
i$( peek(-1) ) = " @@@@@@. @@@#%@@@/&(@@@* @@@@@@% . "
i$( peek(-1) ) = " . &@@@@@@@@% #@@@@@@@@&. *@@@@@@@@@, "
i$( peek(-1) ) = " /@@@@@@@@@@@@@, &@@@@@@@@@@@@@ . "
i$( peek(-1) ) = " . #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&# . "
i$( peek(-1) ) = " ,@@@@ @@@@@ .@ #@@# @@//@ @@//@ @ @ @@//@ "
i$( peek(-1) ) = " ,# @ # .@ // \\ \\ \\ .@ @ \\ "
i$( peek(-1) ) = " ,# @ # @ || || \\ \\ .@ @ \\ "
i$( peek(-1) ) = " ,@@@@ @@@@# %%% #@@# @//@@ @//@@ .@&@%@ @//@@ "
return
40 ' ILLUMINATOOD
h = 17
i$( peek(-1) ) = " . "
i$( peek(-1) ) = " @@ "
i$( peek(-1) ) = " *@*#@ "
i$( peek(-1) ) = " +@@%%@@ "
i$( peek(-1) ) = " @@: @@. "
i$( peek(-1) ) = " @ @=@ *= "
i$( peek(-1) ) = " @ -@@+#=%@* : "
i$( peek(-1) ) = " @ @+: -:.-%@@@: "
i$( peek(-1) ) = " @@ @.+-:.+.+%=#@* "
i$( peek(-1) ) = " @##+ @@#@%%@= #+@* "
i$( peek(-1) ) = " .@%*#@@ *@%*#@@ "
i$( peek(-1) ) = " *@@%##%@@@@%=+@@@@%###%@@ "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " ILLUMINATUS WATCHES YOU "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
i$( peek(-1) ) = " "
return
50 ' ALL HAIL THE SHEEP
h = 17
i$( peek(-1) ) = " ......',;cclo;....;olcc;,'...... "
i$( peek(-1) ) = " . ,d0XKkooxKK0d, . "
i$( peek(-1) ) = " . .:OXXX0ddOXXXO;. . "
i$( peek(-1) ) = " .. .'xKXXX0xdOXXXKd'. .. "
i$( peek(-1) ) = " .,:lk00XXOdxOXX00kl:,. "
i$( peek(-1) ) = " ..;dkk0XX0xxOXX0kko;.. "
i$( peek(-1) ) = " . .'..cldOK0kk0KOdl:..'. ' "
i$( peek(-1) ) = " o;. '..:;,:oddddo:,;:..' .;o "
i$( peek(-1) ) = " xo:. ..;;;;;doot;;;;;.. .:ox "
i$( peek(-1) ) = " clc' ;olcokkkkoclo, 'llc "
i$( peek(-1) ) = " ;oc. :xdoxOkkOxodx: .co; "
i$( peek(-1) ) = " .'. ';;;lkkkkl;;;' .'. "
i$( peek(-1) ) = " ' ';,,tood,,;' ' "
i$( peek(-1) ) = " .:;....;:. "
i$( peek(-1) ) = " ;c'..'c; "
i$( peek(-1) ) = " ';....;' "
i$( peek(-1) ) = " "
return
60 ' BIG CLYDE
h = 19
i$( peek(-1) ) = " ,ccllllollccddlc,. .,clddccllollllcc, "
i$( peek(-1) ) = " .:ol:,''''',;lddxdl:'. .':ldxddc;,''''',:lo;. "
i$( peek(-1) ) = " .;l:,..........,cllllc;. .;cllllc,..........,:l;. "
i$( peek(-1) ) = " .,c:.. .......',;cclo;....;olcc;,'....... ..:c,. "
i$( peek(-1) ) = " .;l,. .... ,d0XKkooxKK0d, .'.. .;l;. "
i$( peek(-1) ) = " ..;c' .. . .:OXXX0ddOXXXO;. . .' 'c;.. "
i$( peek(-1) ) = " ooooc,. .. .. .'xKXXX0xdOXXXKd'. .. .. .;coooo "
i$( peek(-1) ) = " cccoodoc;'... .,:lk00XXOdxOXX00kl:,. ...';codoolcc "
i$( peek(-1) ) = " .....;:ldol;. ..;dkk0XX0xxOXX0kko;.. .;lodl:;..... "
i$( peek(-1) ) = " ....;cooc. .'..cldOK0kk0KOdl:..'. 'colc;.... "
i$( peek(-1) ) = " . ...,oxo;. '..:;,:oddddo:,;:..' .;oxo,... .. "
i$( peek(-1) ) = " .....,oxo:. ..;;;;;doot;;;;;.. .:oxo'..... "
i$( peek(-1) ) = " .....'clc' ;olcokkkkoclo, 'llc'..... "
i$( peek(-1) ) = " ....;oc. :xdoxOkkOxodx: .co;.... "
i$( peek(-1) ) = " .'. ';;;lkkkkl;;;' .'. "
i$( peek(-1) ) = " ' ';,,tood,,;' ' "
i$( peek(-1) ) = " .:;....;:. "
i$( peek(-1) ) = " ;c'..'c; "
i$( peek(-1) ) = " ';....;' "
return
70 ' COLOSSUS MARTINI JUDGEMENT
h = 28
i$( peek(-1) ) = " @@ "
i$( peek(-1) ) = " @@@@ "
i$( peek(-1) ) = " @@**@@ "
i$( peek(-1) ) = " @@*++*@@ "
i$( peek(-1) ) = " @@*++++*@@ "
i$( peek(-1) ) = " @@*++++++*@@ "
i$( peek(-1) ) = " @@*++++++++*@@ "
i$( peek(-1) ) = " ,----------, @@*++++++++++*@@ ,----------, "
i$( peek(-1) ) = " | COLOSSUS | @@*++++++++++++*@@ | THAT IS | "
i$( peek(-1) ) = " | COMPUTER | @@@**#@@@@@@@@@#**@@ | TOO MUCH | "
i$( peek(-1) ) = " | SYSTEMS | @@@@@@@@* *@@@@@@- | VERMOUTH | "
i$( peek(-1) ) = " '----------' @@@@@ .@@@= '----------' "
i$( peek(-1) ) = " @@@ .:. @@# "
i$( peek(-1) ) = " @@# #@@@@+@@@@@@@ @% "
i$( peek(-1) ) = " @@ %@*==@ @#%.#*-=@@ @@ "
i$( peek(-1) ) = " @@ :@+@%%+..%%%-.-#%@+@@ @@ "
i$( peek(-1) ) = " @@: @@==@%@-@@.-@:@@@#-%@@ @% "
i$( peek(-1) ) = " @@@ @@#:. .--:-::::= #%@@@@@@@# "
i$( peek(-1) ) = " @@@% @:#%@@:*-+*+**-:@=@%#* +@@@##@@ "
i$( peek(-1) ) = " @@+@% @=*%@@--.+*+*#-.=+@%#+:+@@@@#+@@ "
i$( peek(-1) ) = " @@++@@ @@=. -+:....:.*=...:%@@####+++@@ "
i$( peek(-1) ) = " @@+++@@ @@=-@%@-@%:-@:@#@*-@@@ @++++@@ "
i$( peek(-1) ) = " @@+++++@@ -@+@@%# :#%%= +%@@+@@ @@+++++@@ "
i$( peek(-1) ) = " @@+++++++@@ %#..+@ @#%.*#-.=@ @@+++++++@@ "
i$( peek(-1) ) = " @@+++++++++@@ @@@@@-@%%@@@@. @@+++++++++@@ "
i$( peek(-1) ) = " @@+++++++++++@@@ -%-+= @@@+++++++++++@@ "
i$( peek(-1) ) = " @@#+++++++++++++@@@- @@@++++++++++++++@@ "
i$( peek(-1) ) = " @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "
return
80 ' ELLO, GUVNA
h = 32
i$( peek(-1) ) = " ///(#/((((#((##%%%&&&&&&&&&&&&@@@@@@@&&&&&@&&&&&&&&&%//#(##@(#///////(((( "
i$( peek(-1) ) = " *//////(/((##%%%%&&&&&&&&&%&&&&&&&&&@@&%&@@@@@&@@@@&@&%(/(((%&#////////// "
i$( peek(-1) ) = " ,,****/(######%%%%%&&%%&&&&&@@&&&@&&&&@@@@@@@@@@&&&(,,. .,.. .. ,(.//**** "
i$( peek(-1) ) = " *,,**/(((########%%%&&&&&@@@@&@&&&@@&@@@&%&#. .,/#%&&###*. (#%#### "
i$( peek(-1) ) = " ,*/(((((##((###%%%%&&@@@@@@@@@@@@@@@@@(.,.. (###%&&%%&&&&&&&&%&/ @.(((## "
i$( peek(-1) ) = " *////(((#######%&@@&@@&&&&&&@%/ (% @ *(/(%@(###(#(((#&#####%%.@ (///// "
i$( peek(-1) ) = " /////(####(#((/(,. ....... (/(####%%(##((((#(/(/(((#/ ,(((### "
i$( peek(-1) ) = " ///////*/*,,., *(((*/(@@..,.. .#(/(((((/&&#////*/(((****/..((/### "
i$( peek(-1) ) = " //*/* .*#((((((((((((#/,, . ..,.. #(##((%@@(/,,**((((##(((* %/#//## "
i$( peek(-1) ) = " . *((/*/******,*,,*/*,...,. &&&&@@ &&&&&%%%&%%%%(###%%&&, @&//*//# "
i$( peek(-1) ) = " ,/**,,,,,,,(##,,,(,#*,*//,. ,(#%&&@@( @&&@@@@@@@&%%%%&# %@&#(,,/( "
i$( peek(-1) ) = " .*,,,,,,,,/(((*,#%%####%##( *(%%&&@@@@/ .#/&&%#/,. .#@@&%%%@@&*.,* "
i$( peek(-1) ) = " /* **/*,**/(#(###%%&&&%##%##. **(#%&@@@@@@&%*,,,*/(%##//(#&%%%%#&@@%/,, "
i$( peek(-1) ) = " #//** /***(#%%%%%%%&&####&%/ //**((#%&&&&%%%&&#/(#&&@@&&&&&%%###%&@#,,, "
i$( peek(-1) ) = " #/****/ #(//(((((###@&#%. .,//(#/****((((#,.*(##/*/#%&@@&@@&&%%##@@&/ , "
i$( peek(-1) ) = " #/**,,*(#, ,%&&%%(. ../#(//*///*. ..,**,,.,*%&@&(/(#&&&&&&&%%%#&&&@.( "
i$( peek(-1) ) = " #(*,....,(#%((((*,.,*(#%##(/((.... .,(#%%&&@@&@@@@@((%&%%&%%&&@&%%&@(# "
i$( peek(-1) ) = " //*,... .....,*(######(/(##(***(###%%%#%&&@@@@@@@&@@&%&&&&&&&&&&##&@(( "
i$( peek(-1) ) = " **,... ..,**/(((######(##((###%%%%&@@&%%&%%%&&&&&&&@@&&%&%&&&@%(&&@(( "
i$( peek(-1) ) = " *,,.. ...,*,**/*//(((#####((######%#(//**//**,,,,/#&&@@&@&@&&&&%%##%#(# "
i$( peek(-1) ) = " ****,.....,*////***/(((######((((#(*,..,,#%@&@%(&%..,*#%&@@@@@&&&&&%##((# "
i$( peek(-1) ) = " ,*,,,...,*/(((((/*/((((######(/*, **//#&#&(&%&##%, ./#%&@@@@&&&%%#//(# "
i$( peek(-1) ) = " ....,,**/(((((//((#######((*. */(((##%%%%%%%%%%%%%%&&&&%&@@&&%%##*/## "
i$( peek(-1) ) = " ..,***,*/(/(/((((#%%%%%##(((((#((#%%&%%%%&%%%&&&&&&&&&&@&&&%%#((((( "
i$( peek(-1) ) = " ,*/, .,,*/,*/////(((#%%&%%#(((((((((###%%%&&&@&&&&&&&&&@@@@&&%###/(### "
i$( peek(-1) ) = " *(((/,. ..,**,*////(((###%&&#((#(/((###%%%&&@&&&&&&&&@&&&@@@&&%%##,*/*(/ "
i$( peek(-1) ) = " ***((**, +---------------------------------------------------+ (*,,.*** "
i$( peek(-1) ) = " ... /| You need at least sixteen pigs to finish the job | .**/,,,/ "
i$( peek(-1) ) = " /| in one sitting, so be wary of any man who keeps | ,**.,, "
i$( peek(-1) ) = " /| a pig farm. -- BT | .. ,% "
i$( peek(-1) ) = " ,,. /+---------------------------------------------------+ (. "
i$( peek(-1) ) = " . ///////////////////////////////////////////////////// ##( *# "
return