From 7caf0cd96282b3ffe2fcfb0a8335d28340e06612 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Mon, 1 Oct 2018 08:16:23 +0200 Subject: [PATCH] Created source for JEDGAR. From disassembly of MOON; TS JEDGAR, dated 1976-10-17. TS JEDGAR shows signs of multiple layers of binary patching. No attempts were made to recreate this process in the build script. --- Makefile | 5 +- bin/moon/ts.jedgar | Bin 1800 -> 0 bytes build/misc.tcl | 2 + src/moon/jedgar.1 | 237 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 242 insertions(+), 2 deletions(-) delete mode 100644 bin/moon/ts.jedgar create mode 100644 src/moon/jedgar.1 diff --git a/Makefile b/Makefile index 0551611c..f9766080 100644 --- a/Makefile +++ b/Makefile @@ -25,14 +25,15 @@ SRC = syseng sysen1 sysen2 sysen3 sysnet kshack dragon channa \ tensor transl wgd zz graphs lmlib pratt quux scheme gsb ejs mudsys \ draw wl taa tj6 budd sharem ucode rvb kldcp math as imsrc gls demo \ macsym lmcons dmcg hack hibou agb gt40 rug maeda ms kle aap common \ - fonts zork 11logo kmp info aplogo bkph bbn pdp11 chsncp sca music1 + fonts zork 11logo kmp info aplogo bkph bbn pdp11 chsncp sca music1 \ + moon DOC = info _info_ sysdoc sysnet syshst kshack _teco_ emacs emacs1 c kcc \ chprog sail draw wl pc tj6 share _glpr_ _xgpr_ inquir mudman system \ xfont maxout ucode moon acount alan channa fonts games graphs humor \ kldcp libdoc lisp _mail_ midas quux scheme manual wp chess ms macdoc \ aplogo _klfe_ pdp11 chsncp cbf rug bawden BIN = sys2 emacs _teco_ lisp liblsp alan inquir sail comlap c decsys \ - moon graphs draw datdrw fonts fonts1 fonts2 games macsym maint imlac \ + graphs draw datdrw fonts fonts1 fonts2 games macsym maint imlac \ _www_ hqm MINSRC = midas system $(DDT) $(SALV) $(KSFEDR) $(DUMP) diff --git a/bin/moon/ts.jedgar b/bin/moon/ts.jedgar deleted file mode 100644 index d8f11b72f5c71b2170a23b9629ea15a36547c82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1800 zcmY+F-%pcQ7{{N}-(aQq(zi8C@Bj{r6hsuA!raSRQ);P{UqKj3OL>I~w5}}-1W7aF z*qzIEy|^2b?GG^7%@P(bmY5|oF=SU>EM9F(q;1*?I(_#%r$_=gMS;^W`8r8wzmYv9kft798s8pU~cX2Wz|vhlR@9 zn)c6726|i3#>4jmxVhB@kgEacZY9T8HFjXdi45F1b{%6|dVon5%mVxvfH_x}VedOT zfz=dr8F-d60~m8ooG4U&u44^u(82CA)GYk~2SmK$ql}J4E&_vM7~pQs2JEPaCwzCS z0me&G23AX*85rNo;!wmx6J}QwJiXGo0=?vWpH@(xLt{M+@0A`aFh={BD(q8WV9>3L zgi6B-ToBqTWefZThUIX1%{yzw3caS0$M9Q^(RQo=JHzQ==m2P-N5pFa5GK1Vz%-W^ zK)>tC=rx}X?MfY6Fi5k>;;#yLh(cMY?{1kt_k5fWn(F(<_;_N8N0KT}@MG<{u- zrg`ETkHmRwVL_dZEbz}_Ni`k0!KYU%qlx%(ESgql_*f*ZCTH=%QA^#3B_ruXk~cPV z22LH<-b})_ru_&HD@QQuVk{L+s*!k_&qY#vT2V|KEY zV^qq~Cd$g2OJ8o;Qi`7)>4t(tXkpcFy1u17E4Sj8xoH=vm3|+tsUO-&S z(|7lg)^g92j4i5sCZVQyJdx%%BCC~}mc_dZTM#ULpJ7e^U*5rY6R+?UW07erIwh+s zxbVes$8oh;um#U%*#}@Oe1XT81%2@BxzNyn=YqEq_V9gpqB{g|Jqy+FvqqoGc*=}U z@790Bp5q9hpxXi;?YmAKgLqIfPYylIw1F4GE(^N;zw2s){-Xz^OO5<|zulCiZFqbx zT%-j(n&0}etLwb>%;p?xR>;@yJaRBiqspy;jzA^5p5VW|ZSs!a~&BZ%&srvz(qU+ZpWsm9kbL^&RIzG)sM5RU(H? z9>4O55V?c;BjxS2Q-37#W@SLnffD9P{#g9Fd$QZBpP&3 zean^p-GaUt>)7a%YM?c-4!V(yJw%WcXpx#A=GqY#rN$~j>93+rldes)hVKIe&`qIBHxEd#@~pZ z;H=zCw2hiBfB^GI@=4O3=6&~Px=2e%^%qx#-80GSk7BdM_9G2Umj4%0(!kYAB*Aii z?DyJl$oEBl<1e^FwC6Zsa3~0HOSW2@52D6ce&f&AKM>jSU;T86R>f-UAK#2p4(7~1 zFn&FZ4$LZ#>~m7%XV2x4{q13ztwU0ph?-=!60#7Tly8k4ro(03uEz7HC&VTD7d@E1 A!2kdN diff --git a/build/misc.tcl b/build/misc.tcl index 5bd6688a..67f924e4 100644 --- a/build/misc.tcl +++ b/build/misc.tcl @@ -272,6 +272,8 @@ expect ":KILL" # jedgar respond "*" ":midas sys2; ts jedgar_sysen3; jedgar\r" expect ":KILL" +respond "*" ":midas moon; ts jedgar_moon; jedgar\r" +expect ":KILL" # ports respond "*" ":midas sys2;ts ports_sysen2;ports\r" diff --git a/src/moon/jedgar.1 b/src/moon/jedgar.1 new file mode 100644 index 00000000..60f84a92 --- /dev/null +++ b/src/moon/jedgar.1 @@ -0,0 +1,237 @@ +TITLE JEDGAR + +;This is not the original source code. It's created from disassembly +;of the file MOON; TS JEDGAR, dated 1976-10-17. The assembled binary +;is identical. + +;The original binary shows signs of binary patching. This source file +;recreates the patched binary without any intermediary steps. + +A=1 +B=2 +C=3 +D=4 +T=5 +TT=6 +P=7 +U=10 +N=11 + +CH=16 +CH2=17 + +SYMS: SQUOZE 0,USRHI +USRHI: 0 + SQUOZE 0,LUBLK +LUBLK: 0 + SQUOZE 0,FLSINS +FLSINS: (U) + SQUOZE 0,UNAME +UNAME: (U) + SQUOZE 0,EPDL +EPDL: (U) + SQUOZE 0,SUPPRO +SUPPRO: (U) + SQUOZE 0,TTYTBL +TTYTBL: (U) + SQUOZE 0,UHANG +UHANG: 0 + SQUOZE 0,TOOP +TOOP: (N) + SQUOZE 0,UMAPS +UMAPS: (U) + SQUOZE 0,UPGMP +UPGMP: (U) + SQUOZE 0,USTP +USTP: (U) +SYMP: SYMS-.,,SYMS + +BADGE: 0 + +PDL: -40,,. + BLOCK 40 + +JEDGAR: MOVE P,PDL + MOVEI T,-1 + TDNE T,USRHI + JRST RESTRT + MOVE T,SYMP +EVAL: MOVE TT,(T) + .EVAL TT, + JFCL + HRRM TT,1(T) + AOBJN T,.+1 + AOBJN T,EVAL + +RESTRT: .OPEN CH,['#TTY] + .VALUE + MOVEI T,CH + .SUSET [.RIOC+CH,,T] + LDB N,[220600,,T] + MOVE T,ASKPTR + .IOT CH,T + .CLOSE CH, + + MOVEI T,401001 +ABSCOR: MOVSI TT,1000 + IOR TT,T + .CBLK TT, + JFCL + ADDI T,1001 + TRNN T,400 + JRST ABSCOR + + .OPEN CH,['TTY] + .VALUE + .IOT CH,T + SETZM BADGE + CAIE T,"y + CAIN T,BADGE + SETOM BADGE + .CLOSE CH, + + .VALUE [ASCIZ /:PROCED +/] + +LOOP: SETZM U +NXTUSR: CAMG U,@USRHI + JRST LOOKU + MOVEI T,60. + .SLEEP T, + JRST LOOP + +LOOKU: SKIPE @USTP + JRST NXUSR + MOVEI TT,@UHANG + HRLI TT,(PUSHJ 15,) + CAME TT,@FLSINS + JRST NXUSR + HRRZ A,@EPDL + MOVE B,A + LSH B,-10. + ROT B,-1 + SKIPE @UMAPS + JRST NXUSR + MOVEI TT,@UPGMP + ADD TT,B + SKIPGE B + SKIPA B,(TT) + MOVS B,(TT) + TRNN B,600000 + JRST NXUSR + ANDI B,777 + LSH B,6 + ANDI A,1777 + IOR A,B + CAIN A,@TOOP + JRST CAUGHT +NXUSR: ADDI U,@LUBLK + JRST NXTUSR + +CLIOPN: SIXBIT / 'CLI/ + SIXBIT /UNAME / + SIXBIT /HACTRN/ + +CLIMES: ASCII / You are the subject of an illegal wiretap by +convicted Watergate conspirator "/ +CLINAM: BLOCK 2 +CLIPTR: CLIMES-.,,CLIMES +CLIMS2: ASCII / +The miscreant has been executed. / +CLIPT2: CLIMS2-.,,CLIMS2 +ASKMES: ASCII /Am I licensed to kill? / +ASKPTR: ASKMES-.,,ASKMES + +CAUGHT: MOVE TT,@UNAME + MOVE B,[440700,,CLINAM] +CT1: SETZM T + LSHC T,6 + ADDI T,40 + IDPB T,B + JUMPN TT,CT1 + MOVEI T,"" +CT2: IDPB T,B + MOVEI T," + CAME B,[010700,,CLINAM+1] + JRST CT2 + .SUSET [.RUNAME,,CLIOPN+1] + .OPEN CH,CLIOPN + .VALUE + MOVE T,CLIPTR + .IOT CH,T + SKIPE BADGE + JRST JUSTIC +DEPUTY: .CLOSE CH, + .BREAK 16,60000 + +JUSTIC: PUSHJ P,SPCTTY +WHO1: MOVE B,@SUPPRO + CAME B,[-1] + JRST [HRR U,B ? JRST WHO1] + HRRZ D,U + IDIVI D,@LUBLK + JRST PATCH + JFCL +PRETT: MOVEI T,90. + .SLEEP T, + MOVEI C,'T00 + JUMPL A,JUST00 + LSHC A,-3 + LSH A,3 + LSHC A,3 + IOR C,A + HRLI C,3 + .OPEN CH2,C + JRST JUST00 + MOVE T,MRLPTR + .IOT CH2,T + .CLOSE CH2, +JUST00: MOVE T,CLIPT2 + .IOT CH,T + .CLOSE CH, + JRST LOOP + +MRLMES: ASCII /Crime does not pay +/ +MRLPTR: MRLMES-.,,MRLMES + +SPCTTY: MOVE A,@TTYTBL + JUMPGE A,SPCGOT +SPCUP: MOVE B,@SUPPRO + CAME B,[-1] + JRST [HRR U,B ? JRST SPCUP] +SPCDWN: MOVE A,@TTYTBL + JUMPGE A,SPCGOT + HRR U,A + TLNN A,200000 + JRST SPCDWN + MOVSI A,-1 +SPCGOT: POPJ P, + +CONSTANTS + + 0 +PATCH: MOVE T,@UNAME + .WSNAME T, + JFCL + JFCL + JRST 503 + .CLOSE + JRST DEPUTY + 0 + +UDIRF: SIXBIT / DSK/ + SIXBIT /.FILE./ + SIXBIT /(DIR) / + +.=503 + IORI D,400000 + .CALL 514 + JFCL + JRST PRETT +.=514 + SETZ + SIXBIT /DETACH/ + SETZ D + +END JEDGAR