1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-04-17 08:41:39 +00:00

- initial import of work.

This commit is contained in:
tim.newsham
2008-04-24 17:06:23 +00:00
commit 5d1a310888
11 changed files with 614 additions and 0 deletions

81
notes.txt Normal file
View File

@@ -0,0 +1,81 @@
I started with the pdf, using Preview in mac I selected regions and
copied and created new doc, saved it as jpeg and then used
the online OCR program: http://asv.aso.ecei.tohoku.ac.jp/tesseract/
I then manually edited each file.
The files are named according to the page index in the pdf and the
section and page given in the page footer. Page headers and footers
were not captured.
------------------
e00-01 to e00-10 (10) - u0 -
assigned: tim newsham, complete
reviewed:
e01-01 to e01-10 (10) - u1 -
assigned: Hellwig Geisse
reviewed:
e02-01 to e02-10 (10) - u2 -
assigned: Brantley Coile
reviewed:
e03-01 to e03-04 (4) - u3 -
assigned:
reviewed:
e04-01 to e04-07 (7) - u4 -
assigned:
reviewed:
e05-01 to e05-06 (6) - u5 -
assigned:
reviewed:
e06-01 to e06-06 (6) - u6 -
assigned:
reviewed:
e07-01 to e07-08 (8) - u7 -
assigned:
reviewed:
e08-01 to e08-09 (9) - u8 -
assigned:
reviewed:
e09-01 to e09-08 (8) - u9 -
assigned:
reviewed:
e10-01 to e10-02 (2) - ux -
assigned:
reviewed:
e11-01 to e11-07 (7) - sh
we have a binary for the sh already I think. this may be optional
assigned:
reviewed:
e12-01 to e12-04 (4) - init
we have a binary for init already
assigned:
reviewed:
------------------
e00-01
- I used spaces to line up the comment columns, not tabs. I
picked the column distance arbitrarily.
- the bottom section looks like it could be tabbed but my tabstops
didnt line up with the values given so I used spaces
e00-02
- I used tabs for the start of each asm command but not for the
separation between mnemonic and arguments since these didnt line up.
with my tab stops.
e00-03
- left "dis addresses" typo in per original
e00-05
- cant tell if the "O" in quotes after 1: is a O or a 0.
- left mispelled "mormally" in comment
- left "file/etc/init" without space.
e00-06
- left mis-spacing on 5: move r5,r1.
e00-10
- left "/ect/init" typo
--------------------

55
pages/e00-01 Normal file
View File

@@ -0,0 +1,55 @@
/ u0 -- unix
cold = 0
orig = 0 . / orig = 0. relocatable
rkda = 177412 / disk address reg rk03/rk11
rkds = 177400 / driv status reg rk03/rk11
rkcs = 177404 / control status reg rk03/rk11
rcsr = 174000 / receiver status reg dc-11
rcbr = 174002 / receiver buffer reg dc-11
tcsr = 174004 / xmtr status reg dc-11
tcbr = 174006 / xmtr buffer req dc-11
tcst = 177340 / dec tape control status tc11/tu56
tccm = 177342 / dec tape command reg tc11/tu56
tcwc = 177344 / word count tc11/tu56
tcba = 177346 / bus addr tc11/tu56
tcdt = 177350 / data reg tc11/tu56
dcs = 177460 / drum control status rf11/rs11
dae = 177470 / drum address extension rf11/rs11
lks = 177546 / clock status reg kw11-l
prs = 177550 / papertape reader status pc11
prb = 177552 / buffer pc11
pps = 177554 / punch status pc11
ppb = 177556 / punch buffer pc11
/lps = 177514 line printer status (future)
/lpb = 177516 line printer buffer (future)
tks = 177560 / console read status asr-33
tkb = 177562 / read buffer asr-33
tps = 177564 / punch status asr-33
tpb = 177566 / punch buffer asr-33
ps = 177776 / processor status
halt = 0
wait = 1
rti = 2
nproc = 16. / number of processes
nfilcs = 50.
ntty = 8+1
nbuf = 6
.if cold / ignored if cold = 0
nbuf = 2
.endif
core = orig+40000 / specifies beginning of user's core
ecore = core+20000 / specifies end of user's core (4096 words)
/ 4;4 init by copy
/ unkni;0 " error
/ fpsym;0 " illg in tr
unkni;0 / trace and trap (see Sec. B.1 page )
unkni;0 / trap
panic;0 / pwr
rtssym;0 / emt
sysent;0 / sys

