1
0
mirror of https://github.com/livingcomputermuseum/pdp7-unix.git synced 2026-02-26 17:04:05 +00:00

Merge pull request #80 from teverett/master

refactoring source tree
This commit is contained in:
Tom Everett
2019-10-19 16:15:08 -06:00
committed by GitHub
31 changed files with 3332 additions and 51 deletions

2
.gitignore vendored
View File

@@ -12,3 +12,5 @@ build/n.out
build/alt/a.lst
build/alt/a.out
build/alt/image.fs
**/.DS_Store
/a.out

View File

@@ -48,12 +48,6 @@ To run pdp-unix from the pdp7-unix source tree, do:
Press `ctl-e` to break out the simulator into simh
### Precompiled Binaries
You can also run pdp7-unix from precompiled binaries in the [/binaries](/binaries) directory.
`cd binaries/; pdp7 unixv0.simh`
### Typical Output
A typical pdp7-unix session on simh looks like:

View File

@@ -1 +0,0 @@
¸¸¸¹¡¿<EFBFBD>¸¹”½€€¸¹¢€¦¶‡ˆ•€¤¸¹„€¢¸¹¤¸¹±€<EFBFBD>¸¹š¼‰€¼€ ¿°€¸¹”€£¸¹¢€¦¶‡ˆ•€¥¸¹„€¢¸¹¤¸¹±€œ¸¹š¼‰€¼€ °<EFBFBD>€€<EFBFBD>€€°€˜€€˜<EFBFBD>ˆ€€€±€À

Binary file not shown.

View File

@@ -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

View File

