TI BÁSICA (TI 99/4A)

Lenguaje de programación para ordenadores domésticos TI-99
TI BÁSICO
ParadigmaProcesal
Apareció por primera vez1979 ; hace 45 años ( 1979 )
Disciplina de mecanografíaEstático , fuerte
PlataformaTI-99/4, TI-99/4A
LicenciaPropiedad

TI BASIC es un intérprete compatible con ANSI para el lenguaje de programación BASIC integrado en la computadora doméstica Texas Instruments TI-99/4 de 1979 y su versión mejorada de 1981, la TI-99/4A .

A diferencia de la mayoría de los BASIC que se encuentran en los microordenadores contemporáneos , TI BASIC no tiene su origen en Microsoft BASIC , sino que fue un intérprete desarrollado por TI siguiendo el estándar emergente Minimal BASIC creado por ANSI y ECMA . Este, a su vez, se basaba en el Dartmouth BASIC original de la década de 1960. Existen varias diferencias, a veces sutiles, entre TI BASIC y las variedades más comunes de MS.

El BASIC minimalista carece de una serie de características que se encuentran comúnmente en los BASIC contemporáneos, y Texas Instruments introdujo más tarde el cartucho TI Extended BASIC que mejoró la funcionalidad accesible a los usuarios de BASIC. Esto incluía una amplia variedad de características que se encuentran en otros BASIC, así como nuevas funciones del sistema para el manejo de sprites , sonido y otras características de la plataforma.

Como era habitual en los ordenadores domésticos, TI BASIC no solo se utilizaba para programación, sino también como un sistema operativo ligero . Además de Minimal BASIC, TI añadió comandos para texto, gráficos y operaciones básicas con archivos, como grabar en cinta o en cualquier otro sistema de archivos. Debido a las particularidades de la plataforma TI-99, TI BASIC se caracterizaba por su rendimiento extremadamente lento, aproximadamente la mitad del de las máquinas comunes, pero, a la inversa, presentaba una gran precisión numérica.

Actuación

La TI-99 se basó en el microprocesador TMS9900 , un diseño de 16 bits que se construyó originalmente para proporcionar una unidad central de procesamiento (CPU) de un solo chip en los modelos de gama baja de su línea de minicomputadoras TI-990 . El TMS9900 también era adecuado para su uso en una microcomputadora, pero en ese momento el resto de los chips de soporte necesarios para construir una computadora completa eran invariablemente de 8 bits , y esto incluía el amplio catálogo de TI de dichos chips. En una minicomputadora, los sistemas de soporte de 16 bits se construían con muchos chips individuales, pero esto no era adecuado para un producto de bajo costo. Por lo tanto, TI adoptó la solución de hacer que la máquina fuera principalmente de 8 bits y conectar los diversos chips de soporte a este bus de 8 bits , con el TMS9900 leyendo el bus dos veces para producir un valor de 16 bits. [1]

La arquitectura del conjunto de instrucciones del TMS9900 se basaba en códigos de operación de 16 bits , lo que significa que los programas generalmente serían el doble de grandes que en una máquina de 8 bits. En la era de la memoria costosa, esto presentaba un costo significativo. Para abordar esto, TI creó una máquina virtual de 8 bits con su propio lenguaje o representación intermedia conocida como "lenguaje de programación gráfica" o GPL, que permitía escribir programas en un formato más compacto. La desventaja de este enfoque es que cada instrucción GPL tenía que convertirse sobre la marcha en una o más instrucciones TMS9900 subyacentes. [2] El código GPL en sí se almacenaba en el lado de 8 bits de la máquina, lo que ralentizaba aún más su rendimiento. [3]