57
pages/e00-02 Normal file
View File

@@ -0,0 +1,57 @@
. = orig+60
ttyi;240 / interrupt vector tty in ; processor level 5
ttyo;240 / interrupt vector tty out
ppti;240 / punch papertape in
ppto;240 / punch papertape out
clock;340 / clock interrupt vector ; processor level 7
. = orig+200
/ lpto; 240 line printer interrupt ; processor level 5 (future)
. = orig+204
drum;300 / drum interrupt ; processor level 6
. = orig+214
tape;300 / dec tape interrupt
disk;300 / rk03 interrupt
. = orig+300
0*4+trcv; 240; 0*4+txmt; 240 / dc11 input;output interrupt vectors
1*4+trcv; 240; 1*4+txmt; 240
2*4+trcv; 240; 2*4+txmt; 240
3*4+trcv; 240; 3*4+txmt; 240
4*4+trcv; 240; 4*4+txmt; 240
5*4+trcv; 240; 5*4+txmt; 240
6*4+trcv; 240; 6*4+txmt; 240
7*4+trcv; 240; 7*4+txmt; 240
. = orig+400
/ copy in transfer vectors
mov $ecore,sp / put pointer to score in the stack pointer
jsr r0,copyz; 0; 14 / clear locations 0 to 14 in core
mov $4,r0
clr r1
mov r0,(r1)+ / put value of 4 into location 0
mov r0,(r1)+ / put value of 4 into location 2
mov $unkni,(r1)+ / put value of unkni into location 4;
/ time out, bus error
clr (r1)+ / put value of 0 into location 6
mov $fpsym,(r1)+ / put value of fpsym into location 10
clr (r1)+ / put value of 0 into location 12
/ clear core
.if cold / ignored if cold = 0
halt / halt before initializing rf file system; user has
/ last chance to reconsider
.endif
jsr r0,copyz; systm; ecore / clear locations systm to ecore
mov $s,chrgt+2,clockp / intlalize clockp
/ allocate tty buffers; see H.0 for description
mov $buffer,r0
mov $tty+6,r1
1:
mov r0,(r1)
add $140.,r0 / tty buffers are 140. bytes long
add $8,r1
cmp r1,$tty+[ntty*8] / has a buffer been assigned for each tty
blo 1b
/ allocate disk buffers; see H.0 for description

56
pages/e00-03 Normal file
View File

@@ -0,0 +1,56 @@
mov $bufp,r1
1:
mov r0,(r1)+
add $8,r0
mov r0,-2(r0) / bus address
mov $-256.,-4(r0) / word count
add $512.,r0 / buffer space
cmp r1,$bufp+nbuf+nbuf
blo 1b
mov $sb0,(r1)+ / I/O queue entry drum
mov $sb1,(r1)+ / I/O queue entry disk (mounted device)
mov $swp,(r1)+ / I/O queue entry core image being swapped
mov $[systm-inode]\/2,sb0+4 / sets up initial buffers per
/ format given in
mov $systm,sb0+6 / memory map
mov $-512.,sb1+4
mov $mount,sb1+6
mov $user,swp+6
/ set devices to interrupt
mov $100,*$lks / put 100 into clock status register;
/ enables clock interrupt
/ set up time out subroutines
mov $touts,r0
mov $startty,(r0)+ / if toutt = 0 call startty
mov $pptito,(r0)+ / if toutt+1 = 0 call pptito
tst (r0)+ / add 2 to r0
mov $ntty-1,r1
1 :
mov $xmtto,(r0)+ / if toutt+2 thru toutt+2+ntty=0 call xmtto
dec r1
bne 1b
/ free all character blocks; see H.0 for description
mov $510.,r2
mov $-1,r1
1:
jsr r0,put
sub $2,r2
bgt 1b
/ set up drum swap addresses; see H.0 for description
mov $1024.,-64.,r1 / highest drum address; high 64 blks allocated
/ to UNIX
mov $p.dska,r2 / p.dska contains dis addresses for processes
1 :
sub $17.,r1 / 17 blocks per process
mov r1,(r2)+
cmp r2,$p.dska+nproc+nproc
bne 1b

57
pages/e00-04 Normal file
View File

