La versión 1.18 de ugBASIC y UGBASIC-IDE acaba de ser lanzada, ampliando su alcance dentro del mundo de la programación retro. Esta actualización no solo pule numerosos detalles técnicos —incluyendo optimizaciones de espacio y tiempo— sino que también suma compatibilidad con cinco ordenadores clásicos adicionales, entre ellos:
- Commodore 16 (C16)
- Dragon 32 y 64 (D32B, D64B)
- Tandy CoCo 1, 2 y 3 (COCOB, COCO3B)
Estos últimos incorporan el procesador Hitachi 6309, para el cual se han añadido mejoras y optimizaciones específicas.
Nuevas capacidades de compilación y soporte ampliado
La versión 1.18 detalla nuevas reglas de compilación condicional, permitiendo escribir ensamblador específico para 11 CPUs distintas y generar código adaptado a diversos chipsets mediante la directiva OPTION COMPILE ON.
Además, se incorpora el soporte preliminar para las “copper lists”, rutinas ejecutadas siguiendo el raster de la pantalla para lograr efectos visuales avanzados mientras corre el programa principal. Por ahora, esta función está disponible en los targets: Atari, Atari XL, C64, C64REU y C128.
También llega el soporte inicial para el comando CHAIN, que permite encadenar la ejecución de otro programa ugBASIC desde el mismo medio de almacenamiento.
Nuevos tipos de datos y mejoras en el lenguaje
El lenguaje se expande con el nuevo tipo de dato NUMBER, capaz de almacenar enteros de longitud arbitraria (hasta 127 bytes en big-endian y 255 bytes en little-endian).
Las estructuras definidas con TYPE ahora pueden incluir campos SPRITE y MSPRITE, y se añaden funciones para calcular MAX y MIN en arreglos.
Para depuración, se puede activar la verificación de límites de arrays en tiempo de ejecución con la directiva OPTION ARRAY CHECK.
Memoria expandida y optimización gráfica
Quienes programen en Commodore 64 ahora pueden almacenar datos de instrucciones DATA directamente en la memoria REU, permitiendo crear programas enormes sin la clásica barrera de los 64 KB. También se añade compatibilidad con expansiones geoRAM en C64 y C128.
La actualización introduce la directiva DEFINE GET / PUT IMAGE para habilitar o deshabilitar interrupciones durante rutinas de dibujo, mejorando el rendimiento gráfico. Las figuras circulares (como CIRCLE y ELLIPSE) han sido optimizadas, así como las rutinas de impresión, que ahora pueden acelerarse desactivando la interpretación de comandos mediante DEFINE PRINT.
Incluso las operaciones de incremento y decremento en multitarea reciben un impulso significativo en velocidad.

