[comp.sys.atari.st] Phantom Typist and Atari's Responsibility

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."