Contact - please use subject="pc99 page" to avoid spam trap!
This page contains an historical account of the Texas Instruments TI99/4A Home Computer and its differences to the earlier TI99/4.
Web article Seven
Mike Wright
45 Centerville Drive,
Salem, New Hampshire 03079,
December 21, 1990.
(1999- Mike Wright sells the PC99 emulator which lets you run TI programs on a PC)
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."
end of article
[ TI Book front page |
TI Resources Page
| PC99 Review
| PC99 Programs
]