# Graphics BASIC

Graphics BASIC es una extensión externa para el lenguaje de programación Commodore BASIC V2.0, creado para el ordenador Commodore 64. Fue escrita en 1983 por Ron Gilbert y Tom McFarlane. El uso del programa se autorizó a Hesware, que no tardó en venderlo en 1984 como parte de su línea de productos antes de desaparecer. Posteriormente, fue ampliado por Ken Rose y Jack Thornton, y redistribuido y puesto a la venta en 1985 por Epyx con el nombre Programmers BASIC Toolkit.
Graphics BASIC aporta más de 100 comandos al lenguaje BASIC y proporciona una API de fácil uso a las funciones de hardware gráficas y de sonido del Commodore 64, consideradas relativamente avanzadas para la época. La única forma de acceder a tales funciones sólo con Commodore BASIC era empleando los complejos comandos PEEK y POKE. Graphics BASIC se entregaba en un solo disco flexible de 5,25"; contenía el propio lenguaje y numerosos programas muy sencillos que demostraban las nuevas funciones del lenguaje. También había disponible una versión en cartucho. Para instalar Graphics BASIC, sólo hace falta introducir el popular comando:
Después de cargar, el lenguaje se inicia automáticamente, sin necesidad de usar los comandos RUN o SYS.

## Características
### Gráficos

La principal ventaja de Graphics BASIC reside en sus numerosos comandos gráficos de fácil uso, que permiten dibujar puntos, líneas, círculos, elipses, rectángulos y polígonos. A continuación se incluye un ejemplo de uso de tales comandos:
Como se puede apreciar, la sintaxis es bastante parecida a la de los comandos gráficos de GW-BASIC o AmigaBASIC, pero lo suficientemente distinta como para impedir la compatibilidad del código fuente.
El Commodore 64 tiene modos de vídeo independientes para texto y gráficos. Cambiar entre ambos resulta extremadamente sencillo con Graphics BASIC. TEXT cambia al modo de texto, HIRES cambia al modo gráfico de dos colores a 320×200 y MULTI cambia al modo gráfico de cuatro colores a 160×200. Graphics BASIC también permite dividir la pantalla horizontalmente y aplicar un modo diferente a cada parte.
Usar los 16 colores es posible tanto en el modo HiRes como en el modo Multi, pero si se dibujan dos colores incompatibles en el mismo bloque de píxeles de 8×8, el bloque entero se llena con el último color dibujado. Esto se debe a una limitación técnica del chip de representación VIC-II del Commodore 64.
Una de las opciones menos frecuentes de la sintaxis de Graphics BASIC es el ajuste de colores gráficos. Para ajustar los colores de primer plano y fondo en el modo de texto, se usan los comandos COLOUR y BACKGROUND, seguidos de un número comprendido entre 0 y 15, o una constante simbólica predefinida, como WHITE o BLACK. Para ajustar los colores en el modo gráfico, la sintaxis del comando es similar a la siguiente:
donde x es el color de primer plano e y es el color de fondo. (Por ejemplo, COLOUR HIRES BLACK ON WHITE).

### Sprites

Graphics BASIC ofrece también comandos para manipular los ocho sprites del Commodore 64. Los sprites poseen un tamaño de 24×21 píxeles, dibujados en 2 colores (1 color + fondo) o 4 colores (3 colores + fondo). Cada sprite tiene un color independiente. En el modo de 3 colores, la resolución horizontal se divide en dos; asimismo, todos los sprites de 3 colores comparten los mismos 2 colores adicionales.
El carácter compacto de la sintaxis de los comandos de sprites tiene más en común con las opciones de línea de comandos de los programas de Unix que con los lenguajes de programación convencionales. Básicamente, es posible combinar varias manipulaciones en un único comando, comenzando con la palabra SPRITE y el número del sprite (comprendido entre 1 y 8), e incluyendo a continuación todas las palabras clave y parámetros necesarios. En el ejemplo:
se establece el sprite 1 como visible, se mueve a la posición (160, 100) de la pantalla, se ajusta su color a azul y se duplica su tamaño físico tanto horizontal como verticalmente.
Graphics BASIC admite también desplazamiento automático de sprites (cambio de posición), animación (cambio de forma) y detección de colisión. Todo ello forma parte del núcleo del lenguaje y agrega desencadenantes a las rutinas de interrupción de software del Commodore 64. (El lenguaje no admite la agregación de desencadenantes de interrupción personalizados).
Las formas de los sprites se pueden dibujar a mano empleando el editor de sprites integrado, al que se accede mediante el comando EDIT. El editor, aunque sencillo de usar, es también un poco rudimentario. Para cargar o guardar las formas en disco se usan los comandos SPRITE LOAD y SPRITE SAVE. También es posible dibujar sprites nuevos programáticamente dibujando formas en los modos de alta resolución y multicolor, y copiándolas después usando los comandos COPY HIRES TO SPRITE o COPY MULTI TO SPRITE.

### Sonido

Graphics BASIC ofrece también varios comandos que facilitan el control del sintetizador de audio integrado en el Commodore 64 y permiten seleccionar el tipo de forma de onda, el tono (la frecuencia) y envolventes de amplitud. Además, las secuencias de tonos se pueden especificar y reproducir automáticamente en segundo plano.

### Otros comandos

Más allá de los comandos de gráficos y sonido, Graphics BASIC ofrece también otros comandos útiles, como DIR (que genera una lista del directorio de archivos de un dispositivo), JOY (que devuelve la posición de un joystick), KEY (que facilita la programación de las teclas de función) y REN (que permite cambiar la numeración de las líneas del programa). Graphics BASIC agregó también el comando ON ERROR para controlar la captura de errores, un comando PROCEDURE que permitía pasar variables a las subrutinas y la condición ELSE al comando IF/THEN.
* Datos: Q5597184