dag@persoft.com (Daniel A. Glasser) (05/03/90)
I have not seen the Phantom Typist(tm) recently, but the circumstances surrounding the times that I have seen this phenominon along with assertions that this has manifested itself while Spectre is running lead me to the conclusion that the problem lies not in TOS but in the IKBD firmware and the protocol which communicates between the two subsystems (the motherboard and the IKBD). Locator, joystick and keyboard messages all pass from the keyboard processor to the CPU using a protocol which is prone to problems if the CPU loses any characters due to interrupt latency problems. If a single character is lost from a mouse packet, the next byte sent by the ikbd is interpreted as the last byte of the mouse packet. If that byte was the first byte of another mouse packet, the remainder of the packet is likely to be treated as a sequence of odd keypresses (depending on the values in the bytes.) I've seen this happen where a stream of some character started comming from the keyboard because some mouse packet characters were treated as key-down events and no corresponding key-up event was detected. (Auto-repeat is done in software.) I've not gone back and looked at the TOS handling of key rollover, but this may be the cause of part of the problem. This is the TOS/Application side of the protocol. On the IKBD firmware side, I've seen problems occur where a circular buffer full or overflow condition causes some very odd behavior in emptying the buffer, ie. the condition is never properly cleared and the buffer handling code keeps looping through the buffer sending nulls (or garbage) plus one new character per loop through the buffer. The folks at Atari may wish to look into the ikbd firmware and verify the buffering strategy (if any) therein. Daniel A. Glasser -- Daniel A. Glasser | Persoft, Inc. | dag@persoft.com (if it works yet) "Their brains were small, and they died."