# QB64

QB64 (originalmente llamado QB32) es un compilador integrado del lenguaje BASIC para Microsoft Windows, GNU/Linux y MacOS X. Está diseñado para ser compatible con QBASIC y QuickBASIC de Microsoft. QB64 genera código C++ que es después compilado usando GCC.
QB64 implementa la mayoría de los comandos de QBasic, y puede ejecutar muchos de programas escritos para él, incluyendo los juegos de demostración Gorillas y Nibbles. Además, QB64 fue diseñado para contener un IDE similar a QBasic. También extiende el lenguaje QuickBASIC para incluir tipos de datos de 64 bits, además de mejorar el soporte para sonido y gráficos. Así mismo es capaz de emular algunas características específicas de DOS/x86, como el acceso al ratón a través de la Interrupción 33h, y múltiples temporizadores.
Desde la versión 2.0 también incluye facilidades para la depuración.

## Historia

QB64 fue originalmente compilado con QuickBASIC 4.5. Después de un extenso desarrollo, Galleon, el desarrollador, se vio obstaculizado por las limitaciones de memoria de QuickBASIC y opto por cambiar al Microsoft Basic PDS 7.1, que resolvió todos esos problemas por un tiempo. Desde la versión 0.63, QB64 es capaz de compilarse a sí mismo, por lo que las limitaciones de memoria convencional ya no se aplican.

## Sintaxis

La sintaxis de QB64 está diseñada para ser completamente compatible con QuickBASIC. Los números de línea no son un requisito y los comandos son terminados por saltos de línea o dos puntos.
Un programa de "Hello, World" de ejemplo podría ser:
Un ejemplo de la emulación de la memoria VGA compatible con QuickBASIC:
Un ejemplo de como QB64 permite archivos de imagen y audio:

## Extensiones a QBASIC

Los comandos extendidos de QB64 empiezan con un carácter de subrayado para evitar conflictos con cualquier nombre que podría haberse usado en un programa de QuickBASIC. QB64 extiende el lenguaje de varias maneras. Añade nuevos tipos de datos, incluyendo _BIT, _BYTE, _INTEGER64 y _FLOAT, así como tipos de datos sin signo. Los nuevos tipos de datos tienen sufijos tal como los tipos de datos tradicionales de BASIC. QB64 también incluye una biblioteca de audio que permite reproducir los formatos de audio más comunes, incluyendo MP3, Ogg Vorbis, y archivos WAV, además de bibliotecas que ofrecen los usuarios gráficos de resolución más alta que el máximo de 640x480 ofrecido por QuickBASIC, el uso de fuentes tipográficas y el dibujo de imágenes en formatos BMP, PNG y Jpeg, y el uso de 32 bits por pixel en contraste al máximo anterior de 256 colores. El programador no tiene porqué especificar las bibliotecas de programación a incluir puesto que QB64 lo hace automáticamente. El programador tiene la opción de incluir una biblioteca propia mediante el metacomando $INCLUDE, tal como se hacía con QuickBASIC.

## Bibliotecas

Las versiones actuales (y futuras) integran FreeGLUT para gráficos y texto.
Una rama de desarrollo alojada en GitHub se actualiza con frecuentes adiciones y correcciones del código fuente.
QB64 también puede usar archivos DLL para Windows, funciones y comandos de C++ mediante un bloque de DECLARE LIBRARY. Los usuarios también pueden acceder a archivos de cabecera para ejecutar funciones de C.