diff --git a/README.md b/README.md index b7df62b9..48dcf623 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,7 @@ A list of [known ITS machines](doc/machines.md). - TIMSRV, RFC 868 network time protocol. - TMPKIL, clean out old files in .TEMP.;. - TTLOC, Advertises physical location of logged in users. + - TTY, displays TTYs with UNAME/JNAME/CORE and other info. - TYPE8, type 8-bit file. - UNTALK, split-screen comm-link program. - UPTIME, Chaosnet uptime server. diff --git a/build/build.tcl b/build/build.tcl index f85dcaf4..b0bb3b35 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -983,6 +983,10 @@ respond "*" "debug/0\r" type "\033g" respond "*" ":link sys;ts pb,sys;ts probe\r" +# TTY +respond "*" ":midas sys1;ts tty_sysen1;tty\r" +expect ":KILL" + # RIPDEV respond "*" ":midas device;atsign r.i.p._sysen2;ripdev\r" expect ":KILL" diff --git a/src/sysen1/tty.8 b/src/sysen1/tty.8 new file mode 100755 index 00000000..e17a69ab --- /dev/null +++ b/src/sysen1/tty.8 @@ -0,0 +1,84 @@ + +TITLE TTYDIR + +A=1 +B=2 +C=3 +D=4 +E=5 +F=6 +G=7 + +IN=16 +OUT=17 + +GO: .OPEN IN,[SIXBIT \ TTY.FILE.(DIR)\] + .VALUE + .OPEN OUT,[SIXBIT \ 1TTYTTYDIROUTPUT\] + .VALUE + SETZ B, ;B COUNT TOTAL NUMBER OF CHARS + SETO D, ;D COUNTS LINES OF DATA +FILL0: SETZ E, ;E COUNTS CHARS WITHIN LINE +FILL: .IOT IN,A + CAIN A,^M + JRST FILL + CAIN A,^J + AOJA D,FILL0 + CAIN A,^L + JRST ZAP + MOVEM A,BUF(B) + DPB E,[221100,,BUF(B)] + DPB D,[331100,,BUF(B)] + ADDI E,1 + AOJA B,FILL + +ZAP: .RDTIME A, + .IOT OUT,[^P] + .IOT OUT,["C] + MOVEI C,(B) + SUBI B,1 +FIND: IMULI A,314713 + ADDI A,461752 + MOVE E,A + IDIVI E,(B) + MOVE E,F +FIND1: SKIPL BUF(F) + JRST FOUND + CAIE F,(B) + AOJA F,FIND1 + SETZ F, +FIND2: SKIPL BUF(F) + JRST FOUND + CAIE F,(E) + AOJA F,FIND2 + .VALUE + +FOUND: LDB G,[331100,,BUF(F)] + ADDI G,10 + .IOT OUT,[^P] + .IOT OUT,["V] + .IOT OUT,G + LDB G,[221100,,BUF(F)] + ADDI G,10 + .IOT OUT,[^P] + .IOT OUT,["H] + .IOT OUT,G + HRRZ G,BUF(F) + .IOT OUT,G + SETOM BUF(F) + SOJG C,FIND + .IOT OUT,[^P] + .IOT OUT,["H] + .IOT OUT,[10] + .IOT OUT,[^P] + .IOT OUT,["V] + ADDI D,10 + .IOT OUT,D + .BREAK 16,160000 + + +BUF: BLOCK 35.*64. +EBUF: + +END GO + \ No newline at end of file