From d8ccaeef14333c7793ea1518ab33224f4c29a43f Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Mon, 19 Feb 2018 11:40:49 +0100 Subject: [PATCH] Build DEVICE; JOBDEV CHA from source code. --- Makefile | 3 +- bin/device/jobdev.cha | Bin 4839 -> 0 bytes bin/device/jobdev.chaos | 1 - build/build.tcl | 7 + src/dcp/chadev.1 | 418 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 426 insertions(+), 3 deletions(-) delete mode 100644 bin/device/jobdev.cha delete mode 120000 bin/device/jobdev.chaos create mode 100644 src/dcp/chadev.1 diff --git a/Makefile b/Makefile index 9d4c2661..f8ddc5e2 100644 --- a/Makefile +++ b/Makefile @@ -9,8 +9,7 @@ SRC = system syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \ inquir acount gz sys decsys ecc alan sail kcc kcc_sy c games archy dcp \ spcwar DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc chprog -BIN = sys2 device emacs _teco_ lisp liblsp alan inquir sail comlap c decsys \ - moon +BIN = sys2 emacs _teco_ lisp liblsp alan inquir sail comlap c decsys moon # These directories are put on the minsys tape. MINSYS = _ sys diff --git a/bin/device/jobdev.cha b/bin/device/jobdev.cha deleted file mode 100644 index f5e3feb7f0d923092373f5337749384a76776d06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4839 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 Uuyzfuk!9=Njo+WXAg}v>08wF2f&c&j diff --git a/bin/device/jobdev.chaos b/bin/device/jobdev.chaos deleted file mode 120000 index 35c72001..00000000 --- a/bin/device/jobdev.chaos +++ /dev/null @@ -1 +0,0 @@ -device/jobdev.cha \ No newline at end of file diff --git a/build/build.tcl b/build/build.tcl index cf0bb92e..8fca6db5 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -238,6 +238,8 @@ respond "*" ":print cstacy;..new. (udir)\r" type ":vk\r" respond "*" ":print teach;..new. (udir)\r" type ":vk\r" +respond "*" ":print device;..new. (udir)\r" +type ":vk\r" respond "*" ":midas sysbin;_.teco.;teco\r" expect ":KILL" @@ -556,6 +558,11 @@ respond "*" ":midas sysbin;_syseng;@chaos\r" expect ":KILL" respond "*" ":link sys;atsign chaos,sysbin;@chaos bin\r" +# CHA: and CHAOS: device +respond "*" ":midas device;jobdev cha_dcp;chadev\r" +expect ":KILL" +respond "*" ":link device;jobdev chaos,device;jobdev cha\r" + respond "*" ":link syseng;netwrk 999999,sysnet;netwrk >\r" respond "*" ":midas .;ts redrct_sysnet;redrct\r" diff --git a/src/dcp/chadev.1 b/src/dcp/chadev.1 new file mode 100644 index 00000000..7ba9092c --- /dev/null +++ b/src/dcp/chadev.1 @@ -0,0 +1,418 @@ + +title CHA device -- cha:.file. (dir) lists connections + +idebug==0 ;0<-->not debugging + +irps ac,,nil a b c d e f g t tt w x y z zz p +ac=.irpcnt +termin + +bojo==1 + +lpdl==30 + +call=pushj p, +return=popj p, + +define syscal name,args + .call [setz ? sixbit/name/ ? args ((setz))] +termin + +tsint: loc 42 + -ltsint,,tsint + loc tsint + + p + 0? 1_bojo ? -1 ? -1 ? bojint +ltsint==.-tsint + +.vector pdl(lpdl) +.vector buffer(80.*64.) ;80 chars accross by 60 lines +.vector data(12.) +.scalar done + +go: move p,[-lpdl,,pdl-1] + .suset [.roption,,t] + tlo t,optint ;new style interrupts + .suset [.soption,,t] + .suset [.smsk2,,[1_bojo]] ;interrupts on the job device + setzm done ;not done yet + syscal open,[[.uao,,bojo] ? ['boj,,]] + call die + syscal jobcal,[movei bojo ? movem a ? [-12,,data]] + call die + move x,data+1 + came x,[sixbit/.file./] + call illfnm + move x,data+2 + came x,[sixbit/(dir)/] + call illfnm + syscal jobret,[movei bojo ? movei 1] ;winning open + call die + call evsyms + call filbuf ;go fill the buffer with CHAOS listing + call shove + syscal jobret,[movei bojo ? movei 1] ;tell IOTs that + ;they've won + jfcl + jfcl + .hang ;wait until we get a close or + ;something + +illfnm: syscal jobret,[movei bojo ? [%ebdfn,,]] ;illegal file name + jfcl + call die ;and die + +;;; ;;; CLOSE commit suicide +;;; ;;; IOT if still generating, ignore +;;; ;;; if finished, send OK completion and let him worry about it +;;; ;;; 'else send OK return and hope + +bojint: push p,a + push p,b +bojin1: syscal jobcal,[movei bojo ? movem a ? [-1,,b]] +bojin2: jrst [ pop p,b + pop p,a + jrst dismis] + tlne a,60000 ;bit 4.5 or 4.6 means close + call die + hrrz a,a + camn b,['fillen] + jrst [ syscal jobret,[movei bojo ? [%ebddv,,]] + jrst lose + jrst bojin1] + cain a,1 ;iot? + skipe done ;finished my IOTing + skipa + jrst bojin2 ;dismis ioting + syscal jobret,[ movei bojo ? movei 1] ;else win (sigh) + jrst bojin2 + jrst bojin1 + +dismis: syscal dismis,[p] +lose: syscal jobret,[movei bojo ? [%ensmd,,]] ;mode not available + call die + jrst dismis + +die: skipe debug + .value + .logout 1, + .break 16,160000 + .value + + +define symtab syms +irp sym,,[syms] + sym',,[squoze 0,/sym/] +termin + 0 +termin + +symtbl: symtab [nindx,chsusr,uname,jname,chssta,chsibp,chsobp,chsnbf,chsnos,chspkn,chsack,chswin,chsfrn,%cfoff,%cfsts,%cfcls,%cfsty,chttbf,chfrbf,chqrfc,chqlsn] + +define eval val,tab,idx + move val,tab + addi val,idx + move val,400000(val) +termin + +evsyms: movei a,symtbl +evslp: hrrz b,(a) + skipn b + jrst evsy02 + move b,(b) + .eval b, + .lose 1000 + hlrz c,(a) + movem b,(c) + aoja a,evslp + +evsy02: move t,[-200,,200] + setzi tt, + syscal corblk,[movei %cbred+%cbndr + movei %jself ? t + movei %jsabs ? tt] + .lose 1000 + return + + +.scalar count + +define princ &str&, + movei .length str + addm count + move t,[440700,,[asciz str]] + skipa + idpb tt,a + ildb tt,t + jumpn tt,.-2 +termin + +define ctype item + movei item + idpb a + aos count +termin + +define terpri + movei ^M + idpb a + movei ^J + idpb a + movei 2 + addm count +termin + +define space n,\m +m==n+ifb n,1 + movei 40 + repeat m, idpb a + movei m + addm count +termin + +define octprn n,arg + movsi -n + move t,arg + call $octprn +termin + +define decprn n,arg +ifnb n, movsi -n +ifb n, movsi 400000 + move t,arg + call $decprn +termin + +define sixprn arg + move t,[440600,,arg] + movei 6 + addm count + ildb tt,t + addi tt,40 + idpb tt,a + sojg ,.-3 +termin + + +filbuf: setzm count + move a,[440700,,buffer] + + princ / +Idx Usr Uname Jname State Ibf Pbf Nos Ack R Win T Foreign Addr Flag +/ + setzi b, +filb02: caml b,nindx + jrst filb20 + eval t,chsusr,(b) + skipl t + call prtidx + aoja b,filb02 + +filb20: eval c,chttbf + decprn ,c + princ / buffers, / + eval c,chfrbf + decprn ,c + princ / of which are free./ + terpri + + eval c,chqrfc + skipn c + jrst filb30 + princ /Pending RFCs:/ + terpri + hlrz c,c + call prtpkt + jumpn c,.-1 + +filb30: eval c,chqlsn + skipn c + jrst filb40 + princ /Pending LSNs:/ + terpri + hlrz c,c + call prtpkt + jumpn c,.-1 + +filb40: + princ / / + return + +prtidx: octprn 3,b + space + eval c,chsusr,(b) + ldb d,[111100,,c] + octprn 3,d + space + eval d,uname,(c) + sixprn d + space + eval d,jname,(c) + sixprn d + space + eval c,chssta,(b) + move d,(c)[sixbit /closedlistenrfcrcvrfcsntopen losingincxmtlowlvl/] + sixprn d + space + eval c,chsnbf,(b) + hlrz d,c + decprn 3,d + space + hrrz c,c + decprn 3,c + space + eval c,chsnos,(b) + decprn 3,c + space + eval c,chspkn,(b) + eval d,chsack,(b) + hlrz c,c + hlrz d,d + sub c,d + skipge c + addi c,200000 + decprn 3,c + space + eval c,chswin,(b) + hlrz d,c + caige d,10. + call [ decprn 1,d + space 3 + return] + caige d,100. + caige d,10. + skipa + call [ decprn 2,d + space 2 + return] + cail d,100. + call [ decprn 3,d + space 1 + return] + hrrz d,c + decprn 3,d + space + eval c,chsfrn,(b) + ldb d,[242000,,c] + octprn 6,d + space + ldb d,[042000,,c] + octprn 6,d + space + + eval c,chssta,(b) + TSNE c,%CFOFF + call [ ctype "F ;F - OFF AT PI LEVEL + return] + TSNE c,%CFSTS + call [ ctype "S ;S - SEND STS + return] + TSNE c,%CFCLS + call [ ctype "C ;C - HALF-CLOSED + return] + TSNE c,%CFSTY + call [ ctype "T ;T - CONNECTED TO STY + return] + eval c,chsibp,(b) + skipe c + call [ ctype "I ;I - HAS INPUT BUFFER + return] + eval c,chsobp,(b) + skipe c + call [ ctype "O ;O - HAS OUTPUT BUFFER + return] + + terpri + return + +prtpkt: octprn 6,c + princ /: / + hrlzi d,2(c) + hrri d,d + .getloc d, + ldb d,[041200,,d] + octprn 3,d + space + hrlzi d,(c) + hrri d,d + .getloc d, + ldb b,[041400,,d] + hrlzi e,4(c) + hrri e,d +prtpk2: .getloc e, + move f,[441000,,d] +repeat 4,[ + ildb g,f + ctype (g) + sojle b,prtpk4 +] + add e,[1,,] + jrst prtpk2 +prtpk4: terpri + hrlzi d,-2(c) + hrri d,d + .getloc d, + hrrz c,d + return + + +$octprn: + idivi t,8 + addi tt,"0 + push p,tt + aobjp $octp3 + jumpn t,$octprn + movei tt,<" > + push p,tt + aobjn .-1 +$octp3: addm count + pop p,tt + idpb tt,a + sojg .-2 + return + +$decprn: + idivi t,10. + addi tt,"0 + push p,tt + aobjp $decp3 + jumpn t,$decprn + tlnn 200000 + jrst [ hrrz ? jrst $decp3] + movei tt,<" > + push p,tt + aobjn .-1 +$decp3: addm count + pop p,tt + idpb tt,a + sojg .-2 + return + + +shove: move tt,[440700,,buffer] + move t,count + syscal siot,[movei bojo ? tt ? t] + jfcl + move t,count + idivi t,5 + subi tt,5 ;neg number needed to send + .iot bojo,[-1,,^C] + aojl tt,.-1 + setom done ;declare done + return + +...lit: constants +debug: idebug +...var::variables + 0 ;make sure page exists + +end go + + +;;; local modes: +;;; mode:midas +;;; auto fill mode: +;;; fill column:70 +;;; compile command: :midas device;jobdev cha_1 î +;;; end: