BASIC nivel I es un dialecto del lenguaje de programación BASIC que se envió con el primer TRS-80 , el TRS-80 Modelo I.
El empleado de Tandy, Steve Leininger, había escrito el primer borrador del intérprete de BASIC NIBL (National Industrial Basic Language) para el SC/MP mientras trabajaba en National Semiconductor . [1] Al no poder llevarse consigo ese código fuente, inicialmente contrató a un consultor para que escribiera un intérprete . Cuando ese contratista no pudo entregarlo, [2] adaptó la versión de dominio público de Tiny BASIC de Li-Chen Wang para el prototipo original del TRS-80 Model I. Esto requirió solo 2 KB de memoria para el intérprete , dejando un promedio de otros 2 KB libres para programas de usuario en diseños de memoria comunes de 4 KB de las primeras máquinas.
Durante una demostración a los ejecutivos, el entonces presidente de Tandy Corporation, Charles Tandy, intentó ingresar su salario, pero no pudo hacerlo. Esto se debió a que Tiny BASIC usaba números enteros con signo de 2 bytes con un valor máximo de 32.767. El resultado fue una solicitud de matemáticas de punto flotante para la versión de producción. [3]
Esto llevó a la sustitución del código entero de 16 bits existente por una versión que utilizaba números de punto flotante de precisión simple de 32 bits . Leininger amplió aún más el lenguaje para admitir rutinas de entrada/salida (teclado, CRT y lectura y escritura desde casetes). El lenguaje cabía en 4 KB de ROM . [4]
En una presentación para anunciar el TRS-80, Leininger dijo: "Lo que hicimos fue revisar el Wang Basic y eliminar por completo alrededor del 60 por ciento, la sobrecarga de números enteros y todo ese tipo de cosas". [5]
Cuando se presentó el TRS-80, se anunciaron tres versiones de BASIC:
El lenguaje Level I no estaba disponible para el TRS-80 Model II, pero reapareció brevemente como paquete básico para el TRS-80 Model III en 1981, vendiéndose por 699 dólares en comparación con los 999 dólares del sistema con BASIC Model III (otro producto de Microsoft). El lenguaje era idéntico a la versión Model I, pero con la adición de dos comandos, LLIST y LPRINT, para imprimir en una impresora. [7]
El nivel I BASIC admitía las siguientes palabras clave: [8]
NEW
, RUN
, LIST
, CONT
(para continuar o reanudar un programa desde un punto de interrupción )PRINT
, INPUT
, READ
, DATA
, RESTORE
,LET
AT
,TAB
GOTO
, GOSUB
, ON-GOTO
, ON-GOSUB
, RETURN
, IF-THEN
(pero no ELSE
), FOR-TO-STEP/NEXT
, STOP
,END
CLS
, SET
, RESET
,POINT()
ABS()
, INT()
, RND()
,MEM
+
-
*
/
<
>
=
<=
=>
<>
*
(AND) +
(OR)Al igual que Palo Alto Tiny BASIC en el que se basó, Level I BASIC no tokenizó palabras clave como Microsoft BASIC , sino que utilizó abreviaturas para reducir la cantidad de memoria utilizada por palabras clave, como F.
for FOR
, G.
for GOTO
, P.
for PRINT
y T.
for THEN
.
El lenguaje admitía 26 variables de precisión simple de la A a la Z, dos cadenas A$ y B$ (limitadas a 16 caracteres cada una) y una matriz predefinida A(). El lenguaje carecía de una declaración DIM para dimensionar la matriz, cuyo tamaño estaba determinado por la memoria disponible no utilizada por el listado del programa (4 bytes por elemento). [9] Como el lenguaje carecía de muchas funciones matemáticas comunes, el manual proporcionaba listados de subrutinas para funciones de raíz cuadrada , exponenciación , exponenciales , logaritmos , signo aritmético y trigonometría . [10]
El soporte gráfico era el mínimo posible: CLS
, para CLear Screen; SET(X,Y)
, que iluminaba una ubicación en la pantalla; RESET(X,Y)
, que la apagaba; y POINT(X,Y)
, que devolvía 1 si una ubicación estaba iluminada, 0 si no lo estaba. Las coordenadas podían ser cualquier expresión y variaban de 0 a 127 para el eje X y de 0 a 47 para el eje Y. Solo se admitía la visualización en blanco y negro. [11]