1
0
mirror of https://github.com/livingcomputermuseum/pdp7-unix.git synced 2026-01-12 00:02:47 +00:00

Merge pull request #167 from philbudne/noc

use original commands, add tmg, use octal in proto file, fsck7 output
This commit is contained in:
Phil Budne 2019-10-29 21:04:56 -04:00 committed by GitHub
commit be3f9de0e2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
19 changed files with 1661 additions and 184 deletions

View File

@ -8,7 +8,7 @@ ASARGS=--format=ptr
MKFS=../tools/mkfs7
A7OUT=../tools/a7out
FSCK=../tools/fsck7
CCARGS=-Wno-multichar
CCARGS=-Wno-multichar -Wno-implicit
PDP7=pdp7
# source dirs
@ -51,16 +51,20 @@ dist: all alt
cp alt/unixv0.simh $(BINARIES)/alt
# Warm boot Unix kernel: boots into init and a login prompt
a.out:
$(AS) -f ptr -o a.out $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s
$(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-8].s
SYS= $(SYSSRC)/sop.s $(SYSSRC)/s1.s $(SYSSRC)/s2.s \
$(SYSSRC)/s3.s $(SYSSRC)/s4.s $(SYSSRC)/s5.s \
$(SYSSRC)/s6.s $(SYSSRC)/s7.s $(SYSSRC)/s8.s
a.out: $(SYS)
$(AS) -f ptr -o a.out $(SYSSRC)/sop.s $(SYS)
$(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYS)
# 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
$(AS) -n -f list -o alt/a.lst $(SYSSRC)/sop.s $(SYSSRC)/s1.s \
$(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s
ALTSYS= $(SYSSRC)/sop.s $(SYSSRC)/s1.s $(ALTSRC)/s2.s \
$(SYSSRC)/s3.s $(SYSSRC)/s4.s $(SYSSRC)/s5.s \
$(SYSSRC)/s6.s $(SYSSRC)/s7.s $(SYSSRC)/s8.s
alt/a.out: $(ALTSYS)
$(AS) -f ptr -o alt/a.out $(ALTSYS)
$(AS) -n -f list -o alt/a.lst $(ALTSYS)
# Phil's bootstrap code
boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s
@ -68,9 +72,10 @@ boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s
# Cold boot Unix kernel: attempts to build a minimal filesystem.
# Don't use this one!
coldboot:
$(AS) -f rim -o boot.rim $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s
$(AS) -n -f list -o a.lst $(SYSSRC)/sop.s $(SYSSRC)/s[1-9].s
COLDBOOT=$(SYS) $(SYSSRC)/s9.s
coldboot.rim: $(COLDBOOT)
$(AS) -f rim -o coldboot.rim $(COLDBOOT)
$(AS) -n -f list -o a.lst $(COLDBOOT)
# Filesystem image
image.fs: cmd others
@ -92,22 +97,56 @@ dirs:
mkdir -p $(BINDIR)
# The commands that came from the original scans
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)/nstat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \
$(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \
$(BINDIR)/roff $(BINDIR)/p $(BINDIR)/apr $(BINDIR)/salv $(BINDIR)/moo \
$(BINDIR)/nsh $(BINDIR)/nls $(BINDIR)/nstat $(BINDIR)/un $(BINDIR)/adm
# PLEASE KEEP IN ALPHABETICAL ORDER!
cmd: dirs \
$(BINDIR)/adm \
$(BINDIR)/apr \
$(BINDIR)/as \
$(BINDIR)/cas \
$(BINDIR)/cat \
$(BINDIR)/check \
$(BINDIR)/chmod \
$(BINDIR)/chown \
$(BINDIR)/chrm \
$(BINDIR)/cp \
$(BINDIR)/db \
$(BINDIR)/ds \
$(BINDIR)/dskres \
$(BINDIR)/dsksav \
$(BINDIR)/dsw \
$(BINDIR)/ed \
$(BINDIR)/init \
$(BINDIR)/ln \
$(BINDIR)/ls \
$(BINDIR)/moo \
$(BINDIR)/nm \
$(BINDIR)/p \
$(BINDIR)/rm \
$(BINDIR)/rn \
$(BINDIR)/roff \
$(BINDIR)/salv \
$(BINDIR)/sh \
$(BINDIR)/stat \
$(BINDIR)/tm \
$(BINDIR)/ttt \
$(BINDIR)/un
# Alternate commands: no dd, but . and ..
altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \
$(BINDIR)/chown $(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/ds \
$(BINDIR)/ed $(BINDIR)/altinit $(BINDIR)/altmkdir
altcmd: dirs cmd \
$(BINDIR)/altchrm $(BINDIR)/cp $(BINDIR)/altinit $(BINDIR)/altmkdir
$(BINDIR)/adm: $(CMDSRC)/adm.s
$(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s
$(BINDIR)/apr: $(CMDSRC)/apr.s
$(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s
$(BINDIR)/as: $(CMDSRC)/as.s
$(AS) $(ASARGS) -o $(BINDIR)/as $(CMDSRC)/as.s
$(BINDIR)/bc: $(CMDSRC)/bc.s
$(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc.s
$(BINDIR)/cat: $(CMDSRC)/cat.s
$(AS) $(ASARGS) -o $(BINDIR)/cat $(CMDSRC)/cat.s
@ -126,110 +165,116 @@ $(BINDIR)/chrm: $(CMDSRC)/chrm.s
$(BINDIR)/altchrm: $(ALTSRC)/chrm.s
$(AS) $(ASARGS) -o $(BINDIR)/altchrm $(ALTSRC)/chrm.s
$(BINDIR)/cas: $(CMDSRC)/cas.s
$(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s
$(BINDIR)/cp: $(CMDSRC)/cp.s
$(AS) $(ASARGS) -o $(BINDIR)/cp $(CMDSRC)/cp.s
$(BINDIR)/ds: $(CMDSRC)/ds.s
$(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/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)/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)/init: $(CMDSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s
$(BINDIR)/db: $(CMDSRC)/db.s
$(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s
# -- new stat from the scans
$(BINDIR)/nstat: $(CMDSRC)/stat.s
$(AS) $(ASARGS) -o $(BINDIR)/nstat $(CMDSRC)/stat.s
$(BINDIR)/tm: $(CMDSRC)/tm.s
$(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s
$(BINDIR)/cas: $(CMDSRC)/cas.s
$(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s
# -- compile errors
$(BINDIR)/dmabs: $(CMDSRC)/dmabs.s
$(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s
# -- new bc from the scans
$(BINDIR)/nbc: $(CMDSRC)/bc.s
$(AS) $(ASARGS) -o $(BINDIR)/nbc $(CMDSRC)/bc.s
$(BINDIR)/ds: $(CMDSRC)/ds.s
$(AS) $(ASARGS) -o $(BINDIR)/ds $(CMDSRC)/ds.s
DSKRES=$(CMDSRC)/dskres.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s
$(BINDIR)/dskres: $(DSKRES)
$(AS) $(ASARGS) -o $(BINDIR)/dskres $(DSKRES)
DSKSAV=$(CMDSRC)/dsksav.s $(CMDSRC)/dskio.s $(SYSSRC)/sop.s
$(BINDIR)/dsksav: $(DSKSAV)
$(AS) $(ASARGS) -o $(BINDIR)/dsksav $(DSKSAV)
$(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
ED=$(CMDSRC)/ed1.s $(CMDSRC)/ed2.s
$(BINDIR)/ed: $(ED)
$(AS) $(ASARGS) -o $(BINDIR)/ed $(ED)
# -- compile errors
$(BINDIR)/adm: $(CMDSRC)/adm.s
$(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s
$(BINDIR)/init: $(CMDSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/init $(CMDSRC)/init.s
# -- new sh from the scans
$(BINDIR)/nsh: $(CMDSRC)/sh.s
$(AS) $(ASARGS) -o $(BINDIR)/nsh $(CMDSRC)/sh.s
$(BINDIR)/ln: $(CMDSRC)/ln.s
$(AS) $(ASARGS) -o $(BINDIR)/ln $(CMDSRC)/ln.s
$(BINDIR)/rn: $(CMDSRC)/rn.s
$(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s
$(BINDIR)/rm: $(CMDSRC)/rm.s
$(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s
$(BINDIR)/pd: $(CMDSRC)/pd.s
$(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s
# -- new ls from the scans
$(BINDIR)/nls: $(CMDSRC)/ls.s
$(AS) $(ASARGS) -o $(BINDIR)/nls $(CMDSRC)/ls.s
$(BINDIR)/nm: $(CMDSRC)/nm.s
$(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s
$(BINDIR)/roff: $(CMDSRC)/roff.s
$(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s
$(BINDIR)/p: $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s
$(AS) $(ASARGS) -o $(BINDIR)/p $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s
$(BINDIR)/salv: $(CMDSRC)/salv.s
$(AS) $(ASARGS) -o $(BINDIR)/salv $(CMDSRC)/salv.s
$(BINDIR)/ls: $(CMDSRC)/ls.s
$(AS) $(ASARGS) -o $(BINDIR)/ls $(CMDSRC)/ls.s
$(BINDIR)/moo: $(CMDSRC)/moo.s
$(AS) $(ASARGS) -o $(BINDIR)/moo $(CMDSRC)/moo.s
$(BINDIR)/nm: $(CMDSRC)/nm.s
$(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s
P=$(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s
$(BINDIR)/p: $(P)
$(AS) $(ASARGS) -o $(BINDIR)/p $(P)
$(BINDIR)/rm: $(CMDSRC)/rm.s
$(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s
$(BINDIR)/rn: $(CMDSRC)/rn.s
$(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s
$(BINDIR)/pd: $(CMDSRC)/pd.s
$(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s
$(BINDIR)/roff: $(CMDSRC)/roff.s
$(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s
$(BINDIR)/salv: $(CMDSRC)/salv.s
$(AS) $(ASARGS) -o $(BINDIR)/salv $(CMDSRC)/salv.s
$(BINDIR)/sh: $(CMDSRC)/sh.s
$(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh.s
$(BINDIR)/stat: $(CMDSRC)/stat.s
$(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)/stat.s
$(BINDIR)/tm: $(CMDSRC)/tm.s
$(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s
TTT=$(CMDSRC)/ttt1.s $(CMDSRC)/ttt2.s
$(BINDIR)/ttt: $(TTT)
$(AS) $(ASARGS) -o $(BINDIR)/ttt $(TTT)
$(BINDIR)/un: $(CMDSRC)/un.s
$(AS) $(ASARGS) -o $(BINDIR)/un $(CMDSRC)/un.s
# Alternative init: no dd directory
$(BINDIR)/altinit: $(ALTSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s
$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s
$(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s
################
# The commands that did not come from the scans
others: dirs $(BINDIR)/sh $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \
$(BINDIR)/ln $(BINDIR)/ls $(BINDIR)/mv $(BINDIR)/stat $(BINDIR)/od \
$(BINDIR)/bc $(BINDIR)/lsd $(BINDIR)/lsl
# Alternative other commands: no dd, but . and ..
altothers: dirs $(BINDIR)/sh $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \
$(BINDIR)/ln $(BINDIR)/altls $(BINDIR)/mv $(BINDIR)/stat $(BINDIR)/od
others: dirs \
$(BINDIR)/b \
$(BINDIR)/date \
$(BINDIR)/mv \
$(BINDIR)/od
# B compiler
$(BINDIR)/b: $(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)/b $(CMDSRC)/bl.s b.s $(CMDSRC)/bi.s
rm b b.s
$(BINDIR)/sh: $(OTHERSRC)/pbsh.s
$(AS) $(ASARGS) -o $(BINDIR)/sh $(OTHERSRC)/pbsh.s
$(BINDIR)/date: $(OTHERSRC)/wktdate.s
$(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s
$(BINDIR)/mv: $(OTHERSRC)/wktmv.s
$(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s
$(BINDIR)/od: $(OTHERSRC)/wktod.s
$(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s
################
# replacement programs (no longer in build)
$(BINDIR)/pbsh: $(OTHERSRC)/pbsh.s
$(AS) $(ASARGS) -o $(BINDIR)/pbsh $(OTHERSRC)/pbsh.s
$(BINDIR)/wktcat: $(OTHERSRC)/wktcat.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcat $(OTHERSRC)/wktcat.s
@ -237,39 +282,37 @@ $(BINDIR)/wktcat: $(OTHERSRC)/wktcat.s
$(BINDIR)/wktcp: $(OTHERSRC)/wktcp.s
$(AS) $(ASARGS) -o $(BINDIR)/wktcp $(OTHERSRC)/wktcp.s
$(BINDIR)/date: $(OTHERSRC)/wktdate.s
$(AS) $(ASARGS) -o $(BINDIR)/date $(OTHERSRC)/wktdate.s
$(BINDIR)/wktln: $(OTHERSRC)/wktln.s
$(AS) $(ASARGS) -o $(BINDIR)/wktln $(OTHERSRC)/wktln.s
$(BINDIR)/ln: $(OTHERSRC)/wktln.s
$(AS) $(ASARGS) -o $(BINDIR)/ln $(OTHERSRC)/wktln.s
$(BINDIR)/ls: $(OTHERSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/ls $(OTHERSRC)/wktls.s
$(BINDIR)/wktls: $(OTHERSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/wktls $(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)/lsl: $(OTHERSRC)/pblsd.s
$(AS) $(ASARGS) -o $(BINDIR)/lsl $(OTHERSRC)/pblsd.s
$(BINDIR)/mv: $(OTHERSRC)/wktmv.s
$(AS) $(ASARGS) -o $(BINDIR)/mv $(OTHERSRC)/wktmv.s
$(BINDIR)/wktstat: $(OTHERSRC)/wktstat.s
$(AS) $(ASARGS) -o $(BINDIR)/wktstat $(OTHERSRC)/wktstat.s
$(BINDIR)/stat: $(OTHERSRC)/wktstat.s
$(AS) $(ASARGS) -o $(BINDIR)/stat $(OTHERSRC)/wktstat.s
################
# Alternative init: no dd directory
$(BINDIR)/altinit: $(ALTSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s
$(BINDIR)/od: $(OTHERSRC)/wktod.s
$(AS) $(ASARGS) -o $(BINDIR)/od $(OTHERSRC)/wktod.s
$(BINDIR)/altmkdir: $(ALTSRC)/wktmkdir.s
$(AS) $(ASARGS) -o $(BINDIR)/altmkdir $(ALTSRC)/wktmkdir.s
# B compiler
$(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.s b.s $(CMDSRC)/bi.s
rm b b.s
# Alternative other commands: no dd, but . and ..
altothers: dirs cmd $(BINDIR)/wktcat $(BINDIR)/wktcp $(BINDIR)/date \
$(BINDIR)/altls $(BINDIR)/mv $(BINDIR)/od
$(BINDIR)/altls: $(ALTSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls.s
################################################################
tests:
mkdir -p $(TESTDIR)

View File

@ -9,7 +9,8 @@
# link l---- inumber
#
# The top directory's name is ignored
# Numeric values are in decimal
# inumbers are in decimal (-1 means previous file)
# uids are in octal
# Contents of each directory ends with a $ on a line by itself
# Format was inspired by 6th Edition mkfs
#
@ -41,10 +42,10 @@
sh frwr- -1 bin/sh
stat frwr- -1 bin/stat
$
ken drwr- 10
ken drwr- 12
system l---- 3
hello frwr- 10 fs/hello
hello frwr- 12 fs/hello
$
dmr drwr- 12
dmr drwr- 14
system l---- 3
$

View File

@ -12,8 +12,7 @@ set tti unix
set rb ena
att rb alt/image.fs
# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!)
# (requires github.com/philbudne/simh)
# enable TELNET in GRAPHICS-2 keyboard/display(!!)
set g2in ena
att -U g2in 12345

View File

@ -1,3 +1,4 @@
system:system:system:777777
ken:ken:ken:12
dmr:dmr:dmr:14
doug:doug:doug:15

View File

@ -1,8 +1,8 @@
chrm ken ops.s
ln dmr ops.s ops.s
as sop.s ops.s maksys.s
mv a.out maksys
as sop.s ops.s trysys.s
mv a.out trysys
chrm ken ops.s
rm op.s
ln dmr op.s
as sop.s op.s maksys.s
rn a.out maksys
as sop.s op.s trysys.s
rn a.out trysys
rm op.s
as sop.s s1.s s2.s s3.s s4.s s5.s s6.s s7.s s8.s

View File

@ -7,7 +7,8 @@
# link l---- inumber
#
# The top directory's name is ignored
# Numeric values are in decimal
# inumbers are in decimal (-1 means previous file)
# uids are in octal
# Contents of each directory ends with a $ on a line by itself
# Format was inspired by 6th Edition mkfs
#
@ -21,9 +22,11 @@ dd drwr- -1 4
display irwr- -1 12
pptout irwr- -1 13
adm frwr- -1 bin/adm
password frw-- -1 fs/password
adm frwr- -1 bin/adm
apr frwr- -1 bin/apr
as frwr- -1 bin/as
bc frwr- -1 bin/bc
b frwr- -1 bin/b
cas frwr- -1 bin/cas
cat frwr- -1 bin/cat
check frwr- -1 bin/check
@ -40,57 +43,59 @@ dd drwr- -1 4
ed frwr- -1 bin/ed
init frwr- -1 bin/init
ln frwr- -1 bin/ln
link l---- -1
ls frwr- -1 bin/ls
lsd frwr- -1 bin/lsd
lsl frwr- -1 bin/lsd
list l---- -1
moo frwr- -1 bin/moo
mv frwr- -1 bin/mv
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
roff frwr- -1 bin/roff
rn frwr- -1 bin/rn
rm frwr- -1 bin/rm
rn frwr- -1 bin/rn
roff frwr- -1 bin/roff
salv frwr- -1 bin/salv
sh frwr- -1 bin/sh
stat frwr- -1 bin/stat
tm frwr- -1 bin/tm
ttt frwr- -1 bin/ttt
dttt l---- -1
un frwr- -1 bin/un
# new versions, from the scans
nsh frwr- -1 bin/nsh
nls frwr- -1 bin/nls
list l---- -1
# nbc frwr- -1 bin/nbc
nstat frwr- -1 bin/nstat
$
ken drwr- 10
$
ken drwr- 12
system l---- 3
sop.s frwr- 10 ../src/sys/sop.s
s1.s frwr- 10 ../src/sys/s1.s
s2.s frwr- 10 ../src/sys/s2.s
s3.s frwr- 10 ../src/sys/s3.s
s4.s frwr- 10 ../src/sys/s4.s
s5.s frwr- 10 ../src/sys/s5.s
s6.s frwr- 10 ../src/sys/s6.s
s7.s frwr- 10 ../src/sys/s7.s
s8.s frwr- 10 ../src/sys/s8.s
maksys.s frwr- 10 ../src/sys/maksys.s
trysys.s frwr- 10 ../src/sys/trysys.s
sys.rc frwr- 10 fs/sys.rc
sop.s frwr- 12 ../src/sys/sop.s
s1.s frwr- 12 ../src/sys/s1.s
s2.s frwr- 12 ../src/sys/s2.s
s3.s frwr- 12 ../src/sys/s3.s
s4.s frwr- 12 ../src/sys/s4.s
s5.s frwr- 12 ../src/sys/s5.s
s6.s frwr- 12 ../src/sys/s6.s
s7.s frwr- 12 ../src/sys/s7.s
s8.s frwr- 12 ../src/sys/s8.s
maksys.s frwr- 12 ../src/sys/maksys.s
trysys.s frwr- 12 ../src/sys/trysys.s
sys.rc frwr- 12 fs/sys.rc
$
dmr drwr- 12
dmr drwr- 14
system l---- 3
as.s frwr- 12 ../src/cmd/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
hello.b frwr- 12 ../src/other/hello.b
ops.s frwr- 12 ../src/other/ops.s
as.s frwr- 14 ../src/cmd/as.s
op.s frwr- 14 ../src/cmd/op.s
b_readme frwr- 14 fs/b_readme
bi.s frwr- 14 ../src/cmd/bi.s
bl.s frwr- 14 ../src/cmd/bl.s
db.s frwr- 14 ../src/cmd/db.s
hello.b frwr- 14 ../src/other/hello.b
b.b frwr- 14 ../src/other/b.b
$
doug drwr- 15
system l---- 3
t1.s frwr- 15 ../src/cmd/t1.s
t2.s frwr- 15 ../src/cmd/t2.s
t3.s frwr- 15 ../src/cmd/t3.s
t4.s frwr- 15 ../src/cmd/t4.s
t5.s frwr- 15 ../src/cmd/t5.s
t6.s frwr- 15 ../src/cmd/t6.s
t7.s frwr- 15 ../src/cmd/t7.s
t8.s frwr- 15 ../src/cmd/t8.s
$

View File

@ -12,8 +12,7 @@ set tti unix
set rb ena
att rb image.fs
# uncomment to TELNET in GRAPHICS-2 keyboard/display(!!)
# (requires github.com/philbudne/simh)
# enable TELNET in GRAPHICS-2 keyboard/display(!!)
set g2in ena
att -U g2in 12345

101
src/cmd/op.s Normal file
View File

@ -0,0 +1,101 @@
"** 09-1-35.pdf page 35
" op
sys = 0020000
dac = 0040000
jms = 0100000
dzm = 0140000
lac = 0200000
xor = 0240000
add = 0300000
tad = 0340000
xct = 0400000
isz = 0440000
and = 0500000
sad = 0540000
jmp = 0600000
law = 0760000
nop = 0740000
cma = 0740001
cml = 0740002
oas = 0740004
ral = 0740010
rar = 0740020
hlt = 0740040
sma = 0740100
sza = 0740200
snl = 0740400
skp = 0741000
spa = 0741100
sna = 0741200
szl = 0741400
rtl = 0742010
rtr = 0742020
cll = 0744000
stl = 0744002
rcl = 0744010
rcr = 0744020
cla = 0750000
clc = 0750001
las = 0750004
glk = 0750010
lrs = 0640500
lrss= 0660500
lls = 0640600
llss= 0660600
als = 0640700
alss= 0660700
norm= 0640444
norms=0660444
mul = 0653122
muls= 0657122
div = 0640323
divs= 0644323
idiv= 0653323
idivs=0657323
frdiv = 0650323
frdivs = 0654323
lacq = 0641002
lacs = 0641001
clq = 0650000
ads = 0644000
gsm = 0664000
"** 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

69
src/cmd/t1.s Normal file
View File

@ -0,0 +1,69 @@
"** 13-120-147.pdf page 5
t=0
main:
lac 017777 i
sad d4
jmp 2f
sad d8
jmp 1f
law 9
tad 017777
dac 0f
law 017
sys creat;0:0
dac output
1:law 5
tad 017777
dac 0f
sys open;0:0;0
dac input
spa
sys exit
2:
jms advance; jmp 1f
jmp rinterp
0:lac 2f
jms obuild
1:lac owrite
spa
jmp 0b
jms oflush
las
spa
sys exit
sys save
2:o777
"special machine language code
"puts out and octal strin g from symtab entry
symoct:
lac equ
add equbot
dac 9f+t
lac 1f
jms twoktab; lac 9f+t i
1:gf .+1 x
lac ii
dac 8
lac 8 i
add symbot
dac 9f+t
2:lac 9f+t i
jms putoct
lac onenl
jms obuild
lac 9f+t i
and o600600
sza "skip unless word contained eof (0777)
jmp ggoon
"** 13-120-147.pdf page 6
isz 9f+t
jmp 2b
t=t+1
o600600:0600600

411
src/cmd/t2.s Normal file
View File

@ -0,0 +1,411 @@
"** 13-120-147.pdf page 7
" recognition stack frame advance
advance:0
lac frame
dac 8
lac advance i
dac 8 i
lac ii
dac 8 i
lac ignore
dac 8 i
lac j
dac 8 i
lac k
dac 8 i
lac frame
dac nframe i
lac nframe
dac frame
add dffrmsz
dac nframe
dac nframe
jms between; add rbot; add rtop
jms halt
isz advance
jmp advance i
retreat:
dzm junk
lac gflag
sza
jmp 1f
jms bundlep
dac junk
1:lac frame
dac nframe
lac frame i
dac frame
dac 8
lac 8 i
dac 3f "retrun address
lac 8 i
dac ii
lac 8 i
dac ignore
lac fflag
sna
jmp 2f
lac 8 i "restore j and k on failure
dac j
lac 8 i
dac k
2:lac junk
sna
jmp 3f
dac nframe i "stass reslts
isz nframe
3:jmp
" bundle up results and return single pointer to them in ac
" return 0 if no results
"** 13-120-147.pdf page 8
bundlep:0
lac fflag
sza
jmp 2f "no results on failure
jms nframe0
dac 9f+t
cma
tad nframe
cma
dac 9f+t+1
sma
jmp 2f
sad m1
jmp 3f "only one result, no bundling necessary
lac 9f+t
tad m1
dac 8
1:lac 8 i
jms kput
isz 9f+t+1
jmp 1b
lac k "make up result pointer
add l.gk
jmp bundlep i
2:cla
jmp bundlep i
3:lac 9f+t i
jmp bundlep i
t=t+1 "where to find results
t=t+1 "negative of result count
" the main interpreter loop
" locate original value of nframe for present stack level.
nframe0:0
jms s1get; add d.ii
dac junk
lac junk i
dac junk
lac junk i
and opmask
sad l.rw
jmp 1f
lac refrsz
jmp 2f
1:lac junk i
and o17777
2:add frame
jmp nframe0 i
halt:0
lac 1f
jms obuild
lac halt
jms putoct
lac onenl
jms obuild
xct rstack+1
1:.+1;012077;end
"** 13-120-147.pdf page 9
rinterp:
las "trace check
and d5
sna
jmp .+3
lac bugr
jms bug
lac fflag
ral
lac ii i
and opmask
sad l.ra
jmp rera
sad l.rb
jmp rerb
szl
jmp retreat
lrs 14
and o17
add rbranch
dac .+1
jmp
rbranch:
jmp .+1 i
reno
rerx
rerc
regc
rerf
rerw
rera
reuu
rero
rerm
rers
rerv
reuu
reuu
reuu
reuu
reuu:
jms halt
rerb:
cml
rera:
dzm fflag
snl
jmp goon
jms aget
dac ii
jmp rinterp
backup:
lac jsav
dac j
nuts:
law
"** 13-120-147.pdf page 10
dac fflag
reno:
goon:
lac ii i
isz ii
and exitmask
sza
jmp retreat
jmp rinterp
rerw:
jms aget
add frame
dac nframe
jmp goon
rerc:
jms advance; jmp goon
jms aget
dac ii
jmp rinterp
gegf:
rerf:
jms aget
add ljmp
dac .+1
jmp
rerx:
lac j
dac jsav
jms aget
1:dac 9f+t
jms lchar
sad o777
jmp goon
dac 9f+t+1
jms getj
sad 9f+t+1
jmp 2f
jmp backup
2:lac 9f+t
add o400000
jmp 1b
t=t+1 "address of next comparison char
t=t+1 "character itself
aget:0
lac ii i
and o17777
jmp aget i
regc:
lac ii i
and o757777
xor exitmask
dac nframe i
"** 13-120-147.pdf page 11
isz nframe
jmp goon
kput:0
isz k
dac junk1
lac k
jms between; add d0; add kmax
jms halt
add kbot
dac junk
lac junk1
dac junk i
jmp kput i
s0get:0
lac frame
xct s0get i
dac junk
lac junk i
isz s0get
jmp s0get i
s1get:0
lac frame i
xct s1get i
dac junk
lac junk i
isz s1get
jmp s1get i
s0put:0
lmq
lac frame
xct s0put i
dac junk
lacq
dac junk i
isz s0put
jmp s0put i
" here is the generaion interpreter
" the k table cant move while its active
geno:
ggoon:
lac ii i
isz ii
and exitmask
sza
jmp retreat
ginterp:
las "trace check
and d6
sna
jmp .+3
lac bugg
jms bug
lac ii i
lrss 14
and o7
"** 13-120-147.pdf page 12
add gbranch
dac .+1
jmp
gbranch:
jmp .+1 i
geno
gegx
geuu
gegc
gegf
gegk
gegp
gegq
geuu:
jms halt
gegx:
lac ii i
and o417777
jms obuild
jmp ggoon
gegq:
jms advance; jmp ggoon
lac env
add d.ii
dac junk
jms aget
add junk i
dac junk
lac junk i
dac ii
lac env
add d.env
dac junk
lac junk i
dac env
jmp ginterp
gegp:
jms advance; jmp ggoon
lac env
add d.ii
dac junk
lac frame i
dac env
jms aget
cma
add junk i
dac ii
jmp ginterp
gegk:
lac ii i
jms aget
add kbot
dac ii
jms s0put; add d.ii
lac frame
"** 13-120-147.pdf page 13
dac env
jmp ginterp
gegc:
jms advance; jmp ggoon
jms aget
dac ii
jmp ginterp
bug:0
dac 1f+2
lac onenl
jms obuild
lac ii
jms putoct
lac ii i
lrs 14
and o17
add 1f+2
dac 1f+2
lac 1f+2 i
dac 1f+2
lac 1f
jms obuild
lac ii i
jms putoct
las
and d4
sza
jms halt
jmp bug i
1:0400000 .+1; 040; 0; 040777

263
src/cmd/t3.s Normal file
View File

@ -0,0 +1,263 @@
"** 13-120-147.pdf page 14
move: 0
dac 9f+t
lac move i
1:dac 2f
lac 9f+t
jms lchar
dac 9f+t+1
jms dchar
2: 0
lac 9f+t+1
sad o777
jmp 3f
lac o400000
add 9f+t
dac 9f+t
lac o400000
add 2b
jmp 1b
3:isz move
lac 2b
jmp move i
t=t+1 "source address
t=t+1 "source character
lchar:0
dac junk
ral
lac junk i
snl
lrs 9
and o777
jmp lchar i
dchar:0
lmq
lac dchar i
dac junk
spa
jmp 1f
llss 9
lac o777
jmp .+2
1:0777000
and junk i
omq
dac junk i
isz dchar
jmp dchar i
" gets designated character from input
jget:0
1:lac j
jms cbetween; add jmin; add jmax
jmp jmore
cma
add jmin
cma
add jbot
jms lchar
jms class; add ignore
"** 13-120-147.pdf page 15
jmp jget i
lac j
add o400000
dac j
jmp 1b
" read more input - filthy code, enough to make disk &
" terminal input work. Theae only deliver full count
" except at eof or 1 word
jmore:
and o377700
dac jmin
add ljsiz
dac 9f+t
lac jmax
jms cbetween; add jmin; add 9f+t
lac jmin
dac jmax
dac 1f
cma
add jmin
cma
add jbot
dac 2f
lac input
sys seek
1:0;0
-1
dac 2f i
lac input
sys read
2:0;jsiz
sna
lac d1
add jmax
dac jmax
jmp jget+1
t=t+1
" gets next character from input
getj:0
lac j
jms jget
dac junk
lac j
add o400000
dac j
lac junk
jmp getj i
" compare two strings - assume both left justified
comp:0
dac 9f+t
lac comp i
dac 9f+t+1
isz comp
1:lac 9f+t i
sad 9f+t+1 i
"** 13-120-147.pdf page 16
jmp 3f
and 9f+t+1 i "do both start with eof?
spa
2:isz comp
jmp comp i
3:and o600600 "is there an eof?
sza
jmp 2b
isz 9f+t
isz 9f+t+1
jmp 1b
t=t+1 "address of string 1
t=t+1 "address of string 2
obuild:0
lmq
lac owrite
add obot
dac 2f
lacq
1:jms move
2:0
cma
add obot
cma
dac owrite
jms cbetween; add d0; add omax
skp
jmp obuild i
lac lochunk
jms oflush
lac obot
dac 2b
add lochunk
jmp 1b
oflush:0
dac 2f
lac obot
dac 1f
lac output
sys write
1:0
2:0
jmp oflush i
" outputs octal string from sesignated value
octal:
isz ii
lac ii i
dac 2f
lac 1f
jms twoktab
lac 2f i
1:gf geoctal x
2:0
"** 13-120-147.pdf page 17
geoctal:
lac ii
dac 8
lac 8 i
jms putoct
jmp ggoon
" converts word in ac into ocatl on output stream
putoct:0
dac 9f+t
lac 7f
jms obuild
dzm 9f+t+2
-6
dac 9f+t+1
1:lac 9f+t
cll
lrs 15
add o60
dac 8f+1
lls 18
dac 9f+t
lac 9f+t+2 "have nonzero digits been seen?
sza
jmp 2f
lac 8f+1 "no,is this nonzero?
sad o60
jmp 3f "no
2:lac 8f
jms obuild
law
dac 9f+t+2
3:isz 9f+t+1
jmp 1b
jmp putoct i
t=t+1 "value to convert
t=t+1 "digit count
t=t+1 "nonzero digit flag
7: .+1; 060777
8:0400000 .+1;0;end
eof:
lac j
dac jsav
jms jget
sad o777
jmp goon
jmp backup
class:0
dac junk1
lrss 7
sza
jmp 2f
lls 3
xct class i
isz class
dac junk
"** 13-120-147.pdf page 18
cla
llss 4
add l.llss
dac 1f
lac junk i
1:llss
spa
2:isz class
lac junk1
jmp class i

112
src/cmd/t4.s Normal file
View File

@ -0,0 +1,112 @@
"** 13-120-147.pdf page 19
" put symbuf symbol into table
table:
lac equwrite
dac equ
jms between; add d0; add equmax
jms halt
add delta
dac equwrite
lac equ
add equbot
tad m1
dac 8
lac symwrite
dac 8 i
add symbot
dac 2f
lac mdelta
1:dzm 8 i
tad d1
spa
jmp 1b
lac sbbot
jms move
2:0
add o400000
cma
add symbot
cma
add o400000
and o17777
dac symwrite
jms between; add d0; add symmax
jms halt
jmp goon
" find occurrence of symbuf symbol in equtab
prev:
lac equ
jmp find+1
find:
lac equwrite
dac 9f+t
lac o777
jms sbput
lac sbbot
dac 2f
1:lac 9f+t
tad mdelta
dac 9f+t
spa
jmp nuts
add equbot
dac junk
lac junk i
add symbot
jms comp
2:0
jmp 1b
lac 9f+t
dac equ
"** 13-120-147.pdf page 20
jmp goon
t=t+1 "next equtab location to test
sbput:0
lmq
lac sbwrite
add sbbot
dac 1f
lacq
jms dchar
1:0
lac sbwrite
add o400000
dac sbwrite
jms cbetween; add d0; add sbmax
jms halt
jmp sbput i
getname:
lac equ
add equbot
dac 9f+t
lac 1f
jms twoktab; lac 9f+t i
1:gf .+1 x
lac ii
dac 8
lac 8 i
add symbot
and o17777
jms obuild
jmp ggoon
t=t+1 "equtable entry
" puts double word entries in ktab and gives
"pointer to first as result
twoktab:0
jms kput
lac l.gk
add k
dac nframe i
isz nframe
xct twoktab i
jms kput
jmp goon

118
src/cmd/t5.s Normal file
View File

@ -0,0 +1,118 @@
"** 13-120-147.pdf page 21
char:
lac j
dac jsav
isz ii
jms ctest
jmp backup
jmp goon
string:
isz ii
jms ctest
jmp goon
jmp string+1
ctest:0
jms jget
jms class; add ii i
jmp ctest i
jms sbput
lac j
add o400000
dac j
isz ctest
jmp ctest i
mark:
jms jget
dzm sbwrite
jmp goon
parsedo:
isz ii
jms advance; jmp 3f
jms advance; jmp 1f
jms aget
dac ii
jmp rinterp
1:lac frame
add refrsz
dac ii
sad nframe
jmp retreat
dac gflag
lac gefrsz
dac dffrmsz
jms advance; jmp 2f
jmp ginterp
2:lac refrsz
dac dffrmsz
add frame
dac nframe
dzm gflag
jmp retreat
3:jms s0get; add d.k
dac k
jmp goon
bundle:
jms bundlep
"** 13-120-147.pdf page 22
dac 9f+t
sna
jmp goon
jms nframe0
dac nframe
lac 9f+t
dac nframe i
isz nframe
jmp goon
t=t+1
" jms between;add a; add b; skip if a<=ac<b
between:0
dac 9f+t
cma
xct between i
isz between
sma
jmp 1f
lac 9f+t
cma
xct between i
isz between
sma
1:isz between
lac 9f+t
jmp between i
t=t+0 "shared with next temporary
" jms cbetween; add a; add b; skip if a<=ac<b where ac
" contains a character address
cbetween:0
dac 9f+t
cma
xct cbetween i
isz cbetween
ral
sma
jmp 1f
lac 9f+t
cma
xct cbetween i
isz cbetween
ral
sma
1:isz cbetween
lac 9f+t
jmp cbetween i
t=t+1 "ac contents

165
src/cmd/t6.s Normal file
View File

@ -0,0 +1,165 @@
"** 13-120-147.pdf page 23
rerm:
jms aget
jmp 1f
rers:
jms aget
add frame
1:dac holdlv
lac holdlv i
jmp 2f
rerv:
jms aget
lls 6
lrs 6
2:dac nframe i
isz nframe
jmp goon
rero:
jms decnf
dac rand1
jms aget
and o77
add obranch
dac 2f
cma
tad unary
spa
jmp 1f
jms decnf
dac rand2
1:lac rand1
2:xct
jmp result
obranch:
xct .+1
opr ;op=0400000+1
jmp rorel ;le=op;op=op+1
jmp rorel ;ne=op;op=op+1
jmp rorel ;lt=op;op=op+1
jmp rorel ;ge=op;op=op+1
jmp rorel ;eq=op;op=op+1
jmp rorel ;gt=op;op=op+1
tad rand2 ;ad=op;op=op+1
jms sub ;sb=op;op=op+1
and rand2 ;an=op;op=op+1
jmp roor ;or=op;op=op+1
xor rand2 ;xo=op;op=op+1
jmp rosr ;sr=op;op=op+1
jmp rosl ;sl=op;op=op+1
jmp romn ;mn=op;op=op+1
jmp romx ;mx=op;op=op+1
lac rand2 ;as=op;op=op+1
opr ;pl=op;op=op+1
jmp romi ;mi=op;op=op+1
cma ;cm=op;op=op+1
jmp roindir;indir=op;op=op+1
lac holdlv ;addr=op;op=op+1
unary:xct obranch+1+pl
rorel: "<= 001
"** 13-120-147.pdf page 24
jms sub "!= 010
sna "< 011
jmp 2f ">= 100
spa "= 101
jmp 1f "> 110
lac d1 "a>b, code 001
jmp 3f
1:lac d2 "a<b, code 100
2:add d2 "a=b, code 010
3:and ii i
sza
-1
cma
jmp result
sub:0
cma
tad rand2
cma
jmp sub i
roor:
lmq
lac rand2
omq
jmp result
rosr:
lac rand2
add l.lrs
cll
jmp 1f
rosl:
lac rand2
add l.lls
clq
1:dac .+2
lac rand1
0
jmp result
romn:
jms sub
cma
jmp .+2
romx:
jms sub
ral
lac rand1
szl
lac rand2
jmp result
romi:
cma
tad d1
jmp result
roindir:
dac holdlv
lac holdlv i
"** 13-120-147.pdf page 25
jmp result
result:
dac junk
dac nframe i
isz nframe
lac ii i
and stbit
sna
jmp exprtest
lac junk
dac holdlv i
lac ii i
and fibit
sza
jms decnf
jmp goon
exprtest:
lac ii i
and fibit
sna
jmp goon
jms decnf
lac nframe i
sza
-1
cma
dac fflag
jmp goon
decnf:0
-1
tad nframe
dac nframe
lac nframe i
jmp decnf i

126
src/cmd/t7.s Normal file
View File

@ -0,0 +1,126 @@
"** 13-120-147.pdf page 26
9:.=.+t
end = -1
no = 0000000
rx = 0040000; gx = rx
rc = 0100000
rt = 0140000; gc = rt
rf = 0200000; gf = rf
rw = 0240000; gk = rw
ra = 0300000; gp = ra
rb = 0340000;gq = rb
ro = 0400000
rm = 0440000
rs = 0500000
rv = 0540000
ljmp:jmp
l.llss:llss
l.lrs:lrs
l.lls:lls
l.ra:ra
l.rb:rb
l.rw:rw
l.gk:gk
l.gcx:gc x
x = 020000
st = 0100
fi = 0200
opmask:0740000
exitmask: x
m1:0-1
d0:o0:0
d1:o1:1
d2:o2:2
d3:o3:3
d4:o4:4
d5:o5:5
d6:o6:6
d7:o7:7
d8:o10:8
asciisp:040
asciinl:012
nl:012777
onenl:nl
bugr:.+1;<rn>;<rx>;<rc>;<rt>;<rf>;<rw>;<ra>;<rb>
<ro>;<rm>;<rs>;<rv>
bugg:.+1;<gn>;<gx>;<gz>;<gc>;<gf>;<gk>;<gp>;<gq>
o17:017
o60:060
o77:077
o777:0777
o417777:0417777
o400000:0400000
o740000:0740000
o377700:0377700
o17777:017777
"** 13-120-147.pdf page 27
o757777:0757777
o600600:0600600
junk:0
junk1:0
output:1
input:0
stbit:st
fibit:fi
holdlv:0
rand1:0
rand2:0
symwrite:0
symbot: symtab
symsiz = 500
symmax:symsiz
equwrite:0
equread:0
equ = equread
equbot: equtab
equsiz = 500
equmax: equsiz
delta: 2
mdelta:0-2
sbsiz=50
sbmax:sbsiz
sbwrite:0
sbbot:sbbuf
fflag:0
gflag:0
ignore:.+1;0400000;0;0;0;0;0;0;4
frame:rstack
nframe:rstack+6
env = ignore
d.ii = d2
d.env = d3
d.blkmod = d3
d.j = d4
d.k = d5
dffrmsz:6
framsiz:4
refrsz = d6
gefrsz = d4
ii: start
k:0
rsiz = 500
rmax: rsiz
rbot:rstack
rtop:rstack+rsiz
owrite:0
obot:obuf
osiz=64

58
src/cmd/t8.s Normal file
View File

@ -0,0 +1,58 @@
"** 13-120-147.pdf page 28
" op.s is the op code defination file
" for the assembler
" no iot ops are defined
" system cal entries are defined
"
dac = 0040000
jms = 0100000
dzm = 0140000
lac = 0200000
xor = 0240000
add = 0300000
tad = 0340000
xct = 0400000
isz = 0440000
and = 0500000
sad = 0540000
jmp = 0600000
eae = 0640000
i = 020000
opr = 0740000
law = opr i
cma = opr 1
cml = opr 2
ral = opr 010
rar = opr 020
sma = opr 0100
sza = opr 0200
snl = opr 0400
skp = opr 01000
spa = opr 01100
sna = opr 01200
szl = opr 01400
cll = opr 04000
cla = opr 010000
las = opr 010004
lrs = eae 0500
lrss = i lrs
lls = eae 0600
llss = i lls
als = eae 0700
alss = i als
lacq = eae 01002
lacs = eae 01001
clq = eae 010000
omq = eae 2
cmq = eae 4
lmq = eae 012000
sys = i
save = 1
open = 3
read = 4
write = 5
creat = 6
seek = 7
close = 9
exit = 14

View File

@ -294,7 +294,7 @@ sub set_label
# An error to have different values
if ( defined( $Glabel{$label} ) && $Glabel{$label} != $loc ) {
# non-fatal: as.s doesn't even warn!!!!
print STDERR "$file:$lineno: Global label $label multiply defined\n"
print STDERR "$file:$lineno: NOTE: Global label $label multiply defined (not an error)\n"
if ($stage == 2);
}
else {
@ -398,7 +398,7 @@ sub parse_line {
return if (eol());
if ( $line =~ s{^(\S+)\s*=}{}) { # assignment
if ( $line =~ s{^([^;= \t]+)\s*=}{}) { # assignment
my $lhs = $1;
my $word = parse_expression();
printf( "Setting variable %s to 0%o\n", $lhs, $word ) if ($debug);

View File

@ -213,8 +213,8 @@ sub print_direntry {
# Warn about empty filename
$name= "EMPTY FILENAME" if ($name=~ m{/$});
printf( "%4d %s%s%s%s%s %2d %3d %5d %s\n",
$inum, $p1, $p2, $p3, $p4, $p5, $links, $uid, $size, $name );
printf( "%4d %s%s%s%s%s %2d %3o %5d %s\n",
$inum, $p1, $p2, $p3, $p4, $p5, $links, $uid & 0777, $size, $name );
}
# Given a directory's i-num and name, check it

View File

@ -513,6 +513,12 @@ sub parse_perms {
return ( $filetype, $perms );
}
sub uid {
my $uid = shift;
return -1 if ($uid eq '-1');
return oct($uid);
}
# Open the named proto file and parse it
sub parse_proto_file {
my $file = shift;
@ -543,17 +549,17 @@ sub parse_proto_file {
if ( $type eq I_DIRECTORY ) {
my ( $name, $permstr, $uid, $inum ) = @words;
make_dir( $name, $perms, $uid, $inum );
make_dir( $name, $perms, uid($uid), $inum );
next;
}
if ( $type eq I_FILE ) {
my ( $name, $permstr, $uid, $extfile, $inum ) = @words;
add_file( $name, $perms, $uid, $extfile, $inum );
add_file( $name, $perms, uid($uid), $extfile, $inum );
next;
}
if ( $type eq I_SPECIAL ) {
my ( $name, $permstr, $uid, $inum ) = @words;
add_special( $name, $perms, $uid, $inum );
add_special( $name, $perms, uid($uid), $inum );
next;
}
if ( $type eq I_LINK ) {