@@ -0,0 +1,57 @@
/ free rest of drum
.if cold
mov $128.,systm / inltialize word 1 of drum superblock image;
/ number of bytes in free storage map=128.
mov $64.,systm+2+128. / init. wd 66. of superblock image; # of
/ bytes in i-node map=64.
1:
dec r1 / r1=687.,...,34.
jsr r0,free / free block 'r1', i.e., set bit 'r1' in free
/ storage map in core
cmp r1,$34. / first drum address not in i list
bgt 1b / if block 34 has been freed, zero i list
/ zero 1 list
1:
dec r0 / r0=33.,...,1
jsr r0,c1ear / zero block 'r1' on fixed head disk
tst r1
bgt 1b / if blocks 33,...,1 have all been zeroed, done.
.endif
/ make current program a user
mov $41.,r0 / rootdir set to 41 and never changed
mov r0,rootdir / rootdir is i-number of root directory
mov r0,u.cd1r / u.cd1r 1s i-number of process current directory
mov $1,r0
movb r0,u.uno / set process table index for this process to 1
mov r0,mpid / initialize mpid to 1
mov r0,p.p1d / p.pid identifies process
movb r0,p.stat / process status = 1 i.e., active
/ = 0 free
.if cold / = 2 waiting for a child to die
/ = 3 terminated but not yet waited
/ for
/ initialize inodes for special files (inodes 1 to 40.)
mov $40.,r1 / set r1=i-node-number 40.
1:
jsr r0,iget / read i-node 'r1' from disk into inode area of
/ core and write modified inode out (if any)
mov $100017,i.flgs / set flags in core image of inode to indi-
/ cate allocated, read (owner, non-owner),
/ write (owner, non-owner)
movb $1,i.nlks / set no. of links = 1
movb $1,i.uid / set user id of owner = 1
jsr r0,setimod / set imod=1 to indicate i-node modified, also
/ stuff time of modification into i-node
dec r1 / next i-node no. = present i-node no.-1
bgt 1b / has i-node 1 been initialized; no, branch
/ initialize i-nodes r1.,...,47. and wr1te the root device, binary, etc.,
/ directories onto fixed head disk. user temporary, initialization prog.

54
pages/e00-05 Normal file
View File

@@ -0,0 +1,54 @@
mov $idata,r0 / r0=base addr. of assembled directories.
mov $u.off,u.fofp / pointer to u.off in u.fofp (holds file
/ offset)
1:
mov (r0)+,r1/r1=41.,...,47; "0" in the assembled directory
/ header signals last
beq 1f / assembled directory has been written onto drum
jsr r0,imap / locate the inode map bit for i-node 'r1'
bisb mq,(r2) / set the bit to indicate the i-node is not
/ available
jsr r0,iget / read inode 'r1' from disk into inode area of
/ core and write modified i-node on drum (if any)
mov (r0)+,i.flgs / set flags in core image of inode from
/ assembled directories header
movb (r0)+,i.nlks / set no. of links from header
movb (r0)+,i.uid / set user id of owner from header
jsr r0,setimod / set imod=1 to indicate inode modified: also,
/ stuff time of modification into i-node
mov (r0)+,u.count / set byte count for write call equal to
/ size of directory
mov r0,u.base / set buffer address for write to top of directory
clr u.off / clear file offset used in 'seek' and 'tell'
add u.count,r0 / r0 polnts to the header of the next directory
jsr r0,writei / write the directory and i-node onto drum
br 1b / do next directory
.endif
/ next 2 instructions not executed during cold boot.
bis $2000,sb0 / sb0 I/O queue entry for superblock on drum;
/ set blt 10 to 1
jsr r0,ppoke / read drum superblock
1:
tstb sb0+1 / has I/O request been honored (for drum)?
bne 1b / no, continue to idle.
1:
decb sysflg / mormally sysflag=0, indicates executing in system
sys exec; 2f; 1f / generates trap interrupt; trap vector =
/ sysent; 0
br panic / execute file/etc/init
1 :
2f;0
2:
</etc/init\0> / UNIX looks for strings term, noted by nul\0
panic:
clr ps
1:
dec $0
bne 1b
dec $5
bne 1b
jmp *$173700 / rom loader address

56
pages/e00-06 Normal file
View File