Por todas estas razones, la máquina funcionaba mucho más lentamente de lo que teóricamente era capaz. Esto era particularmente notorio en BASIC. Cada instrucción en el programa del usuario tenía que ser leída desde la memoria de 8 bits, interpretada usando código escrito en GPL y luego enviada de vuelta a través del bus de 8 bits nuevamente. Como resultado, TI BASIC tenía un rendimiento pobre; en los puntos de referencia comunes de la época, la TI-99 generalmente funcionaba la mitad de rápido que las máquinas de 8 bits como Commodore PET o Apple II . [4] Por ejemplo, ejecutar Byte Sieve en BASIC tomó 3960 segundos en TI BASIC, mientras que la misma prueba en Applesoft BASIC en Apple II, aparentemente una máquina mucho más lenta, tomó 2806 segundos, aproximadamente un 30% más rápido que TI. [5]

Elementos de TI BASIC

Edición y ejecución

A diferencia de la mayoría de los BASIC de la época, TI BASIC no proporcionaba un editor de pantalla completa . En su lugar, se proporcionaba un editor de líneas , que permitía al usuario agregar o editar una línea a la vez. Se usaban números de línea explícitos para ordenar cada instrucción. Utilizaba un >mensaje para indicar la nueva línea actual en modo inmediato , a diferencia del más común READY. [6] Los números de línea variaban de 1 a 32767, inclusive, y la introducción de una línea fuera de ese rango daba como resultado el error "BAD LINE NUMBER". [7] La ​​entrada de línea era asistida por el NUMBERcomando, disponible solo en modo inmediato, que ingresaba números de línea ascendentes, [8] y RESEQUENCE, que renumeraba un programa existente. [9]

TI BASIC también incluía una serie de comandos de depuraciónBREAK . funcionaba de forma similar a STOP, deteniendo la ejecución en ciertas líneas. A diferencia de STOP, la salida al modo inmediato no se producía en la línea donde BREAKaparecía , sino en las líneas BREAKa las que se hacía referencia. Por ejemplo, BREAK 130haría que el programa saliera al modo inmediato cada vez que se moviera a la línea 130. Esto se podría utilizar, por ejemplo, insertando un solo punto BREAKen la parte superior del programa para controlar la ejecución, en lugar de tener que insertarlo en medio del código. UNBREAKdesactivaba los puntos de interrupción existentes. [10] Además, TRACEimprimía el número de línea de la línea que se estaba ejecutando actualmente entre corchetes angulares: <100><110>etc., y UNTRACElo desactivaba. [11]

Declaraciones

Las instrucciones compatibles con ANSI de TI BASIC son . La mayoría de ellas funcionan de la misma manera que sus contrapartes MS con dos adiciones: reinicia el generador de números aleatorios en un valor "semilla" dado y establece la primera entrada en matrices en 0 o 1, mientras que MS siempre se basa en cero. A este conjunto estándar se le agregó , , y . [12]DATA, DEF, DIM, END, FOR..TO..STEP..NEXT, GOSUB, GOTO, IF..THEN..ELSE, INPUT, LET, NEXT, ON..GOSUB, ON..GOTO, OPTION BASE, PRINT, RANDOMIZE, READ, REM, RESTORE, RETURN, STOPRANDOMIZEOPTION BASECALLCLOSEDISPLAYOPEN

De acuerdo con el estándar Minimal BASIC, [13] IF las instrucciones solo podían realizar ramificaciones, no podían realizar instrucciones arbitrarias como era común en casi todos los demás BASIC de la época. Por ejemplo, código como:

100 SI X > 5 ENTONCES IMPRIME "ES GRANDE"     

no es válido en TI BASIC. En su lugar, esto se debería realizar utilizando varias líneas:

100 SI X <= 5 ENTONCES 300 200 IMPRIMIR "ES GRANDE"      

Esto puede conducir fácilmente a errores de un dígito si la conversión no tiene cuidado de cambiar el sentido de la comparación booleana. Sin embargo, TI BASIC admitía la ELSEcláusula: [14]

100 SI X > 5 ENTONCES 200 DE LO CONTRARIO 300      

