Wednesday, November 18, 2009 12:43 AM,



I sent you all email with an error in it.  One of the students thankfully 
picked up on it.  Here is the correction.  Please delete the earlier message.



	 A student writes:
	 
	 Hi,
	 
	 With regards to the DSR and KBSR, when are the ready bits set to zero 
	 after the respective data registers have been read/written? For 
	 example, in the input routine:
	 
	 START    LDI R1, KBSR
	    BRzp START
	    LDI R0, KBDR
	    BRnzp next_task
	 KBSR .FILL xFE00
	 KBDR .FILL xFE02
	 
	 the read bit is polled over and over until a user hits a key, and the 
	 KBDR is set and the ready bit becomes 1. but, when is the ready bit 
	 unset? is seems that this should be done automatically, when the first 
	 instruction reads the value from KBDR, but the book doesn't seem to 
	 say (well, i can't find it anywhere).
	 
	 on page 206, however, when discussing the analogous DSR, the book says 
	 writing to DDR clears DSR[15]. does this mean resetting the status 
	 registers is done automatically? is this something that the address 
	 controz logic takes care of this behind our backs, because the book 
	 doesn't seem to clarify.
	 
	 Thanks,
	 <<name withheld to protect the student who missed that one in class>>
	 
	 Yes, they are done "automatically."  That is, as I thought I told you 
	 in class, the first time the corresponding data register is accessed, 
	 the ready bit of the status register gets cleared.  You can think of 
	 it as beeing controlled by the Address Control Logic.
	 
	 That is, the ready bit gets set by the Keyboard electronics when KBDR 
	 is loaded with the ascii code corresponding to the key that was typed.  
	 This is a signal to the program that input data awaits.  When KBDR is 
	 read, the ready bit gets set as a consequence of the reading.  That is 
	 a signal
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



This is the mistake in my email.  The statement in the previous paragraph is 
correct.  This sentence should read:



		When KBDR is read, the ready bit gets 
		CLEARED as a consequence of the reading.

	 to the program that input data does NOT await.  If it is not in the 
	 book, it should be.
	 
	 With the DDR and DSR, the same basic model.  The ready bit is set, 
	 indicating that the DDR is ready for the next input.  The act of 
	 putting an ascii code into DDR clears the bit, signaling that the DDR 
	 is no longer ready for the next character.  Indeed, that is the case 
	 since the ascii code placed into the DDR has not been written to the 
	 screen yet.  When the act of writing it to the screen finishes, the 
	 ready bit is set to 1, indicating readiness to accept anohter ascii code.
	 
	 OK?
	 
	 Good luck, tomorrow.
	 
	 Yale Patt