From f7108bb0eb13354715011bd903d27eb9671a30f9 Mon Sep 17 00:00:00 2001 From: "tim.newsham" Date: Thu, 1 May 2008 03:02:29 +0000 Subject: [PATCH] - reviewed some of the notes made during entry and adjusted them according to what seemed right by reading the code. Documented all of the changes in notes.txt. Mostly accepting the hand written corrections in the pdf file. --- notes.txt | 27 ++++++++++++++++++++++++++- pages/e05-02 | 2 +- pages/e07-04 | 2 +- pages/e09-01 | 2 +- pages/e09-04 | 2 +- 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/notes.txt b/notes.txt index fc2092b..130aa51 100644 --- a/notes.txt +++ b/notes.txt @@ -97,9 +97,15 @@ e01-06 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 "=". @@ -125,9 +131,10 @@ 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-01 +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 @@ -150,12 +157,19 @@ 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 @@ -174,17 +188,28 @@ e08-* 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 diff --git a/pages/e05-02 b/pages/e05-02 index 5e64ddf..0ee082e 100644 --- a/pages/e05-02 +++ b/pages/e05-02 @@ -46,7 +46,7 @@ alloc: add $16.,r1 cmp r1 ,(sp) / have we examined all free storage bytes blo 1b - jmp panic / found no tres storage + jmp panic / found no free storage 1: asr r3 / find a free block bcs 1f / branch when free block found; bit for block k is in diff --git a/pages/e07-04 b/pages/e07-04 index 5f9c012..7a0c008 100644 --- a/pages/e07-04 +++ b/pages/e07-04 @@ -1,5 +1,5 @@ put: - asr r0 / divide r2 by 2; r2 is offset in clist + asr r2 / divide r2 by 2; r2 is offset in clist mov r2,-(sp) / save r2 on stack movb cl+1(r1),r2 / move offset of last char in list (r1) into r2 beq 1f / offset = 0 then go to 1f (i.e., start a new list) diff --git a/pages/e09-01 b/pages/e09-01 index 5b0d4a9..8f0dad3 100644 --- a/pages/e09-01 +++ b/pages/e09-01 @@ -32,7 +32,7 @@ trcv: bitb $100,tty+4(r0) beq 2f / non-37 parity not allowed 4: - bic !77,r1 + bic $!177,r1 bit $40,tty+4(r0) bne 3f / raw cmp r1,$177 diff --git a/pages/e09-04 b/pages/e09-04 index c2a3abb..04341c0 100644 --- a/pages/e09-04 +++ b/pages/e09-04 @@ -21,7 +21,7 @@ incb (r2) / normal / jmp to location determined by digits / 0 and 1 of character's entry in "partab" which / is now in r3 - rts r0 / non-printing +1: rts r0 / non-printing br 1f / bs br 2f / nl (line feed) br 3f / tab (horizontal tab)