La PRINTinstrucción utilizaba dos puntos para separar elementos en diferentes líneas, además de la coma o el punto y coma más comunes. Esto impedía su uso como separador de instrucciones, un concepto que no tenía TI BASIC. [15] Esto significa que una línea puede tener solo una instrucción. Debido a la forma en que funcionan los intérpretes de BASIC, GOTOlos bucles basados ​​en - se pueden acelerar significativamente combinando código en una sola línea, lo que evita tener que buscar números de línea en el programa. Esta característica aparentemente menor que falta puede dar como resultado un código mucho más lento, y agregar esta característica fue parte de Extended BASIC.

Las extensiones del sistema Minimal BASIC no solían estar representadas directamente en BASIC, sino que se accedía a ellas mediante el CALLcomando y una serie de subrutinas con nombre basadas en la GPL. Por ejemplo, CALL CLEARlimpia la pantalla y CALL KEYdevuelve el código de la tecla presionada en ese momento en el teclado. El lenguaje carecía de él PEEKy,POKE por lo tanto, no había una forma oficial [16] de crear un nuevo código CALLable dentro de BASIC; para ello, se necesitaba el Editor/Ensamblador TI, el cartucho de memoria TI Mini que incluía un pequeño ensamblador [17] o utilizando BASIC extendido.

Funciones

A diferencia de los BASIC de Microsoft, que utilizaban , , y para manipular cadenas, TI BASIC utilizaba los sistemas operativos compatibles con ANSI y .LEFT$MID$RIGHT$INSTRSEG$POS

abdominales
Valor absoluto
CSA
Valor numérico ASCII del primer carácter de una cadena
ATENCIÓN
Arcotangente
Cr$
Convertir un número en una cadena con un carácter ASCII
PORQUE
Coseno
fin de año
Comprueba si se ha llegado al final de un archivo
EXP
Exponenciación
INT
mayor entero menor o igual que el parámetro
LEN
Longitud de una cadena
REGISTRO
Logaritmo natural
Punto de venta
Primera aparición de una cadena en otra cadena
RND
Generador de números pseudoaleatorios
SEG$
Devuelve una subcadena de una cadena
SGN
Función de signo
PECADO
Seno
cuadrado
Raíz cuadrada
STR$
Convertir un número en una cadena
BRONCEARSE
Tangente
VAL
Convertir una cadena en un número

Subprogramas

Los subprogramas se llaman con CALLuna declaración (por ejemplo, CALL CLEAR).

  • CHARDefinición de caracteres gráficos
  • CLEARLimpia la pantalla
  • COLORDefine el color de primer plano y de fondo para 8 caracteres.
  • GCHARLee un carácter en una posición específica de la pantalla.
  • HCHAREscribe un carácter en una posición de la pantalla y lo repite horizontalmente.
  • JOYSTDevuelve la posición del joystick.
  • KEYLee desde el teclado sin eco en la pantalla
  • SCREENCambia el color de la pantalla
  • SOUNDCrea sonidos (utilizando una frecuencia ) y ruido.
  • VCHAREscribe un carácter en una posición de la pantalla y lo repite verticalmente.

BASIC extendido

Cartucho TI BASIC extendido.

TI BASIC se encontraba en las ROM internas del sistema. En 1981, TI lanzó un cartucho ROM enchufable que añadía funciones adicionales al código existente, mejorando el lenguaje de diversas maneras. [18] Conocido como Extended BASIC, fue una incorporación muy esperada a la plataforma. [19]

Entre los cambios se encontraba la incorporación de la capacidad de tener múltiples sentencias en una línea. El uso de múltiples sentencias puede mejorar el rendimiento; los bucles que se implementan en una sola línea se ejecutan mucho más rápido. Además, las sentencias ahora pueden abarcar varias líneas. Como el dialecto subyacente ya utilizaba los dos puntos como separadores de cadenas, Extended BASIC utilizó los dos puntos dobles para este propósito. Resulta confuso que, como una sentencia con dos dos puntos también era posible en TI BASIC, por ejemplo, PRINT "A"::"B", que generaría "A", una línea en blanco y luego "B", estas sentencias requerían que se añadiera un espacio en Extended BASIC, PRINT "A": :"B". [18]

