Merge branch 'master' of https://github.com/DoctorWkt/pdp7-unix
This commit is contained in:
@@ -11,18 +11,21 @@ The scans of PDP-7 Unix are in the [Unix Archive](http://www.tuhs.org/)
|
|||||||
|
|
||||||
## Current Status
|
## Current Status
|
||||||
|
|
||||||
Update mid-March 2016: We've written an assembler, a user-mode simulator and
|
March 2016: We've written an assembler, a user-mode simulator and
|
||||||
commented several source files. We now have these utilities running:
|
commented several source files. We now have these utilities running:
|
||||||
as, cat, chmod, chown, chrm, cp, date, ln, ls, mv, stat. We have a working
|
as, cat, chmod, chown, chrm, cp, date, ln, ls, mv, stat. We have a working
|
||||||
shell with some functionality missing. We have a working filesystem and
|
shell with some functionality missing. We have a working filesystem and
|
||||||
we can now boot the kernel, launch init, login, get to a shell prompt and
|
we can now boot the kernel, launch init, login, get to a shell prompt and
|
||||||
run the utilities.
|
run the utilities.
|
||||||
|
|
||||||
Things to do: finish the shell, write the missing utilities, bring the
|
Things to do: bring the
|
||||||
system fully up on a PDP-7 system, fix any bugs and document everything.
|
system fully up on a PDP-7 system, fix any bugs and document everything.
|
||||||
We have a [real PDP-7](http://physics.uoregon.edu/outreach/movies/pdplives/)
|
We have a [real PDP-7](http://physics.uoregon.edu/outreach/movies/pdplives/)
|
||||||
and [SimH](http://simh.trailing-edge.com/) as target platforms.
|
and [SimH](http://simh.trailing-edge.com/) as target platforms.
|
||||||
|
|
||||||
|
October 2019 update: A second notebook with missing sources has been
|
||||||
|
discovered and scanned. New files are being added to the scans
|
||||||
|
directory as they are typed in!
|
||||||
|
|
||||||
## Building pdp7-unix
|
## Building pdp7-unix
|
||||||
|
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ Details of the files:
|
|||||||
* fop.s pages 1-14 of 09-1-35.pdf
|
* fop.s pages 1-14 of 09-1-35.pdf
|
||||||
* ln.s pages 15-16 of 09-1-35.pdf
|
* ln.s pages 15-16 of 09-1-35.pdf
|
||||||
* ls.s pages 17-21 of 09-1-35.pdf
|
* ls.s pages 17-21 of 09-1-35.pdf
|
||||||
|
* moo.s pages 22-30 of 09-1-35.pdf
|
||||||
* nm.s pages 31-34 of 09-1-35.pdf
|
* nm.s pages 31-34 of 09-1-35.pdf
|
||||||
* op.s page 35 of 09-1-35.pdf
|
* op.s page 35 of 09-1-35.pdf
|
||||||
* pd.s: page 1 of 11-45-91.pdf
|
* pd.s: page 1 of 11-45-91.pdf
|
||||||
|
|||||||
+514
@@ -0,0 +1,514 @@
|
|||||||
|
"** 09-1-35.pdf page 22
|
||||||
|
" moo
|
||||||
|
|
||||||
|
jmp 1f
|
||||||
|
reset:
|
||||||
|
jms messg; <es>;<et>;012;0
|
||||||
|
1:
|
||||||
|
jms messg; <wr>; <u 077; 040; 0
|
||||||
|
sys open; moostat; 0
|
||||||
|
spa
|
||||||
|
sys exit
|
||||||
|
dac fi
|
||||||
|
sys open; moostat; 1
|
||||||
|
spa
|
||||||
|
sys exit
|
||||||
|
dac fo
|
||||||
|
jms readline
|
||||||
|
dzm user
|
||||||
|
skp
|
||||||
|
1:
|
||||||
|
isz user
|
||||||
|
jms getentry
|
||||||
|
jmp noentry
|
||||||
|
lac name
|
||||||
|
sad u.name
|
||||||
|
skp
|
||||||
|
jmp 1b
|
||||||
|
lac name+1
|
||||||
|
sad u.name+1
|
||||||
|
skp
|
||||||
|
jmp 1b
|
||||||
|
lac name+2
|
||||||
|
sad u.name+2
|
||||||
|
skp
|
||||||
|
jmp 1b
|
||||||
|
lac name+3
|
||||||
|
sad u.name+3
|
||||||
|
skp
|
||||||
|
jmp 1b
|
||||||
|
|
||||||
|
gloop:
|
||||||
|
jms messg; <re>; <ad>; <y 077; 040; 0
|
||||||
|
law rqname-1
|
||||||
|
dac 8
|
||||||
|
law rqhand-1
|
||||||
|
dac 9
|
||||||
|
-nrq
|
||||||
|
dac 2f
|
||||||
|
jms readch
|
||||||
|
1:
|
||||||
|
sad 8 i
|
||||||
|
jmp 9 i
|
||||||
|
isz 9
|
||||||
|
isz 2f
|
||||||
|
jmp 1b
|
||||||
|
jms messg; 077012; 0
|
||||||
|
jmp gloop
|
||||||
|
2: 0
|
||||||
|
|
||||||
|
noentry:
|
||||||
|
jms messg; <na>; <me>; 040; <no>; <t 040; <fo>
|
||||||
|
<un>; <d 073; 040; <en>; <te>; <r 077; 040; 0
|
||||||
|
jms readch
|
||||||
|
"** 09-1-35.pdf page 23
|
||||||
|
sad ch.y
|
||||||
|
skp
|
||||||
|
sys exit
|
||||||
|
jms newline
|
||||||
|
lac name
|
||||||
|
dac u.name
|
||||||
|
lac name+1
|
||||||
|
dac u.name+1
|
||||||
|
lac name+2
|
||||||
|
dac u.name+2
|
||||||
|
lac name+3
|
||||||
|
dac u.name+3
|
||||||
|
dzm u.ngames
|
||||||
|
dzm u.nguess
|
||||||
|
dzm u.ntime
|
||||||
|
dzm u.npenalty
|
||||||
|
jms putentry
|
||||||
|
jmp gloop
|
||||||
|
|
||||||
|
gstart1:
|
||||||
|
jms messg; <es>; 012; 0
|
||||||
|
|
||||||
|
gstart:
|
||||||
|
jms random
|
||||||
|
dac a1
|
||||||
|
1:
|
||||||
|
jms random
|
||||||
|
sad a1
|
||||||
|
jmp 1b
|
||||||
|
dac a2
|
||||||
|
1:
|
||||||
|
jms random
|
||||||
|
sad a1
|
||||||
|
jmp 1b
|
||||||
|
sad a2
|
||||||
|
jmp 1b
|
||||||
|
dac a3
|
||||||
|
1:
|
||||||
|
jms random
|
||||||
|
sad a1
|
||||||
|
jmp 1b
|
||||||
|
sad a2
|
||||||
|
jmp 1b
|
||||||
|
sad a3
|
||||||
|
jmp 1b
|
||||||
|
dac a4
|
||||||
|
dzm nguess
|
||||||
|
|
||||||
|
guessloop:
|
||||||
|
jms readguess
|
||||||
|
lac nguess
|
||||||
|
sza
|
||||||
|
jmp 1f
|
||||||
|
sys time
|
||||||
|
lacq
|
||||||
|
rcr
|
||||||
|
dac stime
|
||||||
|
1:
|
||||||
|
dzm nbull
|
||||||
|
dzm ncow
|
||||||
|
lac g1
|
||||||
|
"** 09-1-35.pdf page 24
|
||||||
|
sad a1
|
||||||
|
isz nbull
|
||||||
|
sad a2
|
||||||
|
isz ncow
|
||||||
|
sad a3
|
||||||
|
isz ncow
|
||||||
|
sad a4
|
||||||
|
isz ncow
|
||||||
|
lac g2
|
||||||
|
sad a2
|
||||||
|
isz ncow
|
||||||
|
sad a2
|
||||||
|
isz nbull
|
||||||
|
sad a3
|
||||||
|
isz ncow
|
||||||
|
sad a4
|
||||||
|
isz ncow
|
||||||
|
lac g3
|
||||||
|
sad a1
|
||||||
|
isz ncow
|
||||||
|
sad a2
|
||||||
|
isz ncow
|
||||||
|
sad a3
|
||||||
|
isz nbull
|
||||||
|
sad a4
|
||||||
|
isz ncow
|
||||||
|
lac g4
|
||||||
|
sad a1
|
||||||
|
isz ncow
|
||||||
|
sad a2
|
||||||
|
isz ncow
|
||||||
|
sad a3
|
||||||
|
isz ncow
|
||||||
|
sad a4
|
||||||
|
isz nbull
|
||||||
|
lac nbull
|
||||||
|
sad d4
|
||||||
|
jmp gdone
|
||||||
|
jms messg; 040040; 040040; 040040; <bc>; 075; 0
|
||||||
|
lac nbull
|
||||||
|
jms number
|
||||||
|
lac ncow
|
||||||
|
jms number
|
||||||
|
jms newline
|
||||||
|
isz nguess
|
||||||
|
jmp guessloop
|
||||||
|
|
||||||
|
gdone:
|
||||||
|
sys time
|
||||||
|
lacq
|
||||||
|
rcr
|
||||||
|
cma
|
||||||
|
tad stime
|
||||||
|
cma
|
||||||
|
spa
|
||||||
|
tad o400000
|
||||||
|
rcr
|
||||||
|
dac stime
|
||||||
|
lac u.ntime
|
||||||
|
tad stime
|
||||||
|
dac u.ntime
|
||||||
|
"** 09-1-35.pdf page 25
|
||||||
|
lac u.nguess
|
||||||
|
tad nguess
|
||||||
|
dac u.nguess
|
||||||
|
isz u.ngames
|
||||||
|
jms putentry
|
||||||
|
jms messg; 012; <g 075; 0
|
||||||
|
lac nguess
|
||||||
|
jms number
|
||||||
|
jms messg; 040; <t 075; 0
|
||||||
|
lac stime
|
||||||
|
cll; idiv; 15
|
||||||
|
lacq
|
||||||
|
jms number
|
||||||
|
jms newline
|
||||||
|
jmp gloop
|
||||||
|
|
||||||
|
random: 0
|
||||||
|
sys time
|
||||||
|
lacq
|
||||||
|
tad rand
|
||||||
|
cll; mul; 78125
|
||||||
|
lacq
|
||||||
|
dac rand
|
||||||
|
cll; idiv; 10
|
||||||
|
jmp random i
|
||||||
|
|
||||||
|
newline: 0
|
||||||
|
jms messg; 012; 0
|
||||||
|
jmp newline i
|
||||||
|
|
||||||
|
number: 0
|
||||||
|
lmq
|
||||||
|
law 2f+1
|
||||||
|
dac 3f
|
||||||
|
lacq
|
||||||
|
1:
|
||||||
|
cll; idiv; 10
|
||||||
|
tad o60
|
||||||
|
dac 3f i
|
||||||
|
isz 3f
|
||||||
|
lacq
|
||||||
|
sza
|
||||||
|
jmp 1b
|
||||||
|
1:
|
||||||
|
-1
|
||||||
|
tad 3f
|
||||||
|
dac 3f
|
||||||
|
lac 3f i
|
||||||
|
sna
|
||||||
|
jmp number i
|
||||||
|
dac .+2
|
||||||
|
jms messg; ..; 0
|
||||||
|
jmp 1b
|
||||||
|
2: 0; .=.+10
|
||||||
|
3: .=.+1
|
||||||
|
|
||||||
|
readguess: 0
|
||||||
|
jms messg; 077040; 0
|
||||||
|
jms cnum
|
||||||
|
dac g1
|
||||||
|
jms cnum
|
||||||
|
"** 09-1-35.pdf page 26
|
||||||
|
dac g2
|
||||||
|
jms cnum
|
||||||
|
dac g3
|
||||||
|
jms cnum
|
||||||
|
dac g4
|
||||||
|
jms readch
|
||||||
|
sad o12
|
||||||
|
jmp readguess i
|
||||||
|
jmp readguess+1
|
||||||
|
|
||||||
|
cnum: 0
|
||||||
|
jms readch
|
||||||
|
tad om60
|
||||||
|
spa
|
||||||
|
jmp readguess+1
|
||||||
|
dac 1f
|
||||||
|
tad dm10
|
||||||
|
sma
|
||||||
|
jmp readguess+1
|
||||||
|
lac 1f
|
||||||
|
jmp cnum i
|
||||||
|
1: 0
|
||||||
|
|
||||||
|
readch: 0
|
||||||
|
cla
|
||||||
|
sys read; 1f; 1
|
||||||
|
lac 1f
|
||||||
|
lrss 9
|
||||||
|
jmp readch i
|
||||||
|
1: 0
|
||||||
|
|
||||||
|
readline: 0
|
||||||
|
-1
|
||||||
|
dac r1f
|
||||||
|
jms read2
|
||||||
|
dac name
|
||||||
|
jms read2
|
||||||
|
dac name+1
|
||||||
|
jms read2
|
||||||
|
dac name+2
|
||||||
|
jms read2
|
||||||
|
dac name+3
|
||||||
|
jmp readline i
|
||||||
|
|
||||||
|
read2: 0
|
||||||
|
jms read1
|
||||||
|
alss 9
|
||||||
|
dac 1f
|
||||||
|
jms read1
|
||||||
|
xor 1f
|
||||||
|
jmp read2 i
|
||||||
|
1: 0
|
||||||
|
|
||||||
|
read1: 0
|
||||||
|
lac r1f
|
||||||
|
sna
|
||||||
|
jmp 1f
|
||||||
|
jms readch
|
||||||
|
sad o12
|
||||||
|
skp
|
||||||
|
jmp read1 i
|
||||||
|
"** 09-1-35.pdf page 27
|
||||||
|
dzm r1f
|
||||||
|
1:
|
||||||
|
lac o40
|
||||||
|
jmp read1 i
|
||||||
|
r1f: 0
|
||||||
|
|
||||||
|
getentry: 0
|
||||||
|
lac user
|
||||||
|
cll; mul; 16
|
||||||
|
lacq
|
||||||
|
dac 0f
|
||||||
|
lac fi
|
||||||
|
sys seek; 0:..; 0
|
||||||
|
lac fi
|
||||||
|
sys read; userdata; 16
|
||||||
|
sza
|
||||||
|
isz getentry
|
||||||
|
jmp getentry i
|
||||||
|
|
||||||
|
putentry: 0
|
||||||
|
lac user
|
||||||
|
cll; mul; 16
|
||||||
|
lacq
|
||||||
|
dac 0f
|
||||||
|
lac fo
|
||||||
|
sys seek; 0:..; 0
|
||||||
|
lac fo
|
||||||
|
sys write; userdata; 16
|
||||||
|
jmp putentry i
|
||||||
|
|
||||||
|
average:
|
||||||
|
jms messg; <ve>;<r 012; 0
|
||||||
|
jms paver
|
||||||
|
jmp gloop
|
||||||
|
|
||||||
|
standing:
|
||||||
|
jms messg; <ta>; <nd>; 12; 0
|
||||||
|
lac user
|
||||||
|
dac 2f
|
||||||
|
dzm user
|
||||||
|
skp
|
||||||
|
1:
|
||||||
|
isz user
|
||||||
|
jms getentry
|
||||||
|
jmp 1f
|
||||||
|
lac d1
|
||||||
|
sys write; u.name; 4
|
||||||
|
jms paver
|
||||||
|
jmp 1b
|
||||||
|
1:
|
||||||
|
lac 2f
|
||||||
|
dac user
|
||||||
|
jms getentry
|
||||||
|
nop
|
||||||
|
jmp gloop
|
||||||
|
2: 0
|
||||||
|
|
||||||
|
paver: 0
|
||||||
|
lac u.ngames
|
||||||
|
sna
|
||||||
|
jmp 1f
|
||||||
|
"** 09-1-35.pdf page 28
|
||||||
|
jms messg; <n; 075; 0
|
||||||
|
lac u.ngames
|
||||||
|
jms number
|
||||||
|
jms messg; 040; <g 075; 0
|
||||||
|
lac u.nguess
|
||||||
|
jms number
|
||||||
|
lac u.nguess
|
||||||
|
jms aver
|
||||||
|
jms messg; 040; <t; 075; 0
|
||||||
|
lac u.ntime
|
||||||
|
cll; idiv; 15
|
||||||
|
lacq
|
||||||
|
jms number
|
||||||
|
lac u.ntime
|
||||||
|
cll; idiv; 15
|
||||||
|
lacq
|
||||||
|
jms aver
|
||||||
|
jms newline
|
||||||
|
jmp paver i
|
||||||
|
1:
|
||||||
|
jms messg; <no>; 040; <ga>; <me>; <s 012; 0
|
||||||
|
jmp paver i
|
||||||
|
|
||||||
|
aver: 0
|
||||||
|
dac 1f
|
||||||
|
lac u.ngames
|
||||||
|
dac 0f
|
||||||
|
jms messg; 050; 0
|
||||||
|
lac 1f
|
||||||
|
cll; idiv; 0: ..
|
||||||
|
dac 1f
|
||||||
|
lacq
|
||||||
|
jms number
|
||||||
|
jms messg; 056; 0
|
||||||
|
lac u.ngames
|
||||||
|
dac 0f
|
||||||
|
lac 1f
|
||||||
|
cll; mul; 100
|
||||||
|
cll; div; 0:..
|
||||||
|
ecla; div; 10
|
||||||
|
dac 1f
|
||||||
|
lacq
|
||||||
|
jms number
|
||||||
|
lac 1f
|
||||||
|
jms number
|
||||||
|
jms messg; 051; 0
|
||||||
|
jmp aver i
|
||||||
|
1: .=.+1
|
||||||
|
|
||||||
|
messg: 0
|
||||||
|
-1
|
||||||
|
tad messg
|
||||||
|
dac 8
|
||||||
|
1:
|
||||||
|
lac 8 i
|
||||||
|
sna
|
||||||
|
jmp 8 i
|
||||||
|
dac 1f
|
||||||
|
dac d1
|
||||||
|
sys write; 1f; 1
|
||||||
|
jmp 1b
|
||||||
|
"** 09-1-35.pdf page 29
|
||||||
|
1: 0
|
||||||
|
|
||||||
|
rqname:
|
||||||
|
y>
|
||||||
|
q>
|
||||||
|
a>
|
||||||
|
s>
|
||||||
|
r>
|
||||||
|
nrq = .-rqname
|
||||||
|
rqhand:
|
||||||
|
jmp gstart1
|
||||||
|
jmp quit
|
||||||
|
jmp average
|
||||||
|
jmp standings
|
||||||
|
jmp reset
|
||||||
|
|
||||||
|
quit:
|
||||||
|
jms messg; <ui>; <t 012; 0
|
||||||
|
sys exit
|
||||||
|
|
||||||
|
d1: 1
|
||||||
|
o400000: 0400000
|
||||||
|
o60: 060
|
||||||
|
om60: -060
|
||||||
|
dm10: -10
|
||||||
|
d4: 4
|
||||||
|
o40: 040
|
||||||
|
o12: 012
|
||||||
|
ch.y: y>
|
||||||
|
|
||||||
|
m1: <wr>;<u 077; 040
|
||||||
|
m1s = .-m1
|
||||||
|
m2: <re>;<ad>;<y 077; 040
|
||||||
|
m2s = .-m2
|
||||||
|
m3: <na>;<me>;040;<no>;<t 040;<fo>;<un>;<d 012
|
||||||
|
<en>;<te>;<r 077; 040
|
||||||
|
m3s = .-m3
|
||||||
|
m5: 077040
|
||||||
|
m5s = .-m5
|
||||||
|
m7: 012;<gu>;<es>;<s 075
|
||||||
|
m7s = .-m7
|
||||||
|
m8: <av>;<g 075
|
||||||
|
m8s = .-m8
|
||||||
|
m9: 057
|
||||||
|
9s = .-m9
|
||||||
|
m10: 040075; 040
|
||||||
|
m10s = .-m10
|
||||||
|
moostat: <mo>;<os>;<ta>;<t 040
|
||||||
|
|
||||||
|
fi: .=.+1
|
||||||
|
fo: .=.+1
|
||||||
|
name: .=.+4
|
||||||
|
nguess: .=.+1
|
||||||
|
nbull: .=.+1
|
||||||
|
ncow: .=.+1
|
||||||
|
stime: .=.+1
|
||||||
|
a1: .=.+1
|
||||||
|
a2: .=.+1
|
||||||
|
a3: .=.+1
|
||||||
|
a4: .=.+1
|
||||||
|
g1: .=.+1
|
||||||
|
"** 09-1-35.pdf page 30
|
||||||
|
g2: .=.+1
|
||||||
|
g3: .=.+1
|
||||||
|
g4: .=.+1
|
||||||
|
rand: .=.+1
|
||||||
|
user: .=.+1
|
||||||
|
userdata:
|
||||||
|
u.name: .=.+4
|
||||||
|
u.ngames: .=.+1
|
||||||
|
u.nguess: .=.+1
|
||||||
|
u.ntime: .=.+1
|
||||||
|
u.npenalty: .=.+1
|
||||||
|
u.hguess: .=.+1
|
||||||
|
u.lguess: .=.+1
|
||||||
|
u.htime: .=.+1
|
||||||
|
u.ltime: .=.+1
|
||||||
|
. = userdata+16
|
||||||
Reference in New Issue
Block a user