TI BÁSICO (TI 99 / 4A)


De Wikipedia, la enciclopedia libre
  (Redirigido desde TI Extended BASIC )
Saltar a navegación Saltar a búsqueda

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

A diferencia de la mayoría de los BASIC que se encuentran en las microcomputadoras contemporáneas , TI BASIC no remonta su historia a Microsoft BASIC , sino que fue un intérprete desarrollado por TI siguiendo el estándar Minimal BASIC emergente creado por ANSI y ECMA . Esto, a su vez, se basó en el Dartmouth BASIC original de la década de 1960. Hay una serie de diferencias, a veces sutiles, entre TI BASIC y las variedades MS más comunes.

Mínimo BASIC carece de una serie de características que se encuentran comúnmente en los BASIC contemporáneos, y Texas Instruments presentó más tarde el cartucho TI Extended BASIC que mejoró la funcionalidad accesible para los usuarios de BASIC. Esto incluyó 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 común en las computadoras domésticas, TI BASIC se usó no solo para programación sino también como un sistema operativo delgado . Además de Minimal BASIC, TI agregó comandos para texto, gráficos y operaciones básicas de archivos, como grabar en cinta o cualquier otro sistema de archivos. Debido a las características específicas de la plataforma TI-99, TI BASIC fue más notable por su rendimiento extremadamente lento, aproximadamente la mitad del de las máquinas comunes, pero por el contrario lucía una alta precisión numérica.

Rendimiento

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 componían de 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 sea 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]

Del TMS9900 arquitectura del conjunto de instrucciones se basa en 16 bits códigos de operación , lo que significa que los programas serían generalmente dos veces tan grande como lo estarían en una máquina de 8 bits. En la era de la memoria cara, esto presentaba un coste 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 que los programas se escribieran en un formato más compacto. La desventaja de este enfoque es que cada instrucción GPL tuvo que convertirse sobre la marcha en una o más instrucciones TMS9900 subyacentes. [2] El código GPL en sí se almacenó en el lado de 8 bits de la máquina, lo que ralentizó aún más su rendimiento. [3]

Por todas estas razones, la máquina funcionó mucho más lenta de lo que teóricamente era capaz de hacer. Esto fue particularmente notable en BASIC. Todas las instrucciones del programa del usuario tenían que leerse desde la memoria de 8 bits, interpretarse utilizando un código escrito en GPL y luego enviarse de nuevo a través del bus de 8 bits. Como resultado, TI BASIC tuvo un desempeño pobre; en los puntos de referencia comunes de la época, la TI-99 generalmente funcionaba a la mitad de rápido que las máquinas de 8 bits como la 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 la TI.[5]

Elementos de TI BASIC

Editando y ejecutando

Como la mayoría de los BASIC de la época, TI BASIC usaba un editor de pantalla completa que permitía al usuario colocar el cursor sobre una línea de código existente, cambiarla y presionar ↵ Enterpara guardar los cambios. 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 iban del 1 al 32767, inclusive, y al ingresar una línea fuera de ese rango, se produjo el error "NÚMERO DE LÍNEA MALO". [7] La entrada de línea fue asistida por el NUMBERcomando, disponible solo en modo inmediato, que ingresó números de línea ascendentes, [8] y RESEQUENCE, que renumeró un programa existente. [9]

TI BASIC también incluyó una serie de comandos de depuración. BREAKfuncionó algo así como STOP, detener la ejecución en ciertas líneas, por el contrario STOP, la salida al modo inmediato no se produjo en la línea donde BREAKaparecía, sino en las líneas BREAKreferidas. Por ejemplo, BREAK 130haría que el programa saliera al modo inmediato cada vez que se moviera a la línea 130. UNBREAKdesactivó los puntos de interrupción existentes. [10] Además, TRACEimprimió el número de línea de la línea de ejecución actual en paréntesis angulares: <100><110>etc., y apáguelo UNTRACE. [11]

Declaraciones

