# BBC BASIC

BBC BASIC es un lenguaje de programación, desarrollado en 1981 como un lenguaje de programación nativo para el Acorn BBC Micro, un ordenador doméstico con CPU MOS Technology 6502, principalmente por Sophie Wilson. Es una adaptación del lenguaje BASIC para el Proyecto de Alfabetización Informática de la BBC en el Reino Unido durante los década de 1980.
El BBC BASIC se basa en el viejo Atom BASIC (para el Acorn Atom), ampliado el tradicional BASIC con procedimientos y funciones nombrados, bucles REPEAT-UNTIL, y estructuras IF-THEN-ELSE inspiradas en COMAL. El intérprete incluía también poderosas sentencias para manejar las cuatro salidas de audio del BBC Micro y su pantalla de alta resolución.
Una de las características únicas del BBC BASIC es la presencia de un ensamblador en línea que permite a los usuarios escribir código ensamblador 6502 en sus programas. El ensamblador se integró plenamente en el intérprete BASIC y compartía variables con él. Esto permitió a los desarrolladores escribir, no sólo el código en lenguaje ensamblador, sino combinar código BASIC con ensamblador, por lo que es posible utilizar técnicas de generación de código, e incluso escribir simples compiladores en BASIC.

## Plataformas y versiones
### BBC Micro

* BASIC I la versión original, iba incluida con los primeros BBC Micro.
* BASIC II se utilizó en el Acorn Electron y en los BBC Micro enviadas después de 1982, incluyendo el BBC B+. Añadió las palabras clave OPENUP y OSCLI, junto con el direccionamiento en ensamblador y correcciones de errores.
* BASIC III, se produjo en dos versiones, una para el Reino Unido y otra para Estados Unidos para el fracasado intento de Acorn por introducirse en ese mercado. Aparte de algunas correcciones de errores, el único cambio de BASIC II es que el comando COLOUR también puede ser escrito COLOR: independientemente de lo que se haya escrito, la versión inglesa lo lista como COLOUR, y la norteamericana como COLOR. El principal lugar en que puede encontrarse BASIC III es en la versión de HI-BASIC para el segundo procesador externo.
* BASIC IV, también conocido como CMOS BASIC, estaba disponible en los BBC Master y Master Compact, fue cambiado para usar las nuevas instrucciones disponibles en el microprocesador 65SC12, reducir el tamaño del código y, por tanto, permitir la inclusión de LIST IF, EXT# como una declaración, EDIT, TIME$, ON PROC, | en declaraciones VDU y operaciones en coma flotante más rápidas. Nuevamente se incluyen correcciones de errores.
* HI-BASIC: está disponible en dos versiones, la primera basada en BASIC III, y la segunda basada en BASIC IV. Ambas fueron construidas para ejecutarse a partir de una dirección superior (B800) para permitir que más espacio de programa esté disponible para los segundos procesadores 6502 internos o externos.
Otra versión de BBC BASIC, llamada BAS128, se suministra en cinta y disco con los BBC Master y Master Compact; se carga en la memoria RAM principal y usa los 64 Kilobytes de la Sideways RAM para programas de usuario. Esto proporcionó soporte a programas mucho más grandes a costa de ser mucho más lento que la versión basada en ROM.

### Acorn Archimedes (RISC OS)

