# Turbo-BASIC XL

       Este artículo trata del Turbo-BASIC XL, un dialecto BASIC para la Familia Atari de 8 bits.
       Existe un artículo distinto que trata del Turbo BASIC de Borland.
El Turbo-Basic XL es una versión avanzada del lenguaje BASIC para la Familia Atari de 8 bits de microcomputadoras. Es un superconjunto del Atari BASIC con el cual es totalmente compatible. También existe un compilador de programas creados con Turbo-BASIC XL.
Las principales diferencias con el BASIC original de Atari, consisten en:
* Mayor velocidad de proceso
* Instrucciones mejoradas para sonido y gráficos
* Órdenes de E/S (Entrada/Salida) o {en inglés: I/O} más flexibles y poderosas.
* Acceso mejorado a disquete.
* Construcciones de programación estructurada
* Servicios de depuración {en inglés: debugging} simplificados
Este lenguaje fue creado por Frank Ostrowski, quien más tarde, desarrolló el intérprete GfA-BASIC para la compañía GfA Systems. Turbo-BASIC XL fue publicado por primera vez en 1985 como el "listado del mes" en la revista alemana Happy Computers (Markt & Technik Verlag). De igual manera, un año después publicó un compilador para el Turbo-BASIC XL.

## Comparación con el Atari-BASIC
### Compatibilidad

Turbo-BASIC XL es un superconjunto del Atari BASIC. Implementa todas las órdenes de Atari BASIC y usa el mismo formato de ficheros, por lo tanto, los programas escritos en Atari BASIC, en general, correrán directamente en Turbo-BASIC XL sin necesidad de cambios. Pero lo harán unas 3 o 4 veces más rápido. Esto podría significar que algún juego escrito en Atari BASIC no funcionara bien en Turbo-BASIC XL.
Otra causa de incompatibilidad está dada por la diferencia en el consumo de memoria. El Turbo-BASIC XL, con 16 KB, es casi el doble más grande que Atari BASIC. Sin embargo, Turbo-BASIC XL deja disponible aproximadamente 34 KB de memoria para programas. Es decir, aproximadamente más de 2 KB que el Atari BASIC con Atari DOS, pues el Turbo-BASIC ocupa algunas áreas de memoria que no usa el Atari BASIC. Sin embargo, con frecuencia los programadores de Atari BASIC usan esas áreas de memoria para almacenar subprogramas en lenguaje de máquina. Puede ser que tales programas no corran bajo Turbo-BASIC XL.

### Programación Estructurada

Un mejoramiento substancial sobre el Atari BASIC fue la introducción de órdenes para programación estructurada. Se introdujo "REPEAT...UNTIL", "WHILE...WEND", "DO...LOOP" y "IF...ELSE...ENDIF". El usar "PROC nombre...ENDPROC" permite definir subrutinas, y se las llama usando "EXEC nombre".
Se puede escribir programas completos en Turbo-BASIC XL, sin usar instrucciones GOTO. En los casos excepcionales en los cuales fuere necesario hacer un salto directo dentro del programa se puede escribir "GO #etiqueta".
Por su diseño, se adivina que el turbo-BASIC XL fue el precursor del GfA-BASIC, otra implementación del lenguaje para Atari ST, Commodore Amiga, DOS y Windows de PC que Ostrowski desarrolló años después.

### Instrucciones para gráficos

Atari BASIC ya tenía instrucciones para modos gráficos y para dibujar puntos y líneas. Con Turbo-BASIC XL, también se puede dibujar círculos y elipses, relleno de espacios y texto en pantallas gráficas. Por ejemplo, usando BPUT y BGET se puede guardar bloques de memoria en un medio de almacenamiento externo (disquete) y luego volver a cargarlos en memoria cuando se requiera.
Turbo-BASIC XL no tiene instrucciones específicas para programar gráficos jugador/proyectil {Player/Missile en inglés} llamados también "sprites". Así que al igual que en Atari BASIC se debe usar PEEK y POKE. Sin embargo, la orden MOVE que permite mover bloques de memoria completos simplifica bastante la programación de este tipo de gráficos.

### Órdenes DOS

Con órdenes como DIR, DELETE, RENAME, LOCK y UNLOCK, Turbo-BASIC XL puede manejar directamente la disquetera, sin necesidad de usar las crípticas llamadas XIO (eXtended Input/Output - Entrada/Salida extendida), del Atari BASIC. El que se pueda acceder directamente al contenido del disquete, facilita enormemente el trabajo de desarrollo.

### Instrucciones y funciones generales

Bajo Turbo-BASIC XL, se puede trabajar directamente con números hexadecimales, y dispone de poderosas instrucciones para manejar secuencias de caracteres {en inglés: strings}. También hay una serie de instrucciones y funciones que no están presentes en el ATARI BASIC como DIV, MOD, CLS o PAUSE.

### Editor avanzado

