From 6b0bad5dc818d849d579848d81857bd20bc7d482 Mon Sep 17 00:00:00 2001 From: Eric Swenson Date: Wed, 7 Dec 2016 22:56:06 -0800 Subject: [PATCH] Added BYE: says goodbye to user with nickname/quips. Used in LOGOUT scripts. --- README.md | 1 + build/build.tcl | 5 + src/sysen1/bye.19 | 269 +++++++++++++++++++++++++++++++++++++++++++ src/syseng/byelib.43 | Bin 0 -> 6883 bytes 4 files changed, 275 insertions(+) create mode 100644 src/sysen1/bye.19 create mode 100644 src/syseng/byelib.43 diff --git a/README.md b/README.md index ccec10a5..2fa4731a 100644 --- a/README.md +++ b/README.md @@ -72,6 +72,7 @@ There's a [DDT cheat sheet](doc/DDT.md) for Unix users. - ATSIGN TARAKA, starts dragons. - ATSIGN TCP, TCP support. - BINPRT, display information about binary executable file. + - BYE, say goodbye to user. Used in LOGOUT scripts. - CHTN, CFTP, Chaosnet TELNET and FTP support. - COMPLR, lisp compiler. - COMSAT, Mail server. diff --git a/build/build.tcl b/build/build.tcl index c8cac065..c077b5f4 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -735,6 +735,11 @@ expect ":KILL" respond "*" ":midas sys3;ts fretty_sysen2;fretty\r" expect ":KILL" +# bye +respond "*" ":midas sys1;ts bye_sysen1;bye\r" +expect ":KILL" +respond "*" ":link device;chaos bye,sys1;ts bye\r" + # ndskdmp tape respond "*" ":link kshack;good ram,.;ram ram\r" respond "*" ":link kshack;ddt bin,.;@ ddt\r" diff --git a/src/sysen1/bye.19 b/src/sysen1/bye.19 new file mode 100644 index 00000000..9a62ab14 --- /dev/null +++ b/src/sysen1/bye.19 @@ -0,0 +1,269 @@ +;-*-MIDAS-*- + + title BYE -- Call luser names and pontificate + +;CODE ADDED 9-3-78 BY ED TO USE INQUIR DATA BASE FOR NICKNAME +;10/3/84 Chaosnet BYE server --Moon +;19/5/85 use BYELIB; essentially re-written -- gumby + +printx / +Be sure to install the binary on all systems + +/ + +a=1 +b=2 +c=3 +d=4 +e=5 +f=6 +cnt=7 +t=15 +tt=16 +p=17 + +;;; IO channels +tyi==1 +tyoch==2 +linch==3 +idxch==4 ; index file input +odxch==5 ; index file output +lsrch==6 + +;;; Random constants +pdlsiz==20 ; pdl +ascbyt==440700 ; ascii byte ptr waiting to be read + +print=1000,, ;glik! + +call= +ret= + +define syscall name,args + .call [setz ? sixbit /name/ ? args((setz))] + termin + +;;; Inquir database hackery +lsrpgs=100 ;number of pages for lsrtab +$$ulnm==0 ;don't assemble useless cruft. +$$ulnp==0 +$$unam==0 +.insrt syseng;lsrtns > + +;;; Network hackery +netwrk"$$serve==1 +netwrk"$$chaos==1 +.insrt syseng;netwrk > + +byelib"$$deth==1 +.insrt syseng;byelib > + + subttl figure out if we're a server; print out messges. + +.scalar uname, server, pdl(pdlsiz) + +begin: move p,[-pdlsiz,,pdl-1] + .suset [.rxuname,,uname] + .suset [.rjname,,a] + came a,[sixbit/chaos/] + call ttyini + call srvini +prlusr: move c,uname ;print special "See you later" msg? + move a,[-hakn,,0] +hkloop: move b,haknms(a) + camn b,c + jrst [print hakmsg + jrst seewho] + aobjn a,hkloop + print [asciz / +See Ya Later /] +seewho: call unmout + print [asciz /... /] +nounam: call byelib"getmsg + syscal siot,[%climm,,tyoch ? %clin,,a ? %clin,,b] + jsr death + syscal finish,[%climm,,tyoch] ;wait for all output to get to tty. + .lose %lssys + Skipe server + jrst srvend +exit: .suset [.roption,,c] + tlnn c,%opbrk ; Don't .BREAK unless a superior handles it. + .logout 1, + .break 16,124000 ;die as quitely as possible + +srvend: movei t,netwrk"%coeof + setzm netwrk"pktbuf + dpb t,[netwrk"$cpkop+netwrk"pktbuf] + syscal pktiot,[%climm,,tyoch ? %climm,,netwrk"pktbuf] + jfcl + syscal finish,[%climm,,tyoch] + jfcl + .sleep c, ;seems to be needed for some reason + .logout 1, ;to delay before closing + +ttyini: .suset [.smask,,[%pityi]] + syscal open,[%clbit,,.uao ? %climm,,tyoch ? [sixbit/tty/]] + .lose %lsfil + syscal open,[%clbit,,.uai ? %climm,,tyi ? [sixbit/tty/]] + .lose %lsfil + aos (p) ;return to .+2 + ret + +srvini: setom server ;we're a chaosnet server, not talking to a tty + .suset [.smask,,[%piioc]] + movei a,tyi + movei c,[asciz/BYE/] + movei d,5 + call netwrk"chasrv + .logout 1, + move a,[440600,,d] + move b,[440800,,netwrk"pktbuf+netwrk"%cpkdt] + ldb c,[netwrk"$cpknb+netwrk"pktbuf] + movei d,0 +unmgt1: ildb e,b ;get user name from contact args + caie e,40 + sojg c,unmgt1 + sojle c,nounam ;just print msg w/o see ya later bullshit +unmgt2: ildb e,b + caige e,140 + subi e,40 + tlne a,770000 + idpb e,a + sojg c,unmgt2 + jumpe d,nounam + movem d,uname + ret + + subttl UNMOUT -- print uname or nickname or whatever + +;;; c has uname in it... +unmout: setz b, ;search our database for nickname +serc: hlr a,unms(b) + camn c,@a ;found it? + jrst [hrr a,unms(b) + print @a ;print it + ret] ;and return + aos b + caig b,lunm-unms + jrst serc + + move a,lsrch ;not in our database, try inquir + move b,[-lsrpgs,,lsrbeg] + call lsrtns"lsrmap + jrst ohwell ;lost, so use xuname + move b,uname + call lsrtns"lsrunm ;find his entry in database + jrst ohwell ;nope, not known to inquir + .close lsrch, ;close lsr file + movei a,lsrtns"i$nick + call lsrtns"lsritm ;find his nickname + jrst ohwell ;nope, hasn't told us his nickname +tyunam: ildb b,a ;found it, type it out. + jumpe b,cpopj + caie b,^C ;^C has an equal right to stop us + cain b,", ;some people have two nicknames, separated by , + ret + aos c + .iot tyoch,b + jrst tyunam + +ohwell: .close lsrch, ;close lsr file + move a,[440600,,uname] ;here if all else fails, use xuname. +repeat 6,[ + ildb b,a + addi b,40 + .iot tyoch,b + ] +cpopj: ret + +haknms: sixbit /jcma/ + sixbit /cstacy/ + sixbit /gavan/ + sixbit /derway/ +hakn==.-haknms +hakmsg: asciz /Seeeee yaauh / + + + +;;; Somehow inquir nicname isn't good enuf for these losers + +unms: [sixbit /devon/],,[asciz /Devon/] + [sixbit /dht/],,[asciz /Dave/] + [sixbit /drb/],,[asciz /Dave, you turkey!/] + [sixbit /ed/],,[asciz /, Alligator, have fun!/] + [sixbit /ffm/],,[asciz /Steve/] + [sixbit /fnt/],,[asciz /Ferd/] + [sixbit /foo/],,[asciz /Loser/] + [sixbit /gjh/],,[asciz /HAVE A NICE DAY GROG!/] + [sixbit /gls1/],,[asciz /QUUX1/] + [sixbit /jlk/],,[asciz /John/] + [sixbit /jmb/],,[asciz /Joel/] + [sixbit /jpg/],,[asciz /--MIGHTY MOUSE--/] + [sixbit /jps/],,[asciz /Mr. Sample/] + [sixbit /ken/],,[asciz /Kenneth, Have Time./] + [sixbit /kgk/],,[asciz /You complete random turkey, you!/] + [sixbit /larswe/],,[asciz /Sicnarf/] + [sixbit /mab/],,[asciz /Meyer/] + [sixbit /md/],,[asciz /Doc/] + [sixbit /mrg/],,[asciz /... Mike, don't be loose./] + [sixbit /murph/],,[asciz /Richard/] + [sixbit /neal/],,[asciz /Chiron/] + [sixbit /rlb/],,[asciz /Rich/] + [sixbit /rms/],,[asciz /Stallman/] + [sixbit /rsl/],,[asciz /Rici/] + [sixbit /stan/],,[asciz /Duckie/] + [sixbit /stever/],,[asciz /Fellow Star Trek watcher/] + [sixbit /srf/],,[asciz /Sheldo/] +lunm: [sixbit /tsamos/],,[asciz /John/] + + + subttl uuo and interrupt handlers + +uuoh: 0 + move a,40 + hrli a,ascbyt +lo: ildb b,a + skipn b + jrst @uuoh + .iot tyoch,b + jrst lo + +tsint: 0 ? 0 + push p,a + move a,tsint + trne a,%piioc + jsr death + movei a,tyi + .ityic a, + jrst intout + caie a,^s + cain a,^g + jrst shutup +intout: pop p,a + .dismiss tsint+1 + +.scalar debug + +death: 0 ;jsr here on error + skipn debug + jrst exit ; oh well, give up... + sos death + sos death + syscal lose,[movei ? death] + +shutup: .reset tyoch, + jrst exit + +;;; dump variables so we can figger out where lsr maps in +consta +variab + +-1 ;So core gets created! + +lsrbeg==<.+1777>/2000 ;beginning of LSR pages. + +loc 41 + jsr uuoh + jsr tsint + +end begin diff --git a/src/syseng/byelib.43 b/src/syseng/byelib.43 new file mode 100644 index 0000000000000000000000000000000000000000..d8d9bd275f72713bfb1ec6b48f1d3a7c70a2c6b0 GIT binary patch literal 6883 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 J!GCnZ{{v_@T$lg= literal 0 HcmV?d00001