1
0
mirror of https://github.com/DoctorWkt/unix-jun72.git synced 2026-01-13 15:27:49 +00:00

281 lines
9.9 KiB
Plaintext

Original Source:
http://www.bitsavers.org/pdf/bellLabs/unix/PreliminaryUnixImplementationDocument_Jun72.pdf
------
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:
(reviewed e01-01 to e01-06 - tim newsham)
e02-01 to e02-10 (10) - u2 -
assigned: Brantley Coile, complete
reviewed: tim newsham
e03-01 to e03-04 (4) - u3 -
assigned: Tim Bradshaw,
(Brad Parker, complete)
reviewed:
e04-01 to e04-07 (7) - u4 -
assigned: Alex Garbutt,
(Brad Parker, complete)
reviewed:
e05-01 to e05-06 (6) - u5 -
assigned: Ralph Logan, complete
reviewed: johan beiser
e06-01 to e06-06 (6) - u6 -
assigned: johan beisser, complete
reviewed:
e07-01 to e07-08 (8) - u7 -
assigned: Naoki Hamada, complete
reviewed:
e08-01 to e08-09 (9) - u8 -
assigned: Christian David,
(Brad Parker, complete)
reviewed:
e09-01 to e09-08 (8) - u9 -
assigned: tim newsham, complete
reviewed: Ralph Logan
e10-01 to e10-02 (2) - ux -
assigned: tim newsham, complete
reviewed:
e11-01 to e11-07 (7) - sh
we have a binary for the sh already I think. this may be optional
assigned: johan beisser, complete
reviewed:
e12-01 to e12-04 (4) - init
we have a binary for init already
assigned: tim newsham, complete
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
- (Brad Parker) removed commented out 3 lines at "4;4". The comment
appears to be written in and is wrong (I think it might just be a
stroke of the pen rather than a correction)
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-04
- This instruction doesnt make sense: "dec r0 / r0=33.,...,1 "
r0 is used as the jsr link register. However, r1 has the
value of 34 prior to this. Changed both occurances of "r0" to
"r1" in this code.
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
- changed this to "/etc/init". There is no "/ect" directory
on the rf0 drive at the point the cold init is run and
the cold init program doesnt make any new directories, so
this is likely just a typo in the original printout.
------
e01-06
- "r2, p pid-2(r1)" has written correction "p.ppid". Using written
correction.
- "mov $sysret1,(sp)" has written correction for "-(sp)". Using
--------------------
e02-03
- "mov $rtssym,*30" in sysexec is incorrect. It overwrites
the first byte of the rtssym function with the rtssym address.
It should read "move $rtssym,30" which writes the address of
rtssym to the trap vector.
e02-05
- label "1:" is overstruck with "/" in the listing. leaving the
label in place. Should be reviewed for semantic meaning.
- the struck label is referenced below as "1b" right before
"nig:" on e02-06. I believe removing the label would cause
an extra comparison to occur but not change he semantics of
the loop.
e02-09
- extra label "sysquit:" handwritten after "sysintr:". Leaving
the extra label out.
- adding it back in. this label is referenced in the syscall
table (u1.s) but not defined elsewhere.
e02-10
- comment says "cdev has device =" it probably means "#" and could
have just been a weak print of "#", but leaving as "=".
--------------------
e03-*
- I used spaces to line up columns, not tabs.
--------------------
e04-*
- I used spaces to line up columns, not tabs.
e04-06
- comment seems to have "not equal" character in it (equals + slash);
since my keyboard won't do that, I substituted "<>"
--------------------
I noticed that "inode" and "i-node" were used interchangably, which could possibly
indicate two different people commenting the code. I left each as the original.
e05-01
- line 9 has a crossed out term, so i used the correction "r2"
e05-02
- line 48 comment says "panic / found no tres storage" - left it as "tres"
no idea whether it is supposed to be "tree", "free", or "tres"
- reviewed, looks clearly "free", fixed.
e05-04
- some of the latter parts of the code have comments "/ ?", left as is
e05-05
- looks like some of the comments contain a "does not equal symbol" manually
created by typing =<backspace>/. I symbolized it with "=/".
--------------------
e06:
- Used tabs between sections of code instead of spaces.
For example:
bpn rtty0 / comment
This may need some review later. I'll go over it again this afternoon.
--------------------
I used spaces in all occasions because I did not fully understand
where to put tabs. We can convert them easily by a small program
if the rule is specified, so I leave them there.
e07-01
- left "cmp r0,$4" as is. There is a write in correction
for "r1" for "r0".
- reviewed this, r1 has the character at this point and $4 is
control-D. The write-in looks correct.
- left "to" as is after ttych: There is a write in correction
for "from" instead of "to".
e07-04
- left "asr r0" as is. There is a write in correction
for "r2" for "r0".
- changed it to "r2". The comments clearly say "r2". The
value comes from a call to "get" right before the call to
this code ("put"), a page earlier inside the getc function.
"r2" was previously multipled by 2 in get, so this divide
by 2 makese sense to undo that.
e07-07
- printout has: "mov $240.*$ps" but this is invalid syntax and
there are other occurances where the "." is a comma. I'm
changing this to be valid assembly -timnewsham.
e07-08
- There is a handwritten addendum "super block" after the line
"jsr r0, ppoke" which clarifies the comment.
--------------------
e08-*
- I used spaces to line up columns, not tabs.
e08-02
- the bread function is missing a branch when copying data from
kernel memory (r5) to user memory (r2). I added a branch:
1: / r5 points to beginning of data in I/O buffer, r2 points to beginning
/ of users data
movb (r5)+,(r2)+ / move data from the I/O buffer
dec r3 / to the user's area in core starting at u.base
bne 1b
^^^^^^^^^^^
tst u.count / done
beq 1f / yes, return
without this it only copies one byte to userland.
--------------------
e09-01
- I'm using tabs between opcode and operands now
- left "bic $!77,r1" although written comment says "? !177"
- changing to "$!177". This is masking off the high bit of
the received ascii character. shortly after this it compares
with $177 (delete) so clearly its not supposed to mask off
both hight bits ($!77). Also later in the other e09 pages
similar operations are performed.
e09-02
- left "movb tty+38r0),r1" as is. There's a write in
correction for "(" instead of "8". This concerns me as it
means there are probably some errors in this listing as
the paren is most likely the right character here.
- fixed this to allow assembly to work.
e09-03
- hard to tell due to hand written correction, but I believe
the line before "rts r0" reads "mov (sp)+,r0"
- this makes sense since r0 is pushed onto the stack at the
start of the function.
- comment "ASC11" (one instead of I) left as is.
e09-04
- text comment says a label was lost! leaving it out for now.
- adding it back. This looks like a switch table starting
at the missing label (or actually one instruction before
the label, weird that they wrote it this way).
- correction "if count >=0" obscures original text in comment.
no choice but to use new text.
- "ASC11" sic
e09-05
- 5th to last "byte" line 2nd column is uneadable. pattern suggests
the value "000"
--------------------
e10-01
e10-02
- I used tabs for the first tab stop and spaced out to the next step.
- Per discussions with Brantley Coile it appears that the origianl
source probably used tabs, and that the printout has a tab stop
after 8 characters and another after 7 characters. The spaces
between opcode and operands are probably due to a tab, as can be
seen in later assembly code we have in machine readable form.
-------------------
e11-01
- I'm using a whole bunch of guesswork on some of these. Keystrokes
are highly faded, and have to be guessed. The OCR utterly failed.
e11-02
- Line 15 has manual corrections, making it difficult to read what
was added or subtracted.
e11-03
e11-04
- First lines are horribly mangled. Guessed.
- Line 7 has a typo, preserved
- Line 8 has what resembles a "|", not sure if this is a screwup or
not. Preserved, and assuming it's a "|".
- line 21/22: I have no idea.
---------------------
e12-01
- "rko5" in comments left as is (vs "rk05")
- acceped overwritten "ttyx" over the obscured original "xxxx"