Turbo-BASIC XL usa el conocido editor de Atari BASIC, pero este fue grandemente expandido. Para facilitar la lectura, por omisión, los bucles {en inglés: loops} y los bloques IF-THEN-ELSE se indentan automáticamente con 2 espacios. Sin embargo, para los listados en impresora u otros dispositivos externos, esta característica es suprimible. Se puede disminuir la velocidad de despliegue del código fuente en la pantalla presionando alguno de los botones de consola (Option, Select, Start).
También se añadieron algunas instrucciones, mediante las cuales se pueden renumerar o borrar bloques completos de programa. Con la instrucción DUMP se puede obtener una tabla de variables. Con la orden TRACE se muestra los números de la línea en ejecución, facilitando la depuración de los programas.

### AUTORUN. BAS

Al momento de inicializar el computador {en inglés: boot}, Turbo-BASIC XL busca un fichero BASIC con el nombre de "AUTORUN.BAS" en el mismo disquete. Si existe lo carga y ejecuta automáticamente. En cambio, para hacer lo mismo en Atari BASIC es necesaria la intervención de un programa intermediario en lenguaje de máquina.
Si el programa BASIC de autocarga está compilado, debe grabarse con el nombre de "AUTORUN.CTB" y en el mismo disco debe estar presente el fichero con la biblioteca de tiempo de ejecución "runtime.com" al que se le ha renombrado como "autorun.sys".

### Compilador

En 1986 se publicó el compilador para Turbo-BASIC XL en el primer número especial dedicado a Atari-XL/XE de la revista Happy Computer. Los programas compilados se ejecutaban en promedio tres veces más rápido que los programas interpretados por Turbo-BASIC XL. Comparado con el Atari BASIC esto era un factor de aceleración de 10 a 12 veces. En pruebas comparativas {en inglés: benchmarks} hechas en 1986 el compilador Turbo-BASIC XL fue más rápido que cualquiera de los compiladores de BASIC comerciales disponibles en aquella época para los microcomputadores Atari. Los programas compilados con Turbo-BASIC XL sólo se pueden ejecutar en computadores de la serie XL/XE.

### Distribución

Para los microcomputadores Atari, Turbo-BASIC XL fue uno de los lenguajes de programación más exitosos y junto al Atari BASIC probablemente el dialecto BASIC más extendido. Los sucesores comerciales de Atari BASIC (BASIC A+, BASIC XL y BASIC XE) de la compañía Optimized Software System (OSS), tenían instrucciones significativamente más poderosas y eran comparativamente tan rápidos como el Turbo-BASIC XL. Pero estos fueron lenguajes de programación orientados al desarrollo comercial de aplicaciones. No permitían compilar. Incluso para el BASIC A+ ni siquiera había una biblioteca de tiempo de ejecución {en inglés: runtime library} gratuita. Esto obligaba a quien quisiera hacer uso de un programa escrito en esos lenguajes a tener que comprar el intérprete que podía costar entre 80 y 100 dólares norteamericanos, lo que contrastaba con el ínfimo costo de conseguir el Turbo-BASIC XL que además incluía el compilador.

### Versiones

Circulan varias versiones de Turbo-BASIC
* Turbo-BASIC 3.2q : versión de Turbo-BASIC compatible con SpartaDOS
* Frost BASIC 1.4 : versión de Turbo-BASIC compatible con equipos 400/800
* Turbo-BASIC XL 1.5 : compatible con equipos XL/XE, Atari DOS 2 <-(la versión "oficial") y similares.
* TurboBASIC XL 2.0 : idem

### Trivia

Con un tamaño de 18,108 bytes, el Turbo-BASIC XL fue uno de los programas más extensos publicados alguna vez por la revista Happy Computer. En general el límite había sido de alrededor de 10 KB. Como los programas fueron impresos en formato hexadecimal, había que ingresar y chequear más de 40.000 caracteres al teclear el listado generador del intérprete. Los listados del compilador y del cargador de tiempo de ejecución en conjunto eran casi tan extensos.
El listado del intérprete fue publicado en 3 ocasiones por Happy Computer: la primera vez en el ejemplar de diciembre de 1985, luego en la primera edición especial de Atari (1986) y nuevamente en la segunda edición especial de Atari (1988).
Al publicarse el Turbo-BASIC XL como un programa para ser mecanografiado {"tipeado"}, fue percibido incorrectamente, entre los usuarios de Atari como si se tratase de un programa de dominio público. A este respecto, nunca hubo una publicación oficial de parte de Markt & Technik. Sin embargo, desde finales de 1980 muchos de los usuarios de ATARI poseían una copia del Turbo-BASIC XL - pocos de los cuales habían mecanografiado el programa de la revista o lo habían adquirido en forma de disquete de un servicio establecido. El Turbo-BASIC XL debe haber sido el programa más pirateado para los microcomputadores Atari XL/XE.
Frank Ostrowski desarrolló originalmente su intérprete BASIC en un Atari 800. Sin embargo, esta versión no fue publicada sino hasta 1986 bajo el nombre de Turbo-BASIC v1.4 (sin el agregado de XL). Esto tiene sólo valor histórico, porque en aquel tiempo la máquina Atari-800 ya casi no se usaba y porque dejaba únicamente 23 KB de memoria libre para los programas.