diff --git a/.gitignore b/.gitignore index 2a854d2..c0a042b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,5 @@ build/n.out build/alt/a.lst build/alt/a.out build/alt/image.fs +**/.DS_Store +/a.out diff --git a/README.md b/README.md index 2f65fe0..0f43293 100644 --- a/README.md +++ b/README.md @@ -48,12 +48,6 @@ To run pdp-unix from the pdp7-unix source tree, do: Press `ctl-e` to break out the simulator into simh -### Precompiled Binaries - -You can also run pdp7-unix from precompiled binaries in the [/binaries](/binaries) directory. - -`cd binaries/; pdp7 unixv0.simh` - ### Typical Output A typical pdp7-unix session on simh looks like: diff --git a/binaries/boot.rim b/binaries/boot.rim deleted file mode 100644 index d5bf44b..0000000 --- a/binaries/boot.rim +++ /dev/null @@ -1 +0,0 @@ -ธ€‚ธ›‚ธนกฟ€ธน”ฝ€€ธนข‘€ฆถ‡ˆ•€คธน„‘€ขธนคธน‘ฑ€ธนšผ‰€ผ€ ฟฐ€ธน”‘€ฃธนข‘€ฆถ‡ˆ•€ฅธน„‘€ขธนคธน‘ฑ€œธนšผ‰€ผ€ ฐ€€€€ฐ€˜€€˜ˆ€€€ฑ€ภ \ No newline at end of file diff --git a/binaries/image.fs b/binaries/image.fs deleted file mode 100644 index 6093ce7..0000000 Binary files a/binaries/image.fs and /dev/null differ diff --git a/binaries/unixv0.simh b/binaries/unixv0.simh deleted file mode 100644 index 297ef35..0000000 --- a/binaries/unixv0.simh +++ /dev/null @@ -1,31 +0,0 @@ -set cpu 8k -set cpu eae -set cpu history=100 -show cpu - -# set up SIMH devices: - -# UNIX character translations (CR to NL, ESC to ALTMODE): -set tti unix - -# RB09 fixed head disk: -set rb ena -att rb image.fs - -# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!) -# (requires github.com/philbudne/simh) -set g2in ena -att -U g2in 12345 - -# disable hardware UNIX-7 doesn't know about: -set lpt disa -set drm disa -set dt disa - -# show device settings: -show dev - -# load and run the paper tape bootstrap -# (loads system from disk) -load boot.rim 010000 -go diff --git a/build/Makefile b/build/Makefile index 10ceb31..5c73479 100644 --- a/build/Makefile +++ b/build/Makefile @@ -14,6 +14,7 @@ PDP7=pdp7 # source dirs SYSSRC=../src/sys CMDSRC=../src/cmd +GAMESRC=../src/games ALTSRC=../src/alt OTHERSRC=../src/other TESTSRC=../src/tests @@ -57,9 +58,9 @@ a.out: # Alternative kernel: no dd, but . and .. alt/a.out: $(AS) -f ptr -o alt/a.out $(SYSSRC)/sop.s $(SYSSRC)/s1.s \ - $(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s + $(ALTSRC)/s2/s2.s $(SYSSRC)/s[3-8].s $(AS) -n -f list -o alt/a.lst $(SYSSRC)/sop.s $(SYSSRC)/s1.s \ - $(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s + $(ALTSRC)/s2/s2.s $(SYSSRC)/s[3-8].s # Phil's bootstrap code boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s @@ -84,7 +85,7 @@ alt/image.fs: altcmd altothers clean: rm -f boot.rim image.fs a.lst n.out a.out rm -f alt/image.fs alt/a.out alt/a.lst - rm -rf $(BINDIR) $(TESTDIR) + rm -rf $(BINDIR) $(TESTDIR) rm -rf $(BINARIES) dirs: @@ -94,7 +95,9 @@ dirs: cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/chrm $(BINDIR)/cp $(BINDIR)/ds \ $(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \ - $(BINDIR)/db + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ + $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \ + $(BINDIR)/roff $(BINDIR)/p # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -143,6 +146,57 @@ $(BINDIR)/init: $(CMDSRC)/init.s $(BINDIR)/db: $(CMDSRC)/db.s $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s +$(BINDIR)/stat: $(CMDSRC)/stat.s + $(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)//stat.s + +$(BINDIR)/tm: $(CMDSRC)/tm.s + $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s + +$(BINDIR)/cas: $(CMDSRC)/cas.s + $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s + +# -- compile errors +$(BINDIR)/dmabs: $(CMDSRC)/dmabs.s + $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s + +# -- compile errors +$(BINDIR)/bc: $(CMDSRC)/bc.s + $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc.s + +$(BINDIR)/dsw: $(CMDSRC)/dsw.s + $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw.s + +$(BINDIR)/apr: $(CMDSRC)/apr.s + $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s + +# -- compile errors +$(BINDIR)/adm: $(CMDSRC)/adm.s + $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s + +$(BINDIR)/sh: $(CMDSRC)/sh.s + $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh.s + +$(BINDIR)/rn: $(CMDSRC)/rn.s + $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s + +$(BINDIR)/rm: $(CMDSRC)/rm.s + $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s + +$(BINDIR)/pd: $(CMDSRC)/pd.s + $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s + +$(BINDIR)/ls: $(CMDSRC)/ls.s + $(AS) $(ASARGS) -o $(BINDIR)/ls $(CMDSRC)/ls.s + +$(BINDIR)/nm: $(CMDSRC)/nm.s + $(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s + +$(BINDIR)/roff: $(CMDSRC)/roff.s + $(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s + +$(BINDIR)/p: $(CMDSRC)/p0.s $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s + $(AS) $(ASARGS) -o $(BINDIR)/p $(CMDSRC)/p0.s $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s @@ -182,8 +236,8 @@ $(BINDIR)/ls: $(OTHERSRC)/wktls.s $(BINDIR)/lsd: $(OTHERSRC)/pblsd.s $(AS) $(ASARGS) -o $(BINDIR)/lsd $(OTHERSRC)/pblsd.s -$(BINDIR)/altls: $(ALTSRC)/wktls.s - $(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls.s +$(BINDIR)/altls: $(ALTSRC)/wktls/wktls.s + $(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls/wktls.s $(BINDIR)/lsl: $(OTHERSRC)/pblsd.s $(AS) $(ASARGS) -o $(BINDIR)/lsl $(OTHERSRC)/pblsd.s diff --git a/build/proto b/build/proto index 07e60e1..a6063e7 100644 --- a/build/proto +++ b/build/proto @@ -11,7 +11,7 @@ # Contents of each directory ends with a $ on a line by itself # Format was inspired by 6th Edition mkfs # -dd drwr- -1 4 +dd drwr- -1 4 core frwrw -1 /dev/null 1 system drwr- -1 3 ttyin irwr- -1 6 @@ -20,8 +20,10 @@ dd drwr- -1 4 ttyout irwr- -1 11 display irwr- -1 12 pptout irwr- -1 13 + apr frwr- -1 bin/apr as frwr- -1 bin/as bc frwr- -1 bin/bc + cas frwr- -1 bin/cas cat frwr- -1 bin/cat check frwr- -1 bin/check chmod frwr- -1 bin/chmod @@ -33,18 +35,27 @@ dd drwr- -1 4 ds frwr- -1 bin/ds dskres frwr- -1 bin/dskres dsksav frwr- -1 bin/dsksav + dsw frwr- -1 bin/dsw ed frwr- -1 bin/ed - init frwr- -1 bin/init + init frwr- -1 bin/init ln frwr- -1 bin/ln ls frwr- -1 bin/ls lsd frwr- -1 bin/lsd lsl frwr- -1 bin/lsd + nm frwr- -1 bin/nm od frwr- -1 bin/od + p frwr- -1 bin/p + pd frwr- -1 bin/pd mv frwr- -1 bin/mv - password frw-- -1 fs/password + password frw-- -1 fs/password + roff frwr- -1 bin/roff + rn frwr- -1 bin/rn + rm frwr- -1 bin/rm sh frwr- -1 bin/sh stat frwr- -1 bin/stat - $ + tm frwr- -1 bin/tm + + $ ken drwr- 10 system l---- 3 sop.s frwr- 10 ../src/sys/sop.s diff --git a/scans/dsw.s b/scans/dsw.s index 03f8ff2..f1f25ac 100644 --- a/scans/dsw.s +++ b/scans/dsw.s @@ -24,7 +24,7 @@ wr: lac d1 sys write; o12; 1 sys save -io: +do: sys unlink; dir+1 sys exit diff --git a/src/alt/chrm.s b/src/alt/chrm/chrm.s similarity index 100% rename from src/alt/chrm.s rename to src/alt/chrm/chrm.s diff --git a/src/alt/init.s b/src/alt/init/init.s similarity index 100% rename from src/alt/init.s rename to src/alt/init/init.s diff --git a/src/alt/s2.s b/src/alt/s2/s2.s similarity index 100% rename from src/alt/s2.s rename to src/alt/s2/s2.s diff --git a/src/alt/wktls.s b/src/alt/wktls/wktls.s similarity index 100% rename from src/alt/wktls.s rename to src/alt/wktls/wktls.s diff --git a/src/alt/wktmkdir.s b/src/alt/wktmkdir/wktmkdir.s similarity index 100% rename from src/alt/wktmkdir.s rename to src/alt/wktmkdir/wktmkdir.s diff --git a/src/cmd/.DS_Store b/src/cmd/.DS_Store new file mode 100644 index 0000000..9a3bd68 Binary files /dev/null and b/src/cmd/.DS_Store differ diff --git a/src/cmd/dsw.s b/src/cmd/dsw.s index a197aca..1a17271 100644 --- a/src/cmd/dsw.s +++ b/src/cmd/dsw.s @@ -24,7 +24,7 @@ wr: lac d1 sys write; o12; 1 sys save -io: +do: sys unlink; dir+1 sys exit diff --git a/src/cmd/ls.s b/src/cmd/ls.s new file mode 100644 index 0000000..f51bd24 --- /dev/null +++ b/src/cmd/ls.s @@ -0,0 +1,276 @@ +"** 09-1-35.pdf page 17 +" ls +" list + + lac 017777 + tad d1 + dac name + lac name i + sad ali + dac longflg + lac 017777 i + sad d4 + skp + jmp loop + law dd + dac name + jmp 2f + +loop: + lac 017777 i + sad d4 + jmp done + tad dm4 + dac 017777 i + lac name + tad d4 + dac name +2: + law stbuf + sys status; dd; name:.. + spa + jmp badfile + lac s.flags + and o20 + sna + jmp badfile + lac name + dac 0f + sys open; 0:..; 0 + spa + jmp badfile + dac fi + jms readdir + lac fi + sys close +1: + lac o200000 + dac maxfn + jms findf + lac maxfn + sad o200000 + jmp loop + + lac longflg + sza + jms longout + law maxfn + jms putfn + law 012 + jms putc + lac o200000 + dac maxfp i + jmp 1b + +"** 09-1-35.pdf page 18 +longout: 0 + lac name + dac 0f + law stbuf + sys status; 0:..; maxfn + lac s.i + jms octal; -3 + lac s.flags + jms octal; -2 + lac s.uid + jms octal; -2 + -1 + tad s.nlinks + cma + jms octal; -2 + lac s.size + jms octal; -5 + jmp longout i + +octal: 0 + lmq + lac d5 + tad octal i + cma + dac t +1: + llss 3 + isz t + jmp 1b + lac octal i + dac t +1: + ecla llss 3 + tad o60 + jms putc + isz t + jmp 1b + law 040 + jms putc + isz octal + jmp octal i + +toobig: + law 076 + jms putc + law 040 + jms putc + +badfile: + lac name + jms putfn + law 040 + jms putc + law 077 + jms putc + law 012 + jms putc + jmp loop + +putfn: 0 +"** 09-1-35.pdf page 19 + dac t + -4 + dac t1 +1: + lac t i + lrss 9 + sad o40 + jmp putfn i + jms putc + lac t i + and o177 + sad o40 + jmp putfn i + jms putc + isz t + isz t1 + jmp 1b + jmp putfn i + +done: + lac noc + sna + sys exit + and d1 + sna cla + jmp 1f + jms putc + jmp done +1: + lac noc + rcr + dac 1f + lac fo + sys write; iopt+1; 1:.. + sys exit + +readdir: 0 + lac fi + sys read; buf; 2048 + sad .-1 + jmp toobig + lrss 3 + cma + tad d1 + dac ndir + jmp readdir i + +findf: 0 + law buf + dac t + lac ndir + dac t1 +1: + lac t i + sna + jmp 2f + isz t + lac t i + cma + tad maxfn + spa +"** 09-1-35.pdf page 20 + jmp 2f+1 + lac t + dac maxfp + lac t i + dac maxfn + skp +2: + isz t + lac t + tad d7 + dac t + isz t1 + jmp 1b + + lac maxfp + dac 8 + lac 8 i + dac maxfn+1 + lac 8 i + dac maxfn+2 + lac 8 i + dac maxfn+3 + jmp findf i + +putc: 0 + and o177 + dac 2f+1 + lac opt + dac 2f + add o400000 + dac opt + spa + jmp 1f + lac 2f i + xor 2f+1 + jmp 3f +1: + lac 2f+1 + alss 9 +3: + dac 2f i + isz noc + lac noc + sad d128 + skp + jmp putc i + lac fo + sys write; iopt+1; 64 + lac iopt + dac opt + dzm noc + jmp putc i +2: 0;0 +fi: 0 +opt: .+2 +iopt: .+1; .=.+64 +noc: 0 +fo: 1 +longflg: 0 + +d1: 1 +"** 09-1-35.pdf page 21 +d5: 5 +o60: 060 +o40: 040 +o20: 020 +d7: 7 +o400000: 0400000 +d128: 128 +d4: 4 +dm4: -4 +o177: 0177 +o200000: 0200000 +dd: 056056;040040;040040;040040 +ali:
  • + +t: .=.+1 +t1: .=.+1 +maxfn: .=.+4 +maxfp: .=.+1 +ndir: .=.+1 +stbuf: + s.flags: .=.+8 + s.uid: .=.+1 + s.nlinks: .=.+1 + s.size: .=.+2 + s.i: .=.+1 +buf: diff --git a/src/cmd/nm.s b/src/cmd/nm.s new file mode 100644 index 0000000..cc6b99b --- /dev/null +++ b/src/cmd/nm.s @@ -0,0 +1,234 @@ +"** 09-1-35.pdf page 31 +" nm + + lac 017777 i + sad d3 + skp + jmp 1f + law n.out + dac fname + jmp 2f +1: + lac 017777 + tad d1 + dac fname + +loop: + lac 017777 i + sad d4 + jmp done + tad dm4 + dac 017777 i + lac fname + tad d4 + dac fname +2: + law 012 + jms putc + sys open; fname: 0; 0 + sma + jmp 1f + lac fname + dac 2f + lac d1 + sys write; 2: 0; 4 + lac d1 + sys write; mes; 2 + jmp loop +mes: + 040077; 012 + +1: + lac d2 + sys read; buf; 3072 + cll; idiv; 6 + lacq + dac size + law o200000 + dac c2 + +print: + lac o200000 + dac c2 i + dzm c2name + -1 + tad size + cma + dac c1 + law buf + dac c3 + lac o200000 + dac c2name +1: + lac c3 i +"** 09-1-35.pdf page 32 + cma + tad c2name + spa + jmp 2f + lac c3 i + dac c2name + lac c3 + dac c2 +2: + law 6 + tad c3 + dac c3 + isz c1 + jmp 1b + lac c2name + sad o200000 + skp + jmp 1f + lac d2 + sys close + jmp loop +1: + + lac c2 + tad d3 + dac t + lac i t + sna + jmp print + isz t + lac i t + sna + jmp print + -1 + tad c2 + dac 8 + -4 + dac c3 +1: + lac 8 i + lrss 9 + jms putc + llss 9 + jms putc + isz c3 + jmp 1b + lac i t + sad d3 + jmp undef + sna + jmp 1f + law 0162 + skp +1: + law 0141 + dac type + law 040 + jms putc + isz t + lac i t + lmq +"** 09-1-35.pdf page 33 + -6 + dac c3 +1: + cla + llss 3 + tad o60 + jms putc + isz c3 + jmp 1b + law 040 + jms putc + lac type + jms putc + law 012 + jms putc + jmp print +undef: + -8 + dac c3 +1: + law 040 + jms putc + isz c3 + jmp 1b + law 0165 + jms putc + law 012 + jms putc + jmp print + +done: + lac noc + sna + sys exit + and d1 + sna cla + jmp 1f + jms putc + jmp done +1: + lac noc + rcr + dac 1f + lac fo + sys write; iopt+1; 1:.. + sys exit + +putc: 0 + and o777 + dac 2f+1 + lac opt + dac 2f + add o400000 + dac opt + spa + jmp 1f + lac 2f i + xor 2f+1 + jmp 3f +1: + lac 2f+1 +"** 09-1-35.pdf page 34 + alss 9 +3: + dac 2f i + isz noc + lac noc + sad d128 + skp + jmp putc i + lac fo + sys write; iopt+1; 64 + lac iopt + dac opt + dzm noc + jmp putc i +2: 0;0 +ipt: 0 +eipt: 0 +iipt: .+1; .=.+64 +fi: 0 +opt: .+2 +iopt: .+1; .=.+64 +noc: 0 +fo: 1 + +c1: 0 +c2: 0 +c3: 0 +t: 0 +size: 0 +c2name: 0 +type: 0 + +d1: 1 +d128: 128 +o200000: 0200000 +o777: 0777 +o400000: 0400000 +d2: 2 +d4: 4 +dm4: -4 +o60: 060 +d3: 3 +d6: 6 +n.out: +0156056;0157165;0164040;040040 +buf: diff --git a/src/cmd/p0.s b/src/cmd/p0.s new file mode 100644 index 0000000..407a7f0 --- /dev/null +++ b/src/cmd/p0.s @@ -0,0 +1,37 @@ +"** 10-36-55.pdf page 1 +osc = 0640001 +omq = 0640002 +otq = 0642000 +cmq = 0640004 +lmq = 0652000 +ecla = 0641000 + +i = 020000 + +save = 1 +getuid = 2 +open = 3 +read = 4 +write = 5 +creat = 6 +seek = 7 +tell = 8 +close = 9 +link = 10 +unlink = 11 +setuid = 12 +rename = 13 +exit = 14 +time = 15 +intrp = 16 +chdir = 17 +chmode = 18 +chowner = 19 +sysloc = 21 +capt = 23 +rele = 24 +status = 25 +sleep = 26 +smes = 27 +rmes = 28 +fork = 29 diff --git a/src/cmd/p1.s b/src/cmd/p1.s new file mode 100644 index 0000000..8e3f342 --- /dev/null +++ b/src/cmd/p1.s @@ -0,0 +1,261 @@ +"** 10-36-55.pdf page 2 +" p1 + +t = 0 + las + dac .sw + law 13 + sys sysloc + dac .pb + jms ballinit + lac nballp + cll; mul; bvsize + lacq + tad listpm1 + dac 15 + tad d1 + sys capt + law outline-1 + dac 8 + -noutline + dac 9f+t +1: + lac 8 i + dac 15 i + isz 9f+t + jmp 1b + lac 15 + dac displist + lac o400000 + dac 15 i + jms dump + +loop: + +" dump/restore + + lac waitup + sza + jmp 2f + lac .pb i + als 5; ral + snl + jmp 1f + jms dump + jmp 3f +1: + sma + jmp 3f + jms restore + jmp 3f +2: + lac .pb i + als 5; ral + szl + jmp 3f + spa + jmp 3f + dzm waitup +3: + sys time + lacq + sad stime + jmp loop +"** 10-36-55.pdf page 3 + tad dm1 + sad stime + jmp loop + tad d1 + dac stime + lac .pb i + als 7 + spa + sys exit + + lac displist + dac 15 + + -nball + dac 9f+t + +" q and stich controls + + jms getball; ball1; 9f+t + lac ball1+vx + lmq + lac ball1+vy + omq + sza + jmp 1f + jms stickcont + jms putball; ball1; 9f+t + +1: + jms getball; ball1; 9f+t + +" if in pocket, ignore + + lac ball1+sflg + spa + jmp 4f + lac 9 + dac 14 + +" update + + lac ball1+vx + lrss 6 + tad ball1+x + and o177777 + dac ball1+x + lac ball1+vy + lrss 6 + tad ball1+y + and o177777 + dac ball1+y + +" display + + lac ball1+x + lrss 6 + xor o142000 " setx + dac 15 i + lac ball1+y + lrss 6 + xor o164000 " sety +"** 10-36-55.pdf page 4 + dac 15 i + + law circle-1 + dac 8 + -circsize + dac 9f+t+1 +2: + lac 8 i + dac 15 i + isz 9f+t+1 + jmp 2b + +" degrade velocity + jms frict + +" edge collision + + lac lefttest + tad ball1+x + sma + jmp 2f + jms pocketlr + jmp 4f + lac ball1+vx + sma + jmp 2f + cma + tad d1 + dac ball1+vx +2: + lac bottest + tad ball1+y + sma + jmp 2f + jms pockettb + jmp 4f + lac ball1+vy + sma + jmp 2f + cma + tad d1 + dac ball1+vy +2: + lac righttest + tad ball1+x + spa + jmp 2f + jms pocketlr + jmp 4f + lac ball1+vx + spa + jmp 2f + cma + tad d1 + dac ball1+vx +2: + lac toptest + tad ball1+vy + spa + jmp 2f + jms pockettb +"** 10-36-55.pdf page 5 + jmp 4f + lac ball1+vy + spa + jmp 2f + cma + tad d1 + dac ball1+vy +2: + +" ball/ball collision + + lac 9f+t + tad d1 + sma + jmp 4f + dac 9f+t+1 + +2: + lac 14 i + dac ball2+0 + lac 14 i + dac ball2+1 + lac 14 i + dac ball2+2 + lac 14 i + dac ball2+3 + lac 14 i + dac ball2+4 + lac ball2+sflg + spa + jmp 3f + lac ball1+x + cma + tad ball2+x + cma + lmq + gsm + dac .+3 + lacq + muls; .. + dac 9f+t+3 + lrss 4 + sza + jmp 3f + lac ball1+y + cma + tad ball2+y + cma + lmq + gsm + dac .+3 + lacq + muls; .. + tad 9f+t+3 + lrss 4 + sza + jmp 3f + jms ballball + jms putball; ball2; 9f+t+1 +3: + isz 9f+t+1 +"** 10-36-55.pdf page 6 + jmp 2b +4: + + jms putball; ball1; 9f+t + isz 9f+t + jmp 1b + + lac o400000 + dac 15 i + jmp loop +t = t+3 diff --git a/src/cmd/p2.s b/src/cmd/p2.s new file mode 100644 index 0000000..4006fee --- /dev/null +++ b/src/cmd/p2.s @@ -0,0 +1,226 @@ +"** 10-36-55.pdf page 7 +" p2 + +frict: 0 + las + and d1 + sza + jmp frict i + lac ball1+vx + cll; muls; frfac + dac ball1+vx + lac ball1+vy + cll; muls; frfac + dac ball1+vy + gsm + dac 9f+t + lac ball1+vx + gsm + tad 9f+t + tad minvx + sma + jmp frict i + dzm ball1+vx + dzm ball1+vy + jmp frict i +t = t+1 + +ballball: 0 + llss 15 " x**2+y**2 in q + cma + tad o300000 + dac 1f; dac 2f + lac ball2+y + cma + tad ball1+y + cma + cll; muls; 1:..; llss 6 + dac sin + lac ball2+x + cma + tad ball1+x + cma + cll; muls; 2:..; llss 6 + dac cos + +" calculate closing velocities + + lac ball1+vx + gsm + dac .+3 + lac cos + muls; ..; llss 3 + dac 9f+t + lac ball1+vy + gsm + dac .+3 + lac sin + muls; ..; llss 3 + tad 9f+t + dac vp1 + + lac ball2+vx + gsm +"** 10-36-55.pdf page 8 + dac .+3 + lac cos + muls; ..; llss 3 + dac 9f+t + lac ball2+vy + gsm + dac .+3 + lac sin + muls; ..; llss 3 + tad 9f+t + dac vp2 + cma + tad vp1 + cma + sma + jmp ballball i + +" calculate tangential velocities + + lac ball1+vx + gsm + dac .+3 + lac sin + muls; ..; llss 3 + dac 9f+t + lac ball1+vy + gsm + dac .+3 + lac cos + muls; ..; llss 3 + cma + tad 9f+t + cma + dac vt1 + + lac ball2+vx + gsm + dac .+3 + lac sin + muls; ..; llss 3 + dac 9f+t + lac ball2+vy + gsm + dac .+3 + lac cos + muls; ..; llss 3 + cma + tad 9f+t + cma + dac vt2 + +" recalculate x,y velocities +" with interchanged closing components + + lac vp2 + gsm + dac .+3 + lac cos + muls; ..; llss 3 + cma + dac 9f+t +"** 10-36-55.pdf page 9 + lac vt1 + gsm + dac .+3 + lac sin + muls; ..; llss 3 + tad 9f+t + cma + dac ball1+vx + + lac vp2 + gsm + dac .+3 + lac sin + muls; ..; llss 3 + dac 9f+t + lac vt1 + gsm + dac .+3 + lac cos + muls; ..; llss 3 + tad 9f+t + dac ball1+vy + + lac vp1 + gsm + dac .+3 + lac cos + muls; ..; llss 3 + cma + dac 9f+t + lac vt2 + gsm + dac .+3 + lac sin + muls; ..; llss 3 + tad 9f+t + cma + dac ball2+vx + + lac vp1 + gsm + dac .+3 + lac sin + muls; ..; llss 3 + dac 9f+t + lac vt2 + gsm + dac .+3 + lac cos + muls; ..; llss 3 + tad 9f+t + dac ball2+vy + + jmp ballball i +t = t+1 + +dump: 0 + lac o17 + sys creat; dmpname + spa + sys save +"** 10-36-55.pdf page 10 + dac waitup + sys write; qsin; 1 + lac waitup + sys write; qcos; 1 + lac nballp + cll; mul; bvsize + lacq + dac 0f + lac waitup + sys write; list; 0:.. + lac waitup + sys close + jmp dump i + +restore: 0 + sys open; dmpname; 0 + spa + sys save + dac waitup + sys read; qsin; 1 + lac waitup + sys read; qcos; 1 + lac nballp + cll; mul; bvsize + lacq + dac 0f + lac waitup + sys read; list; 0:.. + sad 0b + skp + sys save + lac waitup + sys read; dump; 1 + sza + sys save + lac waitup + sys close + jmp restore i diff --git a/src/cmd/p3.s b/src/cmd/p3.s new file mode 100644 index 0000000..efb5ad1 --- /dev/null +++ b/src/cmd/p3.s @@ -0,0 +1,149 @@ +"** 10-36-55.pdf page 11 +" p3 + +rad = 02000 +diam = rad+rad +diam3 = diam-0200 +middle: 0100000 +high: 0177700-010000 +low: 010000 +ballinit: 0 + -nball + dac 9f+t + +" Q ball + + lac middle + dac ball1+x + lac low + dac ball1+y + dzm ball1+vx + dzm ball1+vy + dzm ball1+sflg + jms put + +" top row + + lac d1 + dac ball1+sflg + lac high + dac ball1+y + -diam-diam-diam + tad ball1+x + dac ball1+x + jms put + jms put + jms put + jms put + jms put + +" second row + + -diam3 + tad ball1+y + dac ball1+y + -diam-diam-diam + tad ball1+x + dac ball1+x + -diam-rad + tad ball1+x + dac ball1+x + jms put + jms put + jms put + jms put + +" third row + + -diam3 + tad ball1+y + dac ball1+y + -diam-diam-diam-rad + tad ball1+x + dac ball1+x +"** 10-36-55.pdf page 12 + jms put + jms put + jms put + +" fourth row + + -diam3 + tad ball1+y + dac ball1+y + -diam-diam-rad + tad ball1+x + dac ball1+x + jms put + jms put + +" last row + + -diam3 + tad ball1+y + dac ball1+y + -diam-rad + tad ball1+x + dac ball1+x + jms put + + jmp ballinit i + +put: 0 + jms putball; ball1; 9f+t + -diam-1 + cma + tad ball1+x + dac ball1+x + isz 9f+t + jmp put i + jmp put i +t = t+1 + +getball: 0 + -1 + tad getball i + dac 8 + isz getball + lac getball i + dac 9f+t + lac nballp + tad 9f+t i + cll; mul; bvsize + lacq + tad listpm1 + dac 9 + -bvsize + dac 9f+t +1: + lac 9 i + dac 8 i + isz 9f+t + jmp 1b + isz getball + jmp getball i + +"** 10-36-55.pdf page 13 +putball: 0 + -1 + tad putball i + dac 8 + isz putball + lac putball i + dac 9f+t + lac nballp + tad 9f+t i + cll; mul; bvsize + lacq + tad listpm1 + dac 9 + -bvsize + dac 9f+t +1: + lac 8 i + dac 9 i + isz 9f+t + jmp 1b + isz putball + jmp putball i +t = t+1 diff --git a/src/cmd/p4.s b/src/cmd/p4.s new file mode 100644 index 0000000..fbe692d --- /dev/null +++ b/src/cmd/p4.s @@ -0,0 +1,202 @@ +"** 10-36-55.pdf page 14 +" p4 + +stickcont: 0 + +" display stick + + lac ball1+x + lrss 6 + xor o142000 " setx + dac 15 i + lac ball1+y + lrss 6 + xor o164000 " sety + dac 15 i + + lac qcos + lrss 8 + sma + jmp 1f + cma + tad d1 + xor o2000 " minus +1: + xor o100000 " vecx hold + dac 15 i + + lac qsin + lrss 8 + sma + jmp 1f + cma + tad d1 + xor o2000 " minus +1: + xor o124000 " vecy vis + dac 15 i + +" rotation + + lac .pb i + rtl + sma rar + jmp 2f + +" coarse rotation + + sma + jmp 1f + szl + jmp 3f + jms rotate; mcsin; ccos + jmp 3f +1: + snl + jmp 3f + jms rotate; csin; ccos + jmp 3f + +" fine rotation + +2: + sma +"** 10-36-55.pdf page 15 + jmp 1f + szl + jmp 3f + jms rotate; mfsin; fcos + jmp 3f +1: + snl + jmp 3f + jms rotate; fsin; fcos +3: + +" strike + + lac .pb i + rtl; ral + sma ral + jmp 1f + + lac qcos + dac ball1+vx + lac qsin + dac ball1+vy + jmp stickcont i + +1: sma + jmp stickcont i + lac qcos + lrss 1 + dac ball1+vx + lac qsin + lrss 1 + dac ball1+vy + jmp stickcont i + +rotate: 0 + lac rotate i + dac 9f+t+1 + lac 9f+t+1 i + dac 9f+t + isz rotate + lac rotate i + dac 9f+t+1 + lac 9f+t+1 i + dac 9f+t+1 + isz rotate + + lac qsin + gsm + dac .+3 + lac 9f+t+1 + muls; ..; llss 2 + dac 9f+t+2 + lac qcos + gsm + dac .+3 + lac 9f+t + muls; ..; llss 2 + tad 9f+t+2 + dac 9f+t+3 + + lac qsin +"** 10-36-55.pdf page 16 + gsm + dac .+3 + lac 9f+t + muls; ..; llss 2 + cma + dac 9f+t+2 + lac qcos + gsm + dac .+3 + lac 9f+t+1 + muls; ..; llss 2 + tad 9f+t+2 + dac qcos + lac 9f+t+3 + dac qsin + jmp rotate i +t = t+4 + +prad: 02000 +pocketlr: 0 + lac ball1+sflg + sna + jmp 2f + -1 + tad prad + cma + tad bottest + tad ball1+y + spa + jmp 3f + lac prad + tad toptest + tad ball1+y + sma + jmp 3f + -1 + tad middle + cma + tad ball1+y + sma + cma + tad prad + sma + jmp 3f +2: + isz pocketlr + jmp pocketlr i +3: + -1 + dac ball1+sflg + jmp pocketlr i + +pockettb: 0 + lac ball1+sflg + sna + jmp 2f + -1 + tad prad + cma + tad lefttest + tad ball1+x +"** 10-36-55.pdf page 17 + spa + jmp 3f + lac prad + tad righttest + tad ball1+x + sma + jmp 3f +2: + isz pockettb + jmp pockettb i +3: + -1 + dac ball1+sflg + jmp pockettb i diff --git a/src/cmd/p5.s b/src/cmd/p5.s new file mode 100644 index 0000000..35a3389 --- /dev/null +++ b/src/cmd/p5.s @@ -0,0 +1,156 @@ +"** 10-36-55.pdf page 18 +" p5 + +frfac = 0774000 " loss in vel to friction +toptest: 02000+01000-0177700 +bottest: -02000-01000 +righttest: 02000+040400-0177700 +lefttest: -02000-040400 +minvx: -02000 " vel below whitch vel is set zero +fsin: 0203 " sine of fine rotation angle +csin: 02534 " sine of coarse rotation angle +mfsin: -0203 " negative of fsin +mcsin: -02534 " negative of csin +fcos: 0177777 " cosine of fine rotation angle +ccos: 0177761 " cosine of coarse rotation angle + +nball = 16 + +d1: 1 +o17: 017 +o300000: 0300000 +dm1: -1 +o142000: 0142000 +o164000: 0164000 +o400000: 0400000 +o177777: 0177777 +o2000: 02000 +o100000: 0100000 +o124000: 0124000 +qsin: 0177777 +qcos: 0 +dmpname: ;;

    ; jmp casead; ncase = ncase+1 +; jmp casebp; ncase = ncase+1 +
    ; jmp casebr; ncase = ncase+1 +; jmp casecc; ncase = ncase+1 +; jmp casece; ncase = ncase+1 +; jmp caseds; ncase = ncase+1 +; jmp casefi; ncase = ncase+1 +; jmp casein; ncase = ncase+1 +

  • ; jmp caseli; ncase = ncase+1 +; jmp casell; ncase = ncase+1 +; jmp casels; ncase = ncase+1 +; jmp casena; ncase = ncase+1 +; jmp casene; ncase = ncase+1 +; jmp casenf; ncase = ncase+1 +; jmp casepl; ncase = ncase+1 +; jmp casesp; ncase = ncase+1 +; jmp casess; ncase = ncase+1 +; jmp caseti; ncase = ncase+1 +
      ; jmp caseul; ncase = ncase+1 +; jmp caseun; ncase = ncase+1 + +" control cases +casead: + jms break + -1 + dac ad + jmp i control + +casebp: + jms break + jms eject + jmp i control + +casebr: + jms break + jmp i control + +casecc: + jms skipcont + lac i 8 + sad o12 + jmp i control + dac cc + jmp i control + +casece: + jms break + jms number; d0 + spa + cla + dac ce + jms need; ce + jmp i control + +caseds: + jms break + lac d2 + dac ls + jmp i control + +casefi: +" ** 11-45-91.pdf page 13 + jms break + -1 + dac fi + jmp i control + +casein: + jms number; in + cma + tad d1 + sma + cla + dac in + dac un + jmp i control + +caseli: + jms number; d0 + cma + tad d1 + sma + jmp i control + dac 2f +1: + jms readline + jmp i control + jms text + isz 2f + jmp 1b + jmp i control +2: 0 + +casell: + jms number; ll + spa + cla + dac ll + jmp i control + +casels: + jms number; d0 + sza; spa + lac d1 + dac ls + jmp i control + +casena: + jms break + dzm ad + jmp i control + +casene: + jms number; d0 + spa + cla + dac c + jms need; c + jmp i control + +casenf: + jms break + dzm fi +" ** 11-45-91.pdf page 14 + jmp i control + +casepl: + jms number; pl + spa + cla + dac pl + jms topbot + jmp i control + +casesp: + jms break + jms number; d0 + cma + tad d1 + sma + jmp i control + dac c +1: + jms nline + isz c + jmp 1b + jmp i control + +casess: + jms break + lac d1 + dac ls + jmp i control + +caseti: + jms break + jms number; in + spa + cla + dac un + jmp i control + +caseul: + jms number; d0 + spa + cla + dac ul + jmp i control + +caseun: + jms number; d0 + tad in + sma + cla + dac un + jmp i control + +" selected short routines +skipcont: 0 + law rawchar-1 + dac 8 +1: + lac i 8 + sad o40 + jmp 1f +" ** 11-45-91.pdf page 15 + sad o12 + jmp 2f + jmp 1b +1: + lac i 8 + sad o12 + jmp 2f + sad o40 + jmp 1b +2: + -1 + tad 8 + dac 8 + jmp i skipcont + +break: 0 + lac nc + sna + jmp i break + -2 + tad ls + cma + sma + jmp 2f + dac c +1: + jms nline + isz c + jmp 1b +2: + lac nl + sad bl + jms eject + lac nl + sza + jmp 2f + -5 + dac c +1: + lac o55 + jms putchar + isz c + jmp 1f + lac ma1 + dac c +1: + jms newline + isz c + jmp 1b +2: + law char-1 + dac 8 + lac un + sza + jmp 1f + dac c +2: + lac o40 + jms putchar + isz c + jmp 2b +" ** 11-45-91.pdf page 16 +1: + lac i 8 + jms putchar + isz nc + jmp 1b + jms newline + dzm nwd + dzm ne + lac in + dac un + jmp i break + +newline: 0 + lac o12 + jms putchar + isz nl + jmp i newline + +nline: 0 + lac nl + sna + jmp i nline + sad bl + jmp i nline + jms newline + jmp i nline + +number: 0 + dzm num + dzm sign + -1 + dac any + jms skipcont +1: + lac i 8 + sad o12 + jmp 3f + sad o53 + jmp 2f + tad om72 + sma + jmp 1b + tad o12 + spa + jmp 1b + dac any + lac num + cll; mul; 10 + lacq + tad any + dac num + jmp 1b +2: + dac sign + jmp 1b +3: + lac any + sma + jmp 1f +" ** 11-45-91.pdf page 17 + lac d1 + isz number + jmp i number +1: + lac sign + sza + jmp 1f + lac num + isz number + jmp i number +1: + sad o53 + jmp 1f + lac i number + jms laci + cma + tad num + cma + isz number + jmp i number +1: + lac i number + jms laci + tad num + isz number + jmp i number + +eject: 0 + lac pl + sna + jmp i eject + lac nl + sna + jmp i eject +1: + sad pl + jmp 1f + jms newline + lac nl + jmp 1b +1: + dzm nl + jmp i eject + +storechar: 0 + lmq + lac nc + sza + jmp 1f + law char-1 + dac 10 +1: + lacq + dac i 10 + jms width + cma + tad d1 + tad ne + dac ne + -1 + tad nc +" ** 11-45-91.pdf page 18 + dac nc + jmp i storechar + +getword: 0 + law word-1 + dac 8 + " *** hand written box/arrow to move after 1: + dzm wne + dzm wch +1: + lac i 11 + sad o12 + jmp i getword +2: + dac i 8 + lmq + jms width + cma + jms width + cma + tad d1 + tad wne + dac wne + -1 + tad wch + dac wch + lacq + sad o40 + jmp 1b + lac word + sad o40 + jmp 1f + lac o40 + dac word + lacq + jmp 2b +1: + lac i 11 + sad o12 + jmp 1f + sad o40 + jmp 1f + dac i 8 + jms width + cma + tad d1 + tad wne + dac wne + -1 + tad wch + dac wch + jmp 1b +1: + -1 + tad 11 + dac 11 + isz getword + jmp i getword + +need: 0 + lac ls + dac 1f + lac i need + jms laci +" ** 11-45-91.pdf page 19 + cll; mul; 1: 0 + lacq + tad nl + cma + tad bl + spa + jms eject + isz need + jmp i need + +" text line routine +text: 0 + -1 + tad ul + sma + jms undline + -1 + tad ce + sma + jms center + law rawchar-1 + dac 11 + lac rawchar + sad o12 + jmp 1f-1 + sad o40 + lac fi + sza + jmp 2f + skp + jms break +1: + lac i 11 + sad o12 + jmp 1f + jms storechar + jmp 1b +1: + lac nc + sna + jms nline + jms break + jmp i text +2: + jms getword; jmp i text + lac wne + tad ne + tad un + tad ll + spa + jms adjust + law word-1 + dac 8 + lac nwd + sza + jmp 3f +1: + lac i 8 + sad o40 + skp +" ** 11-45-91.pdf page 20 + jmp 3f+1 + isz wch + jmp 1b +3: + lac i 8 + jms storechar + isz wch + jmp 3b + isz nwd + jmp 2b + +" adjust routine +adjust: 0 + lac nwd + sna + jmp i adjust + dac 8 + law tchar-1 + dac 9 + dzm ndiv + dzm nrem + lac ad + sna + jmp 1f + -1 + tad nwd + sna + jmp 1f + dac 2f + lac ll + tad ne + tad un + spa + jmp 1f + cll; idiv; 2: 0 + dac nrem + lacq + dac ndiv +1: + lac i 8 + sad o40 + jms fill + dac i 9 + isz nc + jmp 1b + lac o12 + dac i 9 + law tchar-1 + dac 8 +2: + lac i 8 + sad o12 + jmp 2f + jms storechar + jmp 2b +2: + jms break + jmp i adjust + +fill: 0 +" ** 11-45-91.pdf page 21 + lac nrem + sna + jmp 2f + tad dm1 + dac nrem + lac d1 +2: + tad ndiv + cma + dac c + lac o40 +2: + dac i 9 + isz c + jmp 2b +2: + isz nc + lac i 8 + sad o40 + skp + jmp i fill + dac i 9 + jmp 2b + +" more routines +topbot: 0 + lac pl + sza + jmp 1f + dzm bl + jmp i topbot +1: + -11 + tad pl + spa + jmp 1f + dac bl + cma + tad d1 + tad nl + spa + jmp i topbot + lac bl + dac nl + jmp i topbot +1: + lac d55 + dac bl + dac nl + tad d11 + dac pl + jmp i topbot + +undline: 0 + dac ul + law rawchar-1 + dac 8 + law tchar-1 + dac 9 +1: + lac i 8 +" ** 11-45-91.pdf page 22 + dac i 9 + sad o12 + jmp 1f + sad o40 + jmp 1b + lac o10 + dac i 9 + lac o137 + jmp 1b +1: + law tchar-1 + dac 8 + law rawchar-1 + dac 9 +1: + lac i 8 + dac i 9 + sad o12 + jmp i undline + jmp 1b + +center: 0 + dac ce + law rawchar-1 + dac 8 + law tchar-1 + dac 9 + dzm wne +1: + lac i 8 + dac i 9 + sad o12 + jmp 1f + jms width + tad wne + dac wne + jmp 1b +1: + -1 + tad wne + spa + jmp i center + cma + tad ll + tad in + lrss 1 + cma + tad d1 + sma + -1 + dac c + law tchar-1 + dac 8 + law rawchar-1 + dac 9 + lac o40 +1: + dac i 9 + isz c + jmp 1b +" ** 11-45-91.pdf page 23 +1: + lac i 8 + dac i 9 + sad o12 + jmp i center + jmp 1b + +width: 0 + sad o10 + jmp 1f + lac d1 + jmp i width +1: + -1 + jmp i width + +eibufp: ibuf+64 +ibufp: ibuf +eobufp: obuf+64 +obufp: obuf +input: 0 +output: 1 +ls: 1 +ce: 0 +in: 0 +un: 0 +ul: 0 +ma1: -5 +bl: 55 +ll: 50 +nwd: 0 +nl: 0 +nc: 0 +ne: 0 +pl: 88 +ad: -1 +fi: -1 +cc: .> +o12: 012 +o40: 040 +o177: 0177 +o53: 053 +om72: -072 +o55: 055 +o400000: 0400000 +o10: 010 +d11: 11 +d55: 55 +o137: 0137 +d1: 1 +d2: 2 +d4: 4 +dm4: -4 +d0: 0 +dm1: -1 +c: .=.+1 +nrem: .=.+1 +ndiv: .=.+1 +num: .=.+1 +" ** 11-45-91.pdf page 24 +any: .=.+1 +ital: .=.+1 +otal: .=.+1 +sctal: .=.+1 +sctalp: .=.+1 +sign: .=.+1 +wch: .=.+1 +wne: .=.+1 +word: .=.+300 +char: .=.+300 +tchar: .=.+300 +rawchar: .=.+300 +ibuf: .=.+64 +obuf: .=.+64 diff --git a/src/cmd/sh.s b/src/cmd/sh.s new file mode 100644 index 0000000..5fbd9cc --- /dev/null +++ b/src/cmd/sh.s @@ -0,0 +1,430 @@ +" ** 11-45-91.pdf page 30 +" sh + +clear: + jmp shell + +1: + dzm i 8 + isz clear + jms 1b + lacq + jmp 017771 +zerop: .-1 + +comerr: + lac d1 + sys write; errmes; 1 + +shell: + lac d1 + sys write; ready; 1 +shell1: + lac delim + sad newln + jms rline + jms getcom + lac narg + sna + jmp comretrn + lac args + sad chcom + skp + jmp 3f + lac args+1 + sad spsp + jmp doch +3: + sys fork + skp + jmp loadcom + spa + jmp comerr + lmq + lac delim + sad amper + jmp shell1 + lacq " hand written + clq " send mesg to child + sys smes +comretrn: + lac delim + sad newln + jmp shell + jmp shell1 + +loadcom: + sys open; args; 0 + sma + jmp 1f + sys link; system; args; args + spa + +" ** 11-45-91.pdf page 30 + + jmp 2f + -1 + dac lnkflg + jmp loadcom + +2: + lac lnkflg + sna + jmp 3f + sys unlink; args +3: + lac d1 + sys write; args; 4 + lac d1 + sys write; errmes; 1 + sys exit + +1: + lac lnkflg + sna + jmp 1f + sys unlink; args +1: + lac in + sna + jmp 2f + cla + sys close + sys open; in; 0 + sma + jmp 2f + lac d1 + sys write; in; 4 + sys write; errmes; 1 + sys exit +2: + lac out + sna + jmp 1f + lac d1 + sys close + lac o17 + sys creat; out + spa + sys exit +1: + lac narg + cma + dac t1 + tad o17771 + dac 017777 + tad dm1 + dac 8 + and o7777 + dac boot+2 + cma + tad d7 + dac close + lac nargp + dac 9 + +" ** 11-45-91.pdf page 32 + +2: + lac i 9 + dac i 8 + isz t1 + jmp 2b + lac bootp + dac 9 + -6 + dac t1 +2: + lac i 9 + dac i 8 + isz t1 + jmp 2b + lac d2 + lmq + lac zerop + dac 8 + jmp clear+1 + +boot: + sys read; 4096; .. + lacq + sys close + jmp 4096 + +getcom: 0 + law args-1 + dac 10 + dzm in + dzm out + dzm narg + dzm lnkflg + + jms get +nparm: + sad gr + jmp cgr + sad ls + jmp cls + sad amper + jmp endcom + sad semic + jmp endcom + sad newln + jmp endcom + sad space + jmp nparm-1 + lmq + lac narg + tad d4 + dac narg + lacq + jms getparm + jmp nparm + +endcom: + dac delim + jmp getcom i + +cls: + +" ** 11-45-91.pdf page 33 + + jms get + jms getparm + dac t1 + law in-1 + jmp cpio +cgr: + jms get + jms getparm + dac t1 + law out-1 +cpio: + dac 11 + lac 10 + tad dm4 + dac 10 + lmq + -4 + dac c1 +1: + lac i 10 + dac i 11 + isz c1 + jmp 1b + lacq + dac 10 + lac t1 + jmp nparm + +getparm:0 + lmq + -8 + dac c1 + lacq + skp +1: + jms get + sad space + jmp 1b + jms checkdlm + jmp comerr + jmp 2f +1: + jmp get + jms checkdlm + jmp fill1 +2: + alss 9 + isz c1 + lmq + jms get + jms checkdlm + jmp fill + omq + dac i 10 + isz c1 + jmp 1b +1: + jms get + jms checkdlm + jmp i getparm + jmp 1b + +" ** 11-45-91.pdf page 34 + +fill: + dac t1 + lac space + omq + dac i 10 + isz c1 + nop + lac t1 +fill1: + lmq + lac c1 + spa + jmp 1f + lacq + jmp i getparm +1: + lac spsp + dac i 10 + isz c1 + isz c1 + jmp 1b + lacq + jmp i getparm + +checkdlm: 0 + sad space + jmp i checkdlm + sad newln + jmp i checkdlm + sad amper + jmp i checkdlm + sad semic + jmp i checkdlm + isz checkdlm + jmp i checkdlm + +get: 0 + lac i 8 + sad slash + skp + jmp i get + lac i 8 + sad newln + skp + jmp comerr + lacq + dac 1f + jms rline + lac 1f + lmq + lac space + jmp i get + +1: 0 +rline:0 +2: + law lineb-1 + dac 15 + dac 8 +1: + jms getcha + +" ** 11-45-91.pdf page 35 + dac i 15 + sad newln + jmp i rline + sad sharp + jmp psharp + sad atsign + jmp 2b + jmp 1b +psharp: + -1 + tad 15 + sad 2b + jmp 2b + tad dm1 + dac 15 + jmp 1b + +getcha: 0 + lac char + dzm char + sza + jmp i getcha + isz nread + jmp 1f + cla + sys read; inbuf; 64 + spa sna + jmp lgout + cma + tad d1 + dac nread + law inbuf-1 + dac 14 +1: + lac i 14 + lmq + and o777 + dac char + ecla llss 9 + jmp i getcha + +doch: + lac narg + lrss 2 + cma + tad d1 + dac narg + law args+4 + dac 1f +2: + isz narg + skp + jmp comretrn + sys chdir; 1:0 + spa + jmp cherr + lac 1b + tad d4 + dac 1b + jmp 2b +cherr: + +" ** 11-45-91.pdf page 36 + lac 1b + dac .+3 + lac d1 + sys write; ..; 4 + jmp comerr + +lgout: + clq + lac d1 + sys smes + sys exit + +d1: 1 +dm1: -1 +d4: 4 +dm4: -5 +d2: 2 +d7: 7 +o17: 017 +o17771: 017771 +o7777: 07777 +o777: 0777 +gr: 076 +ls: 074 +amper: &> +semic: 073 +space: 040 +sharp: 043 +atsign: 0100 +newln: 012 +slash: 057 +in: 0;0;0;0 +out: 0;0;0;0 +errmes: 077012 +chcom: +ready: 0100040 +delim: 012 +system: ; ; ; spsp: 040040 +nargp: narg-1 +bootp: boot-1 +char: 0 +nread: -1 +lineb: .=.+128 +inbuf: .=.+64 +c1: .=.+1 +t1: .=.+1 +lnkflg: .=.+1 +narg: .=.+1 +args: diff --git a/src/cmd/stat.s b/src/cmd/stat.s new file mode 100644 index 0000000..26b8298 --- /dev/null +++ b/src/cmd/stat.s @@ -0,0 +1,119 @@ +"** 13-120-147.pdf page 1 +" stat + +arg = 017777 + + lac arg + tad d1 + dac name + +loop: + lac arg i + sad d4 + sys exit + tad dm4 + dac arg i + lac name + tad d4 + dac name + + law statbuf + sys status; dotdot; name: .. + spa + jmp error + law obuf-1 + dac 12 + lac ii + lmq + -3 + jms octal + lac iflags + lmq + -2 + jms octal + lac iuid + lmq + -2 + jms octal + -1 + tad iniks + cma + lmq + -2 + jms octal + lac isize + lmq + -5 + jms octal + lac o12 + dac obuf+18 + lac d1 + sys write; obuf; 19 + jmp loop + +error: + lac name + dac 1f + lac d1 + sys write; 1:..; 4 + lac d1 + sys write; 1f; 2 + jmp loop +1: 040077; 012 + +"** 13-120-147.pdf page 2 +octal: 0 + dac c + law tbuf-1 + dac 8 + lac o40 + dac 8 i +1: + lacq + and o7 + tad o60 + dac 8 i + lrs 3 + isz c + jmp 1b + lac 8 + dac c +1: + lac c i + dac 12 i + sad o40 + jmp octal i + -1 + tad c + dac c + jmp 1b + +dotdot: + 056056; 040040; 040040; 040040 + +d1: 1 +d2: 2 +d3: 3 +d8: 8 +d14: 14 +d12: 12 +o12: 012 +o60: 060 +o40: 040 +o7: 7 +d4: 4 +dm4: -4 + +c: .=.+1 + +statbuf: + iflags: .=.+1 + .=.+7 + iuid: .=.+1 + iniks: .=.+1 + isize: .=.+1 + .=.+1 + ii: .=.+1 + +obuf: .=.+19 +tbuf: .=.+10 diff --git a/src/cmd/tm.s b/src/cmd/tm.s new file mode 100644 index 0000000..015c5f2 --- /dev/null +++ b/src/cmd/tm.s @@ -0,0 +1,74 @@ +"** 13-120-147.pdf page 3 +" tm + + sys time + cll + div + 216000 + dac t1 + lacq + cll + idiv + 10 + tad o60 + dac buf+1 + lacq + cll; idiv; 10 + tad o60 + dac buf + lacq + sna + jmp 1f + tad o60 + alss 9 + xor buf + dac buf +1: + lac t1 + cll + idiv + 6 + lacq + cll + idiv + 10 + tad o56060 + dac buf+6 + lacq + cll + idiv + 10 + tad o60 + dac buf+5 + lacq + cll + idiv + 6 + tad o72060 + dac buf+4 + lacq + cll + idiv + 10 + tad o60 + dac buf+3 + lacq + cll + idiv + 6 + tad o72060 + dac buf+2 + lac d1 + sys write; buf; 8 + sys exit + +"** 13-120-147.pdf page 4 +d1: 1 +d13: 13 +d2: 2 +o60: 060 +o56060: 056060 +o72060: 072060 +t1: 0 +t2: 0 +buf: .=.+7; 012 diff --git a/tools/README.md b/tools/README.md index df41209..c6676b1 100644 --- a/tools/README.md +++ b/tools/README.md @@ -1,4 +1,4 @@ -#Tools +# Tools ## 3dump