Con el paso a los 32 bits de la CPU ARM y la eliminación del límite de 16 KB para el código de BASIC permite que se añadan muchas nuevas características. BASIC V versión 1.04 tiene un tamaño de 61 KB.
Algunos de los nuevos comandos y características soportadas son:
* WHILE-ENDWHILE
* IF-THEN-ELSE-ENDIF
* CASE-OF-WHEN-OTHERWISE-ENDCASE,
* RETURN parameters in procedures,
* arrays locales
* librerías de procedures (LIBRARY,INSTALL y OVERLAY),
* manejadores LOCAL DATA y LOCAL ERROR,
* RESTORE relativo,
* operaciones con array,
* nuevos operadores,
* STEP TRACE,
* Comandos para el nuevo sistema de sonido, ratón, gráficos.
Los comandos gráficos eran totalmente compatibles hacia atrás, algo menos el sonido (por ejemplo, la palabra clave ENVELOPE desde BASIC V es un comando que tiene catorce parámetros numéricos y efectivamente no hace nada - como en versiones anteriores, llama a OS_Word 8, pero no hace nada en RISC OS. El ensamblador en línea de 6502 es reemplazado por ensamblador ARM. Acorn dijo de BASIC V que sería "sin duda el más rápido BASIC interpretado del mundo" y "probablemente el más poderoso BASIC presente en cualquier equipo".
Y lo demostraron en la práctica. Mientras que los programas de morphing en el resto de plataformas estaban escritos en ensamblador o C, cuando el Risc PC se muestra en el SIMO, corre un programa de este tipo que podía interrumpirse a voluntad para listar el código, sin que se apreciara retraso alguno.
BASIC VI es una versión de BASIC V que soporta el formato de 8 bytes para los números reales (de acuerdo con el estándar IEEE 754) a diferencia de los 5 bytes utilizados desde BASIC I.
BBC BASIC V y VI se entregaban de serie con los Acorn Archimedes y el Risc PC.
Las versiones actuales de RISC OS todavía incluyen un intérprete de BBC BASIC.
El código fuente de la versión de BBC BASIC para RISC OS 5 ha sido liberado recientemente como 'shared source' por RISC OS Open.

### Otras plataformas

BBC BASIC también ha sido portado a muchas otras plataformas.
Además de la versión de BBC BASIC entregada con el segundo procesador Zilog Z80 para el BBC Micro, existe una versión para CP/M sobre Z80. Hasta hace poco no existía versión para el Sinclair ZX Spectrum, sin embargo gracias al esfuerzo de J.G Harston (también responsable de la versión para PDP-11), BBC BASIC for the spectrum se lanzó en enero de 2002 con muchas mejoras en las versiones posteriores.
Una versión de BBC BASIC para Zilog Z80 se había utilizado en el ordenador de sobremesa Tiki 100 y los notebooks Cambridge Z88, Amstrad NC100 y Amstrad NC200. Esta versión se ha implementado en las calculadoras gráficas TI-83 Plus y TI-84 Plus.
Para los PCs, BBC BASIC se implementó para DOS como BBCBASIC (86) (cuyo objetivo era la máxima compatibilidad con el BBC Micro) y BBasic (que se centraba en el lenguaje BASIC, con sus propias mejoras basadas en BASIC II).
Una versión de BBC BASIC integrada con la interfaz gráfica de usuario de Microsoft Windows, BBC BASIC for Windows creada por Richard Russell (quien también desarrolló las versiones para Z80 y x86), fue lanzada en 2001. Esta versión está aún en fase de desarrollo activo, debido a que se usa mucho hoy en día. Mientras que soporta casi completamente la especificación original del BBC BASIC (BASIC IV), la versión para Windows soporta muchos de la sintaxis de BASIC V/VI así como algunas características avanzadas propias.
Características exclusivas del BBC BASIC para Windows incluyen soporte del intérprete para tipos record/structure, y la habilidad de pode llamar rutinas del API de Windows o las rutinas en una DLL externa. Recientes versiones han incluido funciones avanzadas comparables con lenguajes como C.
Un clon de BBC BASIC bajo licencia GPL llamado Brandy escrito en C portable también existe.
Un emulador del BBC Micro para el Commodore Amiga fue producido por Ariadna Software para CBM. A pesar de ser muy rápido, no emula el 6502 a velocidad completa por lo que el ensamblador corre más lento que en un BBC real mientras que los programas BASIC irían mucho más rápidos por desgracia, debido a la forma en que el Basic optimizado y la emulación 6502 interactúan, casi ningún juego comercial se ejecutaría (pero el software educativo generalmente funciona); además utiliza un formato numérico de coma flotante menos optimizado. Durante un tiempo fue incluido con un paquete académico especial del Commodore Amiga 500, con la esperanza de que las escuelas reemplazaran sus envejecidos BBC Micro por Amiga 500.