TI BASIC is an
ANSI-compliant
BASIC programming language
BASIC (Beginners' All-purpose Symbolic Instruction Code) is a family of General-purpose programming language, general-purpose, high-level programming languages designed for ease of use. Dartmouth BASIC, The original version was created by John ...
interpreter built into the 1979
Texas Instruments TI-99/4
The TI-99/4 and TI-99/4A are home computers released by Texas Instruments in 1979 and 1981, respectively. Based on the Texas Instruments TMS9900 microprocessor originally used in minicomputers, the TI-99/4 was the first 16-bit home computer. T ...
home computer and its improved 1981 version, the TI-99/4A.
In contrast to most BASICs found on contemporary
microcomputer
A microcomputer is a small, relatively inexpensive computer having a central processing unit (CPU) made out of a microprocessor. The computer also includes memory and input/output (I/O) circuitry together mounted on a printed circuit board (PC ...
s, TI BASIC does not trace its history to
Microsoft BASIC, but was instead a TI-developed
interpreter following the emerging Minimal BASIC standard being created by
ANSI and
ECMA
Ecma International () is a nonprofit standards organization for information and communication systems. It acquired its current name in 1994, when the European Computer Manufacturers Association (ECMA) changed its name to reflect the organizatio ...
. This was, in turn, based on the original
Dartmouth BASIC from the 1960s. There are a number of differences, sometimes subtle, between TI BASIC and the more common MS varieties.
Minimal BASIC lacks a number of features that are commonly found on contemporary BASICs, and Texas Instruments later introduced the TI Extended BASIC cartridge that enhanced the functionality accessible to BASIC users. This included a wide variety of features found in other BASICs, as well as new system functions for
sprite handling, sound, and other features of the platform.
As was common on home computers, TI BASIC was used not only for programming but also as a thin
operating system. On top of Minimal BASIC, TI added commands for text, graphics, and basic file operations like recording to
tape
Tape or Tapes may refer to:
Material
A long, narrow, thin strip of material (see also Ribbon (disambiguation):
Adhesive tapes
* Adhesive tape, any of many varieties of backing materials coated with an adhesive
*Athletic tape, pressure-sensitiv ...
or any other file system. Due to the specifics of the TI-99 platform, TI BASIC was most notable for its extremely slow performance, roughly half that of common machines, but conversely sported high numerical accuracy.
Performance
The TI-99 was based on the
TMS9900 microprocessor, a 16-bit design that was originally built to provide a single-chip
central processing unit (CPU) in low-end models of their
TI-990 {{Short description, Series of 16-bit computers by Texas Instruments.
The TI-990 was a series of 16-bit minicomputers sold by Texas Instruments (TI) in the 1970s and 1980s. The TI-990 was a replacement for TI's earlier minicomputer systems, the T ...
minicomputer
A minicomputer, or colloquially mini, is a class of smaller general purpose computers that developed in the mid-1960s and sold at a much lower price than mainframe and mid-size computers from IBM and its direct competitors. In a 1970 survey, ...
lineup. The TMS9900 was also suitable for use in a microcomputer, but at that time the rest of the support chips required to build a complete computer were invariably 8-bit, and this included TI's wide catalog of such chips. In a minicomputer, 16-bit support systems were built up of many individual chips, but this was not suitable for a low-cost product. TI thus adopted the solution of making the machine mostly 8-bit and connecting the various support chips to this 8-bit bus, with the TMS9900 reading the bus twice to produce a 16-bit value.
The TMS9900's
instruction set architecture
In computer science, an instruction set architecture (ISA), also called computer architecture, is an abstract model of a computer. A device that executes instructions described by that ISA, such as a central processing unit (CPU), is called an ' ...
was based on 16-bit
opcode
In computing, an opcode (abbreviated from operation code, also known as instruction machine code, instruction code, instruction syllable, instruction parcel or opstring) is the portion of a machine language instruction that specifies the operat ...
s, meaning that programs would generally be twice as large as they would be on an 8-bit machine. In the era of expensive memory, this presented a significant cost. To address this, TI created an 8-bit
virtual machine with its own language or
intermediate representation known as the "Graphic Programming Language", or GPL, that allowed programs to be written in a more compact format. The downside to this approach is that every GPL instruction had to be converted on the fly into one or more underlying TMS9900 instructions. The GPL code itself was stored on the 8-bit side of the machine, further slowing its performance.
For all of these reasons, the machine ran far slower than it was theoretically capable of. This was particularly noticeable in BASIC. Every instruction in the user's program had to be read from 8-bit memory, interpreted using code written in GPL, and then output back over the 8-bit bus again. As a result, TI BASIC had poor performance; on common benchmarks of the era, the TI-99 generally ran half as fast as 8-bit machines like the
Commodore PET or
Apple II
The Apple II (stylized as ) is an 8-bit home computer and one of the world's first highly successful mass-produced microcomputer products. It was designed primarily by Steve Wozniak; Jerry Manock developed the design of Apple II's foam-m ...
. For instance, running the
Byte Sieve in BASIC took 3960 seconds in TI BASIC, while the same test in
Applesoft BASIC on the
Apple II
The Apple II (stylized as ) is an 8-bit home computer and one of the world's first highly successful mass-produced microcomputer products. It was designed primarily by Steve Wozniak; Jerry Manock developed the design of Apple II's foam-m ...
, ostensibly a much slower machine, took 2806 seconds, about 30% faster that the TI.
Elements of TI BASIC
Editing and running
Unlike most BASICs of the era, TI BASIC did not provide a full-screen editor. Instead, a line editor was provided, which allowed the user to add or edit one line at a time. Explicit line numbers were used to order each statement. It used a prompt to indicate the current new line in
immediate mode, as opposed to the more common . Line numbers ranged from 1 to 32767, inclusive, and entering a line outside that range resulted in the "BAD LINE NUMBER" error. Line entry was aided by the command, available only in immediate mode, which entered ascending line numbers, and , which renumbered an existing program.
TI BASIC also included a number of debugging commands. worked something like , stopping execution on certain lines, by unlike , the exit to immediate mode did not occur on the line where appeared, but on the lines referred to. For instance, would cause the program to exit to immediate mode whenever it moved to line 130. turned off existing breakpoints. Additionally, printed out the line number of the current executing line in angle-brakets: etc, and turned it off.
Statements
The ANSI-compatible
statements of TI BASIC are . Most of these operate in the same fashion as their MS counterparts with two additions; restarts the
random number generator at a given "seed" value, and sets the first entry in arrays to either 0 or 1, whereas MS is always zero-based. To this standard set it added
CALL,
CLOSE, DISPLAY and
OPEN.
In keeping with the Minimal BASIC standard, statements could only perform branches, they could not perform arbitrary statements as was common in almost every other BASIC of the era. For instance, code such as:
is not valid in TI BASIC. Instead, this would have to be performed using multiple lines:
This can easily lead to
off-by-one errors if the conversion is not careful about changing the sense of the boolean comparison. TI BASIC did, however, support the clause:
The statement used colons to separate items on different lines, in addition to the more common comma or semicolon. This precluded its use as a statement separator, a concept that TI BASIC did not have. This means a line can have only a single statement. Due to the way BASIC interpreters work, -based loops can be sped up significantly by combining code onto a single line, which avoids having to search through the program for line numbers. This seemingly minor missing feature may result in much slower code, and adding this feature was part of Extended BASIC.
Extensions to the Minimal BASIC system were often not represented directly in BASIC, but were instead accessed via the command and a series of named GPL-based subroutines. For instance, clears the screen, and returns the keycode of the currently pressed key on the keyboard. The language lacked
PEEK and POKE
In computing, PEEK and POKE are commands used in some high-level programming languages for accessing the contents of a specific memory cell referenced by its memory address. PEEK gets the byte located at the specified memory address.
POKE sets ...
so there was no way to create new CALLable code within BASIC, to do this one would require the TI Editor/Assembler, the TI Mini Memory cartridge which included a small
assembler,
or by using Extended BASIC.
Functions
Unlike Microsoft BASICs, which used , , , and for manipulating strings, TI BASIC used the
ANSI-compliant and .
; :
Absolute value
In mathematics, the absolute value or modulus of a real number x, is the non-negative value without regard to its sign. Namely, , x, =x if is a positive number, and , x, =-x if x is negative (in which case negating x makes -x positive), an ...
; :
ASCII numeric value of the first character of a
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
; :
Arctangent
In mathematics, the inverse trigonometric functions (occasionally also called arcus functions, antitrigonometric functions or cyclometric functions) are the inverse functions of the trigonometric functions (with suitably restricted domains). Spec ...
; : Convert a number into a
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
with an ASCII character
; :
Cosine
; : Test whether the
end of a file has been reached
; :
Exponentiation
; : greatest integer less than or equal to the parameter
; : Length of a
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
; :
Natural logarithm
The natural logarithm of a number is its logarithm to the base of the mathematical constant , which is an irrational and transcendental number approximately equal to . The natural logarithm of is generally written as , , or sometimes, if ...
; : First occurrence of a string in another string
; :
Pseudorandom number generator
; : Return a substring of a string
; :
Sign function
In mathematics, the sign function or signum function (from '' signum'', Latin for "sign") is an odd mathematical function that extracts the sign of a real number. In mathematical expressions the sign function is often represented as . To avoi ...
; :
Sine
In mathematics, sine and cosine are trigonometric functions of an angle. The sine and cosine of an acute angle are defined in the context of a right triangle: for the specified angle, its sine is the ratio of the length of the side that is oppo ...
; :
Square root
; : Convert a number to a
string
String or strings may refer to:
*String (structure), a long flexible structure made from threads twisted together, which is used to tie, bind, or hang other objects
Arts, entertainment, and media Films
* ''Strings'' (1991 film), a Canadian anim ...
; :
Tangent
; : Convert a string to a number
Subprograms
Subprograms are called with CALL statement (e.g. CALL CLEAR).
* CHAR Definition of graphical characters
* CLEAR Clears the
screen
* COLOR Defines foreground- and background color for 8 characters
* GCHAR Reads one character at a specified position from the screen
* HCHAR Writes a character to a screen position and repeats it horizontally
* JOYST Returns the position of the
joystick
A joystick, sometimes called a flight stick, is an input device consisting of a stick that pivots on a base and reports its angle or direction to the device it is controlling. A joystick, also known as the control column, is the principal cont ...
* KEY Reads from the keyboard without echo on the screen
* SCREEN Changes the color of the screen
* SOUND Creates sounds (using a
frequency) and noise
* VCHAR Writes a character to a screen position and repeats it vertically
Extended BASIC

TI BASIC was located in the system's internal ROMs. In 1981, TI released a plug-in
ROM cartridge
A ROM cartridge, usually referred to in context simply as a cartridge, cart, or card, is a replaceable part designed to be connected to a consumer electronics device such as a home computer, video game console or, to a lesser extent, electroni ...
that added additional functions to the existing code, improving the language in a number of ways. Known as Extended BASIC, it was a highly anticipated addition to the platform.
Among the changes was the addition of the ability to have multiple statements on a line. Using multiple statements may improve performance; loops that are implemented in a single line run much faster. Additionally, statements could now span several lines. As the underlying dialect already used the colon for string separators, Extended BASIC used the double-colon for this purpose. Confusingly, as a statement with two colons was also possible in TI BASIC, for instance, , which would output "A", a blank line and then "B", so these statements required a space to be added in Extended BASIC, .
Another overdue addition was that statements could now perform arbitrary statements, rather than only a . In Extended BASIC one could write a simple statement like . This also worked in the clause, allowing statements like .
Other additions include a small selection of new statements, including , , , , , , , and . The last three statements are used for
structured programming
Structured programming is a programming paradigm aimed at improving the clarity, quality, and development time of a computer program by making extensive use of the structured control flow constructs of selection ( if/then/else) and repetition ( ...
, allowing the creation of named
subroutine
In computer programming, a function or subroutine is a sequence of program instructions that performs a specific task, packaged as a unit. This unit can then be used in programs wherever that particular task should be performed.
Functions may ...
s. Extended BASIC also included a number of new functions and especially CALLable routines. Among the latter was a library of sprite commands, including ones that created motion that continued automatically.
Speech synthesis
When equipped with the TI Speech Synthesizer, TI Extended BASIC users could also
generate speech from a predefined vocabulary as easily as writing text on-screen. For example, the following line of text would cause the speech synthesizer to identify the computer:
CALL SAY("HELLO I AM A #TEXAS INSTRUMENTS# T I NINETY NINE FOUR A HOME COMPUTER")
Multi-word phrases are delimited with the # symbol, as
#TEXAS INSTRUMENTS#
in this example. Using a word not included in the speech synthesizer's built-in vocabulary of 338 words and phrases would cause it to slowly spell out the word. TI's Terminal Emulator II cartridge provided text-to-speech functionality.
References
Citations
Bibliography
*
*
External links
Beginner's BASICat ClassicCmp.org
TI-99/4A BASIC Reference Cardat ClassicCmp.org
{{DEFAULTSORT:Ti Basic (Ti 99 4a)
TI-99/4A
BASIC interpreters
Discontinued BASICs
BASIC programming language family