BBC BASIC es una versión interpretada del lenguaje de programación BASIC . Fue desarrollado por Acorn Computers Ltd cuando la BBC los seleccionó para suministrar el ordenador para su BBC Literacy Project en 1981.
Originalmente se suministraba en una ROM instalada para el microordenador BBC , que utilizaba un microprocesador 6502. Cuando Acorn produjo el ordenador Archimedes , que utilizaba su procesador ARM , se produjeron más versiones de BBC BASIC. Acorn incluía un ensamblador integrado , primero para el 6502 y después para el procesador ARM2 .
Inicialmente, la BBC especificó la compatibilidad con Microsoft BASIC . Acorn ya estaba ampliando su anterior Atom BASIC para incluir construcciones de programación estructurada . Particularmente en las computadoras Archimedes posteriores, a medida que se reducían las limitaciones de memoria, BBC BASIC incorporó un conjunto más completo de construcciones de programación estructurada que se encuentran comúnmente en el grupo de lenguajes de computadora ALGOL 60 .
Junto con la versión de BBC BASIC de Acorn para Archimedes, otras empresas produjeron versiones compiladas del lenguaje. El desarrollo y el soporte han continuado después de la desaparición de Acorn Computers Ltd para los nuevos ordenadores basados en ARM. BBC BASIC está ahora disponible en otras plataformas, ya sea para emuladores como MS Windows o de forma nativa.
Antes de 1957, la programación se hacía mediante código de máquina o código ensamblador . Estos eran específicos de un procesador y no eran portátiles.
Luego se desarrollaron lenguajes de programación de alto nivel para permitir que los programas se transfirieran más fácilmente entre computadoras:
Durante el período 1960-1980 se desarrollaron muchos más lenguajes informáticos, pero pocos de ellos se utilizan actualmente. Los más conocidos fueron ALGOL W [6] de la Universidad de Stanford , Pascal [7] [8] y POP-2 [9] de la Universidad de Edimburgo .
K&R C [10] fue diseñado como el lenguaje para escribir el sistema operativo UNIX . Se formalizó como ANSI C [11] [12], del que luego se derivaron C++ y JAVA .
En el Dartmouth College, dos profesores de matemáticas [13] querían que todos los estudiantes pudieran programar en su nuevo ordenador. Los lenguajes de alto nivel existentes eran utilizados por profesionales. En 1964 crearon Dartmouth BASIC [14] (abreviatura de Beginner ’s All -Purpose Symbolic Instruction Code ) para que fuera un lenguaje informático que cualquiera pudiera utilizar. Con una estructura sintáctica basada en fórmulas , es un FORTRAN simplificado.
Juntos, Paul Allen y Bill Gates desarrollaron BASIC para el Altair 8800. El desarrollo continuó hasta convertirse en BASIC A de IBM y BASIC de Microsoft . [15]
Durante la década de 1970, el Departamento de Educación Continua de la BBC estaba considerando cómo los avances en la tecnología informática impactarían en la sociedad británica. Su Informe sobre Microelectrónica [16] de 1979 a la Comisión de Servicios de Mano de Obra describe formalmente sus preocupaciones sobre la creciente polarización y alienación en el lugar de trabajo que 43 años antes Charles Chaplin había mostrado con efecto cómico en Tiempos modernos .
La BBC necesitaba un microordenador que pudiera utilizarse para demostraciones de su programación y que pudiera ser adquirido por el público en general para que los espectadores pudieran experimentar por sí mismos. Decidieron que dicho microordenador debía ser robusto, tener capacidades de expansión y una implementación de BASIC compatible con Microsoft BASIC VN5 . [17]
El gobierno y la BBC pusieron en marcha conjuntamente una campaña de concienciación y educación pública. Este Proyecto de Alfabetización Informática (1980-1989) [18] utilizó el microordenador BBC producido por Acorn Computers Ltd. elegido por la BBC . El BBC BASIC fue fundamental para la experiencia de programación del usuario.
Acorn desarrolló por primera vez System BASIC y Atom BASIC para sus primeras computadoras con microprocesador 6502 [19] que se vendieron a clientes que las armaban en kit. Con el desarrollo del Proton como procesador front-end , Acorn estaba diseñando para una computación más potente.
Para producir un ordenador que cumpliera las especificaciones de la BBC, el Proton se convirtió en el microordenador BBC, que se podía utilizar como ordenador independiente. Al conservar la capacidad de conectarse a un ordenador Z80 , Acorn pudo cumplir con el requisito de un ordenador compatible con CP/M . [20]
Sophie Wilson desarrolló las implementaciones de BASIC en Acorn. [21] El dialecto de la microcomputadora BBC se volvió compatible con Microsoft BASIC y, por lo tanto, fue aceptado por la BBC. Ya tenía características del grupo de lenguajes informáticos ALGOL 60 que Wilson agregó para permitir el uso de cierta metodología de programación estructurada.
La lista completa de versiones está disponible aquí: [22]
BASIC I, la versión original, se envió en los primeros BBC Micros .
BASIC II se utilizó en los Acorn Electron y BBC Micros comercializados después de 1982, incluido el Modelo B. Añadió las palabras clave OPENUP
y OSCLI
, junto con el ensamblaje de compensación y correcciones de errores. [23]
BASIC III se produjo en una versión para el Reino Unido y otra para el mercado de los Estados Unidos para el intento fallido de Acorn de entrar en el mercado de ordenadores transatlántico. Aparte de unas cuantas correcciones de errores, el único cambio con respecto a BASIC II era que el COLOUR
comando también se podía escribir COLOR
: independientemente de lo que se ingresara, la versión del Reino Unido siempre lo indicaba como COLOUR
, la versión de los Estados Unidos como COLOR
. El lugar principal donde se puede encontrar BASIC III es como la versión HI-BASIC para el segundo procesador externo.
BASIC IV, también conocido como CMOS BASIC, disponible en las máquinas BBC Master , fue modificado para utilizar las nuevas instrucciones disponibles en el procesador 65SC12, reduciendo el tamaño del código y permitiendo así la inclusión de LIST IF
, EXT#
como sentencia, EDIT
, TIME$
, ON PROC
, | en VDU
sentencias y un punto flotante más rápido. Se incluyeron nuevamente correcciones de errores.
BASIC IV (1986) fue una mejora adicional de BASIC IV y se incluyó en la máquina Master Compact. La versión de BASIC en la Compact incluía rutinas matemáticas recodificadas, que se decía que proporcionaban un aumento de velocidad del 30% con respecto a la versión incluida en el resto de la serie Master. [24]
HI-BASIC estaba disponible en dos versiones, la primera basada en BASIC III y la segunda basada en BASIC IV. Ambas fueron diseñadas para ejecutarse desde una dirección más alta (&B800) en el segundo procesador, en lugar de la dirección &8000 habitual en el BBC B. Esto permitió que hubiera más espacio de programa disponible en los segundos procesadores 6502 externos o internos. Se introdujo una versión para soportar un segundo procesador Zilog Z80 . [25]
Otra versión de BBC BASIC, llamada BAS128, se suministraba en cinta y disco con BBC Master y Master Compact; se cargaba en la RAM principal y utilizaba los 64 KB de Sideways RAM para los programas de usuario. Esto permitía trabajar con programas mucho más grandes, pero era mucho más lento que la versión normal basada en ROM.
El intérprete puede trabajar con lenguaje ensamblador BASIC y 6502, que pueden incluirse entre los caracteres [ y ]. Esto contribuyó a la popularidad del sistema entre los ingenieros industriales y de investigación. [26]
Como BBC MOS y RISC OS se suministraban normalmente en ROM, se puede suponer que una versión específica del sistema operativo contenía una versión específica de BASIC. Por lo tanto, no hay una forma sencilla de determinar qué versión de BASIC se está ejecutando realmente, salvo consultar la identidad del sistema operativo y, por lo tanto, hacer una suposición.
Tenga en cuenta que todos los Electrons, y los microordenadores BBC posteriores, tienen BASIC2: los microordenadores BBC anteriores tienen BASIC1. Si no está seguro de qué versión de BASIC está en su máquina, al escribir REPORT después de que BASIC se haya iniciado (después de BREAK o *BASIC), se imprimirá el mensaje de copyright. Si la fecha es 1981, BASIC1 está instalado; si es 1982, tiene BASIC2. Las máquinas estadounidenses, o aquellas con un segundo procesador, pueden tener US BASIC o HIBASIC: las rutinas ROM no estarán en el mismo lugar para estas ROM.
— GUÍA BÁSICA DEL USUARIO DE ROM
Véase también la entrada de BeebWiki para INKEY.
En la familia BBC, es posible ejecutar tanto el BASIC estándar como un HIBASIC mejorado en el segundo procesador 6502. Se puede determinar si el programa se está ejecutando en el segundo procesador examinando el valor inicial de PAGE, que será &800 si se utiliza el segundo procesador. Para distinguir entre BASIC y HIBASIC, se debe examinar el valor inicial de HIMEM. Este será &8000 para BASIC que se ejecuta en el segundo procesador y &B800 para HIBASIC en el segundo procesador.
Existe una situación similar en el sistema operativo RISC , donde puede existir el BASIC normal o el BASIC64 (que ofrece cálculos de mayor precisión). El BASIC normal se identifica a sí mismo como "BASIC V" y el BASIC64 se identifica a sí mismo como "BASIC VI", por lo tanto, lo siguiente (utilizado antes de que se produzca cualquier error) distinguirá a uno del otro:
SI INSTR ( INFORME $ , "VI" ) ENTONCES IMPRIMIR "BASIC64" DE LO CONTRARIO IMPRIMIR "BASIC"
Hay mejores formas de hacer esto. [ ¿según quién? ] Vea BeebWiki. En casi todos los casos, no debería necesitar probar en qué BASIC o plataforma se ejecuta su programa, simplemente haga la llamada y lea los datos que se devuelvan y trátelos. [¿ Investigación original? ]
Con el paso a la CPU ARM de 32 bits y la eliminación del límite de 16 KB en el tamaño del código BASIC se añadieron muchas nuevas características. [27] La versión 1.04 de BASIC V tenía una longitud de 61 KB. Las versiones actuales [ ¿cuándo? ] de RISC OS todavía contienen un intérprete BBC BASIC V. El código fuente de la versión RISC OS 5 de BBC BASIC V ha sido publicado bajo la licencia Apache 2.0 por RISC OS Open .
Entre los nuevos comandos y funciones compatibles se encuentran:
WHILE-ENDWHILE
IF-THEN-ELSE-ENDIF
CASE-OF-WHEN-OTHERWISE-ENDCASE
,RETURN
parámetros en los procedimientos,LIBRARY
, INSTALL
y OVERLAY
),LOCAL DATA
y LOCAL ERROR
manipuladores,RESTORE
,STEP TRACE
,Los comandos gráficos eran totalmente compatibles con versiones anteriores , el sonido no tanto; por ejemplo, la ENVELOPE
palabra clave a partir de BASIC V es un comando que toma catorce parámetros numéricos y no hace nada en realidad (como en versiones anteriores, llama a OS_Word 8, pero eso no hace nada en RISC OS). [28] El ensamblador 6502 en línea fue reemplazado por un ensamblador ARM . Acorn dijo que BASIC V era "sin duda el BASIC interpretado más rápido del mundo" y "probablemente el BASIC más poderoso que se puede encontrar en cualquier computadora".
BASIC VI es una versión de BASIC V que admite números reales en formato IEEE 754 de 8 bytes, a diferencia del formato estándar de 5 bytes introducido en BASIC I.
BBC BASIC V y VI se entregaron como estándar en Acorn Archimedes y RiscPC . También estaba disponible una versión de BBC BASIC V para ejecutarse en el segundo procesador ARM para BBC Micro.
Paul Fellows, líder del equipo de desarrollo de Arthur OS, produjo un compilador para BBC BASIC V, llamado Archimedes BASIC Compiler y publicado inicialmente por DABS Press. [ cita requerida ] ABC pudo implementar casi todo el lenguaje, con la obvia excepción de la función EVAL, que inevitablemente requería interpretación programática en tiempo de ejecución. Como prueba de su completitud, pudo soportar sintaxis de ensamblador en línea. El compilador fue escrito en BBC BASIC V. Muchas aplicaciones inicialmente escritas para ejecutarse bajo el intérprete se beneficiaron del aumento de rendimiento que esto proporcionó, poniendo a BBC BASIC V a la par de otros lenguajes para el desarrollo de aplicaciones serias.
BBC BASIC también ha sido portado a muchas otras plataformas. [29]
Se suministró una versión NS32016 de BBC BASIC con el coprocesador Acorn 32016 y Acorn ABC.
Además de la versión de BBC BASIC suministrada con el segundo procesador Zilog Z80 de BBC Micro , también existe una versión de BBC BASIC basada en Z80 para sistemas basados en CP/M . También se utilizó una versión Zilog Z80 de BBC BASIC en el ordenador de sobremesa Tiki 100 , el portátil Cambridge Z88 y los ordenadores portátiles Amstrad NC100 Notepad y Amstrad NC200 Notebook. Esta versión se ha implementado en las calculadoras gráficas de las series TI-83 Plus y TI-84 Plus . Gracias a los esfuerzos de J. G. Harston (también responsable de una versión PDP-11 [30] ), en enero de 2002 se publicó una versión de BBC BASIC para el ZX Spectrum , con muchas mejoras realizadas en versiones posteriores.
Para los sistemas basados en PC , BBC BASIC también se implementó para DOS como BBCBASIC (86) , que apuntaba a la máxima compatibilidad con BBC Micro, y BBasic , que se concentraba en el lenguaje BASIC, con sus propias mejoras basadas en BASIC II.
En 2001 se publicó una versión de BBC BASIC integrada con la interfaz gráfica de usuario de Microsoft Windows , BBC BASIC para Windows, creada por Richard Russell , desarrollador de las versiones Z80 y x86 . Si bien es compatible casi por completo con la especificación original de BBC BASIC (BASIC IV), la versión para Windows admite gran parte de la sintaxis de BASIC V/VI, así como algunas características avanzadas propias. Las características exclusivas de BBC BASIC para Windows incluyen compatibilidad con intérpretes para tipos de registro/estructura y la capacidad de llamar a rutinas de API de Windows o aquellas en una DLL externa . Las versiones recientes han incluido características avanzadas comparables con lenguajes como C , y una biblioteca externa ha agregado recientemente compatibilidad con objetos.
BBC BASIC para SDL también fue desarrollado por Richard T. Russell, y es en gran medida compatible con el anterior BBC BASIC para Windows, compartiendo con ese dialecto muchas características nuevas y avanzadas, incluyendo estructuras de datos, variables PRIVATE, una sentencia EXIT, cadenas largas, interrupciones de eventos, un operador de dirección, variables de byte, un carácter de continuación de línea, llamadas indirectas a procedimientos y funciones y precisión numérica mejorada. La primera versión fue lanzada en febrero de 2019, y permanece en desarrollo activo a partir de agosto de 2024. [actualizar][ 31] BBC BASIC para SDL 2.0 es compatible con Windows, MacOS, Linux, Raspberry Pi OS, Android, iOS y dispositivos móviles que admiten la biblioteca SDL, [21] así como una versión que permite la ejecución de programas BBC BASIC como applets en una página web a través del marco Web Assembly. Los programas pueden ejecutarse a través del intérprete o compilarse en un paquete de aplicaciones independiente que se ejecutará sin necesidad de instalar BBC BASIC (archivo .exe en Windows, archivo .dmg en MacOS, archivo .zip en Linux o Raspberry Pi OS y archivo .apk en Android). También se conserva un alto grado de compatibilidad con el BBC Microcomputer, incluida la emulación de las instrucciones SOUND y ENVELOPE, y el modo de pantalla MODE 7 (teletexto). BBC BASIC para SDL 2.0 incorpora un ensamblador que depende de la CPU de la plataforma: x86 (32 bits o 64 bits) para Windows, MacOS o Linux; ARM (32 bits o 64 bits) para Raspberry Pi. En el caso de Android, el ensamblador es ARM o x86, según corresponda. Se puede acceder a las funciones de la interfaz de programación de aplicaciones (API) desde BASIC y desde el código ensamblador, lo que permite a un programador experimentado producir aplicaciones sofisticadas.
También está disponible un clon GPL de BBC BASIC llamado Brandy , escrito en C portable . [32] [33] Una bifurcación de éste, Matrix Brandy , sigue en desarrollo activo. [34]
Ariadne Software produjo un emulador de BBC Micro para Commodore Amiga para CBM (Reino Unido). Aunque era extremadamente rápido, no emulaba el 6502 a toda velocidad, por lo que el código ensamblador se ejecutaba más lento que un BBC real, mientras que los programas BASIC se ejecutaban mucho más rápido. Debido a la forma en que interactuaban el BASIC optimizado y la emulación del 6502, casi no se ejecutaban juegos comerciales, pero el código que se comportaba bien y el software educativo generalmente funcionaban. Además, utilizaba un formato numérico de punto flotante ligeramente menos preciso . Durante un tiempo se incluyó con un paquete académico especial del Amiga 500 , con la esperanza de que las escuelas reemplazaran sus antiguas BBC B por Amiga 500.
Benjamin Ryves también ha realizado una versión de BBC BASIC V (Z80) para las familias de calculadoras TI-83/84+ de Texas Instruments .
Una versión de Shado para Commodore 64 fue producida por una pequeña empresa de software, Aztec Software, a principios de los años 1980. [35] También se han ejecutado experimentalmente versiones parcheadas de HI-BASIC basado en 6502 de Acorn en C64, con una interfaz al kernel de C64, reemplazando las llamadas MOS de Acorn que se hacían de otra manera.
También se han hecho esfuerzos para que la versión de BBC BASIC basada en 6502 esté disponible en el Apple II . Applecorn es uno de esos esfuerzos.
BBC BASIC es el lenguaje de programación utilizado en Agon Light, una computadora de placa única y microcontrolador de 8 bits basado en Z80 de código abierto diseñado por Bernardo Kastrup y lanzado en 2022. [36]
REM Acorn Archimedes version ON ERR OR : ON ERR OR OFF : PRINT REPORT$ ; " en la línea " ; ERL : FIN MODE MODE : REM limpia la pantalla PROC _triangle ( 700 , 700 , 500 , 200 , 500 , 900 , "F" ) FIN DEF PROC _triángulo ( x1% , y1% , x2% , y2% , x3% , y3% , relleno$ ) LOCAL triángulo_relleno_gráfico_código% triángulo_relleno_gráfico_código% = &55 MOVER x1% , y1% DIBUJAR x2% , y2% SI relleno$ = "F" ENTONCES TRAZAR triángulo_relleno_gráfico_código% , x3% , y3% SINO DIBUJAR x3% , y3% : DIBUJAR x1% , y1% FINSI FINPROC : REM de PROC_triángulo()