From ac1c46e29b1fed5454e4b7fa38d30e76ec4dc179 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 16:39:18 -0600 Subject: [PATCH 01/22] refactoring source tree refactored sources into directory per binary in order to prepare for moving more complex, multi-file, programs onto source tree --- build/Makefile | 68 +++++++++++++++---------------- build/proto | 8 ++-- src/alt/{ => chrm}/chrm.s | 0 src/alt/{ => init}/init.s | 0 src/alt/{ => s2}/s2.s | 0 src/alt/{ => wktls}/wktls.s | 0 src/alt/{ => wktmkdir}/wktmkdir.s | 0 src/cmd/{ => as}/as.s | 0 src/cmd/{ => bi}/bi.s | 0 src/cmd/{ => bl}/bl.s | 0 src/cmd/{ => cat}/cat.s | 0 src/cmd/{ => check}/check.s | 0 src/cmd/{ => chmod}/chmod.s | 0 src/cmd/{ => chown}/chown.s | 0 src/cmd/{ => chrm}/chrm.s | 0 src/cmd/{ => cp}/cp.s | 0 src/cmd/{ => db}/db.s | 0 src/cmd/{ => ds}/ds.s | 0 src/cmd/{ => ed}/ed1.s | 0 src/cmd/{ => ed}/ed2.s | 0 src/cmd/{ => init}/init.s | 0 21 files changed, 38 insertions(+), 38 deletions(-) rename src/alt/{ => chrm}/chrm.s (100%) rename src/alt/{ => init}/init.s (100%) rename src/alt/{ => s2}/s2.s (100%) rename src/alt/{ => wktls}/wktls.s (100%) rename src/alt/{ => wktmkdir}/wktmkdir.s (100%) rename src/cmd/{ => as}/as.s (100%) rename src/cmd/{ => bi}/bi.s (100%) rename src/cmd/{ => bl}/bl.s (100%) rename src/cmd/{ => cat}/cat.s (100%) rename src/cmd/{ => check}/check.s (100%) rename src/cmd/{ => chmod}/chmod.s (100%) rename src/cmd/{ => chown}/chown.s (100%) rename src/cmd/{ => chrm}/chrm.s (100%) rename src/cmd/{ => cp}/cp.s (100%) rename src/cmd/{ => db}/db.s (100%) rename src/cmd/{ => ds}/ds.s (100%) rename src/cmd/{ => ed}/ed1.s (100%) rename src/cmd/{ => ed}/ed2.s (100%) rename src/cmd/{ => init}/init.s (100%) diff --git a/build/Makefile b/build/Makefile index 10ceb31..dc51765 100644 --- a/build/Makefile +++ b/build/Makefile @@ -57,9 +57,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 @@ -101,32 +101,32 @@ altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \ $(BINDIR)/ed $(BINDIR)/altinit $(BINDIR)/altmkdir -$(BINDIR)/as: $(CMDSRC)/as.s - $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s +$(BINDIR)/as: $(CMDSRC)/as/as.s + $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as/as.s -$(BINDIR)/cat: $(CMDSRC)/cat.s - $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s +$(BINDIR)/cat: $(CMDSRC)/cat/cat.s + $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat/cat.s -$(BINDIR)/check: $(CMDSRC)/check.s - $(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check.s +$(BINDIR)/check: $(CMDSRC)/check/check.s + $(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check/check.s -$(BINDIR)/chmod: $(CMDSRC)/chmod.s - $(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod.s +$(BINDIR)/chmod: $(CMDSRC)/chmod/chmod.s + $(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod/chmod.s -$(BINDIR)/chown: $(CMDSRC)/chown.s - $(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown.s +$(BINDIR)/chown: $(CMDSRC)/chown/chown.s + $(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown/chown.s -$(BINDIR)/chrm: $(CMDSRC)/chrm.s - $(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm.s +$(BINDIR)/chrm: $(CMDSRC)/chrm/chrm.s + $(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm/chrm.s -$(BINDIR)/altchrm: $(ALTSRC)/chrm.s - $(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm.s +$(BINDIR)/altchrm: $(ALTSRC)/chrm/chrm.s + $(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm/chrm.s -$(BINDIR)/cp: $(CMDSRC)/cp.s - $(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s +$(BINDIR)/cp: $(CMDSRC)/cp/cp.s + $(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp/cp.s -$(BINDIR)/ds: $(CMDSRC)/ds.s - $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s +$(BINDIR)/ds: $(CMDSRC)/ds/ds.s + $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds/ds.s $(BINDIR)/dskres: $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s @@ -134,21 +134,21 @@ $(BINDIR)/dskres: $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s $(BINDIR)/dsksav: $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s -$(BINDIR)/ed: $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s - $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s +$(BINDIR)/ed: $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s + $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s -$(BINDIR)/init: $(CMDSRC)/init.s - $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s +$(BINDIR)/init: $(CMDSRC)/init/init.s + $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init/init.s -$(BINDIR)/db: $(CMDSRC)/db.s - $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s +$(BINDIR)/db: $(CMDSRC)/db/db.s + $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db/db.s # Alternative init: no dd directory -$(BINDIR)/altinit: $(ALTSRC)/init.s - $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s +$(BINDIR)/altinit: $(ALTSRC)/init/init.s + $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s -$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s - $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s +$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir/wktmkdir.s + $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir/wktmkdir.s # The commands that did not come from the scans @@ -182,8 +182,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 @@ -198,10 +198,10 @@ $(BINDIR)/od: $(OTHERSRC)/wktod.s $(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s # B compiler -$(BINDIR)/bc: $(CMDSRC)/bl.s $(CMDSRC)/bi.s ../tools/b.c $(OTHERSRC)/b.b +$(BINDIR)/bc: $(CMDSRC)/bl/bl.s $(CMDSRC)/bi/bi.s ../tools/b.c $(OTHERSRC)/b.b $(CC) $(CCARGS) -o b ../tools/b.c ./b $(OTHERSRC)/b.b b.s - $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bl.s b.s $(CMDSRC)/bi.s + $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bl/bl.s b.s $(CMDSRC)/bi/bi.s rm b b.s tests: diff --git a/build/proto b/build/proto index 07e60e1..af8d82c 100644 --- a/build/proto +++ b/build/proto @@ -62,11 +62,11 @@ dd drwr- -1 4 $ dmr drwr- 12 system l---- 3 - as.s frwr- 12 ../src/cmd/as.s + as.s frwr- 12 ../src/cmd/as/as.s b_readme frwr- 12 fs/b_readme - bi.s frwr- 12 ../src/cmd/bi.s - bl.s frwr- 12 ../src/cmd/bl.s - db.s frwr- 12 ../src/cmd/db.s + bi.s frwr- 12 ../src/cmd/bi/bi.s + bl.s frwr- 12 ../src/cmd/bl/bl.s + db.s frwr- 12 ../src/cmd/db/db.s hello.b frwr- 12 ../src/other/hello.b ops.s frwr- 12 ../src/other/ops.s $ 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/as.s b/src/cmd/as/as.s similarity index 100% rename from src/cmd/as.s rename to src/cmd/as/as.s diff --git a/src/cmd/bi.s b/src/cmd/bi/bi.s similarity index 100% rename from src/cmd/bi.s rename to src/cmd/bi/bi.s diff --git a/src/cmd/bl.s b/src/cmd/bl/bl.s similarity index 100% rename from src/cmd/bl.s rename to src/cmd/bl/bl.s diff --git a/src/cmd/cat.s b/src/cmd/cat/cat.s similarity index 100% rename from src/cmd/cat.s rename to src/cmd/cat/cat.s diff --git a/src/cmd/check.s b/src/cmd/check/check.s similarity index 100% rename from src/cmd/check.s rename to src/cmd/check/check.s diff --git a/src/cmd/chmod.s b/src/cmd/chmod/chmod.s similarity index 100% rename from src/cmd/chmod.s rename to src/cmd/chmod/chmod.s diff --git a/src/cmd/chown.s b/src/cmd/chown/chown.s similarity index 100% rename from src/cmd/chown.s rename to src/cmd/chown/chown.s diff --git a/src/cmd/chrm.s b/src/cmd/chrm/chrm.s similarity index 100% rename from src/cmd/chrm.s rename to src/cmd/chrm/chrm.s diff --git a/src/cmd/cp.s b/src/cmd/cp/cp.s similarity index 100% rename from src/cmd/cp.s rename to src/cmd/cp/cp.s diff --git a/src/cmd/db.s b/src/cmd/db/db.s similarity index 100% rename from src/cmd/db.s rename to src/cmd/db/db.s diff --git a/src/cmd/ds.s b/src/cmd/ds/ds.s similarity index 100% rename from src/cmd/ds.s rename to src/cmd/ds/ds.s diff --git a/src/cmd/ed1.s b/src/cmd/ed/ed1.s similarity index 100% rename from src/cmd/ed1.s rename to src/cmd/ed/ed1.s diff --git a/src/cmd/ed2.s b/src/cmd/ed/ed2.s similarity index 100% rename from src/cmd/ed2.s rename to src/cmd/ed/ed2.s diff --git a/src/cmd/init.s b/src/cmd/init/init.s similarity index 100% rename from src/cmd/init.s rename to src/cmd/init/init.s From 9eb2724cab2cdb65a06cdfe3e9db178929dada8b Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 16:44:58 -0600 Subject: [PATCH 02/22] further refactoring --- build/Makefile | 8 ++++---- src/cmd/{ => dskres}/dskres.s | 0 src/cmd/{ => dsksav}/dsksav.s | 0 3 files changed, 4 insertions(+), 4 deletions(-) rename src/cmd/{ => dskres}/dskres.s (100%) rename src/cmd/{ => dsksav}/dsksav.s (100%) diff --git a/build/Makefile b/build/Makefile index dc51765..8b6658a 100644 --- a/build/Makefile +++ b/build/Makefile @@ -128,11 +128,11 @@ $(BINDIR)/cp: $(CMDSRC)/cp/cp.s $(BINDIR)/ds: $(CMDSRC)/ds/ds.s $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds/ds.s -$(BINDIR)/dskres: $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dskres: $(CMDSRC)/dskres/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s + $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s -$(BINDIR)/dsksav: $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dsksav: $(CMDSRC)/dsksav/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s + $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s $(BINDIR)/ed: $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s diff --git a/src/cmd/dskres.s b/src/cmd/dskres/dskres.s similarity index 100% rename from src/cmd/dskres.s rename to src/cmd/dskres/dskres.s diff --git a/src/cmd/dsksav.s b/src/cmd/dsksav/dsksav.s similarity index 100% rename from src/cmd/dsksav.s rename to src/cmd/dsksav/dsksav.s From db0f9946f3b57708e4712fd1cb4d1aab4d094cdb Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 16:49:52 -0600 Subject: [PATCH 03/22] further refactoring --- src/cmd/{ => adm}/adm.s | 0 src/cmd/{ => apr}/apr.s | 0 src/cmd/{ => cas}/cas.s | 0 src/cmd/{ => cas}/cas.x | 0 src/cmd/{ => dmabs}/dmabs.s | 0 src/cmd/{ => dsw}/dsw.s | 0 6 files changed, 0 insertions(+), 0 deletions(-) rename src/cmd/{ => adm}/adm.s (100%) rename src/cmd/{ => apr}/apr.s (100%) rename src/cmd/{ => cas}/cas.s (100%) rename src/cmd/{ => cas}/cas.x (100%) rename src/cmd/{ => dmabs}/dmabs.s (100%) rename src/cmd/{ => dsw}/dsw.s (100%) diff --git a/src/cmd/adm.s b/src/cmd/adm/adm.s similarity index 100% rename from src/cmd/adm.s rename to src/cmd/adm/adm.s diff --git a/src/cmd/apr.s b/src/cmd/apr/apr.s similarity index 100% rename from src/cmd/apr.s rename to src/cmd/apr/apr.s diff --git a/src/cmd/cas.s b/src/cmd/cas/cas.s similarity index 100% rename from src/cmd/cas.s rename to src/cmd/cas/cas.s diff --git a/src/cmd/cas.x b/src/cmd/cas/cas.x similarity index 100% rename from src/cmd/cas.x rename to src/cmd/cas/cas.x diff --git a/src/cmd/dmabs.s b/src/cmd/dmabs/dmabs.s similarity index 100% rename from src/cmd/dmabs.s rename to src/cmd/dmabs/dmabs.s diff --git a/src/cmd/dsw.s b/src/cmd/dsw/dsw.s similarity index 100% rename from src/cmd/dsw.s rename to src/cmd/dsw/dsw.s From ff1fde3e9fe8226daf859a2b2b03c1a5c8248362 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 17:02:41 -0600 Subject: [PATCH 04/22] added stat and tm to build --- build/Makefile | 8 ++- src/cmd/stat/stat.s | 119 ++++++++++++++++++++++++++++++++++++++++++++ src/cmd/tm/tm.s | 74 +++++++++++++++++++++++++++ 3 files changed, 200 insertions(+), 1 deletion(-) create mode 100644 src/cmd/stat/stat.s create mode 100644 src/cmd/tm/tm.s diff --git a/build/Makefile b/build/Makefile index 8b6658a..b32581b 100644 --- a/build/Makefile +++ b/build/Makefile @@ -94,7 +94,7 @@ 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 # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -143,6 +143,12 @@ $(BINDIR)/init: $(CMDSRC)/init/init.s $(BINDIR)/db: $(CMDSRC)/db/db.s $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db/db.s +$(BINDIR)/stat: $(CMDSRC)/stat/stat.s + $(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)/stat/stat.s + +$(BINDIR)/tm: $(CMDSRC)/tm/tm.s + $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm/tm.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s diff --git a/src/cmd/stat/stat.s b/src/cmd/stat/stat.s new file mode 100644 index 0000000..26b8298 --- /dev/null +++ b/src/cmd/stat/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/tm.s b/src/cmd/tm/tm.s new file mode 100644 index 0000000..015c5f2 --- /dev/null +++ b/src/cmd/tm/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 From 5323c3791b9cc4bfac42e78e03879a739e733344 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 17:30:56 -0600 Subject: [PATCH 05/22] further refactoring plus compile instructions for the existing commands that need fixes --- a.out | 282 ++++++++++++++++++++++++++++++++++++++++++ build/Makefile | 27 +++- src/cmd/{ => bc}/bc.s | 0 3 files changed, 308 insertions(+), 1 deletion(-) create mode 100644 a.out rename src/cmd/{ => bc}/bc.s (100%) diff --git a/a.out b/a.out new file mode 100644 index 0000000..eb40f93 --- /dev/null +++ b/a.out @@ -0,0 +1,282 @@ +010000: 600000 jmp start +010001: 110003 jms initio +010002: 630003 jmp .+1 i +010003: 000000 initio: 0 +010004: 210007 lac inter-1 +010005: 040000 dac fetch +010006: 610001 jmp rinit +010007: 110010 jms inter +010010: 000000 inter: 0 +010011: 750004 las +010012: 510311 and o17 +010013: 740200 sza +010014: 110047 jms trace +010015: 220000 lac pc i +010016: 050305 dac instr +010017: 200000 lac pc +010020: 510314 and o10000 +010021: 741200 sna +010022: 610342 jmp badpc +010023: 200000 lac sp +010024: 510325 and o17700 +010025: 550325 sad o17700 +010026: 610350 jmp badsp +010027: 510314 and o10000 +010030: 741200 sna +010031: 610350 jmp badsp +010032: 210305 lac instr +010033: 550310 sad insasg +010034: 741000 skp +010035: 630010 jmp inter i +010036: 777774 -4 +010037: 340000 tad sp +010040: 040000 dac t1 +010041: 220000 lac t1 i +010042: 510314 and o10000 +010043: 741200 sna +010044: 610356 jmp badasgn +010045: 210305 lac instr +010046: 630010 jmp inter i +010047: 000000 trace: 0 +010050: 500000 and d1 +010051: 740200 sza +010052: 110070 jms dtrace +010053: 750004 las +010054: 510326 and d2 +010055: 740200 sza +010056: 110133 jms ddisp +010057: 750004 las +010060: 500000 and d4 +010061: 740200 sza +010062: 110246 jms histog +010063: 750004 las +010064: 510312 and d8 +010065: 740200 sza +010066: 600000 jmp stop +010067: 630047 jmp trace i +010070: 000000 dtrace: 0 +010071: 200000 lac pc +010072: 040010 dac 8 +010073: 220010 lac 8 i +010074: 050305 dac instr +010075: 200010 lac 8 +010076: 110375 jms octal; -4 +010077: 777774 +010100: 760040 law 040 +010101: 100000 jms putc +010102: 210305 lac instr +010103: 744000 cll; lrs 14 +010104: 640516 +010105: 350327 tad lacop +010106: 050107 dac .+1 +010107: 210000 lac .. +010110: 100000 jms putc +010111: 760040 law 040 +010112: 100000 jms putc +010113: 210305 lac instr +010114: 110375 jms octal; -4 +010115: 777774 +010116: 210305 lac instr +010117: 550307 sad inslitr +010120: 741000 skp +010121: 610127 jmp 1f +010122: 760040 law 040 +010123: 100000 jms putc +010124: 220010 lac 8 i +010125: 110375 jms octal; -6 +010126: 777772 +010127: 760012 law 012 +010130: 100000 jms putc +010131: 100000 jms flush +010132: 630070 jmp dtrace i +010133: 000000 ddisp: 0 +010134: 110224 jms dspinit +010135: 210304 lac dspbp +010136: 040010 dac 8 +010137: 200000 lac dp +010140: 550302 sad olddp +010141: 741000 skp +010142: 110157 jms dspblk +010143: 200000 lac pc +010144: 110214 jms dspnt +010145: 200000 lac sp +010146: 110214 jms dspnt +010147: 200000 lac lastv +010150: 110214 jms dspnt +010151: 777777 -1 +010152: 060000 dac B i +010153: 220000 lac pbs i +010154: 740200 sza +010155: 610153 jmp .-2 +010156: 630133 jmp ddisp i +010157: 000000 dspblk: 0 +010160: 210303 lac dspbuf +010161: 040010 dac 8 +010162: 200000 lac dp +010163: 040000 dac t1 +010164: 140000 dzm t2 +010165: 200000 lac t1 +010166: 741200 sna +010167: 610205 jmp 1f +010170: 210320 lac o216000 " dx -20 +010171: 060010 dac 8 i +010172: 200000 lac t2 +010173: 350322 tad o20 +010174: 040000 dac t2 +010175: 200000 lac t1 +010176: 340000 tad d1 +010177: 040000 dac t3 +010200: 220000 lac t3 i +010201: 110214 jms dspnt +010202: 220000 lac t1 i +010203: 040000 dac t1 +010204: 610165 jmp 1b +010205: 210321 lac o160020 " sx 20 +010206: 340000 tad t2 +010207: 070303 dac dspbuf i +010210: 060010 dac 8 i +010211: 200010 lac 8 +010212: 050304 dac dspbp +010213: 630157 jmp dspblk i +010214: 000000 dspnt: 0 +010215: 510317 and o7777 +010216: 660502 lrss 2 +010217: 250323 xor o164000 " sy 0 +010220: 060010 dac 8 i +010221: 210324 lac o17010 +010222: 060010 dac 8 i +010223: 630214 jmp dspnt i +010224: 000000 dspinit: 0 +010225: 777777 -1 +010226: 350224 tad dspinit +010227: 050224 dac dspinit +010230: 777324 -300 +010231: 340000 tad lastv +010232: 040000 dac lastv +010233: 050303 dac dspbuf +010234: 777777 -1 +010235: 070224 dac dspinit i +010236: 070303 dac dspbuf i +010237: 150302 dzm olddp +010240: 210303 lac dspbuf +010241: 020027 sys capt +010242: 760015 law 13 +010243: 020025 sys sysloc +010244: 040000 dac pbs +010245: 630224 jmp dspinit i +010246: 000000 histog: 0 +010247: 110260 jms hisinit +010250: 200000 lac pc +010251: 640506 lrs 6 +010252: 510313 and o77 +010253: 350301 tad histbuf +010254: 040000 dac t1 +010255: 460000 isz t1 i +010256: 630246 jmp histog i +010257: 610257 jmp . +010260: 000000 hisinit: 0 +010261: 777777 -1 +010262: 350260 tad hisinit +010263: 050260 dac hisinit +010264: 777777 -1 +010265: 070260 dac hisinit i +010266: 777700 -64 +010267: 040000 dac t1 +010270: 340000 tad lastv +010271: 040000 dac lastv +010272: 050301 dac histbuf +010273: 340000 tad dm1 +010274: 040010 dac 8 +010275: 020010 dsm 8 i +010276: 440000 isz t1 +010277: 610275 jmp 1b +010300: 630260 jmp hisinit i +010301: 000000 histbuf: 0 +010302: 000000 olddp: 0 +010303: 000000 dspbuf: 0 +010304: 000000 dspbp: 0 +010305: 000000 instr: 0 +010306: 000000 obs: 0 +010307: 000005 inslitr: n 5 +010310: 000001 insasg: b 1 +010311: 000017 o17: 017 +010312: 000010 d8: 8 +010313: 000077 o77: 077 +010314: 010000 o10000: 010000 +010315: 000005 d5: 5 +010316: 000060 o60: 060 +010317: 007777 o7777: 07777 +010320: 216000 o216000: 0216000 +010321: 160020 o160020: 0160020 +010322: 000020 o20: 020 +010323: 164000 o164000: 0164000 +010324: 017010 o17010: 017010 +010325: 017700 o17700: 017700 +010326: 000002 d2: 2 +010327: 210327 lacop: lac . +010330: 000141 a>;b>;c>;f>;n>;s>;t>;u>;x>;y> +010331: 000142 +010332: 000143 +010333: 000146 +010334: 000156 +010335: 000163 +010336: 000164 +010337: 000165 +010340: 000170 +010341: 000171 +010342: 100000 jms flush +010343: 200000 lac d1 +010344: 020005 sys write; mpc; mpcs +010345: 010364 +010346: 000003 +010347: 600000 jmp stop +010350: 100000 jms flush +010351: 200000 lac d1 +010352: 020005 sys write; msp; msps +010353: 010367 +010354: 000003 +010355: 600000 jmp stop +010356: 100000 jms flush +010357: 200000 lac d1 +010360: 020005 sys write; mas; mass +010361: 010372 +010362: 000003 +010363: 600000 jmp stop +010364: 000012 012;;012 +010365: 160143 +010366: 000012 +010367: 000012 012;;012 +010370: 163160 +010371: 000012 +010372: 000012 012;;012 +010373: 141163 +010374: 000012 +010375: 000000 octal: 0 +010376: 652000 lmq +010377: 210315 lac d5 +010400: 370375 tad octal i +010401: 740001 cma +010402: 050430 dac 2f +010403: 741200 sna +010404: 610410 jmp 3f +010405: 660603 llss 3 +010406: 450430 isz 2f +010407: 610405 jmp 1b +010410: 230375 lac octal i +010411: 050430 dac 2f +010412: 641002 lacq +010413: 050431 dac 2f+1 +010414: 210431 lac 2f+1 +010415: 652000 lmq +010416: 660603 ecla llss 3 +010417: 350316 tad o60 +010420: 100000 jms putc +010421: 210431 lac 2f+1 +010422: 660703 alss 3 +010423: 050431 dac 2f+1 +010424: 450430 isz 2f +010425: 610414 jmp 1b +010426: 450375 isz octal +010427: 630375 jmp octal i +010430: 000000 2: 0;0 +010431: 000000 diff --git a/build/Makefile b/build/Makefile index b32581b..da7aa76 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 @@ -94,7 +95,7 @@ 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)/stat $(BINDIR)/tm + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm #$(BINDIR)/dmabs #$(BINDIR)/st # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -149,6 +150,30 @@ $(BINDIR)/stat: $(CMDSRC)/stat/stat.s $(BINDIR)/tm: $(CMDSRC)/tm/tm.s $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm/tm.s +# -- compile errors +$(BINDIR)/dmabs: $(CMDSRC)/dmabs/dmabs.s + $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs/dmabs.s + +# -- compile errors +$(BINDIR)/st: $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GAMESRC)/st/st4.s $(GAMESRC)/st/st5.s $(GAMESRC)/st/st6.s $(GAMESRC)/st/st7.s + $(AS) $(ASARGS) -o $(BINDIR)/st $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GAMESRC)/st/st4.s $(GAMESRC)/st/st5.s $(GAMESRC)/st/st6.s $(GAMESRC)/st/st7.s + +# -- compile errors +$(BINDIR)/bc: $(CMDSRC)/bc/bc.s + $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc/bc.s + +# -- compile errors +$(BINDIR)/dsw: $(CMDSRC)/dsw/dsw.s + $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw/dsw.s + +# -- compile errors +$(BINDIR)/apr: $(CMDSRC)/apr/apr.s + $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr/apr.s + +# -- compile errors +$(BINDIR)/adm: $(CMDSRC)/adm/adm.s + $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm/adm.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s diff --git a/src/cmd/bc.s b/src/cmd/bc/bc.s similarity index 100% rename from src/cmd/bc.s rename to src/cmd/bc/bc.s From 5fb23f7b530b0d15c8d2fab8ebf5901811f553dd Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 17:54:00 -0600 Subject: [PATCH 06/22] cleanup of source tree --- .gitignore | 1 + binaries/boot.rim | 1 - binaries/image.fs | Bin 4096000 -> 0 bytes binaries/unixv0.simh | 31 ------------------------------- 4 files changed, 1 insertion(+), 32 deletions(-) delete mode 100644 binaries/boot.rim delete mode 100644 binaries/image.fs delete mode 100644 binaries/unixv0.simh diff --git a/.gitignore b/.gitignore index 2a854d2..51373d6 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ build/n.out build/alt/a.lst build/alt/a.out build/alt/image.fs +/.DS_Store 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 6093ce7d162db70a55710c694aaf7054bddcb9c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096000 zcmZP=1*0J_8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*U^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3P$Xb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2A{7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c1*0J_8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqhK@yMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU=)moz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kW!5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S`WG8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiQ~ zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0q!DtAKhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinC>RZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtqq)hQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1J zhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kin zXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD zjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mk zz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeDjE2By z2#kinXb6mkz-S1JhQMeDjE2By2#kinXb6mg(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!83@Fd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?3PwXRZa(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c z4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON 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 z(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R z7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7fzc2c4S~@R7!85Z5Eu=C(GVC7 zfzc2c4S~@R7zLvtFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF z0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71* zAut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@? z8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*O zqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0;3@?8Umvs zFd71*Aut*OqaiRF0;6Cw1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n zMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ON zU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU z1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0q zLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$( zGz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU1V%$(Gz3ONU^E0qLtr!n ZMnhmU1V%$(Gz3ONU^E0qLtt=(000_U>9YU; 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 From 0e9e447ada8821b6f8e77f884f8c45b9e770139f Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:13:08 -0600 Subject: [PATCH 07/22] added sh.s to build fixed dsw.s typo --- a.out | 665 ++++++++++++++++++++++++++-------------------- build/Makefile | 8 +- scans/dsw.s | 2 +- src/cmd/dsw/dsw.s | 2 +- src/cmd/sh/sh.s | 430 ++++++++++++++++++++++++++++++ 5 files changed, 821 insertions(+), 286 deletions(-) create mode 100644 src/cmd/sh/sh.s diff --git a/a.out b/a.out index eb40f93..3e09824 100644 --- a/a.out +++ b/a.out @@ -1,282 +1,385 @@ -010000: 600000 jmp start -010001: 110003 jms initio -010002: 630003 jmp .+1 i -010003: 000000 initio: 0 -010004: 210007 lac inter-1 -010005: 040000 dac fetch -010006: 610001 jmp rinit -010007: 110010 jms inter -010010: 000000 inter: 0 -010011: 750004 las -010012: 510311 and o17 -010013: 740200 sza -010014: 110047 jms trace -010015: 220000 lac pc i -010016: 050305 dac instr -010017: 200000 lac pc -010020: 510314 and o10000 -010021: 741200 sna -010022: 610342 jmp badpc -010023: 200000 lac sp -010024: 510325 and o17700 -010025: 550325 sad o17700 -010026: 610350 jmp badsp -010027: 510314 and o10000 -010030: 741200 sna -010031: 610350 jmp badsp -010032: 210305 lac instr -010033: 550310 sad insasg -010034: 741000 skp -010035: 630010 jmp inter i -010036: 777774 -4 -010037: 340000 tad sp -010040: 040000 dac t1 -010041: 220000 lac t1 i -010042: 510314 and o10000 -010043: 741200 sna -010044: 610356 jmp badasgn -010045: 210305 lac instr -010046: 630010 jmp inter i -010047: 000000 trace: 0 -010050: 500000 and d1 -010051: 740200 sza -010052: 110070 jms dtrace -010053: 750004 las -010054: 510326 and d2 -010055: 740200 sza -010056: 110133 jms ddisp -010057: 750004 las -010060: 500000 and d4 -010061: 740200 sza -010062: 110246 jms histog -010063: 750004 las -010064: 510312 and d8 -010065: 740200 sza -010066: 600000 jmp stop -010067: 630047 jmp trace i -010070: 000000 dtrace: 0 -010071: 200000 lac pc -010072: 040010 dac 8 -010073: 220010 lac 8 i -010074: 050305 dac instr -010075: 200010 lac 8 -010076: 110375 jms octal; -4 -010077: 777774 -010100: 760040 law 040 -010101: 100000 jms putc -010102: 210305 lac instr -010103: 744000 cll; lrs 14 -010104: 640516 -010105: 350327 tad lacop -010106: 050107 dac .+1 -010107: 210000 lac .. -010110: 100000 jms putc -010111: 760040 law 040 -010112: 100000 jms putc -010113: 210305 lac instr -010114: 110375 jms octal; -4 -010115: 777774 -010116: 210305 lac instr -010117: 550307 sad inslitr -010120: 741000 skp -010121: 610127 jmp 1f -010122: 760040 law 040 -010123: 100000 jms putc -010124: 220010 lac 8 i -010125: 110375 jms octal; -6 -010126: 777772 -010127: 760012 law 012 -010130: 100000 jms putc -010131: 100000 jms flush -010132: 630070 jmp dtrace i -010133: 000000 ddisp: 0 -010134: 110224 jms dspinit -010135: 210304 lac dspbp -010136: 040010 dac 8 -010137: 200000 lac dp -010140: 550302 sad olddp -010141: 741000 skp -010142: 110157 jms dspblk -010143: 200000 lac pc -010144: 110214 jms dspnt -010145: 200000 lac sp -010146: 110214 jms dspnt -010147: 200000 lac lastv -010150: 110214 jms dspnt -010151: 777777 -1 -010152: 060000 dac B i -010153: 220000 lac pbs i -010154: 740200 sza -010155: 610153 jmp .-2 -010156: 630133 jmp ddisp i -010157: 000000 dspblk: 0 -010160: 210303 lac dspbuf -010161: 040010 dac 8 -010162: 200000 lac dp -010163: 040000 dac t1 -010164: 140000 dzm t2 -010165: 200000 lac t1 -010166: 741200 sna -010167: 610205 jmp 1f -010170: 210320 lac o216000 " dx -20 -010171: 060010 dac 8 i -010172: 200000 lac t2 -010173: 350322 tad o20 -010174: 040000 dac t2 -010175: 200000 lac t1 -010176: 340000 tad d1 -010177: 040000 dac t3 -010200: 220000 lac t3 i -010201: 110214 jms dspnt -010202: 220000 lac t1 i -010203: 040000 dac t1 -010204: 610165 jmp 1b -010205: 210321 lac o160020 " sx 20 -010206: 340000 tad t2 -010207: 070303 dac dspbuf i -010210: 060010 dac 8 i -010211: 200010 lac 8 -010212: 050304 dac dspbp -010213: 630157 jmp dspblk i -010214: 000000 dspnt: 0 -010215: 510317 and o7777 -010216: 660502 lrss 2 -010217: 250323 xor o164000 " sy 0 -010220: 060010 dac 8 i -010221: 210324 lac o17010 -010222: 060010 dac 8 i -010223: 630214 jmp dspnt i -010224: 000000 dspinit: 0 -010225: 777777 -1 -010226: 350224 tad dspinit -010227: 050224 dac dspinit -010230: 777324 -300 -010231: 340000 tad lastv -010232: 040000 dac lastv -010233: 050303 dac dspbuf -010234: 777777 -1 -010235: 070224 dac dspinit i -010236: 070303 dac dspbuf i -010237: 150302 dzm olddp -010240: 210303 lac dspbuf -010241: 020027 sys capt -010242: 760015 law 13 -010243: 020025 sys sysloc -010244: 040000 dac pbs -010245: 630224 jmp dspinit i -010246: 000000 histog: 0 -010247: 110260 jms hisinit -010250: 200000 lac pc -010251: 640506 lrs 6 -010252: 510313 and o77 -010253: 350301 tad histbuf -010254: 040000 dac t1 -010255: 460000 isz t1 i -010256: 630246 jmp histog i -010257: 610257 jmp . -010260: 000000 hisinit: 0 -010261: 777777 -1 -010262: 350260 tad hisinit -010263: 050260 dac hisinit -010264: 777777 -1 -010265: 070260 dac hisinit i -010266: 777700 -64 -010267: 040000 dac t1 -010270: 340000 tad lastv -010271: 040000 dac lastv -010272: 050301 dac histbuf -010273: 340000 tad dm1 -010274: 040010 dac 8 -010275: 020010 dsm 8 i -010276: 440000 isz t1 -010277: 610275 jmp 1b -010300: 630260 jmp hisinit i -010301: 000000 histbuf: 0 -010302: 000000 olddp: 0 -010303: 000000 dspbuf: 0 -010304: 000000 dspbp: 0 -010305: 000000 instr: 0 -010306: 000000 obs: 0 -010307: 000005 inslitr: n 5 -010310: 000001 insasg: b 1 -010311: 000017 o17: 017 -010312: 000010 d8: 8 -010313: 000077 o77: 077 -010314: 010000 o10000: 010000 -010315: 000005 d5: 5 -010316: 000060 o60: 060 -010317: 007777 o7777: 07777 -010320: 216000 o216000: 0216000 -010321: 160020 o160020: 0160020 -010322: 000020 o20: 020 -010323: 164000 o164000: 0164000 -010324: 017010 o17010: 017010 -010325: 017700 o17700: 017700 -010326: 000002 d2: 2 -010327: 210327 lacop: lac . -010330: 000141 a>;b>;c>;f>;n>;s>;t>;u>;x>;y> -010331: 000142 -010332: 000143 -010333: 000146 -010334: 000156 -010335: 000163 -010336: 000164 -010337: 000165 -010340: 000170 -010341: 000171 -010342: 100000 jms flush -010343: 200000 lac d1 -010344: 020005 sys write; mpc; mpcs -010345: 010364 -010346: 000003 -010347: 600000 jmp stop -010350: 100000 jms flush -010351: 200000 lac d1 -010352: 020005 sys write; msp; msps -010353: 010367 -010354: 000003 -010355: 600000 jmp stop -010356: 100000 jms flush -010357: 200000 lac d1 -010360: 020005 sys write; mas; mass -010361: 010372 -010362: 000003 -010363: 600000 jmp stop -010364: 000012 012;;012 -010365: 160143 -010366: 000012 -010367: 000012 012;;012 -010370: 163160 -010371: 000012 -010372: 000012 012;;012 -010373: 141163 -010374: 000012 -010375: 000000 octal: 0 -010376: 652000 lmq -010377: 210315 lac d5 -010400: 370375 tad octal i -010401: 740001 cma -010402: 050430 dac 2f -010403: 741200 sna -010404: 610410 jmp 3f -010405: 660603 llss 3 -010406: 450430 isz 2f -010407: 610405 jmp 1b -010410: 230375 lac octal i -010411: 050430 dac 2f -010412: 641002 lacq -010413: 050431 dac 2f+1 -010414: 210431 lac 2f+1 +010000: 610013 jmp shell +010001: 160010 dzm i 8 +010002: 450000 isz clear +010003: 110001 jms 1b +010004: 641002 lacq +010005: 617771 jmp 017771 +010006: 010005 zerop: .-1 +010007: 210532 lac d1 +010010: 020005 sys write; errmes; 1 +010011: 010565 +010012: 000001 +010013: 210532 lac d1 +010014: 020005 sys write; ready; 1 +010015: 010567 +010016: 000001 +010017: 210570 lac delim +010020: 550553 sad newln +010021: 110421 jms rline +010022: 110217 jms getcom +010023: 211104 lac narg +010024: 741200 sna +010025: 610051 jmp comretrn +010026: 211105 lac args +010027: 550566 sad chcom +010030: 741000 skp +010031: 610035 jmp 3f +010032: 211106 lac args+1 +010033: 550574 sad spsp +010034: 610475 jmp doch +010035: 020035 sys fork +010036: 741000 skp +010037: 610055 jmp loadcom +010040: 741100 spa +010041: 610007 jmp comerr +010042: 652000 lmq +010043: 210570 lac delim +010044: 550546 sad amper +010045: 610017 jmp shell1 +010046: 641002 lacq " hand written +010047: 650000 clq " send mesg to child +010050: 020033 sys smes +010051: 210570 lac delim +010052: 550553 sad newln +010053: 610013 jmp shell +010054: 610017 jmp shell1 +010055: 020003 sys open; args; 0 +010056: 011105 +010057: 000000 +010060: 740100 sma +010061: 610111 jmp 1f +010062: 020012 sys link; system; args; args +010063: 010571 +010064: 011105 +010065: 011105 +010066: 741100 spa +010067: 610073 jmp 2f +010070: 777777 -1 +010071: 051103 dac lnkflg +010072: 610055 jmp loadcom +010073: 211103 lac lnkflg +010074: 741200 sna +010075: 610100 jmp 3f +010076: 020013 sys unlink; args +010077: 011105 +010100: 210532 lac d1 +010101: 020005 sys write; args; 4 +010102: 011105 +010103: 000004 +010104: 210532 lac d1 +010105: 020005 sys write; errmes; 1 +010106: 010565 +010107: 000001 +010110: 020016 sys exit +010111: 211103 lac lnkflg +010112: 741200 sna +010113: 610116 jmp 1f +010114: 020013 sys unlink; args +010115: 011105 +010116: 210555 lac in +010117: 741200 sna +010120: 610140 jmp 2f +010121: 750000 cla +010122: 020011 sys close +010123: 020003 sys open; in; 0 +010124: 010555 +010125: 000000 +010126: 740100 sma +010127: 610140 jmp 2f +010130: 210532 lac d1 +010131: 020005 sys write; in; 4 +010132: 010555 +010133: 000004 +010134: 020005 sys write; errmes; 1 +010135: 010565 +010136: 000001 +010137: 020016 sys exit +010140: 210561 lac out +010141: 741200 sna +010142: 610152 jmp 1f +010143: 210532 lac d1 +010144: 020011 sys close +010145: 210540 lac o17 +010146: 020006 sys creat; out +010147: 010561 +010150: 741100 spa +010151: 020016 sys exit +010152: 211104 lac narg +010153: 740001 cma +010154: 051102 dac t1 +010155: 350541 tad o17771 +010156: 057777 dac 017777 +010157: 350533 tad dm1 +010160: 040010 dac 8 +010161: 510542 and o7777 +010162: 050213 dac boot+2 +010163: 740001 cma +010164: 350537 tad d7 +010165: 040011 dac close +010166: 210575 lac nargp +010167: 040011 dac 9 +010170: 220011 lac i 9 +010171: 060010 dac i 8 +010172: 451102 isz t1 +010173: 610170 jmp 2b +010174: 210576 lac bootp +010175: 040011 dac 9 +010176: 777772 -6 +010177: 051102 dac t1 +010200: 220011 lac i 9 +010201: 060010 dac i 8 +010202: 451102 isz t1 +010203: 610200 jmp 2b +010204: 210536 lac d2 +010205: 652000 lmq +010206: 210006 lac zerop +010207: 040010 dac 8 +010210: 610001 jmp clear+1 +010211: 020004 sys read; 4096; .. +010212: 010000 +010213: 010000 +010214: 641002 lacq +010215: 020011 sys close +010216: 610000 jmp 4096 +010217: 000000 getcom: 0 +010220: 771104 law args-1 +010221: 040012 dac 10 +010222: 150555 dzm in +010223: 150561 dzm out +010224: 151104 dzm narg +010225: 151103 dzm lnkflg +010226: 110400 jms get +010227: 550544 sad gr +010230: 610261 jmp cgr +010231: 550545 sad ls +010232: 610254 jmp cls +010233: 550546 sad amper +010234: 610252 jmp endcom +010235: 550547 sad semic +010236: 610252 jmp endcom +010237: 550553 sad newln +010240: 610252 jmp endcom +010241: 550550 sad space +010242: 610226 jmp nparm-1 +010243: 652000 lmq +010244: 211104 lac narg +010245: 350534 tad d4 +010246: 051104 dac narg +010247: 641002 lacq +010250: 110304 jms getparm +010251: 610227 jmp nparm +010252: 050570 dac delim +010253: 630217 jmp getcom i +010254: 110400 jms get +010255: 110304 jms getparm +010256: 051102 dac t1 +010257: 770554 law in-1 +010260: 610265 jmp cpio +010261: 110400 jms get +010262: 110304 jms getparm +010263: 051102 dac t1 +010264: 770560 law out-1 +010265: 040013 dac 11 +010266: 200012 lac 10 +010267: 350535 tad dm4 +010270: 040012 dac 10 +010271: 652000 lmq +010272: 777774 -4 +010273: 051101 dac c1 +010274: 220012 lac i 10 +010275: 060013 dac i 11 +010276: 451101 isz c1 +010277: 610274 jmp 1b +010300: 641002 lacq +010301: 040012 dac 10 +010302: 211102 lac t1 +010303: 610227 jmp nparm +010304: 000000 getparm:0 +010305: 652000 lmq +010306: 777770 -8 +010307: 051101 dac c1 +010310: 641002 lacq +010311: 741000 skp +010312: 110400 jms get +010313: 550550 sad space +010314: 610312 jmp 1b +010315: 110365 jms checkdlm +010316: 610007 jmp comerr +010317: 610323 jmp 2f +010320: 610400 jmp get +010321: 110365 jms checkdlm +010322: 610350 jmp fill1 +010323: 660711 alss 9 +010324: 451101 isz c1 +010325: 652000 lmq +010326: 110400 jms get +010327: 110365 jms checkdlm +010330: 610341 jmp fill +010331: 640002 omq +010332: 060012 dac i 10 +010333: 451101 isz c1 +010334: 610320 jmp 1b +010335: 110400 jms get +010336: 110365 jms checkdlm +010337: 630304 jmp i getparm +010340: 610335 jmp 1b +010341: 051102 dac t1 +010342: 210550 lac space +010343: 640002 omq +010344: 060012 dac i 10 +010345: 451101 isz c1 +010346: 740000 nop +010347: 211102 lac t1 +010350: 652000 lmq +010351: 211101 lac c1 +010352: 741100 spa +010353: 610356 jmp 1f +010354: 641002 lacq +010355: 630304 jmp i getparm +010356: 210574 lac spsp +010357: 060012 dac i 10 +010360: 451101 isz c1 +010361: 451101 isz c1 +010362: 610356 jmp 1b +010363: 641002 lacq +010364: 630304 jmp i getparm +010365: 000000 checkdlm: 0 +010366: 550550 sad space +010367: 630365 jmp i checkdlm +010370: 550553 sad newln +010371: 630365 jmp i checkdlm +010372: 550546 sad amper +010373: 630365 jmp i checkdlm +010374: 550547 sad semic +010375: 630365 jmp i checkdlm +010376: 450365 isz checkdlm +010377: 630365 jmp i checkdlm +010400: 000000 get: 0 +010401: 220010 lac i 8 +010402: 550554 sad slash +010403: 741000 skp +010404: 630400 jmp i get +010405: 220010 lac i 8 +010406: 550553 sad newln +010407: 741000 skp +010410: 610007 jmp comerr +010411: 641002 lacq +010412: 050420 dac 1f +010413: 110421 jms rline +010414: 210420 lac 1f 010415: 652000 lmq -010416: 660603 ecla llss 3 -010417: 350316 tad o60 -010420: 100000 jms putc -010421: 210431 lac 2f+1 -010422: 660703 alss 3 -010423: 050431 dac 2f+1 -010424: 450430 isz 2f -010425: 610414 jmp 1b -010426: 450375 isz octal -010427: 630375 jmp octal i -010430: 000000 2: 0;0 -010431: 000000 +010416: 210550 lac space +010417: 630400 jmp i get +010420: 000000 1: 0 +010421: 000000 rline:0 +010422: 770600 law lineb-1 +010423: 040017 dac 15 +010424: 040010 dac 8 +010425: 110445 jms getcha +010426: 060017 dac i 15 +010427: 550553 sad newln +010430: 630421 jmp i rline +010431: 550551 sad sharp +010432: 610436 jmp psharp +010433: 550552 sad atsign +010434: 610422 jmp 2b +010435: 610425 jmp 1b +010436: 777777 -1 +010437: 340017 tad 15 +010440: 550422 sad 2b +010441: 610422 jmp 2b +010442: 350533 tad dm1 +010443: 040017 dac 15 +010444: 610425 jmp 1b +010445: 000000 getcha: 0 +010446: 210577 lac char +010447: 150577 dzm char +010450: 740200 sza +010451: 630445 jmp i getcha +010452: 450600 isz nread +010453: 610467 jmp 1f +010454: 750000 cla +010455: 020004 sys read; inbuf; 64 +010456: 011001 +010457: 000100 +010460: 741300 spa sna +010461: 610526 jmp lgout +010462: 740001 cma +010463: 350532 tad d1 +010464: 050600 dac nread +010465: 771000 law inbuf-1 +010466: 040016 dac 14 +010467: 220016 lac i 14 +010470: 652000 lmq +010471: 510543 and o777 +010472: 050577 dac char +010473: 661611 ecla llss 9 +010474: 630445 jmp i getcha +010475: 211104 lac narg +010476: 660502 lrss 2 +010477: 740001 cma +010500: 350532 tad d1 +010501: 051104 dac narg +010502: 771111 law args+4 +010503: 050510 dac 1f +010504: 451104 isz narg +010505: 741000 skp +010506: 610051 jmp comretrn +010507: 020021 sys chdir; 1:0 +010510: 000000 +010511: 741100 spa +010512: 610517 jmp cherr +010513: 210510 lac 1b +010514: 350534 tad d4 +010515: 050510 dac 1b +010516: 610504 jmp 2b +010517: 210510 lac 1b +010520: 050523 dac .+3 +010521: 210532 lac d1 +010522: 020005 sys write; ..; 4 +010523: 010000 +010524: 000004 +010525: 610007 jmp comerr +010526: 650000 clq +010527: 210532 lac d1 +010530: 020033 sys smes +010531: 020016 sys exit +010532: 000001 d1: 1 +010533: 777777 dm1: -1 +010534: 000004 d4: 4 +010535: 777773 dm4: -5 +010536: 000002 d2: 2 +010537: 000007 d7: 7 +010540: 000017 o17: 017 +010541: 017771 o17771: 017771 +010542: 007777 o7777: 07777 +010543: 000777 o777: 0777 +010544: 000076 gr: 076 +010545: 000074 ls: 074 +010546: 000046 amper: &> +010547: 000073 semic: 073 +010550: 000040 space: 040 +010551: 000043 sharp: 043 +010552: 000100 atsign: 0100 +010553: 000012 newln: 012 +010554: 000057 slash: 057 +010555: 000000 in: 0;0;0;0 +010556: 000000 +010557: 000000 +010560: 000000 +010561: 000000 out: 0;0;0;0 +010562: 000000 +010563: 000000 +010564: 000000 +010565: 077012 errmes: 077012 +010566: 143150 chcom: +010567: 100040 ready: 0100040 +010570: 000012 delim: 012 +010571: 163171 system: ; ; ; spsp: 040040 +010572: 163164 +010573: 145155 +010574: 040040 +010575: 011103 nargp: narg-1 +010576: 010210 bootp: boot-1 +010577: 000000 char: 0 +010600: 777777 nread: -1 diff --git a/build/Makefile b/build/Makefile index da7aa76..9298cc8 100644 --- a/build/Makefile +++ b/build/Makefile @@ -85,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: @@ -95,7 +95,7 @@ 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)/stat $(BINDIR)/tm #$(BINDIR)/dmabs #$(BINDIR)/st + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -162,7 +162,6 @@ $(BINDIR)/st: $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GA $(BINDIR)/bc: $(CMDSRC)/bc/bc.s $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc/bc.s -# -- compile errors $(BINDIR)/dsw: $(CMDSRC)/dsw/dsw.s $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw/dsw.s @@ -174,6 +173,9 @@ $(BINDIR)/apr: $(CMDSRC)/apr/apr.s $(BINDIR)/adm: $(CMDSRC)/adm/adm.s $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm/adm.s +$(BINDIR)/sh: $(CMDSRC)/sh/sh.s + $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh/sh.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.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/cmd/dsw/dsw.s b/src/cmd/dsw/dsw.s index a197aca..1a17271 100644 --- a/src/cmd/dsw/dsw.s +++ b/src/cmd/dsw/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/sh/sh.s b/src/cmd/sh/sh.s new file mode 100644 index 0000000..5fbd9cc --- /dev/null +++ b/src/cmd/sh/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: From 6d7398b2f672575d81f48ef77dc6847746a4a069 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:16:19 -0600 Subject: [PATCH 08/22] fixed apr.s and added to build --- build/Makefile | 2 +- scans/apr.s | 2 +- src/cmd/apr/apr.s | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/build/Makefile b/build/Makefile index 9298cc8..92c1fb0 100644 --- a/build/Makefile +++ b/build/Makefile @@ -95,7 +95,7 @@ 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)/stat $(BINDIR)/tm $(BINDIR)/dsw + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ diff --git a/scans/apr.s b/scans/apr.s index bf8f84b..4c1cda9 100644 --- a/scans/apr.s +++ b/scans/apr.s @@ -50,7 +50,7 @@ floop: jms putc law 044 jms putc - law040 + law 040 jms putc floop1: diff --git a/src/cmd/apr/apr.s b/src/cmd/apr/apr.s index 255c003..5a93dc0 100644 --- a/src/cmd/apr/apr.s +++ b/src/cmd/apr/apr.s @@ -49,7 +49,7 @@ floop: jms putc law 044 jms putc - law040 + law 040 jms putc floop1: From 0c99e42347efa8daf2deec6dce1f20e5a9dac73f Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:25:03 -0600 Subject: [PATCH 09/22] fixed typos in adm.s --- scans/adm.s | 4 ++-- src/cmd/adm/adm.s | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scans/adm.s b/scans/adm.s index e5102a2..d0cabd8 100644 --- a/scans/adm.s +++ b/scans/adm.s @@ -218,7 +218,7 @@ discon: m1: ;;;012 -m2s = .-m1 +m1s = .-m1 m2: ;;;;;;012 -m2s = .-m1 +m1s = .-m1 m2: ;;; Date: Fri, 18 Oct 2019 18:32:54 -0600 Subject: [PATCH 10/22] added tm, dsw, apr onto file system login: ken password: ken @ tm 00:00:05.7 @ dsw (0HoHk @ apr usage; apr files dial x5380 on the dataphone @ Simulation stopped, PC: 01060 (LAC I 10) sim> quit Goodbye --- build/proto | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build/proto b/build/proto index af8d82c..e09ea10 100644 --- a/build/proto +++ b/build/proto @@ -20,6 +20,7 @@ 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 cat frwr- -1 bin/cat @@ -33,6 +34,7 @@ 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 ln frwr- -1 bin/ln @@ -44,6 +46,8 @@ dd drwr- -1 4 password frw-- -1 fs/password sh frwr- -1 bin/sh stat frwr- -1 bin/stat + tm frwr- -1 bin/tm + $ ken drwr- 10 system l---- 3 From d7d7651fbcd2f814888f9e8ebdf63aa03426a3ab Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:38:12 -0600 Subject: [PATCH 11/22] removed a.out --- a.out | 385 ---------------------------------------------------------- 1 file changed, 385 deletions(-) delete mode 100644 a.out diff --git a/a.out b/a.out deleted file mode 100644 index 3e09824..0000000 --- a/a.out +++ /dev/null @@ -1,385 +0,0 @@ -010000: 610013 jmp shell -010001: 160010 dzm i 8 -010002: 450000 isz clear -010003: 110001 jms 1b -010004: 641002 lacq -010005: 617771 jmp 017771 -010006: 010005 zerop: .-1 -010007: 210532 lac d1 -010010: 020005 sys write; errmes; 1 -010011: 010565 -010012: 000001 -010013: 210532 lac d1 -010014: 020005 sys write; ready; 1 -010015: 010567 -010016: 000001 -010017: 210570 lac delim -010020: 550553 sad newln -010021: 110421 jms rline -010022: 110217 jms getcom -010023: 211104 lac narg -010024: 741200 sna -010025: 610051 jmp comretrn -010026: 211105 lac args -010027: 550566 sad chcom -010030: 741000 skp -010031: 610035 jmp 3f -010032: 211106 lac args+1 -010033: 550574 sad spsp -010034: 610475 jmp doch -010035: 020035 sys fork -010036: 741000 skp -010037: 610055 jmp loadcom -010040: 741100 spa -010041: 610007 jmp comerr -010042: 652000 lmq -010043: 210570 lac delim -010044: 550546 sad amper -010045: 610017 jmp shell1 -010046: 641002 lacq " hand written -010047: 650000 clq " send mesg to child -010050: 020033 sys smes -010051: 210570 lac delim -010052: 550553 sad newln -010053: 610013 jmp shell -010054: 610017 jmp shell1 -010055: 020003 sys open; args; 0 -010056: 011105 -010057: 000000 -010060: 740100 sma -010061: 610111 jmp 1f -010062: 020012 sys link; system; args; args -010063: 010571 -010064: 011105 -010065: 011105 -010066: 741100 spa -010067: 610073 jmp 2f -010070: 777777 -1 -010071: 051103 dac lnkflg -010072: 610055 jmp loadcom -010073: 211103 lac lnkflg -010074: 741200 sna -010075: 610100 jmp 3f -010076: 020013 sys unlink; args -010077: 011105 -010100: 210532 lac d1 -010101: 020005 sys write; args; 4 -010102: 011105 -010103: 000004 -010104: 210532 lac d1 -010105: 020005 sys write; errmes; 1 -010106: 010565 -010107: 000001 -010110: 020016 sys exit -010111: 211103 lac lnkflg -010112: 741200 sna -010113: 610116 jmp 1f -010114: 020013 sys unlink; args -010115: 011105 -010116: 210555 lac in -010117: 741200 sna -010120: 610140 jmp 2f -010121: 750000 cla -010122: 020011 sys close -010123: 020003 sys open; in; 0 -010124: 010555 -010125: 000000 -010126: 740100 sma -010127: 610140 jmp 2f -010130: 210532 lac d1 -010131: 020005 sys write; in; 4 -010132: 010555 -010133: 000004 -010134: 020005 sys write; errmes; 1 -010135: 010565 -010136: 000001 -010137: 020016 sys exit -010140: 210561 lac out -010141: 741200 sna -010142: 610152 jmp 1f -010143: 210532 lac d1 -010144: 020011 sys close -010145: 210540 lac o17 -010146: 020006 sys creat; out -010147: 010561 -010150: 741100 spa -010151: 020016 sys exit -010152: 211104 lac narg -010153: 740001 cma -010154: 051102 dac t1 -010155: 350541 tad o17771 -010156: 057777 dac 017777 -010157: 350533 tad dm1 -010160: 040010 dac 8 -010161: 510542 and o7777 -010162: 050213 dac boot+2 -010163: 740001 cma -010164: 350537 tad d7 -010165: 040011 dac close -010166: 210575 lac nargp -010167: 040011 dac 9 -010170: 220011 lac i 9 -010171: 060010 dac i 8 -010172: 451102 isz t1 -010173: 610170 jmp 2b -010174: 210576 lac bootp -010175: 040011 dac 9 -010176: 777772 -6 -010177: 051102 dac t1 -010200: 220011 lac i 9 -010201: 060010 dac i 8 -010202: 451102 isz t1 -010203: 610200 jmp 2b -010204: 210536 lac d2 -010205: 652000 lmq -010206: 210006 lac zerop -010207: 040010 dac 8 -010210: 610001 jmp clear+1 -010211: 020004 sys read; 4096; .. -010212: 010000 -010213: 010000 -010214: 641002 lacq -010215: 020011 sys close -010216: 610000 jmp 4096 -010217: 000000 getcom: 0 -010220: 771104 law args-1 -010221: 040012 dac 10 -010222: 150555 dzm in -010223: 150561 dzm out -010224: 151104 dzm narg -010225: 151103 dzm lnkflg -010226: 110400 jms get -010227: 550544 sad gr -010230: 610261 jmp cgr -010231: 550545 sad ls -010232: 610254 jmp cls -010233: 550546 sad amper -010234: 610252 jmp endcom -010235: 550547 sad semic -010236: 610252 jmp endcom -010237: 550553 sad newln -010240: 610252 jmp endcom -010241: 550550 sad space -010242: 610226 jmp nparm-1 -010243: 652000 lmq -010244: 211104 lac narg -010245: 350534 tad d4 -010246: 051104 dac narg -010247: 641002 lacq -010250: 110304 jms getparm -010251: 610227 jmp nparm -010252: 050570 dac delim -010253: 630217 jmp getcom i -010254: 110400 jms get -010255: 110304 jms getparm -010256: 051102 dac t1 -010257: 770554 law in-1 -010260: 610265 jmp cpio -010261: 110400 jms get -010262: 110304 jms getparm -010263: 051102 dac t1 -010264: 770560 law out-1 -010265: 040013 dac 11 -010266: 200012 lac 10 -010267: 350535 tad dm4 -010270: 040012 dac 10 -010271: 652000 lmq -010272: 777774 -4 -010273: 051101 dac c1 -010274: 220012 lac i 10 -010275: 060013 dac i 11 -010276: 451101 isz c1 -010277: 610274 jmp 1b -010300: 641002 lacq -010301: 040012 dac 10 -010302: 211102 lac t1 -010303: 610227 jmp nparm -010304: 000000 getparm:0 -010305: 652000 lmq -010306: 777770 -8 -010307: 051101 dac c1 -010310: 641002 lacq -010311: 741000 skp -010312: 110400 jms get -010313: 550550 sad space -010314: 610312 jmp 1b -010315: 110365 jms checkdlm -010316: 610007 jmp comerr -010317: 610323 jmp 2f -010320: 610400 jmp get -010321: 110365 jms checkdlm -010322: 610350 jmp fill1 -010323: 660711 alss 9 -010324: 451101 isz c1 -010325: 652000 lmq -010326: 110400 jms get -010327: 110365 jms checkdlm -010330: 610341 jmp fill -010331: 640002 omq -010332: 060012 dac i 10 -010333: 451101 isz c1 -010334: 610320 jmp 1b -010335: 110400 jms get -010336: 110365 jms checkdlm -010337: 630304 jmp i getparm -010340: 610335 jmp 1b -010341: 051102 dac t1 -010342: 210550 lac space -010343: 640002 omq -010344: 060012 dac i 10 -010345: 451101 isz c1 -010346: 740000 nop -010347: 211102 lac t1 -010350: 652000 lmq -010351: 211101 lac c1 -010352: 741100 spa -010353: 610356 jmp 1f -010354: 641002 lacq -010355: 630304 jmp i getparm -010356: 210574 lac spsp -010357: 060012 dac i 10 -010360: 451101 isz c1 -010361: 451101 isz c1 -010362: 610356 jmp 1b -010363: 641002 lacq -010364: 630304 jmp i getparm -010365: 000000 checkdlm: 0 -010366: 550550 sad space -010367: 630365 jmp i checkdlm -010370: 550553 sad newln -010371: 630365 jmp i checkdlm -010372: 550546 sad amper -010373: 630365 jmp i checkdlm -010374: 550547 sad semic -010375: 630365 jmp i checkdlm -010376: 450365 isz checkdlm -010377: 630365 jmp i checkdlm -010400: 000000 get: 0 -010401: 220010 lac i 8 -010402: 550554 sad slash -010403: 741000 skp -010404: 630400 jmp i get -010405: 220010 lac i 8 -010406: 550553 sad newln -010407: 741000 skp -010410: 610007 jmp comerr -010411: 641002 lacq -010412: 050420 dac 1f -010413: 110421 jms rline -010414: 210420 lac 1f -010415: 652000 lmq -010416: 210550 lac space -010417: 630400 jmp i get -010420: 000000 1: 0 -010421: 000000 rline:0 -010422: 770600 law lineb-1 -010423: 040017 dac 15 -010424: 040010 dac 8 -010425: 110445 jms getcha -010426: 060017 dac i 15 -010427: 550553 sad newln -010430: 630421 jmp i rline -010431: 550551 sad sharp -010432: 610436 jmp psharp -010433: 550552 sad atsign -010434: 610422 jmp 2b -010435: 610425 jmp 1b -010436: 777777 -1 -010437: 340017 tad 15 -010440: 550422 sad 2b -010441: 610422 jmp 2b -010442: 350533 tad dm1 -010443: 040017 dac 15 -010444: 610425 jmp 1b -010445: 000000 getcha: 0 -010446: 210577 lac char -010447: 150577 dzm char -010450: 740200 sza -010451: 630445 jmp i getcha -010452: 450600 isz nread -010453: 610467 jmp 1f -010454: 750000 cla -010455: 020004 sys read; inbuf; 64 -010456: 011001 -010457: 000100 -010460: 741300 spa sna -010461: 610526 jmp lgout -010462: 740001 cma -010463: 350532 tad d1 -010464: 050600 dac nread -010465: 771000 law inbuf-1 -010466: 040016 dac 14 -010467: 220016 lac i 14 -010470: 652000 lmq -010471: 510543 and o777 -010472: 050577 dac char -010473: 661611 ecla llss 9 -010474: 630445 jmp i getcha -010475: 211104 lac narg -010476: 660502 lrss 2 -010477: 740001 cma -010500: 350532 tad d1 -010501: 051104 dac narg -010502: 771111 law args+4 -010503: 050510 dac 1f -010504: 451104 isz narg -010505: 741000 skp -010506: 610051 jmp comretrn -010507: 020021 sys chdir; 1:0 -010510: 000000 -010511: 741100 spa -010512: 610517 jmp cherr -010513: 210510 lac 1b -010514: 350534 tad d4 -010515: 050510 dac 1b -010516: 610504 jmp 2b -010517: 210510 lac 1b -010520: 050523 dac .+3 -010521: 210532 lac d1 -010522: 020005 sys write; ..; 4 -010523: 010000 -010524: 000004 -010525: 610007 jmp comerr -010526: 650000 clq -010527: 210532 lac d1 -010530: 020033 sys smes -010531: 020016 sys exit -010532: 000001 d1: 1 -010533: 777777 dm1: -1 -010534: 000004 d4: 4 -010535: 777773 dm4: -5 -010536: 000002 d2: 2 -010537: 000007 d7: 7 -010540: 000017 o17: 017 -010541: 017771 o17771: 017771 -010542: 007777 o7777: 07777 -010543: 000777 o777: 0777 -010544: 000076 gr: 076 -010545: 000074 ls: 074 -010546: 000046 amper: &> -010547: 000073 semic: 073 -010550: 000040 space: 040 -010551: 000043 sharp: 043 -010552: 000100 atsign: 0100 -010553: 000012 newln: 012 -010554: 000057 slash: 057 -010555: 000000 in: 0;0;0;0 -010556: 000000 -010557: 000000 -010560: 000000 -010561: 000000 out: 0;0;0;0 -010562: 000000 -010563: 000000 -010564: 000000 -010565: 077012 errmes: 077012 -010566: 143150 chcom: -010567: 100040 ready: 0100040 -010570: 000012 delim: 012 -010571: 163171 system: ; ; ; spsp: 040040 -010572: 163164 -010573: 145155 -010574: 040040 -010575: 011103 nargp: narg-1 -010576: 010210 bootp: boot-1 -010577: 000000 char: 0 -010600: 777777 nread: -1 From ed0ddaf04c72fc702566d4ac6c72bfce8c63407e Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:43:13 -0600 Subject: [PATCH 12/22] ignore a.out --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 51373d6..df6bbc8 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ build/alt/a.lst build/alt/a.out build/alt/image.fs /.DS_Store +/a.out From 98d74b60021e34f67dfd02b34fbb674a92df5e4c Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 18:49:21 -0600 Subject: [PATCH 13/22] minor update to readme --- README.md | 6 ------ build/Makefile | 3 +-- tools/README.md | 2 +- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index ae49b77..5282960 100644 --- a/README.md +++ b/README.md @@ -45,12 +45,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/build/Makefile b/build/Makefile index 92c1fb0..6573653 100644 --- a/build/Makefile +++ b/build/Makefile @@ -95,7 +95,7 @@ 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)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -165,7 +165,6 @@ $(BINDIR)/bc: $(CMDSRC)/bc/bc.s $(BINDIR)/dsw: $(CMDSRC)/dsw/dsw.s $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw/dsw.s -# -- compile errors $(BINDIR)/apr: $(CMDSRC)/apr/apr.s $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr/apr.s 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 From b087cc0a61f12a35396e25c717bdc12e2205723a Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 20:07:57 -0600 Subject: [PATCH 14/22] add cas to filesystem --- build/Makefile | 8 ++++++-- build/proto | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/build/Makefile b/build/Makefile index 6573653..66c54da 100644 --- a/build/Makefile +++ b/build/Makefile @@ -95,8 +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)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr - + $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ + $(BINDIR)/cas + # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \ @@ -150,6 +151,9 @@ $(BINDIR)/stat: $(CMDSRC)/stat/stat.s $(BINDIR)/tm: $(CMDSRC)/tm/tm.s $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm/tm.s +$(BINDIR)/cas: $(CMDSRC)/cas/cas.s + $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas/cas.s + # -- compile errors $(BINDIR)/dmabs: $(CMDSRC)/dmabs/dmabs.s $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs/dmabs.s diff --git a/build/proto b/build/proto index e09ea10..76319f0 100644 --- a/build/proto +++ b/build/proto @@ -23,6 +23,7 @@ dd drwr- -1 4 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 From d6cef57b849d10015d28d3ddfa6e371085da99b0 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Fri, 18 Oct 2019 21:06:44 -0600 Subject: [PATCH 15/22] include pd, rn, rm into build and image --- build/Makefile | 11 ++++++++- build/proto | 3 +++ src/cmd/pd/pd.s | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/rm/rm.s | 33 +++++++++++++++++++++++++++ src/cmd/rn/rn.s | 54 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 159 insertions(+), 1 deletion(-) create mode 100644 src/cmd/pd/pd.s create mode 100644 src/cmd/rm/rm.s create mode 100644 src/cmd/rn/rn.s diff --git a/build/Makefile b/build/Makefile index 66c54da..901608b 100644 --- a/build/Makefile +++ b/build/Makefile @@ -96,7 +96,7 @@ 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)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ - $(BINDIR)/cas + $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -179,6 +179,15 @@ $(BINDIR)/adm: $(CMDSRC)/adm/adm.s $(BINDIR)/sh: $(CMDSRC)/sh/sh.s $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh/sh.s +$(BINDIR)/rn: $(CMDSRC)/rn/rn.s + $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn/rn.s + +$(BINDIR)/rm: $(CMDSRC)/rm/rm.s + $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm/rm.s + +$(BINDIR)/pd: $(CMDSRC)/pd/pd.s + $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd/pd.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s diff --git a/build/proto b/build/proto index 76319f0..97b1abb 100644 --- a/build/proto +++ b/build/proto @@ -43,8 +43,11 @@ dd drwr- -1 4 lsd frwr- -1 bin/lsd lsl frwr- -1 bin/lsd od frwr- -1 bin/od + pd frwr- -1 bin/pd mv frwr- -1 bin/mv password frw-- -1 fs/password + 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 diff --git a/src/cmd/pd/pd.s b/src/cmd/pd/pd.s new file mode 100644 index 0000000..6196348 --- /dev/null +++ b/src/cmd/pd/pd.s @@ -0,0 +1,59 @@ +" ** 11-45-91.pdf page 1 +" pd + + sys open; dotdot; 0 + spa; jms error + dac df + law dir-1 + dac 8 +1: + lac df + sys read; tbuf; 8 + spa; jms error + sna + jmp 1f + lac tbuf + sna + jmp 1b + -8 + dac c1 + law tbuf-1 + dac 9 +2: + lac 9 i + dac 8 i + isz c1 + jmp 2b + jmp 1b + +1: + lac df + sys close + law 017 + sys creat; dotdot + spa; jms error + dac df + law dir-2 + cma + tad 8 + dac .+4 + lac df + sys write; dir; .. + spa; jms error + lac df + sys close + sys exit + +error: 0 + -1 + tad error + hlt + sys save + +dotdot: + 056056; 040040; 040040; 040040 + +c1: .=.+1 +df: .=.+1 +tbuf: .=.+8 +dir: diff --git a/src/cmd/rm/rm.s b/src/cmd/rm/rm.s new file mode 100644 index 0000000..5ba7238 --- /dev/null +++ b/src/cmd/rm/rm.s @@ -0,0 +1,33 @@ +" ** 11-45-91.pdf page 7 +" rm + + lac 017777 + tad d1 + dac 2f +1: + lac 017777 i + sad d4 + sys exit + tad dm4 + dac 017777 i + lac 2f + tad d4 + dac 2f + sys unlink; 2: 0 + sma + jmp 1b + lac 2b + dac 2f + lac d1 + sys write; 2: 0; 4 + lac d1 + sys write; 1f; 2f-1f + jmp 1b +1: + 040077;012000 +2: + +d1: 1 +d4: 4 +dm4: -4 + diff --git a/src/cmd/rn/rn.s b/src/cmd/rn/rn.s new file mode 100644 index 0000000..6f5e9ed --- /dev/null +++ b/src/cmd/rn/rn.s @@ -0,0 +1,54 @@ +" ** 11-45-91.pdf page 8 +" rn + + lac 017777 + tad d1 + dac name2 +loop: + lac 017777 i + sad d4 + sys exit + sad d8 + jmp unbal + tad dm8 + dac 017777 i + lac name2 + tad d4 + dac name1 + tad d4 + dac name2 + sys unlink; name2: 0 + lac name2 + dac 1f + sys rename; name1: 0; 1: 0 + sma + jmp loop + lac name1 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 1 + lac name2 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 2 + jmp loop +mes: + 040000;077012 +unbal: + lac name2 + tad d4 + dac 1f + lac d1 + sys write; 1: 0; 4 + lac d1 + sys write; mes; 2 + sys exit + +d1: 1 +d4: 4 +d8: 8 +dm8: -8 From 34644492a7f30065364a819b8f37696b24d01514 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 09:04:01 -0600 Subject: [PATCH 16/22] back to one giant directory --- .gitignore | 2 +- build/Makefile | 124 ++++++++++++++++------------------ build/proto | 8 +-- src/cmd/.DS_Store | Bin 0 -> 6148 bytes src/cmd/{adm => }/adm.s | 0 src/cmd/{apr => }/apr.s | 0 src/cmd/{as => }/as.s | 0 src/cmd/{bc => }/bc.s | 0 src/cmd/{bi => }/bi.s | 0 src/cmd/{bl => }/bl.s | 0 src/cmd/{cas => }/cas.s | 0 src/cmd/{cas => }/cas.x | 0 src/cmd/{cat => }/cat.s | 0 src/cmd/{check => }/check.s | 0 src/cmd/{chmod => }/chmod.s | 0 src/cmd/{chown => }/chown.s | 0 src/cmd/{chrm => }/chrm.s | 0 src/cmd/{cp => }/cp.s | 0 src/cmd/{db => }/db.s | 0 src/cmd/{dmabs => }/dmabs.s | 0 src/cmd/{ds => }/ds.s | 0 src/cmd/{dskres => }/dskres.s | 0 src/cmd/{dsksav => }/dsksav.s | 0 src/cmd/{dsw => }/dsw.s | 0 src/cmd/{ed => }/ed1.s | 0 src/cmd/{ed => }/ed2.s | 0 src/cmd/{init => }/init.s | 0 src/cmd/{pd => }/pd.s | 0 src/cmd/{rm => }/rm.s | 0 src/cmd/{rn => }/rn.s | 0 src/cmd/{sh => }/sh.s | 0 src/cmd/{stat => }/stat.s | 0 src/cmd/{tm => }/tm.s | 0 33 files changed, 65 insertions(+), 69 deletions(-) create mode 100644 src/cmd/.DS_Store rename src/cmd/{adm => }/adm.s (100%) rename src/cmd/{apr => }/apr.s (100%) rename src/cmd/{as => }/as.s (100%) rename src/cmd/{bc => }/bc.s (100%) rename src/cmd/{bi => }/bi.s (100%) rename src/cmd/{bl => }/bl.s (100%) rename src/cmd/{cas => }/cas.s (100%) rename src/cmd/{cas => }/cas.x (100%) rename src/cmd/{cat => }/cat.s (100%) rename src/cmd/{check => }/check.s (100%) rename src/cmd/{chmod => }/chmod.s (100%) rename src/cmd/{chown => }/chown.s (100%) rename src/cmd/{chrm => }/chrm.s (100%) rename src/cmd/{cp => }/cp.s (100%) rename src/cmd/{db => }/db.s (100%) rename src/cmd/{dmabs => }/dmabs.s (100%) rename src/cmd/{ds => }/ds.s (100%) rename src/cmd/{dskres => }/dskres.s (100%) rename src/cmd/{dsksav => }/dsksav.s (100%) rename src/cmd/{dsw => }/dsw.s (100%) rename src/cmd/{ed => }/ed1.s (100%) rename src/cmd/{ed => }/ed2.s (100%) rename src/cmd/{init => }/init.s (100%) rename src/cmd/{pd => }/pd.s (100%) rename src/cmd/{rm => }/rm.s (100%) rename src/cmd/{rn => }/rn.s (100%) rename src/cmd/{sh => }/sh.s (100%) rename src/cmd/{stat => }/stat.s (100%) rename src/cmd/{tm => }/tm.s (100%) diff --git a/.gitignore b/.gitignore index df6bbc8..c0a042b 100644 --- a/.gitignore +++ b/.gitignore @@ -12,5 +12,5 @@ build/n.out build/alt/a.lst build/alt/a.out build/alt/image.fs -/.DS_Store +**/.DS_Store /a.out diff --git a/build/Makefile b/build/Makefile index 901608b..0abc2c3 100644 --- a/build/Makefile +++ b/build/Makefile @@ -103,97 +103,93 @@ altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \ $(BINDIR)/ed $(BINDIR)/altinit $(BINDIR)/altmkdir -$(BINDIR)/as: $(CMDSRC)/as/as.s - $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as/as.s +$(BINDIR)/as: $(CMDSRC)/as.s + $(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s -$(BINDIR)/cat: $(CMDSRC)/cat/cat.s - $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat/cat.s +$(BINDIR)/cat: $(CMDSRC)/cat.s + $(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s -$(BINDIR)/check: $(CMDSRC)/check/check.s - $(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check/check.s +$(BINDIR)/check: $(CMDSRC)/check.s + $(AS) $(ASARGS) -o $(BINDIR)/check $(CMDSRC)/check.s -$(BINDIR)/chmod: $(CMDSRC)/chmod/chmod.s - $(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod/chmod.s +$(BINDIR)/chmod: $(CMDSRC)/chmod.s + $(AS) $(ASARGS) -o $(BINDIR)/chmod $(CMDSRC)/chmod.s -$(BINDIR)/chown: $(CMDSRC)/chown/chown.s - $(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown/chown.s +$(BINDIR)/chown: $(CMDSRC)/chown.s + $(AS) $(ASARGS) -o $(BINDIR)/chown $(CMDSRC)/chown.s -$(BINDIR)/chrm: $(CMDSRC)/chrm/chrm.s - $(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm/chrm.s +$(BINDIR)/chrm: $(CMDSRC)/chrm.s + $(AS) $(ASARGS) -o $(BINDIR)/chrm $(CMDSRC)/chrm.s -$(BINDIR)/altchrm: $(ALTSRC)/chrm/chrm.s - $(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm/chrm.s +$(BINDIR)/altchrm: $(ALTSRC)/chrm.s + $(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm.s -$(BINDIR)/cp: $(CMDSRC)/cp/cp.s - $(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp/cp.s +$(BINDIR)/cp: $(CMDSRC)/cp.s + $(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s -$(BINDIR)/ds: $(CMDSRC)/ds/ds.s - $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds/ds.s +$(BINDIR)/ds: $(CMDSRC)/ds.s + $(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s -$(BINDIR)/dskres: $(CMDSRC)/dskres/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dskres: $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s + $(AS) $(ASARGS) -o $(BINDIR)/dskres $(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s -$(BINDIR)/dsksav: $(CMDSRC)/dsksav/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s - $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s +$(BINDIR)/dsksav: $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s + $(AS) $(ASARGS) -o $(BINDIR)/dsksav $(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s -$(BINDIR)/ed: $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s - $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed/ed1.s $(CMDSRC)/ed/ed2.s +$(BINDIR)/ed: $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s + $(AS) $(ASARGS) -o $(BINDIR)/ed $(CMDSRC)/ed1.s $(CMDSRC)/ed2.s -$(BINDIR)/init: $(CMDSRC)/init/init.s - $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init/init.s +$(BINDIR)/init: $(CMDSRC)/init.s + $(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s -$(BINDIR)/db: $(CMDSRC)/db/db.s - $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db/db.s +$(BINDIR)/db: $(CMDSRC)/db.s + $(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s -$(BINDIR)/stat: $(CMDSRC)/stat/stat.s - $(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)/stat/stat.s +$(BINDIR)/stat: $(CMDSRC)/stat.s + $(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)//stat.s -$(BINDIR)/tm: $(CMDSRC)/tm/tm.s - $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm/tm.s +$(BINDIR)/tm: $(CMDSRC)/tm.s + $(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s -$(BINDIR)/cas: $(CMDSRC)/cas/cas.s - $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas/cas.s +$(BINDIR)/cas: $(CMDSRC)/cas.s + $(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s # -- compile errors -$(BINDIR)/dmabs: $(CMDSRC)/dmabs/dmabs.s - $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs/dmabs.s +$(BINDIR)/dmabs: $(CMDSRC)/dmabs.s + $(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s # -- compile errors -$(BINDIR)/st: $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GAMESRC)/st/st4.s $(GAMESRC)/st/st5.s $(GAMESRC)/st/st6.s $(GAMESRC)/st/st7.s - $(AS) $(ASARGS) -o $(BINDIR)/st $(GAMESRC)/st/st1.s $(GAMESRC)/st/st2.s $(GAMESRC)/st/st3.s $(GAMESRC)/st/st4.s $(GAMESRC)/st/st5.s $(GAMESRC)/st/st6.s $(GAMESRC)/st/st7.s +$(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)/bc: $(CMDSRC)/bc/bc.s - $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc/bc.s +$(BINDIR)/adm: $(CMDSRC)/adm.s + $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s -$(BINDIR)/dsw: $(CMDSRC)/dsw/dsw.s - $(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw/dsw.s +$(BINDIR)/sh: $(CMDSRC)/sh.s + $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh.s -$(BINDIR)/apr: $(CMDSRC)/apr/apr.s - $(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr/apr.s +$(BINDIR)/rn: $(CMDSRC)/rn.s + $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s -# -- compile errors -$(BINDIR)/adm: $(CMDSRC)/adm/adm.s - $(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm/adm.s +$(BINDIR)/rm: $(CMDSRC)/rm.s + $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s -$(BINDIR)/sh: $(CMDSRC)/sh/sh.s - $(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh/sh.s - -$(BINDIR)/rn: $(CMDSRC)/rn/rn.s - $(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn/rn.s - -$(BINDIR)/rm: $(CMDSRC)/rm/rm.s - $(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm/rm.s - -$(BINDIR)/pd: $(CMDSRC)/pd/pd.s - $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd/pd.s +$(BINDIR)/pd: $(CMDSRC)/pd.s + $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s # Alternative init: no dd directory -$(BINDIR)/altinit: $(ALTSRC)/init/init.s - $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init/init.s +$(BINDIR)/altinit: $(ALTSRC)/init.s + $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s -$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir/wktmkdir.s - $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir/wktmkdir.s +$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s + $(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s # The commands that did not come from the scans @@ -243,10 +239,10 @@ $(BINDIR)/od: $(OTHERSRC)/wktod.s $(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s # B compiler -$(BINDIR)/bc: $(CMDSRC)/bl/bl.s $(CMDSRC)/bi/bi.s ../tools/b.c $(OTHERSRC)/b.b +$(BINDIR)/bc: $(CMDSRC)/bl.s $(CMDSRC)/bi.s ../tools/b.c $(OTHERSRC)/b.b $(CC) $(CCARGS) -o b ../tools/b.c ./b $(OTHERSRC)/b.b b.s - $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bl/bl.s b.s $(CMDSRC)/bi/bi.s + $(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bl.s b.s $(CMDSRC)/bi.s rm b b.s tests: diff --git a/build/proto b/build/proto index 97b1abb..be4bf63 100644 --- a/build/proto +++ b/build/proto @@ -70,11 +70,11 @@ dd drwr- -1 4 $ dmr drwr- 12 system l---- 3 - as.s frwr- 12 ../src/cmd/as/as.s + as.s frwr- 12 ../src/cmd/as.s b_readme frwr- 12 fs/b_readme - bi.s frwr- 12 ../src/cmd/bi/bi.s - bl.s frwr- 12 ../src/cmd/bl/bl.s - db.s frwr- 12 ../src/cmd/db/db.s + bi.s frwr- 12 ../src/cmd/bi.s + bl.s frwr- 12 ../src/cmd/bl.s + db.s frwr- 12 ../src/cmd/db.s hello.b frwr- 12 ../src/other/hello.b ops.s frwr- 12 ../src/other/ops.s $ diff --git a/src/cmd/.DS_Store b/src/cmd/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..9a3bd689c44df976da1b478c18ccfc07ad274acb GIT binary patch literal 6148 zcmZQzU|@7AO)+F(5MW?n;9!8z45|#6fRTZLfr+7nAvdKsIVUMUKL;cLRmKFRK|+im zGtlIr(xcR92#kinXb6mkz-S1JhQJ^S0Z_dSs{gqMk()-HG8zJ-Auu>X08~CGfcgpy z3=9rXx&cCiq!<`MT>}W81?FOKKL8>I(h5=o(h8zMS{WEYEU-MJ_rS;i(aH$!hA=QN zg1aOj8mygx5o|Mv57y4W2)3Dlff1seff1seff3Y;0htTx(ST@(b_PbU?J(Dk(xV|T z8UnBoV1_URK=r>X0|VCnKSaqWIT`|^AuwD+fRV)|*u@D{Y2xr9sLoA*%7NIRs+bW} vCqwjrt71k5NKMWJ8BmmfDhE~f;HsDr(uM%>LE1+f0 Date: Sat, 19 Oct 2019 10:02:43 -0600 Subject: [PATCH 17/22] added nm.s to build and image --- build/Makefile | 5 +- build/proto | 1 + src/cmd/nm.s | 242 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 src/cmd/nm.s diff --git a/build/Makefile b/build/Makefile index 0abc2c3..c9e9268 100644 --- a/build/Makefile +++ b/build/Makefile @@ -96,7 +96,7 @@ 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)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ - $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd + $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -184,6 +184,9 @@ $(BINDIR)/rm: $(CMDSRC)/rm.s $(BINDIR)/pd: $(CMDSRC)/pd.s $(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s +$(BINDIR)/nm: $(CMDSRC)/nm.s + $(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s diff --git a/build/proto b/build/proto index be4bf63..fa13447 100644 --- a/build/proto +++ b/build/proto @@ -42,6 +42,7 @@ dd drwr- -1 4 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 pd frwr- -1 bin/pd mv frwr- -1 bin/mv diff --git a/src/cmd/nm.s b/src/cmd/nm.s new file mode 100644 index 0000000..86152f4 --- /dev/null +++ b/src/cmd/nm.s @@ -0,0 +1,242 @@ +"** 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: + + + + + + + + From 0af80c23cff5f13410a716e7a24cb24bed8b6ed5 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 10:05:55 -0600 Subject: [PATCH 18/22] updated nm.s --- src/cmd/nm.s | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/cmd/nm.s b/src/cmd/nm.s index 86152f4..cc6b99b 100644 --- a/src/cmd/nm.s +++ b/src/cmd/nm.s @@ -232,11 +232,3 @@ d6: 6 n.out: 0156056;0157165;0164040;040040 buf: - - - - - - - - From 609524adefc822466a702ca302390a74eccfccf1 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 10:35:14 -0600 Subject: [PATCH 19/22] added ls to build --- build/Makefile | 7 +- src/cmd/ls.s | 276 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 281 insertions(+), 2 deletions(-) create mode 100644 src/cmd/ls.s diff --git a/build/Makefile b/build/Makefile index c9e9268..27b37ef 100644 --- a/build/Makefile +++ b/build/Makefile @@ -96,8 +96,8 @@ 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)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ - $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm - + $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \ + # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \ @@ -184,6 +184,9 @@ $(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 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: From 50598b621eeae16bc4933afad3079760150a380f Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 10:47:50 -0600 Subject: [PATCH 20/22] added roff.s to build and image --- build/Makefile | 4 + build/proto | 1 + src/cmd/roff.s | 942 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 947 insertions(+) create mode 100644 src/cmd/roff.s diff --git a/build/Makefile b/build/Makefile index 27b37ef..81e4542 100644 --- a/build/Makefile +++ b/build/Makefile @@ -97,6 +97,7 @@ cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \ $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \ + $(BINDIR)/roff # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -190,6 +191,9 @@ $(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 + # Alternative init: no dd directory $(BINDIR)/altinit: $(ALTSRC)/init.s $(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s diff --git a/build/proto b/build/proto index fa13447..3fe1b20 100644 --- a/build/proto +++ b/build/proto @@ -47,6 +47,7 @@ dd drwr- -1 4 pd frwr- -1 bin/pd mv frwr- -1 bin/mv 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 diff --git a/src/cmd/roff.s b/src/cmd/roff.s new file mode 100644 index 0000000..8e9209b --- /dev/null +++ b/src/cmd/roff.s @@ -0,0 +1,942 @@ +" ** 11-45-91.pdf page 9 +" roff + + lac i 017777 + sad d4 + sys exit + lac 017777 + tad d1 + dac fname + jms nextfile + lac obufp + dac otal + +" main i/o loop +1: + jms readline + jmp 3f + lac rawchar + sad cc + jmp 2f + jms text + jmp 1b +2: + jms control + jmp 1b +3: + jms break + jms eject + lac otal + sma + jmp 1f + cla + jms putsc; otal +1: + -1 + tad obufp + cma + tad otal + dac 1f + lac output + sys write; obuf; 1: 0 + sys exit + +" read line routine +readline: 0 + law rawchar-1 + dac 8 +1: + jms getchar + dac i 8 + sad o12 + skp + jmp 1b + isz readline + jmp i readline + +" read character routine +getchar: 0 + lac ital + sad eibufp + skp + jmp 1f + -64 +" ** 11-45-91.pdf page 10 + dac 3f + law ibuf-1 + dac 15 +2: + dzm i 15 + isz 3f + jmp 2b + lac input + sys read; ibuf; 64 + sna + jms nextfile + lac ibufp + dac ital +1: + jms getsc; ital + sza + jmp i getchar + jmp getchar+1 +3: 0 + +putchar: 0 + jms putsc; otal + lac otal + sad eobufp + skp + jmp i putchar + lac output + sys write; obuf; 64 + lac obufp + dac otal + jmp i putchar + +laci: 0 + dac 1f + lac i 1f + jmp i laci +1: 0 + +nextfile: 0 + lac i 017777 + sad d4 + jmp i readline + tad dm4 + dac i 017777 + lac fname + tad d4 + dac fname + lac input + sys close + sys open; fname: 0; 0 + sma + jmp 1f + lac fname + dac 2f + lac d1 + sys write; 2: 0; 4 + lac d1 + sys write; 2f; 2 + sys exit +2: 040077;012 +1: +" ** 11-45-91.pdf page 11 + dac input + lac eibufp + dac otal + jmp i nextfile + +getsc:0 +lac i getsc +dac sctalp +isz getsc +lac i sctalp +dac sctal +add o400000 +dac i sctalp +ral +lac i sctal +szl +lrss 9 +and o177 +jmp i getsc + +putsc: 0 +and o177 +lmq +lac i putsc +dac sctalp +isz putsc +lac i sctalp +dac sctal +add o400000 +dac i sctalp +sma cla +jmp 1f +llss 27 +dac i sctal +lrss 9 +jmp i putsc +1: +lac i sctal +omq +dac i sctal +lacq +jmp i putsc + +" conmtrol card decoder +control: 0 + law 2f-1 + dac 8 + -ncase + dac c + lac rawchar+1 + alss 9 + xor rawchar+2 +1: + sad i 8 + jmp i 8 + isz 8 + isz c + jmp 1b + jmp i control +2: + ncase = 0 +" ** 11-45-91.pdf page 12 +; 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 From 68dd3db0bdfc2eb18581b5d17afe5e68997c5434 Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 11:02:37 -0600 Subject: [PATCH 21/22] formatting --- build/proto | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/build/proto b/build/proto index 3fe1b20..56bcd27 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 @@ -37,7 +37,7 @@ dd drwr- -1 4 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 @@ -46,7 +46,7 @@ dd drwr- -1 4 od frwr- -1 bin/od 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 @@ -54,7 +54,7 @@ dd drwr- -1 4 stat frwr- -1 bin/stat tm frwr- -1 bin/tm - $ + $ ken drwr- 10 system l---- 3 sop.s frwr- 10 ../src/sys/sop.s From 76deea0152a0ece1754d07e9a3456a52e115bdda Mon Sep 17 00:00:00 2001 From: Tom Everett Date: Sat, 19 Oct 2019 12:15:28 -0600 Subject: [PATCH 22/22] added p to build and image --- build/Makefile | 5 +- build/proto | 1 + src/cmd/p0.s | 37 +++++++ src/cmd/p1.s | 261 +++++++++++++++++++++++++++++++++++++++++++++++++ src/cmd/p2.s | 226 ++++++++++++++++++++++++++++++++++++++++++ src/cmd/p3.s | 149 ++++++++++++++++++++++++++++ src/cmd/p4.s | 202 ++++++++++++++++++++++++++++++++++++++ src/cmd/p5.s | 156 +++++++++++++++++++++++++++++ 8 files changed, 1036 insertions(+), 1 deletion(-) create mode 100644 src/cmd/p0.s create mode 100644 src/cmd/p1.s create mode 100644 src/cmd/p2.s create mode 100644 src/cmd/p3.s create mode 100644 src/cmd/p4.s create mode 100644 src/cmd/p5.s diff --git a/build/Makefile b/build/Makefile index 81e4542..5c73479 100644 --- a/build/Makefile +++ b/build/Makefile @@ -97,7 +97,7 @@ cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ $(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \ $(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \ $(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \ - $(BINDIR)/roff + $(BINDIR)/roff $(BINDIR)/p # Alternate commands: no dd, but . and .. altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \ @@ -194,6 +194,9 @@ $(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 diff --git a/build/proto b/build/proto index 56bcd27..a6063e7 100644 --- a/build/proto +++ b/build/proto @@ -44,6 +44,7 @@ dd drwr- -1 4 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 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: ;;