stringtranslate.com

Turbo-BASIC XL

Turbo-BASIC XL es una versión mejorada del lenguaje de programación BASIC para ordenadores Atari de 8 bits . Es un superconjunto compatible del Atari BASIC que se entregaba con los sistemas Atari de 8 bits. Turbo-Basic XL fue desarrollado por Frank Ostrowski y publicado en la edición de diciembre de 1985 de la revista informática alemana Happy Computer . Poco después se publicó una versión para los modelos 400/800 con el nombre de Frost Basic 1.4 . Otros autores han publicado varias versiones modificadas que funcionan con diferentes sistemas DOS.

Turbo-Basic XL mejora enormemente la ejecución con respecto a Atari BASIC. Un programa Atari BASIC cargado en Turbo-BASIC, sin realizar cambios, generalmente se ejecutaba aproximadamente tres veces más rápido. Un compilador Turbo-Basic XL creaba ejecutables binarios , lo que aceleraba aún más el rendimiento del programa hasta aproximadamente diez veces más rápido que Atari BASIC. Turbo-Basic XL también incluye un editor ampliado, soporte para procedimientos con nombre WHILE...ENDWHILEy construcciones de bloques similares, y acceso adicional al hardware subyacente, lo que, entre otras cosas, permitía el funcionamiento de las unidades de disquete conectadas sin salir al DOS .

Ostrowski pronto consiguió un trabajo en GFA Systemtechnik GmbH (en aquel momento conocida como Integral Hydraulik ) donde adaptó Turbo-Basic XL a GFA BASIC para Atari ST , que se convirtió en uno de los BASIC más populares en esa plataforma.

Fondo

Desde su lanzamiento en 1979, la familia de 8 bits normalmente se entregaba con una versión de Atari BASIC en un cartucho ROM , o integrado en las ROM internas de las máquinas posteriores. Esta versión de BASIC tenía una serie de comandos personalizados que permitían un acceso parcial a las características avanzadas del sistema, como gráficos y sonido. Era notoriamente lento, apareciendo en la parte inferior de la lista de BASIC de microcomputadoras en la versión original del benchmark Creative Computing de David Ahl . [1]

El pobre rendimiento del BASIC oficial de Atari dio lugar a un mercado de intérpretes BASIC de terceros con mejor rendimiento o más comandos. Entre ellos se encontraba un port oficial de Microsoft BASIC vendido por Atari, varias versiones mejoradas publicadas por Optimized Systems Software , que había escrito el BASIC original de Atari bajo contrato, y muchos otros. También hubo varios compiladores BASIC de Atari de una variedad de proveedores.

Turbo-Basic XL fue una incorporación tardía a esta lista, publicada por primera vez en diciembre de 1985 como programa de escritura . Era único porque venía en versiones de intérprete y compilador. Incluía código para aprovechar la memoria expandida disponible en las máquinas de la serie XL y, posteriormente, en la serie XE. Esto significaba que no podía ejecutarse en los sistemas 400/800 originales, lo que llevó a Ostrowski a hacer un port conocido como Frost BASIC (abreviatura de "Frank Ostrowski") que estaba vinculado a Atari DOS 2.0.

Los comandos internos relacionados con el disco se vincularon a versiones específicas de DOS. Se pusieron a disposición varios puertos para distintas versiones de DOS.

Actuación

La característica más notable de Turbo-Basic fue su espectacular mejora en la velocidad; un programa Atari BASIC sin modificar cargado en Turbo-Basic normalmente se ejecutaba entre tres y cinco veces más rápido, y la ventaja de velocidad mejoraba a medida que el tamaño del programa aumentaba. Esto se debió en gran medida a una serie de mejoras en problemas bien conocidos del código Atari BASIC original.

En la mayoría de los BASIC, GOTO se manejaba leyendo el número de línea asociado y luego buscando esa línea de código en el programa. En los BASIC derivados de MS, los números de línea se almacenaban como enteros de 16 bits y constantes numéricas en el código en su formato ASCIIGOTO 1000 original. Cuando se encontraba una línea como esta, el intérprete usaba un código especial para convertir el "1000" al formato de 16 bits y luego lo buscaba. El BASIC de Atari funcionaba de manera diferente, convirtiendo todas las constantes numéricas a un formato de punto flotante de 6 bytes cuando se ingresaba la línea. Esto significaba que el "1000" ya no estaba en formato ASCII y tenía que convertirse de punto flotante a formato entero. El código para hacerlo no estaba bien optimizado y podía tardar más de 2 ms (promedio de 1-1,5 ms).

Los bucles FOR...NEXT son otra construcción común en los programas BASIC. En la mayoría de los BASIC, cuando se encontraba la parte FOR en tiempo de ejecución, su ubicación de memoria en el código fuente se colocaba en una pila de llamadas para que pudiera volver fácilmente a esa ubicación cuando se encontraba el NEXT asociado. Por razones desconocidas, Atari BASIC colocaba el número de línea del FOR en la pila y luego buscaba esa línea en todo el código cuando encontraba el NEXT. Para los programas que realizaban bucles significativos, que es a menudo el caso en BASIC, esto podía causar una caída dramática en el rendimiento.

Turbo-Basic implementó sus bucles FOR utilizando la dirección, como era el caso en MS BASIC, y por lo tanto ejecutó bucles con aproximadamente el mismo rendimiento que MS. Luego fue más allá y también mejoró enormemente el rendimiento de GOTO. Los números de línea se enviaban a una función hash que los dividía en fragmentos de 256 líneas. A medida que se ingresaba el programa, la dirección del primero de cada uno de estos fragmentos se almacenaba en una tabla de 128 valores. En tiempo de ejecución, cuando se necesitaba una búsqueda de número de línea, primero elegía el valor más cercano pero inferior en la tabla, recuperaba la dirección y luego comenzaba a escanear la línea a partir de ese punto. La mejora fue más notable en programas más grandes donde el tiempo de escaneo era cada vez más costoso, por lo que Turbo-Basic pudo alcanzar un aumento de 5 veces en programas más grandes.

La otra fuente importante de bajo rendimiento en Atari BASIC era su código de punto flotante decimal codificado en binario (BCD) muy lento. La biblioteca , contenida en una ROM de 2K separada y considerada parte del sistema operativo en contraposición al propio BASIC, había sido escrita a toda prisa y nunca optimizada. Algunas de las rutinas, en particular las funciones de multiplicación y exponentes, eran mucho más lentas de lo que podrían ser.

Turbo-Basic solucionó este problema al incluir su propia biblioteca de punto flotante, que no solo solucionó muchos de estos problemas, sino que también optimizó aún más el código al desenrollar pequeños bucles. Para los programas que utilizaban matemáticas de forma extensiva, la nueva biblioteca produjo mejoras de rendimiento espectaculares, lo que hizo que Atari pasara de ocupar casi el último lugar en las listas de Creative Computing Benchmark a ocupar casi el primer lugar, superando a una serie de máquinas que eran mucho más rápidas en hardware.

Nuevas funciones

Entre las características adicionales de Turbo-Basic XL, añadidas a Atari BASIC, se encuentran las siguientes:

Véase también

Referencias

  1. ^ Ahl, David (noviembre de 1983). "Prueba comparativa de referencia". Creative Computing . pág. 260.

Enlaces externos