Las declaraciones de TI BASIC compatibles con ANSI son DATA, DEF, DIM, END, FOR..TO..STEP , GOSUB , GOTO , IF..THEN..ELSE , INPUT, LET, NEXT, ON..GOSUB, ON. .GOTO, OPCIÓN BASE, IMPRIMIR, ALEATORIZAR , LEER, REM , RESTAURAR, VOLVER , DETENER . La mayoría de estos operan de la misma manera que sus homólogos de EM con dos adiciones; RANDOMIZEreinicia el generador de números aleatorios en un valor de "semilla" dado y OPTION BASEestablece la primera entrada en las matrices en 0 o 1, mientras que MS es siempre uno. A este conjunto estándar agregó CALL , CLOSE , DISPLAY yABIERTO . [12]

De acuerdo con el estándar Mínimo BASIC, las sentencias [13] IF solo podían realizar ramificaciones, no podían realizar sentencias 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 IMPRIMA "ES GRANDE"    

no es válido en TI BASIC. En cambio, esto debería realizarse utilizando varias líneas:

100 SI X <= 5 ENTONCES 300 200 PRINT "es grande"     

Esto puede conducir fácilmente a errores uno por uno si la conversión no tiene cuidado de cambiar el sentido de la comparación booleana. TI BASIC, sin embargo, apoyó la ELSEcláusula: [14]

100 SI X > 5 ENTONCES 200 MAS 300      

La PRINTdeclaración utiliza dos puntos para separar los elementos, a diferencia de la coma o el punto y coma más común. Esto impidió su uso como separador de declaraciones, un concepto que TI BASIC no tenía. [15] Esto significa que una línea solo puede tener una sola declaración. Debido a la forma en que funcionan los intérpretes BASIC, los GOTObucles basados ​​en -basados ​​pueden acelerarse 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 resultar en un código mucho más lento, y agregar esta característica era parte de Extended BASIC.

Las extensiones del sistema MINimal BASIC a menudo no se representaban directamente en BASIC, sino que se accedía a ellas mediante el CALLcomando y una serie de subrutinas de lenguaje de máquina con nombre . Por ejemplo, CALL CLEARborra la pantalla y CALL KEYdevuelve el código de tecla de la tecla presionada actualmente en el teclado. El lenguaje carecía de PEEK y POKE, por lo que no había forma de crear un nuevo código CALLable dentro de BASIC, para hacer esto se requeriría el Editor / Ensamblador de TI, el cartucho de memoria Mini TI que incluía un ensamblador pequeño , [16] o usando BASIC extendido .

Funciones

A diferencia de Microsoft BASIC, que usaba LEFT $, MID $, RIGHT $ e INSTR para manipular cadenas, TI BASIC usaba SEG $ y POS compatibles con ANSI.

  • ABS Valor absoluto
  • ASC Valor numérico ASCII del primer carácter de una cadena
  • ATN Arctangent
  • CHR $ Convierte un número en una cadena con un carácter ASCII
  • COS Coseno
  • EOF Prueba si se ha llegado al final de un archivo
  • Exponenciación de EXP
  • INT mayor entero menor o igual que el parámetro
  • LEN Longitud de una cuerda
  • LOG Logaritmo natural
  • POS Primera aparición de una cadena en otra cadena
  • Generador de números pseudoaleatorios RND
  • SEG $ Devuelve una subcadena de una cadena
  • Función SGN Sign
  • SIN Sine
  • Raíz cuadrada SQR
  • STR $ Convierte un número en una cadena
  • Tangente TAN
  • VAL Convierte una cadena en un número

Subprogramas

