PRESS ALT-RIGHT-SHIFT TO TURN ON MAGNIFY MODE. TEN CHARACTERS CENTERED ON CURSOR WILL BE MAGNIFIED. PRESS ALT-LEFT-SHIFT TO GO BACK TO NORMAL. BIGT SECRET CURSOR KEYS: Ctrl=UP, Alt=DOWN, L-Shift=LEFT, R-Shift=RIGHT. ******************************************************************** Al Stevens, Oct 8, 1990 Dr. Dobbs Journal Al, Version 2.01 of bigT, which you now have, has corrected the sign on message, and has an updated character set including all 256 IBM standard characters. The problem with changing colors, and other character attributes, is, unfortunately, inherent in the way bigT works. bigT started as a quick hack to see if there was some way I could get my brother, Nick, who suffers from diabetic retinitis, back online with his AT, after his vision started to fail. My brother can use a special lens or large magnifying glass to read paper documents. The lens could also be used to examine graphics, or text on the computer screen. This, however, would be exceptionally tiring: A piece of paper can be scanned easily across a lens, a monitor is too heavy for that. My goal, therefore, was a utility that would let one scan a text screen and magnify any portion of it, without moving one's head or the monitor. bigT had to work with all my brother's favorite programs. This meant it had to reside in memory and magnify any text written to the screen, without disrupting the operation of the program doing the writing. Ideally, bigT would get in between an application program and the display hardware. Some programs actually use BIOS calls to write text to the screen. Intercepting a BIOS call is easy. Unfortunately, most PC programs just write directly to the video card's text buffer. The hardware continuously translates the contents of its text buffer into little dots on the screen. It wouldn't be easy to get software in there. When I wrote softCGA, a CGA emulator for hercules graphics cards, I 'tricked' DOS into thinking a CGA was installed so applications would write to memory at the CGA's normal address. Then my TSR copied, and translated, data from there to another memory block, which the hercules card had been programmed to read its dots from. This scheme involved lots of 'tricks' and reprogramming of hardware, and never was very reliable. The alternative to fooling applications into writing into non-display memory was to somehow allow the applications to share display memory with bigT. Text display memory on MDA and CGA cards is arranged as interleaved character and attribute bytes. Even bytes are ASCII character codes, odd bytes are attribute codes (bold, underline, reverse-video, color, etc.). The scheme I finally used was to draw bigT's big characters using just attribute bytes, without disturbing any of the screen's character bytes. Setting an attribute byte to 'black on black' (value 0 ), makes a single bigT 'pixel' black. Light pixels are just reverse video (hex 78) attribute bytes. When bigT is disabled, it resets all the attribute bytes it changed to normal light text on dark (hex 07). Restoring the original attributes is not practical. The byte you overwrote may not be the byte you should restore: The application may write to screen memory at any time. What if it writes the same attribute bigT did? Without a bus sniffer, bigT could never know, and would restore the 'wrong' attribute. This is also why bigT can't touch the character bytes. The result of all this is that bigT does not, itself, display attributes, nor does it preserve them. It does not interfere in any way with character bytes in memory, however, and will display continuously any characters written to the screen. The keyboard interface to bigT also had to avoid interfering with application programs. The hot-key and 'secret cursor' keys used by bigT were chosen so as to avoid conflict with most programs. They also have the advantage that the state of all the keys used ([Alt], [Ctrl], [L- Shift], [R-Shift]) can be read from the PC's Keyboard Status Register, in low memory. This avoids the need to intercept keyboard interrupts, and any incompatibility that might cause. bigT also monitors the keyboard buffer to determine if there is any keyboard activity. It needs to check key activity to distinguish between bigT 'secret cursor' key strokes and normal [Alt], [Shift], or [Ctrl] key combinations. With bigT 2.0 I added key repeat to the 'secret' cursor keys. If a bigT cursor key is tapped once, then held down, it will repeat automatically. If a bigT cursor key is tapped rapidly, the scroll rate will increase. I'm still not sure yet whether bigT will be genuinely useful to those with vision impairment. My brother was able to read the large text clearly, but found navigating around the screen difficult. Perhaps a mouse would be useful. I am open to any suggestions you or your readers may be able make to improve bigT's useability. I have released bigT as shareware, but would consider making it public domain, and releasing the source, if other programmers would be motivated to make improvements or additions to it. This is perhaps the best way to get software for the disabled written. Geoffrey Park Toronto, Canada