@@ -14,6 +14,7 @@ PDP7=pdp7
# source dirs
SYSSRC=../src/sys
CMDSRC=../src/cmd
GAMESRC=../src/games
ALTSRC=../src/alt
OTHERSRC=../src/other
TESTSRC=../src/tests
@@ -57,9 +58,9 @@ a.out:
# Alternative kernel: no dd, but . and ..
alt/a.out:
$(AS) -f ptr -o alt/a.out $(SYSSRC)/sop.s $(SYSSRC)/s1.s \
$(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s
$(ALTSRC)/s2/s2.s $(SYSSRC)/s[3-8].s
$(AS) -n -f list -o alt/a.lst $(SYSSRC)/sop.s $(SYSSRC)/s1.s \
$(ALTSRC)/s2.s $(SYSSRC)/s[3-8].s
$(ALTSRC)/s2/s2.s $(SYSSRC)/s[3-8].s
# Phil's bootstrap code
boot.rim: $(SYSSRC)/sop.s $(OTHERSRC)/pbboot.s
@@ -84,7 +85,7 @@ alt/image.fs: altcmd altothers
clean:
rm -f boot.rim image.fs a.lst n.out a.out
rm -f alt/image.fs alt/a.out alt/a.lst
rm -rf $(BINDIR) $(TESTDIR)
rm -rf $(BINDIR) $(TESTDIR)
rm -rf $(BINARIES)
dirs:
@@ -94,7 +95,9 @@ dirs:
cmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \
$(BINDIR)/chown $(BINDIR)/chrm $(BINDIR)/cp $(BINDIR)/ds \
$(BINDIR)/dskres $(BINDIR)/dsksav $(BINDIR)/ed $(BINDIR)/init \
$(BINDIR)/db
$(BINDIR)/db $(BINDIR)/stat $(BINDIR)/tm $(BINDIR)/dsw $(BINDIR)/apr \
$(BINDIR)/cas $(BINDIR)/rm $(BINDIR)/rn $(BINDIR)/pd $(BINDIR)/nm \
$(BINDIR)/roff $(BINDIR)/p
# Alternate commands: no dd, but . and ..
altcmd: dirs $(BINDIR)/as $(BINDIR)/cat $(BINDIR)/check $(BINDIR)/chmod \
@@ -143,6 +146,57 @@ $(BINDIR)/init: $(CMDSRC)/init.s
$(BINDIR)/db: $(CMDSRC)/db.s
$(AS) $(ASARGS) -o $(BINDIR)/db $(CMDSRC)/db.s
$(BINDIR)/stat: $(CMDSRC)/stat.s
$(AS) $(ASARGS) -o $(BINDIR)/stat $(CMDSRC)//stat.s
$(BINDIR)/tm: $(CMDSRC)/tm.s
$(AS) $(ASARGS) -o $(BINDIR)/tm $(CMDSRC)/tm.s
$(BINDIR)/cas: $(CMDSRC)/cas.s
$(AS) $(ASARGS) -o $(BINDIR)/cas $(CMDSRC)/cas.s
# -- compile errors
$(BINDIR)/dmabs: $(CMDSRC)/dmabs.s
$(AS) $(ASARGS) -o $(BINDIR)/dmabs $(CMDSRC)/dmabs.s
# -- compile errors
$(BINDIR)/bc: $(CMDSRC)/bc.s
$(AS) $(ASARGS) -o $(BINDIR)/bc $(CMDSRC)/bc.s
$(BINDIR)/dsw: $(CMDSRC)/dsw.s
$(AS) $(ASARGS) -o $(BINDIR)/dsw $(CMDSRC)/dsw.s
$(BINDIR)/apr: $(CMDSRC)/apr.s
$(AS) $(ASARGS) -o $(BINDIR)/apr $(CMDSRC)/apr.s
# -- compile errors
$(BINDIR)/adm: $(CMDSRC)/adm.s
$(AS) $(ASARGS) -o $(BINDIR)/adm $(CMDSRC)/adm.s
$(BINDIR)/sh: $(CMDSRC)/sh.s
$(AS) $(ASARGS) -o $(BINDIR)/sh $(CMDSRC)/sh.s
$(BINDIR)/rn: $(CMDSRC)/rn.s
$(AS) $(ASARGS) -o $(BINDIR)/rn $(CMDSRC)/rn.s
$(BINDIR)/rm: $(CMDSRC)/rm.s
$(AS) $(ASARGS) -o $(BINDIR)/rm $(CMDSRC)/rm.s
$(BINDIR)/pd: $(CMDSRC)/pd.s
$(AS) $(ASARGS) -o $(BINDIR)/pd $(CMDSRC)/pd.s
$(BINDIR)/ls: $(CMDSRC)/ls.s
$(AS) $(ASARGS) -o $(BINDIR)/ls $(CMDSRC)/ls.s
$(BINDIR)/nm: $(CMDSRC)/nm.s
$(AS) $(ASARGS) -o $(BINDIR)/nm $(CMDSRC)/nm.s
$(BINDIR)/roff: $(CMDSRC)/roff.s
$(AS) $(ASARGS) -o $(BINDIR)/roff $(CMDSRC)/roff.s
$(BINDIR)/p: $(CMDSRC)/p0.s $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s
$(AS) $(ASARGS) -o $(BINDIR)/p $(CMDSRC)/p0.s $(CMDSRC)/p1.s $(CMDSRC)/p2.s $(CMDSRC)/p3.s $(CMDSRC)/p4.s $(CMDSRC)/p5.s
# Alternative init: no dd directory
$(BINDIR)/altinit: $(ALTSRC)/init.s
$(AS) $(ASARGS) -o $(BINDIR)/altinit $(ALTSRC)/init.s
@@ -182,8 +236,8 @@ $(BINDIR)/ls: $(OTHERSRC)/wktls.s
$(BINDIR)/lsd: $(OTHERSRC)/pblsd.s
$(AS) $(ASARGS) -o $(BINDIR)/lsd $(OTHERSRC)/pblsd.s
$(BINDIR)/altls: $(ALTSRC)/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls.s
$(BINDIR)/altls: $(ALTSRC)/wktls/wktls.s
$(AS) $(ASARGS) -o $(BINDIR)/altls $(ALTSRC)/wktls/wktls.s
$(BINDIR)/lsl: $(OTHERSRC)/pblsd.s
$(AS) $(ASARGS) -o $(BINDIR)/lsl $(OTHERSRC)/pblsd.s

View File

@@ -11,7 +11,7 @@
# Contents of each directory ends with a $ on a line by itself
# Format was inspired by 6th Edition mkfs
#
dd drwr- -1 4
dd drwr- -1 4
core frwrw -1 /dev/null 1
system drwr- -1 3
ttyin irwr- -1 6
@@ -20,8 +20,10 @@ dd drwr- -1 4
ttyout irwr- -1 11
display irwr- -1 12
pptout irwr- -1 13
apr frwr- -1 bin/apr
as frwr- -1 bin/as
bc frwr- -1 bin/bc
cas frwr- -1 bin/cas
cat frwr- -1 bin/cat
check frwr- -1 bin/check
chmod frwr- -1 bin/chmod
@@ -33,18 +35,27 @@ dd drwr- -1 4
ds frwr- -1 bin/ds
dskres frwr- -1 bin/dskres
dsksav frwr- -1 bin/dsksav
dsw frwr- -1 bin/dsw
ed frwr- -1 bin/ed
init frwr- -1 bin/init
init frwr- -1 bin/init
ln frwr- -1 bin/ln
ls frwr- -1 bin/ls
lsd frwr- -1 bin/lsd
lsl frwr- -1 bin/lsd
nm frwr- -1 bin/nm
od frwr- -1 bin/od
p frwr- -1 bin/p
pd frwr- -1 bin/pd
mv frwr- -1 bin/mv
password frw-- -1 fs/password
password frw-- -1 fs/password
roff frwr- -1 bin/roff
rn frwr- -1 bin/rn
rm frwr- -1 bin/rm
sh frwr- -1 bin/sh
stat frwr- -1 bin/stat
$
tm frwr- -1 bin/tm
$
ken drwr- 10
system l---- 3
sop.s frwr- 10 ../src/sys/sop.s

View File

@@ -24,7 +24,7 @@ wr:
lac d1
sys write; o12; 1
sys save
io:
do:
sys unlink; dir+1
sys exit

BIN
src/cmd/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -24,7 +24,7 @@ wr:
lac d1
sys write; o12; 1
sys save
io:
do:
sys unlink; dir+1
sys exit

276
src/cmd/ls.s Normal file
View File

@@ -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: <li>
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:

234
src/cmd/nm.s Normal file
View File

@@ -0,0 +1,234 @@
"** 09-1-35.pdf page 31
" nm
lac 017777 i
sad d3
skp
jmp 1f
law n.out
dac fname
jmp 2f
1:
lac 017777
tad d1
dac fname
loop:
lac 017777 i
sad d4
jmp done
tad dm4
dac 017777 i
lac fname
tad d4
dac fname
2:
law 012
jms putc
sys open; fname: 0; 0
sma
jmp 1f
lac fname
dac 2f
lac d1
sys write; 2: 0; 4
lac d1
sys write; mes; 2
jmp loop
mes:
040077; 012
1:
lac d2
sys read; buf; 3072
cll; idiv; 6
lacq
dac size
law o200000
dac c2
print:
lac o200000
dac c2 i
dzm c2name
-1
tad size
cma
dac c1
law buf
dac c3
lac o200000
dac c2name
1:
lac c3 i
"** 09-1-35.pdf page 32
cma
tad c2name
spa
jmp 2f
lac c3 i
dac c2name
lac c3
dac c2
2:
law 6
tad c3
dac c3
isz c1
jmp 1b
lac c2name
sad o200000
skp
jmp 1f
lac d2
sys close
jmp loop
1:
lac c2
tad d3
dac t
lac i t
sna
jmp print
isz t
lac i t
sna
jmp print
-1
tad c2
dac 8
-4
dac c3
1:
lac 8 i
lrss 9
jms putc
llss 9
jms putc
isz c3
jmp 1b
lac i t
sad d3
jmp undef
sna
jmp 1f
law 0162
skp
1:
law 0141
dac type
law 040
jms putc
isz t
lac i t
lmq
"** 09-1-35.pdf page 33
-6
dac c3
1:
cla
llss 3
tad o60
jms putc
isz c3
jmp 1b
law 040
jms putc
lac type
jms putc
law 012
jms putc
jmp print
undef:
-8
dac c3
1:
law 040
jms putc
isz c3
jmp 1b
law 0165
jms putc
law 012
jms putc
jmp print
done:
lac noc
sna
sys exit
and d1
sna cla
jmp 1f
jms putc
jmp done
1:
lac noc
rcr
dac 1f
lac fo
sys write; iopt+1; 1:..
sys exit
putc: 0
and o777
dac 2f+1
lac opt
dac 2f
add o400000
dac opt
spa
jmp 1f
lac 2f i
xor 2f+1
jmp 3f
1:
lac 2f+1
"** 09-1-35.pdf page 34
alss 9
3:
dac 2f i
isz noc
lac noc
sad d128
skp
jmp putc i
lac fo
sys write; iopt+1; 64
lac iopt
dac opt
dzm noc
jmp putc i
2: 0;0
ipt: 0
eipt: 0
iipt: .+1; .=.+64
fi: 0
opt: .+2
iopt: .+1; .=.+64
noc: 0
fo: 1
c1: 0
c2: 0
c3: 0
t: 0
size: 0
c2name: 0
type: 0
d1: 1
d128: 128
o200000: 0200000
o777: 0777
o400000: 0400000
d2: 2
d4: 4
dm4: -4
o60: 060
d3: 3
d6: 6
n.out:
0156056;0157165;0164040;040040
buf:

37
src/cmd/p0.s Normal file
View File

@@ -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

261
src/cmd/p1.s Normal file
View File

@@ -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

226
src/cmd/p2.s Normal file
View File

@@ -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

149
src/cmd/p3.s Normal file
View File

@@ -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

202
src/cmd/p4.s Normal file
View File

@@ -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

156
src/cmd/p5.s Normal file
View File

@@ -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: <pd>;<um>;<p 040; 040040
nballp: nball
listpm1: list-1
outline:
0065047
0140000 0400
0164000 04
0220414
0124000 01000-010-020
0225010
0221010
0124000 0777-010-020
0224414
0221444
0120000 0777-010-020
0221404
0224454
0126000 0777-010-020
0221050
0225050
0126000 01000-010-020
0220454
0225404
0122000 0777-010-020
0225444
noutline = .-outline
circle:
0212000
0220002
0220002
"** 10-36-55.pdf page 19
0224101
0220002
0224101
0224101
0224101
0224101
0224101
0224101
0224101
0224101
0224200
0224101
0224200
0224200
0224200
0224200
0224141
0224200
0224141
0224141
0224141
0224141
0224141
0224141
0224141
0224141
0220042
0224141
0220042
0220042
0220042
0220042
0220141
0220042
0220141
0220141
0220141
0220141
0220141
0220141
0220141
0220141
0220200
0220141
0220200
0220200
0220200
0220200
0220101
0220200
0220101
0220101
0220101
0220101
0220101
0220101
0220101
0220101
0220002
0220101
0220002
"** 10-36-55.pdf page 20
0220002
circsize = .-circle
.pb: .=.+1
.sw: .=.+1
stime: .=.+1
waitup: .=.+1
sin: .=.+1
cos: .=.+1
vp1: .=.+1
vp2: .=.+1
vt1: .=.+1
vt2: .=.+1
displist: .=.+1
9: .=.+t
ball1:
sflg = .-ball1
.=.+1
x = .-ball1
.=.+1
y = .-ball1
.=.+1
vx = .-ball1
.=.+1
vy = .-ball1
.=.+1
bvsize = .-ball1
ball2:
.=.+bvsize
list:

59
src/cmd/pd.s Normal file
View File

@@ -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:

33
src/cmd/rm.s Normal file
View File

@@ -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

54
src/cmd/rn.s Normal file
View File

@@ -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

942
src/cmd/roff.s Normal file
View File

@@ -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
<ad>; jmp casead; ncase = ncase+1
<bp>; jmp casebp; ncase = ncase+1
<br>; jmp casebr; ncase = ncase+1
<cc>; jmp casecc; ncase = ncase+1
<ce>; jmp casece; ncase = ncase+1
<ds>; jmp caseds; ncase = ncase+1
<fi>; jmp casefi; ncase = ncase+1
<in>; jmp casein; ncase = ncase+1
<li>; jmp caseli; ncase = ncase+1
<ll>; jmp casell; ncase = ncase+1
<ls>; jmp casels; ncase = ncase+1
<na>; jmp casena; ncase = ncase+1
<ne>; jmp casene; ncase = ncase+1
<nf>; jmp casenf; ncase = ncase+1
<pl>; jmp casepl; ncase = ncase+1
<sp>; jmp casesp; ncase = ncase+1
<ss>; jmp casess; ncase = ncase+1
<ti>; jmp caseti; ncase = ncase+1
<ul>; jmp caseul; ncase = ncase+1
<un>; 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

430
src/cmd/sh.s Normal file
View File

@@ -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: <ch>
ready: 0100040
delim: 012
system: <sy>; <st>; <em>; 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:

119
src/cmd/stat.s Normal file
View File

@@ -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

74
src/cmd/tm.s Normal file
View File

@@ -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

View File

@@ -1,4 +1,4 @@
#Tools
# Tools
## 3dump