@@ -0,0 +1,56 @@
rtssyms:
mov r0,-(sp)
mov r1,-(sp)
mov 4(sp),r0
mov -(r0),r0
bic $!7,r0
asl r0
jmp *1f(r0)
1:
0f;1f;2f;3f;4f;5f;badrts;7f
0:
mov 2(sp),r0
br 1f
2:
mov r2,r1
br 1f
3:
mov r3,r1
br 1f
4:
mov r4,r1
br 1f
5:
mov r5,r1
bf 1f
7:
mov 8.(sp),r1
1:
cmp r1,$core
blo badrts
cmp r1,$ecore
bhis badrts
bit $1,r1
bne badrts
tst (r1)
beq badrts
add $1f,r0
mov r0,4(sp)
mov (sp)+,r1
mov (sp)+,r0
rti
1:
rts r0
rts r1
rts r2
tts r3
rts r4
rts r5
rts sp
rts pc
badrts:
mov (sp)+,r1
mov (sp)+,r0
rpsym:

57
pages/e00-07 Normal file
View File

@@ -0,0 +1,57 @@
jmp unkni
.if cold
idata:
/ root
41.
140016
.byte 7,1
9f-.-2
41.
<..\0\0\0\0\0\0>
41.
<.\0\0\0\0\0\0\0>
42.
<dev\0\0\0\0\0>
43.
<bin\0\0\0\0\0>
44.
<etc\0\0\0\0\0>
45.
<usr\0\0\0\0\0>
46.
<tmp\0\0\0\0\0>
9:
/ device directory
42.
140016
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
42.
<.\0\0\0\0\0\0\0>
01.
<tty\0\0\0\0\0>
02.
<ppt\0\0\0\0\0>
03.
<mem\0\0\0\0\0>
04.
<rf0\0\0\0\0\0>
05.
<rk0\0\0\0\0\0>
06.
<tap0\0\0\0\0>
07.
<tap1\0\0\0\0>
08.
<tap2\0\0\0\0>
09.
<tap3\0\0\0\0>

56
pages/e00-08 Normal file
View File

@@ -0,0 +1,56 @@
10.
<tap4\0\0\0\0>
11.
<tap5\0\0\0\0>
12.
<tap6\0\0\0\0>
13.
<tap7\0\0\0\0>
14.
<tty0\0\0\0\0>
15.
<tty1\0\0\0\0>
16.
<tty2\0\0\0\0>
17.
<tty3\0\0\0\0>
18.
<tty4\0\0\0\0>
19.
<tty5\0\0\0\0>
20.
<tty6\0\0\0\0>
21.
<tty7\0\0\0\0>
22.
<lpr\0\0\0\0\0>
01.
<tty8\0\0\0\0> / really tty
9:
/ binary directory
43.
140016
.byte 2,3
9f-.-2
41.
<..\0\0\0\0\0\0>
43.
<.\0\0\0\0\0\0\0>
9:
/ etcetra directory
44.
140016
.byte 2,3
9f-.-2
41.
<..\0\0\0\0\0\0>
44.
<.\0\0\0\0\0\0\0>
47.
<init\0\0\0\0>
9:

57
pages/e00-09 Normal file
View File

@@ -0,0 +1,57 @@
/ user directory
45.
140016
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
45.
<.\0\0\0\0\0\0\0>
9:
/ temporary directory
46.
140017
.byte 2,1
9f-.-2
41.
<..\0\0\0\0\0\0>
46.
<.\0\0\0\0\0\0\0>
9:
/ initialization program
47.
100036
.byte 1,3
9f-.-2
8:
sys break; 0
sys open; 6f-8b+core; 0
mov r0,r1
sys seek; 65.; 0
1:
mov r1,r0
sys read; 9f-8b+core; 512.
mov 9f,r5 / size
beq 1f
sys creat; 9f-8b+core+4; 0
mov r0,r2
movb 9f+2,0f
sys chmod; 9f-8b+core+4; 0:..
movb 9f+3,0f
sys chown; 9f-8b+core+4; 0:..
2:
tst r5
beq 2f
mov r1,r0
sys read; 9f-8b+core; 512.
mov $512.,0f
cmp r5,$512.
bhi. 3f
mov r5,0f
3:

28
pages/e00-10 Normal file
View File

@@ -0,0 +1,28 @@
mov r2,r0
sys write; 9f-8b+core; 0:..
sub r0,r5
br 2b
2:
mov r2,r0
sys close
br 1b
1:
mov r1,r0
sys close
sys exec; 5f-8b+core; 4f-8b+core
sys exit
4:
5f-8b+core; 0
5:
</ect/init\0>
6:
</dev/tap0\0>
.even
9:
/ end of initialization data
0
.endif