Sun, 26 Mar 2017, 23:42

My students,

I have gone through the 38 midterm exams that were turned in for me 
to regrade problem 2b.  

Question 2b asked what instructions could not possibly execute properly if
the 16 wires shown on the data path were cut.  In discussions with some
of you after returning the exams, I agreed that it was reasonable to 
assume that no other changes had been made to the LC-3b other than what
was stated in the problem.  That is, no changes in the microcode, no changes
to the state machine, no changes to the data path.  

However, it would be unreasonable to assume that in the case of the PC being
loaded from BaseR, that the microcode would choose one path over another 
unless there was a good reason to assume that.  Since JMP and JSR load the
PC from the register file, and do not add any offset to the base register,
there are two paths available if not used for some other purpose: through the
ADDR1MUX and through the ALU onto the bus.  In the case of JMP, since the bus
is not used for anything else in state 12, there is no reason to assume that 
it isn't used to load the PC from the Base Register.  In the case of JSRR, 
since the bus is being used to load R7 with the updated PC (the linkage) at
the same time (in state 20), the base register must be loaded into the PC 
through ADDR1MUX.  Thus there is no reason to assume that cutting the wires
will affect proper functioning of JMP.  On the other hand, if we assume no
other changes in the microcode, data path and state machine, JSRR will not
function properly since it would have had to use the wires that were cut.

Since LDB, STB, LDW, and STW all required register + offset addressing, 
the register must go through the ADDR1MUX and therefore none of them would
be able to function properly.

In looking over the 38 exam papers submitted to me for regrading, I found
that in most cases, unfortunately, I could have deducted one or two additional 
points because the explanations were incorrect as to why JSRR would not work.  
A standard answer was that one would not be able to add the offset to the 
base register.  But you know JSRR does not add any offset to the base register.
In fact, you used that knowledge to complete Lab 2 well before the midterm.

I decided to not change the grade in those cases, even though the reason why
JSRR would not work was incorrect.  In three cases, I did change the grade, 
one student's grade was raised by one point, one student's grade was lowered
by one point, and one student's grade was lowered by two points, all this based
on my reading of the three students' explanations.

I also raised one student's grade by two points by giving him back the two
points I deducted because his handwriting was almost impossible to read.
I pointed out to him that if I am unable to read his handwriting on the 
second midterm or final, I will deduct more than 2 points.  In fact,
there were several other students whose handwriting was very difficult,
although not as difficult to read as the handwriting of the student who 
got two points deducted.  

I do not think I am being unreasonable if I expect you to write legibly 
enough so I do not have to struggle to read your solutions to exam problems.
I have decided to add an entry to the exam grade taking into account the 
legibility of your answers on the second midterm and final.

If any of you have further questions on the first midterm, please first see
one of my TAs.  After talking to the TA, if you still want me to look at your
exam, please ask the TA to bring it to me.

Good luck with the rest of the course.

Yale Patt