Ice-T XE is a VT-100/ANSI terminal emulator for the Atari 8-bits.
New for 2.75:
- Fixed a major regression from version 2.73 which broke compatibility with the P:R:Connection, MIO, and possibly other interfaces, due to incorrect reset of the BREAK key status. Thanks to Russ Gilbert for reporting and assistance in finding the cause of the bug.
- VT100: Fixed some visual errors when changing the width of existing text.
- Title screen: Fixed minor visual glitch if serial port failed to open.
It wasn't easy debugging an issue that wouldn't occur on my hardware - I had to send Russ about a dozen different versions until we narrowed down the cause of the bug. In version 2.73 I added support for the BREAK key (to send a Break signal over the serial port). Reading the key is done by an interrupt handler, but a flag named "brkkey" (address $11) is zeroed by the OS and must be set back to its 'normal' value, outside of that handler but before any subsequent I/O operation is performed, otherwise the BREAK status will cause that I/O operation to abort with an error. Now, according to Mapping The Atari any nonzero value is good, so Ice-T stuffed a 1 value in there as part of the keyboard read routine. The trouble is that Mapping is wrong: the correct value for normal status is $FF, as stated by De Re Atari and confirmed by the P:R:Connection R: handler source code (luckily available for all to see in the device's user manual). So basically the PRC and apparently MIO as well were constantly thinking the BREAK key was pressed and reading bytes from the serial port would return with some constant value, causing an endless stream of a single garbage character like 'Q' or '?'.