Otra adición que se esperaba desde hacía tiempo era que IFlas sentencias podían ahora ejecutar sentencias arbitrarias, en lugar de solo una GOTO. En BASIC extendido se podía escribir una sentencia simple como . Esto también funcionaba en la cláusula, permitiendo sentencias como . [18]IF X>10 THEN X=X-1ELSEIF A=4 AND B=6 THEN R=10 ELSE PRINT "OOPS"

Otras adiciones incluyen una pequeña selección de nuevas declaraciones, incluyendo ACCEPT, IMAGE, LINPUT, ON BREAK, ON ERROR, ON WARNING, SUB, SUBENDy SUBEXIT. Las últimas tres declaraciones se utilizan para la programación estructurada , lo que permite la creación de subrutinas con nombre . El BASIC extendido también incluyó una serie de nuevas funciones y, especialmente, rutinas CALLable. Entre estas últimas se encontraba una biblioteca de comandos de sprites, incluidos algunos que creaban movimiento que continuaba automáticamente. [18]

Síntesis de voz

Cuando se cuenta con el sintetizador de voz TI, los usuarios de TI Extended BASIC también pueden generar voz a partir de un vocabulario predefinido con la misma facilidad con la que escriben texto en la pantalla. Por ejemplo, la siguiente línea de texto haría que el sintetizador de voz identifique la computadora: [18]

LLAMAR Y DECIR ("HOLA, SOY UN COMPUTADOR DOMÉSTICO #TEXAS INSTRUMENTS# TI NINETY NINE FOUR") 

Las frases de varias palabras se delimitan con el símbolo #, como #TEXAS INSTRUMENTS#en este ejemplo. Si se utiliza una palabra que no está incluida en el vocabulario integrado del sintetizador de voz de 338 palabras y frases, se escribiría lentamente. El cartucho Terminal Emulator II de TI proporcionaba la función de conversión de texto a voz . [18]

Referencias

Citas

  1. ^ "La arquitectura interna de la TI-99/4A". 16 de agosto de 2000.
  2. ^ Nouspikel, Thierry. «GPL: lenguaje de programación gráfica» . Consultado el 2 de agosto de 2020 .
  3. ^ "Crecí y aprendí lo básico con una TI-99/4a. Fue una época maravillosa y sencilla..." Hacker News . Consultado el 2 de agosto de 2020 .
  4. ^ Knight, Daniel (10 de enero de 2016). "¿Qué tan rápidas eran las computadoras hogareñas de finales de los años 70?". Mac de gama baja .
  5. ^ Gilbreath, Jim; Gilbreath, Gary (enero de 1983). "Eratóstenes revisitado: una vez más a través del tamiz". Byte . págs. 283–325.
  6. ^ Guía1981, pág. II-5.
  7. ^ Guía1981, pág. II-8.
  8. ^ Guía1981, pág. II-26.
  9. ^ Guía1981, pág. II-27.
  10. ^ Guía1981, pág. II-33.
  11. ^ Guía1981, pág. II-36.
  12. ^ Guía1981, pág. i.
  13. ^ Minimal BASIC (PDF) (Informe técnico). ECMA. Enero de 1978.
  14. ^ Guía1981, pág. II-51.
  15. ^ Guía1981, pág. II-65.
  16. ^ Exploit de James Abbatiello
  17. ^ "Mini memoria".
  18. ^abcdefShaw 1983.
  19. ^ Kaplan, Gary (junio de 1981). "Revisión ampliada de BASIC". TI 99er .

Bibliografía

  • Shaw, Stephen (1983). "Extended Basic". Introducción a la calculadora Texas Instruments TI99/4A. Phoenix Publishing. ISBN 978-0-946576-04-3.
  • Guía de referencia del usuario (PDF) . Texas Instruments. 1981.
  • BASIC para principiantes en ClassicCmp.org
  • Tarjeta de referencia BASIC TI-99/4A en ClassicCmp.org
Obtenido de "https://es.wikipedia.org/w/index.php?title=TI_BASIC_(TI_99/4A)&oldid=1255921626"