# TI BASIC (TI 99/4A)

TI BASIC ist ein BASIC-Dialekt für Heimcomputer von Texas Instruments. Es wurde als Auftragsarbeit bei Microsoft von Bob Wallace und Bob Greenberg entwickelt.
TI BASIC war standardmäßig in den Computern TI-99/4 und TI-99/4A eingebaut. Mit TI BASIC waren Textausgabe, Graphik, logische Operationen, und Speichern auf Band, Disketten, und der Zugriff auf die RS-232-Schnittstelle möglich. Texas Instruments produzierte auch das Cartridge Extended BASIC mit erweiterter Funktionalität.

## Elemente von TI BASIC
### Anweisungen

In TI BASIC darf in jeder Zeile nur eine Anweisung stehen. Die Möglichkeit, mehrere Anweisungen mittels :: in eine Zeile zu schreiben, gab es erst im Extended BASIC. Bemerkenswert ist das Fehlen einer POKE-Anweisung. Diese wäre allerdings auch nicht sinnvoll gewesen, da durch die Sandbox des TI-99/4A das Ausführen von Maschinenprogrammen offiziell nicht möglich gewesen ist.
Übersicht über Befehle, Funktionen und Variablen des TI BASIC :
| ABS | CALL SCREEN | DELETE | IF..THEN..ELSE | NUMBER | RESEQUENCE | SQR |
| ASC | CALL SOUND | DIM | INPUT (file) | OLD | RESTORE (file) | STOP |
| ATN | CALL VCHAR | DISPLAY | INPUT (key) | ON-GOSUB | RESTORE (data) | STR$ |
| BREAK | CHAR | EDIT | INT | ON-GOTO | RETURN | TAB |
| BYE | CHR$ | END | JOYST | OPEN | RND | TAN |
| CALL CHAR | CLEAR | EOF | KEY | OPTION BASE | RUN | TRACE |
| CALL CLEAR | CLOSE | EXP | LEN | POS | SAVE | UNBREAK |
| CALL COLOR | COLOR | FOR..TO..STEP | LET | PRINT (file) | SCREEN | UNTRACE |
| CALL GCHAR | CONTINUE | GCHAR | LIST | PRINT (screen) | SEG$ | VAL |
| CALL HCHAR | COS | GOSUB | LOG | RANDOMIZE | SGN | VCHAR |
| CALL JOYST | DATA | GOTO | NEW | READ | SIN | CALL |
| CALL KEY | DEF | HCHAR | NEXT | REM | SOUND | - |

### Funktionen

* ABS Absolutwert einer Zahl
* ASC Numerischer ASCII-Wert des ersten Zeichens der Zeichenkette
* ATN Arcus tangens Funktion
* CHR$ Wandelt eine Zahl in eine Zeichenkette mit dem entsprechenden ASCII-Zeichen um
* COS Cosinus
* EOF Abfrage ob das Dateiende einer Datei erreicht ist
* EXP Exponentialfunktion
* INT Abrunden in Richtung minus unendlich
* LEN Länge einer Zeichenkette
* LOG Natürlicher Logarithmus
* POS Suche die Position einer Zeichenkette in einer anderen
* RND Zufallszahl
* SGN Vorzeichenfunktion
* SIN Sinus
* SQR Quadratwurzel
* STR$ Zahl in Zeichenkette umwandeln
* TAN Tangens
* VAL Zeichenkette in Zahl umwandeln

### Unterprogramme

Unterprogramme werden mit einer CALL Anweisung aufgerufen (z. B. CALL CLEAR). Es gibt keine benutzerdefinierten Unterprogramme, diese Möglichkeit eröffnet erst TI Extended BASIC. Einige Unterprogramme sind jedoch vordefiniert:
* CHAR Ermöglicht die Definition von graphischen Zeichen
* CLEAR Löscht den Bildschirm
* COLOR Bestimmt Vordergrund- und Hintergrundfarbe für jeweils 8 Zeichen
* GCHAR Liest ein Zeichen an der angegebenen Position vom Bildschirm
* HCHAR Schreibt ein Zeichen auf eine Bildschirmposition und wiederholt es horizontal
* JOYST Abfrage des Joysticks
* KEY Ermöglicht die Abfrage der Tastatur ohne Bildschirmecho
* SCREEN Ändert die Farbe des Bildschirms
* SOUND Für Töne (mit Angabe der Frequenz) und Geräusche
* VCHAR Schreibt ein Zeichen auf eine Bildschirmposition und wiederholt es vertikal

### Logik

Die fehlenden boolesche Operatoren AND und OR können durch + und * ersetzt werden.

## Programmgeschwindigkeit

Ein großer Nachteil von TI BASIC bestand darin, dass es, als interpretierte und nicht kompilierte Sprache, sehr langsam war. TI BASIC war eine doppelt interpretierte Sprache, da der BASIC-Interpreter selbst in einer interpretierten Bytecode-Sprache namens GPL geschrieben war. Nur der GPL-Interpreter war in direkt ausführbarem Maschinencode realisiert.