Los subprogramas se llaman con la instrucción CALL (por ejemplo, CALL CLEAR).

  • CHAR Definición de caracteres gráficos
  • CLEAR Limpia la pantalla
  • COLOR Define el color de primer plano y de fondo para 8 caracteres
  • GCHAR Lee un carácter en una posición específica de la pantalla
  • HCHAR Escribe un carácter en una posición de pantalla y lo repite horizontalmente
  • JOYST Devuelve la posición del joystick.
  • KEY Lee desde el teclado sin eco en la pantalla
  • PANTALLA Cambia el color de la pantalla
  • SONIDO Crea sonidos (usando una frecuencia ) y ruido
  • VCHAR Escribe un carácter en una posición de la pantalla y lo repite verticalmente

BÁSICO extendido

Cartucho TI Extended BASIC.

TI BASIC estaba ubicado en las ROM internas del sistema. En 1981, TI lanzó un cartucho de ROM enchufable que agregó funciones adicionales al código existente, mejorando el lenguaje de varias formas. [17] Conocido como Extended BASIC, fue una adición muy esperada a la plataforma. [18]

Entre los cambios estaba la adición de la capacidad de tener múltiples declaraciones en una línea. El uso de varias declaraciones puede mejorar el rendimiento; los bucles que se implementan en una sola línea se ejecutan mucho más rápido. Además, las declaraciones ahora podrían abarcar varias líneas. Como el dialecto subyacente ya usaba dos puntos para los separadores de cadenas, Extended BASIC usó dos puntos dobles para este propósito. Confusamente, como una declaración con dos puntos dobles también era posible en TI BASIC, por ejemplo, PRINT "A"::"B"que emitiría "AB", por lo que estas declaraciones requieren un espacio que se añadirán en base ampliado, PRINT "A": :"B". [17]

Otra adición atrasada fue que las IFdeclaraciones ahora pueden realizar declaraciones arbitrarias, en lugar de solo a GOTO. En Extended BASIC se podría escribir una declaración simple como . Esto también funcionó en la cláusula, permitiendo declaraciones como . [17]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 nuevos estados, 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 . Extended BASIC también incluyó una serie de nuevas funciones y especialmente rutinas CALLable. Entre los últimos había una biblioteca de comandos de sprites, incluidos los que creaban movimiento que continuaba automáticamente. [17]

Síntesis de voz

Cuando están equipados con el sintetizador de voz de TI, los usuarios de TI Extended BASIC también pueden generar voz a partir de un vocabulario predefinido tan fácilmente como escribir texto en la pantalla. Por ejemplo, la siguiente línea de texto haría que el sintetizador de voz identificara la computadora: [17]

 LLAME DIGA ("HOLA, SOY UN #TEXAS INSTRUMENTS # TI NOVENTA Y NUEVE CUATRO UNA COMPUTADORA DOMÉSTICA") 

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

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 en 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ápido eran esos equipos domésticos de finales de la década de 1970?" . 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. Guide1981 , p. II-5.
  7. Guide1981 , p. II-8.
  8. Guide1981 , p. II-26.
  9. Guide1981 , p. II-27.
  10. Guide1981 , p. II-33.
  11. Guide1981 , p. II-36.
  12. Guide1981 , p. I.
  13. ^ Mínimo BÁSICO (PDF) (Informe técnico). ECMA. Enero de 1978.
  14. Guide1981 , p. II-51.
  15. Guide1981 , p. II-65.
  16. ^ "Mini memoria" .
  17. ↑ a b c d e f Shaw 1983 .
  18. ^ Kaplan, Gary (junio de 1981). "Revisión BÁSICA Extendida" . TI 99er .

Bibliografía

  • Shaw, Stephen (1983). "Básico Extendido" . Introducción a Texas Instruments TI99 / 4A . Phoenix Publishing. ISBN 978-0-946576-04-3.
  • Guía de referencia del usuario (PDF) . Instrumentos Texas. 1981.

enlaces externos

  • BÁSICO para principiantes en ClassicCmp.org
  • Tarjeta de referencia TI-99 / 4A BASIC en ClassicCmp.org
Obtenido de " https://en.wikipedia.org/w/index.php?title=TI_BASIC_(TI_99/4A)&oldid=1039829499 "