ORIGINALLY PUBLISHED IN LIMA NEWSLETTER FEBRUARY 1991 Mike Wright 45 Centerville Drive, Salem, New Hampshire 03079, December 21, 1990. Dear Charles, The 99/4 proved to be more elusive than I had thought. For example, 99'er only put out one issue before the 4A was announced. TI chose not to mention the release of the 4A in its own newsletter. The resultant material is thus a bit of a composite picture, but there is a lot of information there. I found the end piece on the 99/2 compatibility surprising, to say the least. ____________________ The end of the 99/4 was signalled by TI at the Consumer Electronics Show. The following was extracted from the "99/4 Home Computer Users-Group Newsletter", Vol 1 No. 6, August 10, 1981: "On June 30th Texas Instruments Consumer Products Div. announced at the Consumer Electronics Show a revised 99/4 computer console labeled the 99/4A. Also T.I. announced another price reduction in the suggested retail price of their console at $525.00." (Note that 99'er Magazine gives the dates of the show as May 31 through June 3, 1981) ____________________ The differences between the 99/4 and 99/4A were described in 99'er Magazine, Vol 1 No. 2, p48: "Enter the 99/4A personal computer -- a new console that retains the same profile, speech capability, color graphics and software compatibility of its predecessor, but replaces the old 40-key calculator-style keyboard with a standard-configuration, 48-key typewriter keyboard. This, in itself, would be quite a welcome improvement; but take a closer look at the new keyboard's specifications and you'll soon discover that it really is a new keyboard and not just the recipient of some superficial cosmetic changes. Witness its impressive array of features: such niceties as both upper and lowercase; an ALPHA LOCK key (for conveniently keeping the keyboard in uppercase mode); auto repeat (with a two second time delay) on all keys; function (FCT'N) and control (CTRL) [sic] keys (for secondary functions and telecommunications use); and finally, a Basic that will accept both upper and lowercase characters but displays all reserved words, variable names, and subprogram names in capitals for easy identification. How's that for versatility. The keyboard action has an excellent "feel". Although it is still the same small size as it predecessor, touch typing on this new keyboard gives you the illusion of typing on a big office machine. It seemed quite capable of keeping up with my occasional blinding bursts of speed -- something the old keyboard (and quite a few other microcomputer keyboards as well) is incapable of doing. Incidentally, I have been informed by Texas Instruments that since the circuit board has been re-designed, there's no practical way of retrofitting existing TI-99/4s with the new keyboard. In addition to the features I've mentioned above, there have been some other changes ... Don't expect the familiar keyboard overlay to fit this new machine. Instead, it uses a two-level strip overlay mounted above the top row of keys (similar to supermarket shelf pricing strips and holders). Also, due to some ROM/GROM swaps on the new circuit board, the console now has a built-in "trap" circuit (that has to be installed in the old console through a separate factory modification) for TMS9900 assembly language debugging on the UCSD Pascal Development System...; in the process, however, the console lost its Equation Calculator mode." ____________________ The indifference of TI to the introduction of the 4A is reflected in its own newsletter "Texas Instruments Personal Computer User's Newsletter". The June 1981 issue only contains references to the 99/4 computer. Then in August 1981, on page 4, the newsletter casually refers to the "growing list of applications programs available for the TI-99/4 and TI-99/4A computers". There is no official mention of the end of 99/4 production. My guess is that TI did not want to upset existing purchasers, since the 99/4 could not be upgraded to a 99/4A. ____________________ The following material is taken from "TI-99/4 and TI-99/4A Personal Computer System Software, Comprehensive Specification", dated February 25, 1983. It illustrates some of the problems TI had with the original 99/4 console, and how they were fixed or affected the 99/4A: "Section 4. TI-99/4A Keyboard Scan Routine. 4.1 Introduction. The TI-99/4A has a 48-key typewriter style keyboard. In order to support this new device and maintain compatibility with existing software, a rather complex keyboard scan routine was written. The following sections explain the various aspects of this routine. 4.2 State of the Keyboard. The TI-99/4A keyboard has three possible states. They are: 1. TI-99/4 Emulator keyboard. 2. Pascal keyboard. 3. Basic keyboard. Also, to maintain compatibility with existing software, the scan routine supports a split keyboard configuration. The console software maintains an internal flag which determines the state of the keyboard. This flag can be controlled by any application by means of the keyboard number parameter in the GPL status block. The keyboard number parameter is in CPU RAM location >8374. The value 0 is used to scan the keyboard in whatever state it happens to be. The values 3, 4, and 5 are used to change keyboard states. The following paragraphs describe each state of the keyboard and the use of the keyboard number parameter to select that state. 4.2.1 TI-99/4 Emulator Keyboard. The TI-99/4A powers up with the keyboard in this state. The keyboard number is set to zero. If an application needs to return to this state from some other state, the keyboard is scanned with keyboard number set to 3. Scanning keyboard number three sets the internal state flag to "99/4 Emulator", resets the keyboard number parameter to zero, and performs a keyboard scan in that state. Thereafter, the keyboard may be scanned with keyboard number set to 0. In this state only 99/4 keyboard values are returned. There are three exceptions : [, \, and ]. These characters were built into the 99/4 console but were not implemented on the keyboard. All other key codes are ignored and a no key condition is returned. For example, "CONTROL 1", which returns the value >B1, is not a legal 99/4 key. Therefore, the scan would return "No Key" for "CONTROL 1". Another result is that in this state the keyboard is "alpha-locked" regardless of the state of the ALPHA LOCK key." ---- "Section 6. TI-99/4A Basic. 6.1 Functional Changes. The following is a list of the functional differences between 99/4 Basic and 99/4A Basic: 1. 99/4A Basic uses the "Basic" version of the keyboard described in section 4.2.3. The state of the keyboard can be changed by CALL KEY. However, the state reverts to "Basic" whenever Basic returns to the command level, e.g. at program termination or on a breakpoint. 2. Both upper and lower case character definitions are initialized. Since Basic uses dynamic allocation for the "graphics" characters, this means that 99/4A Basic powers up with 256 fewer bytes of free memory than 99/4 Basic does. 3. Input in the edit mode or in response to a program INPUT statement now includes an auto-repeat feature. A key which is held down for a second will begin to repeat at a rate of 12 characters per second. 4. The "Equation Calculator" was removed. 5. Failure of an OLD command no longer necessarily destroys the program previously in memory. Since the current program may or may not be partially overwritten before the "OLD" failure, a warning message is displayed. 6. The cursor was changed to a solid rectangular box. 6.2 Bug Fixes The following is a list of bugs in 99/4 Basic which were fixed in 99/4A Basic: 1. Line numbers listed to a peripheral device are printed properly at a record boundary. 2. The POS function will now find substrings beyond position 127. 3. 255 byte records are now properly blank-filled. 4. String expressions in CALL SOUND do not crash the system. 5. User-defined numeric functions with string parameters will return values near zero. 6. Programs with breakpoints may be safely edited. 7. Editing a program followed by performing an imperative command will not destroy the program. 8. Multi-line insertions and deletions do not garbage the margins. 9. Dimension wrap-around at 65536 has been fixed. 10. Garbage collection lockup when using files has been fixed. 11. Illegal long constants in INPUT, READ, etc. generate error messages rather than crashing system. 12. Illegal uses of UDFs cause error messages rather than destroying the program. Section 7. GPL Interpreter Modifications. Three known bugs in the GPL interpreter were fixed. The bugs and the fixes are described below. 7.1 CRU IN The CRU IN portion of the GPL I/O instruction has never worked. The interpreter uses the information provided by the GPL instruction to create the appropriate 9900 CRU instruction. The 9900 instruction is then executed in a register. Because an increment-by-two instruction was used in place of an increment instruction, the original code was not creating a legal CRU IN instruction. Changing the increment-by-two to an increment fixed this bug. 7.2 CASE The GPL CASE instruction has caused problems in some application programs. The problem is one of timing. The original code repeatedly performs two successive GROM reads with no time delay between them. Therefore, some GROMs which pass virtually every other test may fail to execute a particular CASE statement because of this timing problem. To fix this problem, a NOP was added between the GROM reads. 7.3 FETCH The original GPL FETCH instruction would not fetch data into VDP RAM. The source of this problem was a register conflict. A register containing certain flags was being used to save another value during execution of the FETCH instruction. This bug was fixed by using a free register to save the necessary value during FETCH execution." ---- "Section 9. Other Modifications. 9.1 BREAK Key Routine. One of the major problems in converting from the 99/4 keyboard to the 99/4A keyboard was the location of the Basic "BREAK" key. On the 99/4 "Shift-C" was used both as the Basic "BREAK" key and the RS232 "ABORT" key. Unfortunately the Basic interpreter, Extended Basic interpreter, and RS232 directly scan the keyboard lines to check for this key. The problem arises from the fact that "Function-4", instead of "Shift-C", is the "BREAK" key on the 99/4A. Therefore, some rearranging had to be done on the 99/4A keyboard to insure that "Function-4" was located in the keyboard matrix at the same position as "Shift-C" on the 99/4 keyboard. To avoid this problem in the future, a "Check for BREAK key" routine was added to the console software. This routine is executed via a BL @@>20 instruction. This routine only modifies the value of register 12. If the BREAK key is down, it returns to the caller with the equal bit set. Otherwise it returns with the equal bit reset. All future software which needs to check for this key must use this routine rather than testing keyboard lines directly. 9.2 ROM-Only Applications. For the 99/4 every SSS command module application had to have at least one GROM. The system power up code only searched the GROMs for applications programs. The TI-99/4A has the additional capability of executing ROM-only applications. The power up code now checks CPU memory location >6000 (usually referred to as ROM-in-GROM) for a valid ROM/GROM header. It then searches the linked list of user programs (if any) indicated by that header. These user programs are added to the applications selection list. Some 99/4As have this capability; others do not. 9.3 New Character Definitions. The 99/4A keyboard has the capability of generating the full Ascii character from 0 to >7F. To further enhance this capability, definitions for the complete Ascii printable character set were added to the console. The previous 5x6 uppercase character set was increased in size to 5x7 and lowercase definitions were added. Due to software compatibility issues the console will still power up with the 6x8 uppercase character set and the character loading routines are as follows: 1. Console routine >16 loads the 6x8 character set which includes characters >20 through >5F. 2. Console routine >18 loads the 5x7 uppercase character set which includes characters >20 through >5F. 3. Console routine >4A loads the 5x7 lowercase character set which includes characters >60 through >7E. These routines are executed by storing the starting VDP RAM address in CPU RAM location >834A and performing a GPL CALL instruction to the appropriate routine." ---- "Appendix B. Compatibility. In general there will be no designated compatibility between the TI-99/4 and any previous computers. There is no compatibility with products of Texas Instruments calculator line. The Basic language is very similar to other microcomputer Basics, however, most programs will need some changes to run on the 99/4. Any programs which use the graphics capabilities of other computers will need to be totally rewritten to run on the 99/4. The memory format of a Basic program is unique as are most personal computers. The image which is recorded to mass-storage in SAVE command is this memory image which limits the capability of transporting Basic programs to other computers even if they could read our mass storage media. Peripheral devices for the 99/4 including the Mini-floppy Disk and RS-232 Interface will not work on any other personal computer. Peripherals from other computers will not work on the 99/4 except for those with RS-232 interfaces which can be attached to our RS-232 peripheral. The media or other mass storage peripheral (audio tape or disk) will not be transferable to the 99/4. The TI-99/2 Basic program cassette tapes are compatible with the 99/4, but the 99/2 is not compatible with 99/4A Solid-State Software, or vice-versa." .PL 1