Now that the PDF files have been transcribed and scanned in, I've moved

copies of them over into the src/ area so that we can add comments and
make other changes, while keeping the original OCR'd ones intact.
This commit is contained in:
Warren Toomey
2016-02-29 06:40:15 +10:00
parent ab77e0c69c
commit 63223cfa7c
35 changed files with 11448 additions and 1 deletions
+195
View File
@@ -0,0 +1,195 @@
" S1
.. = 0
t = 0
orig:
hlt
jmp pibreak
. = orig+7
-1
. = orig+020
1f
iof
dac u.ac
lac 020
dac 1f
lac 1f-1
dac 020
lac u.ac
jmp 1f+1
1f
1: 0
iof
dac u.ac
lacq
dac u.mq
lac 8
dac u.rq
lac 9
dac u.rq+1
jms copy; 10; u.rq+2; 6
lac 1b
dac u.rq+8
-1
dac .savblk
dac .insys
lac uquant
jms betwen; d0; maxquant
jms swap
ion
-1
tad u.rq+8
jms laci
jms betwen; o20001; swn
jmp badcal
tad swp
dac .+1
jmp .. i
. = orig+0100
jmp coldentry
jms halt
okexit:
dzm: u.ac
sysexit:
ion
lac .savblk
sza
jmp 1f
jms copy; sysdata; dskbuf; 64
cla
jms dskio; 07000
1:
dzm .insys
jms chkint
skp
jmp .save
jms copy; u.rq+2; 10; 6
lac u.rq+1
dac 9
lac u.rq
dac 8
lac u.rq
lmq
lac u.ac
jmp u.rq+8 i
swap: 0
ion
1:
jms lookfor; 3 " out/ready
jmp 1f
jms lookfor; 1 " in/ready
skp
jmp 1b
dzm maxquant
jmp 3f
1:
dac 9f+t
jms lookfor; 2 " in/notready
jmp 1f
jms lookfor; 1 " in/ready
jmp 1f
jmp 2f
1:
lac swap
dac u.swapret
iof
lac o200000
tad u.ulistp i
dac u.ulistp i
ion
jms dskswap; 07000
lac u.dspbuf
sna
jmp 2f
law dspbuf
jms movdsp
2:
iof
lac o600000
tad 9f+t i
dac 9f+t i
ion
jms dskswap; 06000
lac u.swapret
dac swap
lac o20
dac maxquant
lac u.dspbuf
sza
"** 01-s1.pdf page 4
jms movdsp
3:
dzm uquant
iof
jmp swap i
t = t+1
swp:
jmp .
.save; .getuid; .open; .read; .write; .creat; .seek; .tell
.close; .link; .unlink; .setuid; .rename; .exit; .time; .intrp
.chdir; .chmod; .chown; badcal; .sysloc; badcal; .capt; .rele
.status; badcal; .smes; .rmes; .fork
swn:
.-swp-1 i
.intrp:
lac u.ac
dac u.intflg
jmp okexit
.sysloc:
lac u.ac
and o17777
jms betwen; d1; locn
jms error
tad locsw
dac .+1
lac ..
dac u.ac
jmp sysexit
locsw:
lac .
iget; inode; userdata; sysdata; copy; copyz; betwen; dskrd
dskwr; dskbuf; dpdata; namei; pbsflgs; alloc; free; dspdata
crdata
locn:
.-locsw-1
chkint: 0
lac .insys
sza
jmp chkint i
lac .int1
sna
jmp 1f
sad u.ofiles+2
jmp 2f
1:
lac .int2
sna
jmp chkint i
sad u.ofiles+2
skp
jmp chkint i
dzm .int2
jmp 1f
2:
dzm .int1
1:
"** 01-s1.pdf page 5
lac u.intflg
sza
jmp chkint i
-1
dac .insys
ion
isz chkint
jmp chkint i
+334
View File
@@ -0,0 +1,334 @@
"** 01-s1.pdf page 7
" s2
.status:
jms arg
dac .+5
jms arg
dac .+6
lac u.cdir
jms namei; ..
jms error
jms namei; ..
jms error
jms iget
lac u.ac
and o17777
jms betwen; o10000; o17762
jms error
dac .+3
jms copy; inode; ..; 12
lac d.i
dac 9 i
jmp okexit
.capt:
lac u.ac
dac u.dspbuf
jms movdsp
jmp sysexit
.rele:
dzm u.dspbuf
law dspbuf
jms movdsp
jmp sysexit
.chmod:
jms isown
lac u.ac
and o17
lmq
lac i.flags
and o777760
omq
dac i.flags
jms iput
jmp okexit
.chown:
jms isown
lac u.ac
dac i.uid
jms iput
jmp okexit
.getuid:
lac u.uid
dac u.ac
jmp sysexit
.seek:
jms seektell
tad u.base
"** 01-s1.pdf page 8
spa
jms error
lmq
lac f.flags
and d1
sna
jms 1f
lacq
jms betwen; d0; i.size
jms dacisize
jmp 2f
1:
lacq
jms betwen; d0; i.size
lac i.size
2:
dac f.badd
dac u.ac
jms fput
jmp sysexit
.tell:
jms seektell
cma
tad d1
tad u.base
dac u.ac
jmp sysexit
.link:
jms arg
dac 0f
jms arg
dac 1f
jms arg
dac 2f
lac d4
jms namei; 0:0
jms error
jms namei; 1:0
jms error
dac u.base
jms copy; 2:0; name; 4
lac u.cdir
jms namei; name
skp
jms error
lac d1
dac mode
jms access
jms dslot
lac u.base
jms iget
lac ii
dzm d.i
jms copy; name; d.name; 4
lac i.uniq
dac d.uniq
-1
tad i.nlks
dac i.nlks
"** 01-s1.pdf page 9
jms iput
jms dput
jmp okexit
.unlink:
jms argname
dac u.base
lac d1
dac mode
jms access
dac d.i
jms dput
lac u.base
jms iget
isz i.nlks
jmp 1f
jms itrunc
dzm i.flags
1:
jms iput
jmp sysexit
.setuid:
lac u.uid
sma
jms error
lac u.ac
dac u.uid
jmp sysexit
.rename:
jms arg
dac 0f
jms arg
dac 1f
lac u.cdir
jms namei; 0:0
jms error
lac d1
dac mode
jms access
jms copy; 1:0; d.name; 4
jmp okexit
.time:
lac s.tim
dac u.ac
lac s.tim+1
dac u.mq
jmp sysexit
.chdir:
jms argname
jms iget
lac i.flags
and o20
sna
jms error
lac ii
dac u.cdir
"** 01-s1.pdf page 10
jmp okexit
.open:
jms arg
dac 0f
jms arg
sza
lac d1
sna
lac d2
dac mode
lac u.cdir
jms namei; 0:0
jms error
jms iget
jms access
lac i.flags
and o20
sna
jmp open1
lac mode
and d1
sna
jmp open1
lac u.uid
sma
jms error
jmp open1
.creat:
lac d1
dac mode
jms arg
dac .+2
jms copy; ..; name; 4
lac u.cdir
jms namei; name
jmp 1f
jms iget
jms access
lac i.flags
and o20
sna
jmp .+4
lac u.uid
sma
jms error
jms itrunc
cla
jms dacisize
jmp open1
1:
jms access
lac u.ac
and o17
jms icreat
open1:
jms fassign
jms error
jmp sysexit
"** 01-s1.pdf page 11
.close:
jms finac
dzm f.flags
jms fput
jmp sysexit
.read:
jms arg
and o17777
dac u.base
jms arg
dac u.count
lac u.base
jms betwen; o10000; o17777
jms error
tad u.count
jms betwen; u.base; o17777
jms error
dac u.limit
1:
jms finac
lac f.flags
and d1
sza
jms error
lac i.flags
and o40
sna
jmp 1f
iof
lac ii
tad swr
dac .+1
jmp .. i
1:
lac u.base
dac 1f+1
lac u.count
dac 1f+2
lac f.badd
1:
jms iread; ..; ..
jmp exitrw
.write:
jms arg
and o17777
dac u.base
jms arg
dac u.count
tad u.base
jms betwen; u.base; o17777
jms error
dac u.limit
jms finac
lac f.flags
and d1
sna
jms error
lac i.flags
and o40
"** 01-s1.pdf page 12
sna
jmp 1f
iof
lac ii
tad sww
dac .+1
jmp .. i
1:
lac u.base
dac 1f+1
lac u.count
dac 1f+2
lac f.badd
1:
jms iwrite; ..; ..
exitrw:
dac u.ac
tad f.badd
dac f.badd
jms iput
jms fput
jmp sysexit
+354
View File
@@ -0,0 +1,354 @@
"** 01-s1.pdf page 14
" s3
searchu: 0
lac searchu i
dac 9f+t+1
-mnproc
dac 9f+t
law ulist-1
dac 8
1:
lac 8 i
dac lu
lac 8 i
dac lu+1
lac 8 i
dac lu+2
lac 8 i
dac lu+3
jms 9f+t+1 i
isz 9f+t
jmp 1b
isz searchu
jmp searchu i
t = t+2
lookfor: 0
jms searchu; 1f
isz lookfor
isz lookfor
jmp lookfor i
1: 0
lac lu
rtl; rtl; and o7
sad lookfor i
skp
jmp 1b i
-3
tad 8
and o17777
isz lookfor
jmp lookfor i
.fork:
jms lookfor; 0 " not-used
skp
jms error
dac 9f+t
isz uniqpid
lac uniqpid
dac u.ac
law sysexit
dac u.swapret
lac o200000
tad u.ulistp i
dac u.ulistp i
jms dskswap; 07000
lac 9f+t
dac u.ulistp
lac o100000
xor u.ulistp i
dac u.ulistp i
lac u.pid
"** 01-s1.pdf page 15
dac u.ac
lac uniqpid
dac u.pid
isz 9f+t
dac 9f+t i
isz u.rq+8
dzm u.intflg
jmp sysexit
t= t+1
badcal:
clon
-1
dac 7
.save:
lac d1
jms iget
cla
jms iwrite; 4096; 4096
jms iwrite; userdata; 64
jms iput
.exit:
lac u.dspbuf
sna
jmp .+3
law dspbuf
jms movdsp
jms awake
lac u.ulistp i
and o77777
dac u.ulistp i
isz u.ulistp
dzm u.ulistp i
jms swap
.rmes:
jms awake
lac o100000
tad u.ulistp i
dac u.ulistp i
law 2
tad u.ulistp
dac 9f+t
-1
dac 9f+t i
jms swap
law 2
tad u.ulistp
dac 9f+t
lac 9f+t i
cma
dac u.ac
dzm 9f+t i
isz 9f+t
lac 9f+t i
dac u.mq
dzm 9f+t i
jmp sysexit
t = t+1
"** 01-s1.pdf page 16
.smes:
lac u.ac
sna spa
jms error
jms searchu; 1f
law 2
tad u.ulistp
dac 9f+t
dzm 9f+t i
jms error
1: 0
lac lu+1
sad u.ac
skp
jmp 1b i
lac lu+2
sad dm1
jmp 1f
lac o100000
tad u.ulistp i
dac u.ulistp i
law 2
tad u.ulistp
dac 9f+t
lac u.ac
dac 9f+t i
jms swap
law 2
tad u.ulistp
dac 9f+t
dzm 9f+t i
jmp .smes
1:
-3
tad 8
dac 9f+t
lac o700000
tad 9f+t i
dac 9f+t i
isz 9f+t
isz 9f+t
lac u.pid
cma
dac 9f+t i
isz 9f+t
lac u.mq
dac 9f+t i
jmp okexit
t = t+1
awake: 0
jms searchu; 1f
jmp awake i
1: 0
lac u.pid
sad lu+2
skp
jmp 1b i
-3
tad 8
dac 9f+t
"** 01-s1.pdf page 17
lac o700000
tad 9f+t i
dac 9f+t i
jmp 1b i
t = t+1
swr:
sww:
jmp .-4 i
.halt; rttyi; rkbdi; rppti; .halt
.halt; wttyo; wdspo; wppto
.halt: jms halt
rttyi:
jms chkint1
lac d1
jms getchar
jmp 1f
and o177
jms betwen; o101; o132
skp
tad o40
alss 9
jmp passone
1:
jms sleep; sfiles+0
jms swap
jmp rttyi
wttyo:
jms chkint1
jms forall
sna
jmp fallr
lmq
lac sfiles+1
spa
jmp 1f
xor o400000
dac sfiles+1
lacq
tls
sad o12
jms putcr
jmp fallr
1:
lacq
dac char
lac d2 "** written: d6 ttyout
jms putchar
skp
jmp fallr
jms sleep; sfiles+1
jms swap
jmp wttyo
rkbdi:
jms chkint1
lac d3
jms getchar
"** 01-s1.pdf page 18
jmp 3f
lmq
and o155
sad o55
jmp 1f
lacq
and o137
sad o134
skp
jmp 2f
1:
lacq
xor o20
lmq
2:
lacq
dac u.limit
1:
jms chkint1
lac u.limit
jms dspput
jmp 1f
jms sleep; sfiles+6
jms swap
jmp 1b
1:
lac u.limit
alss 9
jmp passone
3:
jms sleep; sfiles+2
jms swap
jmp rkbdi
wdspo:
jms chkint1
jms forall
jms dspput
jmp fallr
jms sleep; sfiles+6
jms swap
jmp wdspo
rppti:
lac d4
jms getchar
jmp .+3
alss 9
jmp passone
lac sfiles+3
sma
rsa
1:
jms sleep; sfiles+3
jms swap
jmp rppti
"** 01-s1.pdf page 19
wppto:
jms forall
sna
jmp fallr
lmq
lac sfiles+4
spa
jmp 1f
xor o400000
dac sfiles+4
lacq
psa
jmp fallr
1:
lacq
dac char
lac d5
jms putchar
skp
jmp fallr
jms sleep; sfiles+4
jms swap
jmp wppto
passone:
sad o4000
jmp okexit
dac u.base i
lac d1
dac u.ac
jmp sysexit
error: 0
-1
dac u.ac
jmp sysexit
chkint1: 0
dzm .insys
jms chkint
skp
jmp .save
-1
dac .insys
jmp chkint1 i
+347
View File
@@ -0,0 +1,347 @@
"** 01-s1.pdf page 21
" s4
alloc: 0
-1
tad s.nfblks
spa
jmp 1f
dac s.nfblks
tad fblksp
jms laci
dac 9f+t
jms copyz; dskbuf; 64
lac 9f+t
jms dskwr
dzm .savblk
lac 9f+t
jmp alloc i
1:
lac s.nxfblk
sna
jms halt " OUT OF DISK
dac s.fblks
jms dskrd
lac dskbuf
dac s.nxfblk
jms copy; dskbuf+1; s.fblks+1; 9
lac d10
dac s.nfblks
jmp alloc+1
free: 0
lmq
lac s.nfblks
sad d10
jmp 1f
tad fblksp
dac 9f+t
lacq
dac 9f+t i
dzm .savblk
isz s.nfblks
jmp free i
1:
lac s.nxfblk
dac dskbuf
jms copy; s.fblks+1; dskbuf+1; 9
lacq
dac s.nxfblk
jms dskwr
dzm .savblk
lac d1
dac s.nfblks
jmp free i
t = t+1
laci: 0
and o17777
tad o200000
dac .+1
lac ..
jmp laci i
"** 01-s1.pdf page 22
betwen: 0
lmq cmq
lac betwen i
dac 9f+t
isz betwen
lacq
tad 9f+t i
sma
jmp 1f
lac betwen i
dac 9f+t
isz betwen
lacq
tad 9f+t i
cma
spa sna
1:
isz betwen
lacq
cma
jmp betwen i
copy: 0
-1
tad copy i
dac 8
isz copy
-1
tad copy i
dac 9
isz copy
-1
tad copy i
cma
dac 9f+t
isz copy
1:
lac 8 i
dac 9 i
isz 9f+t
jmp 1b
jmp copy i
copyz: 0
-1
tad copyz i
dac 8
isz copyz
-1
tad copyz i
cma
dac 9f+t
isz copyz
1:
dzm 8 i
isz 9f+t
jmp 1b
jmp copyz i
t = t+1
putchar: 0
"** 01-s1.pdf page 23
dac 9f+t
cla
jms takeq
jmp putchar i
tad o40001
dac .+4
lac 9f+t
jms putq
lac char
dac q2+1 ..
isz putchar
jmp putchar i
t = t+1
getchar: 0
jms takeq
jmp i getchar
tad o200001
dac .+3
cla
jms putq
lac q2+1 ..
isz getchar
jmp i getchar
takeq: 0
rcl
tad lacq1
dac .+7
tad o640000
dac .+17
tad d1
dac .+14
tad o500000
dac .+5
lac q1 ..
sna
jmp takeq i
dac lnkaddr
sad q1+1 ..
jmp .+5
tad o200000
dac .+1
lac q2 ..
jmp .+3
cla
dac q1+1 ..
dac q1 ..
isz takeq
lac lnkaddr
jmp i takeq
putq: 0
rcl
tad dacq1
dac .+14
tad d1
dac .+13
tad o140000
dac .+1
lac q1-1 ..
"** 01-s1.pdf page 24
sna
jmp .+6
tad o40000
dac .+2
lac lnkaddr
dac q2 ..
jmp .+3
lac lnkaddr
dac q1 ..
dac q1+1 ..
jmp putq i
srcdbs: 0
dac 9f+t+2 "* lmq
-ndskbs
dac 9f+t
law dskbs "* -1 dac 8 written
dac 9f+t+1 "* lacq
1:
lac 9f+t+2 "** crossed out
sad 9f+t+1 "** isz 8 written
jmp srcdbs i
law 65 "** ??? crossed out
tad 9f+t+1 "** crossed out isz 8 written
isz 9f+t+1
isz 9f+t
jmp 1b
isz srcdbs
jmp srcdbs i
collapse: 0
cla
jms srcdbs
jmp 1f
law dskbs
dac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
1:
lac 9f+t+1 "** 9f+t+1 crossed out: 8 written in
dac 0f+1
tad d65 "** crossed out: d2-- original obscured
dac 0f
cma
tad d1
tad edskbsp
and o17777
sna
jmp 0f+3
dac 0f+2
jms copy; 0:..; ..; ..
-65
tad edskbsp
dac 9f+t
tad d1
dac 0f
lac dskaddr
dac 9f+t i
jms copy; dskbuf; 0:..; 64
jmp collapse i
dskrd: 0
jms betwen; d2; d7999
"** 01-s1.pdf page 25
jms halt
sad dskaddr
jmp dskrd i
dac dskaddr
jms srcdbs
jmp 1f
lac dskaddr
jms dskio; 06000
jmp 2f
1:
dzm 9f+t+1 i
law 1
tad 9f+t+1
dac .+2
jms copy; ..; dskbuf; 64
2:
jms collapse
jmp dskrd i
dskwr: 0
jms betwen; d2; d7999
jms halt
jms dskio; 07000
lac dskaddr
jms srcdbs
dzm 9f+t+1 i
jms collapse
jmp dskwr i
t = t+3
dskio: 0
dac dskaddr
cll; idiv; 80
dac 9f+t
lacq
idiv; 10
dac 9f+t+1
lls 22
xor 9f+t+1
als 8
dac 9f+t+1
lac 9f+t
idiv; 10
dac 9f+t
lls 22
xor 9f+t
xor 9f+t+1
xor o200000
dac 9f+t
jms dsktrans; -64; dskbuf; 9f+t; dskio
isz dskio
jmp dskio i
t = t+1
dsktrans: 0
-10
dac 9f+t
1:
-1
tad dsktrans
dac 12
"** 01-s1.pdf page 26
dscs
lac 12 i
dslw
lac 12 i
dslm
lac 12 i
jms laci
dsld
dzm .dskb
lac 12 i
jms laci
jms laci
dsls
lac .dskb
sna
jmp .-2
lac .dske
sma
jmp 12 i
isz 9f+t
jmp 1b
jms halt " 10 disk errors
t = t+1
halt: 0
isz 9f+t
jmp .-1
iof
hlt
jms copy; law; 4096; 4096
hlt; jmp .-1
t = t+1
+278
View File
@@ -0,0 +1,278 @@
"** 01-s1.pdf page 28
" s5
dskswap: 0
cll; als 3
dac 9f+t
jms dsktrans; -64; userdata; 9f+t; dskswap
lac 9f+t
tad o20
dac 9f+t
jms dsktrans; -4096; 4096; 9f+t; dskswap
isz dskswap
jmp dskswap i
t = t+1
access: 0
lac i.flags
lmq
lac u.uid
spa
jmp access i
sad i.uid
lrs 2
lacq
and mode
sza
jmp access i
jms error
fassign: 0
-10
dac 9f+t
1:
lac 9f+t
tad d10
jms fget
jms halt " will not happen
lac f.flags
sma
jmp 1f
isz 9f+t
jmp 1b
jmp fassign i
1:
lac mode
xor o400000
dac f.flags
lac ii
dac f.i
lac 9f+t
tad d10
dac u.ac
dzm f.badd
jms fput
isz fassign
jmp fassign i
t = t+1
fget: 0
jms betwen; d0; d9
jmp fget i
cll; mul; 3
lacq
"** 01-s1.pdf page 29
tad ofilesp
dac 9f+t
dac .+2
jms copy; ..; fnode; 3
isz fget
jmp fget i
fput: 0
lac 9f+t
dac .+3
jms copy; fnode; ..; 3
jmp fput i
t = t+1
forall: 0
lac u.base
sad u.limit
jmp 1f
lac u.base
ral
lac u.base i
snl
lrs 9
and o777
jmp forall i
fallr:
lac u.base
add o400000
dac u.base
jmp forall+1
1:
lac u.count
dac u.ac
jmp sysexit
sleep: 0
law ulist-1
dac 8
lac o200000
lmq
1:
lac u.ulistp i
sad 8 i
jmp 1f
isz 8
isz 8
isz 8
cla; lrs 1
jmp 1b
1:
tad o100000
dac u.ulistp i
lac sleep i
dac 9f+t
lac 9f+t i
omq
dac 9f+t i
isz sleep
jmp sleep i
t = t+1
"** 01-s1.pdf page 30
dslot: 0
dzm di
skp
1:
isz di
lac di
jms dget
lac d.i
sza
jmp 1b
jmp dslot i
icreat: 0
dac 9f+t
jms dslot
lac o20
dac ii
1:
isz ii
lac ii
jms iget
lac i.flags
spa
jmp 1b
lac ii
dac d.i
jms copy; name; d.name; 4
isz s.uniq
lac s.uniq
dac d.uniq
dac i.uniq
lac 9f+t
xor o400000
dac i.flags
lac u.uid
dac i.uid
-1
dac i.nlks
dzm i.size
jms copyz; i.dskps; 7
jms iput
jms dput
jmp icreat i
t = t+1
dspput: 0
and o177
sna
jmp i dspput
sad o14
jmp 1f
lmq
sad o12
jms dspnl
lac dsploc i
sad o400000
jmp dspleft
omq
dac dsploc i
isz dsploc
jmp i dspput
"** 01-s1.pdf page 31
1:
jms dspinit
jmp dspput i
dspleft:
lac dsploc
sad edspbuf
jmp 1f
dac 8
lac o400000
dac 8 i
cla; llss 18+7
dac dsploc i
jmp dspput i
dspnl: 0
lac dsplno
sad d33
jmp 1f
isz dsplno
jmp dspnl i
1:
lac o2000
wbl
isz dspput
jmp dspput i
dspinit: 0
lac dspbufp3
dac dsploc
lac o400000
dac dspbuf+3
dzm dsplno
jmp dspinit i
movdsp: 0
iof
cdf
dac dspbufp
-1
dac .dspb
ion
jmp movdsp i
arg: 0
lac u.rq+8 i
isz u.rq+8
jmp arg i
argname: 0
jms arg
dac .+2
jms copy; ..; name; 4
lac u.cdir
jms namei; name
jms error
jmp argname i
seektell: 0
jms arg
dac u.base
"** 01-s1.pdf page 32
jms arg
dac u.limit
jms finac
lac u.limit
sna
jmp seektell i
sad d1
jmp .+3
lac i.size
jmp seektell i
lac f.badd
jmp seektell i
isown: 0
jms argname
jms iget
lac u.uid
sma
sad i.uid
skp
jms error
jmp isown i
+350
View File
@@ -0,0 +1,350 @@
"** 01-s1.pdf page 34
" s6
itrunc: 0
-7
dac 9f+t
lac idskpp
dac 9f+t+1
1:
lac 9f+t+1 i
sna
jmp 4f
lac i.flags
and o200000
sna
jmp 3f
-64
dac 9f+t+2
lac dskbufp
dac 9f+t+3
2:
lac 9f+t+1 i
jms dskrd
lac 9f+t+3 i
sza
jms free
isz 9f+t+3
isz 9f+t+2
jmp 2b
3:
lac 9f+t+1 i
jms free
dzm 9f+t+1 i
4:
isz 9f+t+1
isz 9f+t
jmp 1b
lac i.flags
and o577777
dac i.flags
jmp itrunc i
t = t+4
namei: 0
jms iget
-1
tad namei i
dac 9f+t+1
isz namei
lac i.flags
and o20
sna
jmp namei i
-8
tad i.size
cma
lrss 3
dac 9f+t
sna
jmp namei i
dzm di
1:
lac di
"** 01-s1.pdf page 35
jms dget
lac d.i
sna
jmp 2f
lac 9f+t+1
dac 8
lac d.name
sad 8 i
skp
jmp 2f
lac d.name+1
sad 8 i
skp
jmp 2f
lac d.name+2
sad 8 i
skp
jmp 2f
lac d.name+3
sad 8 i
skp
jmp 2f
lac d.i
isz namei
jmp namei i
2:
isz di
isz 9f+t
jmp 1b
jmp namei i
t = t+2
iget: 0
dac ii
cll; idiv; 5
dac 9f+t
lacq
tad d2
dac 9f+t+1
jms dskrd
lac 9f+t
cll; mul; 12
lacq
tad dskbufp
dac 9f+t
dac .+2
jms copy; ..; inode; 12
jmp iget i
iput: 0
lac 9f+t+1
jms dskrd
law inode-1
dac 8
-1
tad 9f+t
dac 9
-12
dac 9f+t+2
1:
lac 8 i
"** 01-s1.pdf page 36
sad 9 i
skp
jmp 2f
isz 9f+t+2
jmp 1b
jmp iput i
2:
-1
tad 8
dac 8
-1
tad 9
dac 9
1:
lac 8 i
dac 9 i
isz 9f+t+2
jmp 1b
lac 9f+t+1
jms dskwr
jmp iput i
t = t+3
dget: 0
dac di
alss 3
dac 9f+t
jms pget
dac 9f+t+1
jms dskrd
lac 9f+t
and o77
tad dskbufp
dac 9f+t+2
dac .+2
jms copy; ..; dnode; 8
lac 9f+t
tad d8
jms betwen; d0; i.size
skp
jmp dget i
jms dacisize
dzm d.i
jmp dget i
dput: 0
lac 9f+t+1
jms dskrd
lac 9f+t+2
dac .+3
jms copy; dnode; ..; 8
lac 9f+t+1
jms dskwr
jmp dput i
t = t+3
pget: 0
lrss 6
dac 9f+t
lac i.flags
"** 01-s1.pdf page 37
and o200000
sza
jmp 2f
lac 9f+t
jms betwen; d0; d6
jmp 1f
tad idskpp
dac 9f+t
lac 9f+t i
sna
jms alloc
dac 9f+t i
jmp pget i
1:
jms alloc
dac 9f+t+1
jms copy; i.dskps; dskbuf; 7
jms copyz; dskbuf+7; 64-7
lac 9f+t+1
jms dskwr
lac 9f+t+1
dac i.dskps
jms copyz; i.dskps+1; 6
lac i.flags
xor o200000
dac i.flags
2:
lac 9f+t
lrss 6
jms betwen; d0; d6
jms halt " file too big
tad idskpp
dac 9f+t+1
lac 9f+t+1 i
sna
jms alloc
dac 9f+t+1 i
dac 9f+t+2
jms dskrd
lac 9f+t
and o77
tad dskbufp
dac 9f+t+1
lac 9f+t+1 i
sza
jmp pget i
jms alloc
dac 9f+t
lac 9f+t+2
jms dskrd
lac 9f+t
dac 9f+t+1 i
lac 9f+t+2
jms dskwr
lac 9f+t
jmp pget i
t = t+3
iwrite: 0
dac 9f+t
lac iwrite
"** 01-s1.pdf page 38
dac iread
lac cskp
dac iwrite
jmp 1f
iread: 0
dac 9f+t
lac cnop
dac iwrite
1:
-1
tad iread i
dac 10
dac 11
isz iread
lac iread i
dac 9f+t+1
isz iread
lac o70000
xct iwrite
lac i.size
cma
tad 9f+t
cma
jms betwen; d0; 9f+t+1
lac 9f+t+1
dac 9f+t+2
cma
tad d1
sna
jmp iread i
dac 9f+t+1
1:
lac 9f+t
jms pget
dac 9f+t+3
jms dskrd
lac 9f+t
and o77
tad dskbufp
tad dm1
xct iwrite
jmp .+3
dac 10
cskp:
skp
dac 11
2:
lac 11 i
dac 10 i
isz 9f+t
isz 9f+t+1
jmp 3f
xct iwrite
jmp 4f
lac 9f+t
jms betwen; d0; i.size
dac i.size
lac 9f+t+3
jms dskwr
4:
"** 01-s1.pdf page 38
lac 9f+t+2
jmp iread i
3:
lac 9f+t
and o77
sza
jmp 2b
xct iwrite
jmp 1b
lac 9f+t+3
jms dskwr
jmp 1b
t = t+4
finac: 0
lac u.ac
jms fget
jms error
lac f.flags
sma
jms error
lac f.i
jms iget
jmp finac i
dacisize: 0
dac i.size
jms iput
lac i.size
jmp dacisize i
+367
View File
@@ -0,0 +1,367 @@
"** 01-s1.pdf page 41
" s7
pibreak:
dac .ac "** CROSSED OUT....
dpsf
jmp 1f
dpcf
dprs
dac dpstat
sma ral
jmp 2f
dprc
dac dpchar
-1
dac dpread
lac dpstat
ral
2:
sma
jmp piret
-1
dac dpwrite
jmp piret "** END OF CROSSOUT
1: clsf
jmp 1f
lpb
dac pbsflgs
isz s.tim+1
skp
isz s.tim
isz uquant
"** written: ttydelay -> ttyd1
"** written: ttyrestart -> ttyres1
cnop:
nop
-1
dac 7
clon
lac ttydelay
spa
isz ttydelay
skp
jms ttyrestart
lac .dspb "** START CROSSED OUT: written: lac tty
sna
jmp piret
isz .dsptm
skp
jmp dsprestart
sad d3
jmp piret
isz .dspb
jmp piret
jmp dsprestart "** END CROSSED OUT
1: dssf
jmp 1f
-1
dac .dskb
"** 01-s1.pdf page 42
dsrs
dac .dske
dscs
jmp piret
1: lds "** BEGIN CROSSED OUT
sma ral
jmp 1f
cdf
lac .dspb
sna
jmp piret
tad dm3
sna
jmp dsprestart
dac .dspb
jmp piret
dsprestart:
lac d1
dac .dspb
lac dspbufp
beg
-10
dac .dsptm
jmp piret
1: sna ral
jmp .+3
dpcf
jmp piret
sma
jmp 1f
lda
dac .lpba
rlpd
jmp piret
1: ksf
jmp 1f
lac ttydelay
sma
isz ttydelay
krb
dac char
sad o375
jmp intrp1
lac d1
jms putchar
dzm char
lac sfiles+0
jms wakeup
dac sfiles+0
lac char
sad o212
skp
jmp piret
lac sfiles+1
sma
xor o400000
dac sfiles+1
"** 01-s1.pdf page 43
jms putcr
jms ttyrestart
jmp piret
1: tsf
jmp 1f
tcf
jms ttyrestart
jmp piret
ttyrestart: 0
lac ttydelay
spa
jmp ttyrestart i
lac nttychar
dzm nttychar
sza
jmp 3f
isz ttydelay
lac d2
jms getchar
jmp 2f
3:
tls
sad o12
jms putcr
sad o15
skp
jmp ttyrestart i
lac ttydelay
tad o20
rcr
cma
dac ttydelay
jmp ttyrestart i
2:
lac sfiles+1
jms wakeup
dac sfiles+1
jmp ttyrestart i "** written arrow up 2 copies
1: sck "** BEGIN CROSSED OUT
jmp 1f
cck
lck
dac char
sad o33
jmp intrp2
lac d3
jms putchar
nop
lac sfiles+2
jms wakeup
dac sfiles+2
jmp piret
1: rsf
jmp 1f
"** 01-s1.pdf page 44
lac npptchar
sna
jmp .+5
dac char
rrb
dac npptchar
jmp .+3
rrb
dac char
3:
lac char
sna
jmp 2f
lac d4
jms putchar
jmp 3f
lac char
sad d4
jmp 4f
2:
lac npptchar
sna
jmp .+4
dac char
dzm npptchar
jmp 3b
rsa
lac sfiles+3
jms wakeup
xor o400000
dac sfiles+3
jmp piret
3:
lac char
dac npptchar
4:
lac sfiles+3
jms wakeup
dac sfiles+3
jmp piret
1: psf
jmp 1f
pcf
lac d5
jms getchar
jmp .+3
psa
jmp piret
lac sfiles+4
jms wakeup
dac sfiles+4
jmp piret
1: spb "** BEGIN CROSSED OUT
jmp 1f
cpb
lpb
dac pbsflgs+1
"** 01-s1.pdf page 45
and o2000
sna
jmp piret
jms dspinit
lac sfiles+6
jms wakeup
dac sfiles+6
cla
wbl
jmp piret "** END CROSSED OUT
1: crsf
jmp 1f
crrb
dac crchar
-1
dac crread
jmp piret
1: crrb
piret:
lac 0
ral
lac .ac
ion
jmp 0 i
wakeup: 0
dac 9f+t
-mnproc
dac 9f+t+1
lac tadu
dac 2f
lac dacu
dac 2f+1
1:
lac 9f+t
ral
dac 9f+t
sma
jmp 2f+2
lac o700000
2: tad ..
dac ..
lac 2b
tad d4
dac 2b
lac 2b+1
tad d4
dac 2b+1
isz 9f+t+1
jmp 1b
cla
jmp wakeup i
t = t+2
putcr: 0
lac o15
dac nttychar
"** 01-s1.pdf page 46
cla
jmp putcr i
intrp1:
lac d6
dac .int1
lac d1
jms getchar
skp
jmp .-3
lac d2
jms getchar
skp
jmp .-3
lac sfiles+0
jms wakeup
dac sfiles+0
lac sfiles+1
jms wakeup
dac sfiles+1
jms chkint
jmp piret
jmp 1f
intrp2:
lac d7
dac .int2
lac d3
jms getchar
skp
jmp .-3
lac sfiles+2
jms wakeup
dac sfiles+2
lac sfiles+6
jms wakeup
dac sfiles+6
jms chkint
jmp piret
1:
lac 0
dac 020
lac .ac
jmp 021
+214
View File
@@ -0,0 +1,214 @@
"** 01-s1.pdf page 48
" s8
" manifests
mnproc = 10
dspbsz = 270
ndskbs = 4
" flags
.insys: 0
.int1: 0
.int2: 0
.ac: 0
.savblk: 0
.dsptm: 0
.dskb: 0
.dske: 0
" pointers
tadu: tad ulist
dacu: dac ulist
maxquant: 30
ofilesp: u.ofiles
idskpp: i.dskps
dskbufp: dskbuf
edspbuf: dspbuf+dspbsz
dspbufp3: dspbuf+3
fblksp: s.fblks
dacq1: dac q1
lacq1: lac q1
q2p: q2
" strings
initf:
<i>n;<i>t;< > ;< > "
" constants
d0: 0
d1: 1
d2: 2
d3: 3
d4: 4
d5: 5
d6: 6
d7: o7: 07
d8: 8
d9: 9
o12: d10: 10
o14: 014
o15: 015
o17: 017
o20: 020
o33: 033
o40: 040
o55: 055
o77: 077
d65:o101: 0101
d33: 33
o132: 0132
o134: 0134
o137: 0137
o155: 0155
o177: 0177
"** 01-s1.pdf page 49
o212: 0212
o375: 0375
o777: 0777
o2000: 02000
o4000: 04000
d7999: 7999
o10000: 010000
o17762: 017762
o17777: 017777
o20001: 020001
o40000: 040000
o40001: 040001
o70000: 070000
o77777: 077777
o100000: 0100000
o140000: 0140000
o200000: 0200000
o200001: 0200001
o300000: 0300000
o400000: 0400000
o500000: 0500000
o577777: 0577777
o600000: 0600000
o640000: 0640000
o700000: 0700000
o777700: 0777700
o777760: 0777760
dm3: -3
dm1: -1
9: .=.+t
c1: .=.+1
q1: q2;q2+90 "** ?? 98 ??
.=.+14
q2:
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0
.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;.+2;0;0;0
dsploc: .=.+1
dsplno: .=.+1
dspbuf:
0065057;0147740;0160000
.=.+30
coldentry:
dzm 0100 " not re-entrant
caf
ion
clon
law 3072
wcga
jms dspinit
law dspbuf
jms movdsp
cla
jms dskio; 06000
jms copy; dskbuf; sysdata; ulist-sysdata
lac d3
jms namei; initf
jms halt
"** 01-s1.pdf page 50
jms iget
cla
jms iread; 4096; 4096
jmp 4096
. = dspbuf+dspbsz+3
dskbuf = 07700
dskbs: .=.+65+65+65+65
edskbsp: .
uquant: .=.+1
dspbufp: .=.+1
pbsflgs: .=.+2
mode: .=.+1
nttychar: .=.+1
npptchar: .=.+1
ttydelay: .=.+1
name: .=.+4
lnkaddr: .=.+1
char: .=.+1
dskaddr: .=.+1
uniqpid: 1
lu: .=.+4
sfiles: .=.+10
dpdata:
dpstat: .=.+1
dpread: .=.+1
dpwrite: .=.+1
dpchar: .=.+1
dspdata:
.dspb: .=.+1
.lpba: .=.+1 "** 4 written on listing
crdata:
crread: .=.+1
crchar: .=.+1
sysdata:
s.nxfblk: .=.+1
s.nfblks: .=.+1
s.fblks: .=.+10
s.uniq: .=.+1
s.tim: .=.+2
ulist:
0131000;1;0;0
0031040;0;0;0
0031100;0;0;0
0031140;0;0;0
0031200;0;0;0
0031240;0;0;0
0031300;0;0;0
0031340;0;0;0
0031400;0;0;0
0031440;0;0;0
userdata:
u.ac: 0
u.mq: 0
u.rq: .=.+9
u.uid: -1
u.pid: 1
u.cdir: 3
u.ulistp: ulist
u.swapret: 0
u.base: 0
u.count: 0
"** 01-s1.pdf page 51
u.limit: 0
u.ofiles: .=.+30
u.dspbuf: 0
u.intflg: 1
.=userdata+64
ii: .=.+1
inode:
i.flags: .=.+1
i.dskps: .=.+7
i.uid: .=.+1
i.nlks: .=.+1
i.size: .=.+1
i.uniq: .=.+1
.= inode+12
di: .=.+1
dnode:
d.i: .=.+1
d.name: .=.+4
d.uniq: .=.+1
. = dnode+8
fnode:
f.flags: .=.+1
f.badd: .=.+1
f.i: 0
+115
View File
@@ -0,0 +1,115 @@
"** 01-s1.pdf page 53
" s9 -- cold boot
. = coldentry+4
" zero i-list
dzm ii
jms copyz; dskbuf; 64
1:
lac ii
jms dskio; 07000
isz ii
-710
tad ii
sza
jmp 1b
" free rest of disk
1:
lac ii
jms free
isz ii
-6400
tad ii
sza
jmp 1b
" read in tapes
dzm ii
1:
dzm sum
jms getw " count
sza
jmp .+3
hlt
jmp 1b " 0 count means pause
dac xx
isz ii
lac ii
jms iget
jms copyz; inode; 12
jms getw " flags
dac i.flags
-1
dac i.uid
jms getw " number links
dac i.nlks
-2
tad xx
dac i.size
lac ii
dac i.uniq
law 4096-1
dac 8
-1
tad i.size
cma
sna
jmp 3f
dac xx
"** 01-s1.pdf page 54
2:
jms getw
dac 8 i
isz xx
jmp 2b
3:
lac sum
dac xx
jms getw " checksum
sad xx
skp
jms halt
lac i.size
dac .+4
cla
jms iwrite; 4096; ..
jms iput
cla
jms dskio; 07000 "** writing on listing
jmp 1b
getw: 0
jms getc
alss 12
lmq
jms getc
alss 6
omq
lmq
jms getc
omq
lmq
add sum
dac sum
lacq
jmp getw i
getc: 0
iof
rsa
rsf
jmp .-1
rrb
sna
jmp getc+1
and o77
ion
jmp getc i
xx: 0
sum: 0
+97
View File
@@ -0,0 +1,97 @@
"** 01-s1.pdf page 62
" sop
dac = 0040000
jms = 0100000
dzm = 0140000
lac = 0200000
xor = 0240000
add = 0300000
tad = 0340000
xct = 0400000
isz = 0440000
and = 0500000
sad = 0540000
jmp = 0600000
nop = 0740000
i = 020000
law = 0760000
cma = 0740001
las = 0750004
ral = 0740010
rar = 0740020
hlt = 0740040
sma = 0740100
sza = 0740200
snl = 0740400
skp = 0741000
sna = 0741200
szl = 0741400
rtl = 0742010
rtr = 0742020
cil = 0744000
rcl = 0744010
rcr = 0744020
cia = 0750000
lrs = 0640500
lrss = 0660500
lls = 0640600
llss = 0660600
als = 0640700
alss = 0660700
mul = 0653323
idiv = 0653323
lacq = 0641002
clq = 0650000
omq = 0650002
cmq = 0650004
lmq = 0652000
dscs = 0707141
dslw = 0707124
dslm = 0707142
dsld = 0707104
dsls = 0707144
dssf = 0707121
dsrs = 0707132
iof = 0700002
ion = 0700042
caf = 0703302
clon = 0700044
clsf = 0700001
"** 01-s1.pdf page 63
clof = 0700004
ksf = 0700301
krb = 0700312
tsf = 0700401
tcf = 0700402
tls = 0700406
sck = 0704301
cck = 0704304
lck = 0704312
rsf = 0700101
rsa = 0700104
rrb = 0700112
psf = 0700201
pcf = 0700202
psa = 0700204
cdf = 0700501
lds = 0701052
lda = 0701012
wcga = 0704206
raef = 0700742
rlpd = 0700723
beg = 0700547
spb = 0704401
cpb = 0704404
lpb = 0704412
wbl = 0704424
dprs = 0704752
dpsf = 0704741
dpcf = 0704761
dprc = 0704712
crsf = 0706701
crrb = 0706712
+264
View File
@@ -0,0 +1,264 @@
"** 01-s1.pdf page 57 -- system assembly map
. 004671 r
.ac 004012 r
.chown 000426 r
.capt 000404 r
.creat 000665 r
.chdir 000622 r
.chmod 000414 r
.dskb 004105 r
.dspb 005547 r
.dsptm 004104 r
.dske 004106 r
.exit 001170 r
.fork 001116 r
.getuid 000433 r
.halt 001343 r
.int1 004100 r
.insys 004077 r
.int2 004101 r
.intrp 000257 r
.link 000474 r
.lpba 005550 r
.open 000633 r
.rmes 001204 r
.rele 000410 r
.rename 000547 r
.read 000731 r
.smes 001232 r
.savblk 004103 r
.sysloc 000262 r
.setuid 000566 r
.status 000352 r
.save 001156 r
.seek 000436 r
.tell 000466 r
.time 000615 r
.unlink 000547 r
.write 001000 r
access 002323 r
alloc 001556 r
argname 002642 r
arg 002636 r
awake 001311 r
badcal 001153 r
betwen 001654 r
c1 004270 r
chkint 000320 r
chkink1 001546 r
char 005522 r
cnop 003453 r
coldentr 004520 r
copyz 001723 r
collapse 002066 r
copy 001700 r
crdata 005551 r
crchar 005552 r
crread 005551 r
cskp 003346 r
d.name 005761 r
d.uniq 005765 r
d.i 005760 r
"** 01-s1.pdf page 58
d0 004127 r
d10 004141 r
d1 004130 r
d2 004131 r
d33 004153 r
d3 004132 r
d4 004133 r
d5 004134 r
d6 004135 r
d65 004155 r
d7999 004166 r
d7 004136 r
d8 004137 r
d9 004140 r
dacq1 004120 r
dacu 004110 r
dacisize 003413 r
dget 003115 r
di 005757 r
dm1 004215 r
dm3 004214 r
dnode 005760 r
dpdata 005543 r
dput 003147 r
dpchar 005546 r
dpwrite 005545 r
dpstat 005543 r
dpread 005544 r
dskbufp 004114 r
dskio 002173 r
dspdata 005547 r
dskrd 002127 r
dsktrans 002231 r
dsploc 004455 r
dslot 002474 r
dspino 004456 r
dspbufp3 004116 r
dspbufp 005506 r
dspresta 003523 r
dskaddr 005523 r
dskbs 005100 r
dskwr 002157 r
dspput 002551 r
dspleft 002573 r
dspbuf 004457 r
error 001542 r
exitrw 001041 r
f.badd 005771 r
f.flags 005770 r
fassign 002340 r
fallr 002436 r
fblksp 004117 r
fget 002371 r
finac 003401 r
fnode 005770 r
"** 01-s1.pdf page 59
forall 002434 r
fput 003413 r
free 001615 r
getchar 001756 r
getw 004635 r
getc 004654 r
halt 002265 r
i.flags 005743 r
i.dskps 005744 r
i.uniq 005756 r
i.size 005755 r
i.nlks 005754 r
i.uid 005753 r
icreat 002506 r
idskpp 004113 r
iget 003030 r
ii 005742 r
inode 005743 r
intrp1 004032 r
intrp2 004055 r
initf 004123 r
iput 003057 r
iread 003277 r
isown 002675 r
itrunc 002706 r
iwrite 003270 r
laci 001646 r
lacq1 004121 r
lnkaddr 005521 r
lookfor 001073 r
locsw 000275 r
locn 000317 r
lu 005525 r
maxquant 004111 r
mode 005511 r
movdsp 002626 r
name 005515 r
namei 002750 r
npptchar 005513 r
nttychar 005512 r
o10000 004167 r
o17 004144 r
o177 004160 r
o101 004152 r
o17762 004170 r
o17777 004171 r
o12 004141 r
o132 004154 r
o134 004155 r
o137 004156 r
o100000 004177 r
o140000 004200 r
o14 004142 r
o15 004143 r
0155 004157 r
o2000 004164 r
o200001 004262 r
o20001 004172 r
020 004145 r
o212 004161 r
o200000 004201 r
"** 01-s1.pdf page 60
o375 004162 r
o33 004146 r
o300000 004203 r
o4000 004165 r
o40000 004173 r
o40 004147 r
o400000 004204 r
o500000 004205 r
o55 004150 r
o577777 004206 r
o600000 004207 r
o640000 004210 r
o777 004163 r
o77 004157 r
o70000 004175 r
o77777 004176 r
o777760 004213 r
o7 004136 r
o700000 004211 r
o777700 004212 r
ofilesp 004112 r
okexit 000102 r
open1 000722 r
orig 000000 r
passone 001534 r
pbsflgs 005507 r
pget 003163 r
piret 003766 r
pibreak 003420 r
putchar 001741 r
putq 002022 r
putcr 004025 r
q1 004271 r
q2p 004122 r
q2 004311 r
rkbdi 001415 r
rppti 001472 r
rttyi 001344 r
s.tim 005570 r
s.nxfblk 005553 r
s.uniq 005567 r
s.nfblks 005554 r
s.fblks 005555 r
seektell 002656 r
searchu 001047 r
sfiles 005551 r
sleep 002445 r
srcdbs 002046 r
sum 004670 r
swr 001331 r
swp 000220 r
swn 000256 r
sww 001331 r
swap 000136 r
sysdata 005553 r
sysexit 000103 r
takeq 001770 r
tadu 004107 r
ttydelay 005514 r
ttyresta 003603 r
"** 01-s1.pdf page 61
u.dspbuf 005723 r
u.intflg 005724 r
u.ulistp 005660 r
u.pid 005656 r
u.ofiles 005665 r
u.swapre 005661 r
u.mq 005643 r
u.uid 005655 r
u.ac 005642 r
u.limit 005664 r
u.cdir 005657 r
u.count 005663 r
u.base 005662 r
u.rq 005644 r
ulsit 005562 r
uniqpid 005524 r
uquant 005505 r
userdata 005642 r
wakeup 003773 r
wdspo 001462 r
wppto 001506 r
wttyo 001364 r
xx 004667 r