BBC BASIC es una versión del lenguaje de programación BASIC lanzado en 1981 como el lenguaje de programación nativo para la computadora personal / doméstica BBC Micro , que proporciona un lenguaje estandarizado para un proyecto de alfabetización informática de la BBC en el Reino Unido . [1] Fue escrito principalmente por Sophie Wilson .
Apareció por primera vez | 1981 |
---|---|
Lanzamiento estable | 5.90b |
SO | Tecnología BBC Micro MOS 6502 RISC OS ZX Spectrum CP / M DOS Microsoft Windows TI-83 Plus y TI-84 Plus |
Licencia | Apache 2.0 (RISC OS) Propietario (Windows) |
Sitio web | www www |
Influenciado por | |
BÁSICO , Átomo BÁSICO , BCPL |
BBC BASIC, basado en el más viejo átomo básico para el Acorn Atom , extendió contemporáneos microordenador básico con el nombre DEF PROC
/ DEF FN
procedimientos y funciones, REPEAT UNTIL
bucles y IF THEN ELSE
estructuras inspiradas en COMAL . El intérprete también incluyó declaraciones para controlar la salida de sonido de cuatro canales de BBC Micro y su pantalla gráfica de ocho modos de baja / alta resolución.
Debido a una serie de optimizaciones, BBC BASIC ejecutó programas mucho más rápido que Microsoft BASIC ejecutándose en máquinas similares. Las optimizaciones incluyeron el uso de múltiples listas vinculadas para la búsqueda de variables en lugar de una sola lista larga, predefinir la ubicación de las variables enteras y tener rutinas matemáticas enteras separadas. La velocidad se mejoró aún más en la máquina BBC mediante el uso de RAM rápida , lo que permitió que el procesador MOS Technology 6502 y el controlador de pantalla Motorola 6845 compartieran memoria sin detenerse para acceder. [a] Como resultado de estas características de diseño, BBC BASIC ejecutó el Creative Computing Benchmark de David Ahl en 21 segundos, superando incluso a la computadora personal de IBM y superando con creces a la mayoría de las otras plataformas de 8 bits. [2] Las únicas computadoras comerciales BASIC de 8 bits que eran tan rápidas como la BBC Micro eran las suecas ABC 80 y ABC 800 . El BASIC 4 mejorado del BBC Master ejecuta el mismo punto de referencia en unos siete segundos. [ cita requerida ]
Una de las características únicas de BBC BASIC era el ensamblador en línea , que permitía a los usuarios escribir programas en lenguaje ensamblador para el 6502 y, más tarde, el Zilog Z80 , NS32016 y ARM . El ensamblador estaba completamente integrado en el intérprete BASIC y compartía variables con él, que podían incluirse entre los caracteres [y], guardarse mediante * SAVE y * LOAD, y llamarse mediante los comandos CALL o USR. Esto permitió a los desarrolladores escribir no solo código en lenguaje ensamblador, sino también código BASIC para emitir lenguaje ensamblador, haciendo posible usar técnicas de generación de código e incluso escribir compiladores simples en BASIC.
Historia
En 1978, Hermann Hauser y Chris Curry fundaron Acorn Computers . Gran parte del código fue desarrollado en la Universidad de Cambridge por Sophie Wilson [3] y sus colegas. [4]
Plataformas y versiones
BBC Micro
Historial completo disponible aquí: [5]
BASIC I, la versión original, se envió en los primeros BBC Micros .
BASIC II se usó en Acorn Electron y BBC Micros enviados después de 1982, incluido el Modelo B. Agregó las palabras clave OPENUP
y OSCLI
, junto con el ensamblaje de compensación y la corrección de errores.
BASIC III, se produjo tanto en una versión del Reino Unido como en una versión para el mercado de los Estados Unidos para el intento fallido de Acorn de ingresar al mercado de computadoras a través del Atlántico. Aparte de algunas correcciones de errores, el único cambio de BASIC II fue que el COLOUR
comando también se podía escribir COLOR
: independientemente de cuál se ingresara, la versión del Reino Unido siempre lo enumeraba como COLOUR
, la versión de EE COLOR
. UU . Como . 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 conocida como CMOS BASIC, disponible en los BBC Maestro máquinas, fue cambiado a utilizar las nuevas instrucciones disponibles en el procesador 65SC12, reduciendo el tamaño del código y por lo tanto permitiendo la inclusión de LIST IF
, EXT#
como una declaración, EDIT
, TIME$
, ON PROC
, | en VDU
declaraciones y punto flotante más rápido. Se volvieron a incluir correcciones de errores.
BASIC IV (1986) fue una mejora adicional a BASIC IV, y se incluyó en la máquina Master Compact. La versión de BASIC en el Compact incluía rutinas matemáticas recodificadas, que se dice que proporcionan un aumento de velocidad del 30% con respecto a la versión incluida en el resto de la serie Master. [6]
HI-BASIC: estaba disponible en dos versiones, la primera basada en BASIC III y la segunda basada en BASIC IV. Ambos se construyeron para ejecutarse desde una dirección superior (& 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 el 6502 Second Processor externo o interno. Se introdujo una versión para admitir un segundo procesador Zilog Z80. [7]
Otra versión de BBC BASIC, llamada BAS128, se suministró en cinta y disco con BBC Master y Master Compact; se cargó en la RAM principal y usó los 64 kB de RAM lateral para los programas de usuario. Esto proporcionó soporte para programas mucho más grandes a costa de ser mucho más lento que la versión normal basada en ROM.
El intérprete puede trabajar con lenguaje ensamblador tanto BASIC como 6502, que se puede incluir entre los caracteres [y]. Esto contribuyó a la popularidad del sistema entre los ingenieros industriales y de investigación. [8]
Más detalles / Determinación de la versión BÁSICA
Como BBC MOS y RISC OS generalmente se suministraban en ROM, se puede suponer que una versión específica del sistema operativo contenía una versión específica de BASIC. Como tal, no hay una forma sencilla de determinar qué versión de BASIC se está ejecutando realmente más que preguntando la identidad del sistema operativo y haciendo así una suposición.
Tenga en cuenta que todos los electrones, y las microcomputadoras BBC posteriores, tienen BASIC2: las microcomputadoras 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 se haya iniciado BASIC (después de BREAK o * BASIC), se imprimirá el mensaje de copyright. Si la fecha es 1981, se ajusta BASIC1; si es 1982, tienes BASIC2. Las máquinas americanas, o aquellas con un segundo procesador, pueden tener US BASIC o HIBASIC: las rutinas ROM no estarán en el mismo lugar para estas ROMS.
- GUÍA BÁSICA DEL USUARIO DE ROM
Osbyte y 00 (0)Identifique la versión del sistema operativo (consulte OSBYTE y 81 para obtener más información sobre la identificación del sistema operativo)
Parámetros de entrada:
X = 0 Ejecute BRK con un mensaje que indique la versión del SO
X <> 0 RTS con la versión del SO devuelta en X
Al salir:
X = 0, OS 1.00 o Electron OS 1.00
X = 1, OS 1.20 o American OS
Osbyte & 81 (129)
Parámetros de entrada:
X = 0
Y = & FF
Al salir:
X = 0 BBC OS 0.1
X = 1 Electron OS 1.00
X = & FF BBC OS 1.00 o OS 1.20
X = & FE US BBC OS 1.20etc.
Ejemplo de comando INKEY (-256)
, para evitar que el comando * SHADOW altere un modelo Electron o BBC modelo B estándar, mientras lo ejecuta en un B + o Master / Compact, puede usar
IF INKEY (-256)> 1 THEN * SHADOW1
Valores devueltos :
0 = BBC B con el antiguo SO 0.10 (obsoleto!)
-1 = BBC B con el nuevo SO 1.00+ (incluido 1.20)
1 = Electron
251 = BBC B + 64/128
253 = Master
128245 = Compact
160 = Archimedes Arthur OS ( obsoleto)
161 = RISC OS 2.00
162 = RISC OS 2.01
- Guía de usuario avanzada de Acorn Electron
Ver también BeebWiki entrada 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, será & 800 si se usa el segundo procesador. Para distinguir entre BASIC e HIBASIC, se debe examinar el valor inicial de HIMEM. Este será & 8000 para BASIC ejecutándose en el segundo procesador y & B800 para HIBASIC en el segundo procesador.
Existe una situación similar en RISC OS donde puede haber el BASIC o BASIC64 normal (que ofrece matemáticas de mayor precisión). El BASIC normal se identifica a sí mismo como "BASIC V" y BASIC64 se identifica como "BASIC VI", por lo tanto, lo siguiente (usado antes de que ocurra cualquier error) distinguirá uno del otro:
SI INSTR ( INFORME $ , "VI" ) ENTONCES IMPRIMIR "BASIC64" ELSE PRINT "BASIC"
Hay mejores formas de hacer esto, consulte BeebWiki . En casi todos los casos, no debería necesitar estar probando en qué BASIC o plataforma se está ejecutando su programa, simplemente realice la llamada y lea los datos devueltos y resuélvalo.
Bellota Arquímedes (RISC OS)
Con el cambio 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 agregaron muchas características nuevas. [9] BASIC V versión 1.04 tenía 61 KB de longitud. Las versiones actuales 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 . [10] En 2011, TBA Software lanzó versiones de prueba de un BASIC actualizado que incluye soporte para VFP / NEON del ensamblador . [11]
Entre los nuevos comandos y funciones admitidos se encuentran:
WHILE-ENDWHILE
IF-THEN-ELSE-ENDIF
CASE-OF-WHEN-OTHERWISE-ENDCASE
,RETURN
parámetros en procedimientos,- matrices locales,
- bibliotecas de procedimientos (
LIBRARY
,INSTALL
yOVERLAY
), LOCAL DATA
yLOCAL ERROR
manipuladores,- un pariente
RESTORE
, - operaciones de matriz ,
- nuevos operadores,
STEP TRACE
,- Comandos para el nuevo sistema de sonido, mouse, gráficos.
Los comandos gráficos eran totalmente compatibles con versiones anteriores, el sonido no lo era tanto; por ejemplo, la ENVELOPE
palabra clave de BASIC V en adelante es un comando que toma catorce parámetros numéricos y efectivamente no hace nada — como en versiones anteriores, llama OS_Word 8, pero eso no hace nada en RISC OS. [12] [13] El ensamblador 6502 en línea fue reemplazado por un ensamblador ARM . Acorn dijo que BASIC V es "ciertamente el BASIC interpretado más rápido del mundo" y "probablemente el BASIC más poderoso que se encuentra 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 de serie en Acorn Archimedes y RiscPC . También estaba disponible una versión de BBC BASIC V para ejecutarse en el segundo procesador ARM del BBC Micro.
Un compilador para BBC BASIC V fue producido por Paul Fellows, líder del equipo de desarrollo de Arthur OS, 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 integridad, pudo admitir la sintaxis del ensamblador en línea. El compilador se escribió en BBC BASIC V. El compilador (que se ejecutaba bajo el intérprete en las primeras etapas de desarrollo) fue capaz de compilarse a sí mismo, y las versiones que se distribuyeron eran código objeto autocompilado. [ investigación original? ] Muchas aplicaciones escritas inicialmente para ejecutarse bajo el intérprete se beneficiaron del aumento de rendimiento que esto proporcionó, colocando a BBC BASIC V a la par con otros lenguajes para el desarrollo de aplicaciones serias.
Otras plataformas
BBC BASIC también se ha adaptado a muchas otras plataformas. [14]
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. Hasta hace poco, no existía ninguna versión para Sinclair ZX Spectrum ; sin embargo, debido a los esfuerzos de J. G. Harston (también responsable de una versión PDP-11 [15] ), BBC BASIC para Spectrum fue lanzado en enero de 2002, con muchas mejoras realizadas en versiones posteriores.
También se utilizó una versión Zilog Z80 de BBC BASIC en la computadora de escritorio Tiki 100 , la portátil Cambridge Z88 y las computadoras portátiles Amstrad NC100 Notepad y Amstrad NC200 . Esta versión se ha implementado en las calculadoras gráficas de las series TI-83 Plus y TI-84 Plus .
Para los sistemas basados en PC , BBC BASIC también se implementó para DOS como BBCBASIC (86) , que buscaba la máxima compatibilidad con BBC Micro, y BBasic , que se concentraba 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 para Windows creada por Richard Russell , desarrollador de las versiones Z80 y x86, fue lanzada en 2001. Esta versión aún está en desarrollo activo, y actualmente se usa mucho en la industria. Si bien admite casi por completo la especificación BBC BASIC original (BASIC IV), la versión de Windows admite gran parte de la sintaxis BASIC V / VI, así como algunas características avanzadas propias. Las características exclusivas de BBC BASIC para Windows incluyen soporte de intérprete para tipos de registro / estructura y la capacidad de llamar a rutinas API de Windows o aquellas en una DLL externa . Las versiones recientes han incluido funciones avanzadas comparables con lenguajes como C , y una biblioteca externa ha agregado recientemente soporte para objetos. Una versión basada en SDL de BBC BASIC está disponible en Windows, Linux y varios dispositivos móviles compatibles con la biblioteca SDL.
También está disponible un clon GPL de BBC BASIC llamado Brandy , escrito en C portátil . [16] [17] [18] [19] [20]
Ariadne Software para CBM (Reino Unido) produjo un emulador de BBC Micro para Commodore Amiga . Aunque es extremadamente rápido, no emulaba el 6502 a toda velocidad, por lo que el código ensamblador se ejecutaría más lento que un BBC real, mientras que los programas BASIC se ejecutarían mucho más rápido. Debido a la forma en que interactuaron el BASIC optimizado y la emulación 6502, casi no se ejecutarían juegos comerciales (pero el código de buen comportamiento y el software educativo generalmente funcionaban); además, utilizó 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 viejos BBC B con Amiga 500.
La editorial Computer Concepts de BBC Micro produjo una versión de BBC Basic para Atari ST, llamada Fast ST BASIC , como un cartucho ROM. [21]
Benjamin Ryves también ha creado una versión de BBC BASIC V (Z80) para las familias de calculadoras TI-83/84 + Texas Instruments.
Una pequeña empresa de software Aztec Software produjo una versión Commodore 64 de Shado a principios de la década de 1980. [22]
Notas
- ^ En la mayoría de las máquinas de la época, el procesador pasaba hasta un 30% de su tiempo disponible esperando en la memoria.
Referencias
- ^ "BBC Micro enciende recuerdos de revolución" . BBC News . 21 de marzo de 2008 . Consultado el 28 de noviembre de 2010 .
- ^ Ahl, David (marzo de 1984). "Benchmark de Computación Creativa" . Computación creativa . pag. 6.
- ^ "Procesador de video para computadora Acorn / BBC" . BBC News . Consultado el 30 de noviembre de 2010 .
- ^ "BBC Micro enciende recuerdos de revolución" . BBC News . 21 de marzo de 2008 . Consultado el 30 de noviembre de 2010 .
- ^ Lista de versiones de BBC BASIC
- ^ Usuario de Acorn Octubre de 1986 - página 17 {- Revisión de Master Compact
- ^ Smith, Bruce (noviembre de 1984). A & B Computing . 1, Golden Square London: Publicaciones especializadas Argus. pag. 6.Mantenimiento de CS1: ubicación ( enlace )
- ^ Marsh, David (5 de diciembre de 2005). "ARM apunta al dominio automotriz e industrial" . EDN Europa . Consultado el 1 de agosto de 2012 .
- ^ Roger Wilson (3 de julio de 1989). "BASIC V 1.02 versus 1.04 cambios (¡para Richard LLoyd!)" . Grupo de noticias : eunet.micro.acorn . Usenet: [email protected] . Consultado el 14 de junio de 2011 .
- ^ https://gitlab.riscosopen.org/RiscOS/Sources/Programmer/BASIC/-/blob/master/LICENSE
- ^ Lee, Jeffrey (2 de agosto de 2011). "Tengo noticias viejas para ti" . La barra de iconos . Consultado el 8 de diciembre de 2011 .
El software de TBA se ha mantenido ocupado al lanzar una versión de prueba de un BBC BASIC actualizado con soporte de ensamblador VFP / NEON.
- ^ http://lists.cloud9.co.uk/pipermail/bbc-micro/2006-November/000257.html
- ^ http://mdfs.net/Archive/BBCMicro/2006/11/19/185014.htm
- ^ BBC BASIC - MDFS :: Software. $. BBCBasic
- ^ BBC BASIC para PDP-11
- ^ Williams, Chris (6 de diciembre de 2003). "BASIC V para Unix, DOS, Windows y RISC OS: hablamos con el autor Dave Daniels sobre el espíritu de Brandy BASIC" . Drobe . Consultado el 6 de julio de 2011 .
Brandy BASIC es un intérprete de BASIC V que ha sido compilado para RISC OS, NetBSD / arm32, NetBSD / i386, Linux, DOS y Windows.
- ^ Daniels, Dave. "Brandy Basic" . Mundo RISC . Consultado el 6 de julio de 2011 .
Brandy es un intérprete portátil para BBC Basic, es decir, permite desarrollar y ejecutar programas escritos en BBC Basic en otros equipos que no ejecutan RISC OS.
- ^ "Brandy" . Archivado desde el original el 17 de julio de 2011 . Consultado el 6 de julio de 2011 .
- ^ "Intérprete Brandy Basic V" . Consultado el 6 de julio de 2011 .
- ^ "Matrix Brandy BBC Basic V con SDL y teletexto para Linux" . Consultado el 4 de agosto de 2018 .
- ^ "Fast BASIC por Computer Concepts" . RetroGames .
- ^ http://mdfs.net/Software/BBCBasic/C64/
enlaces externos
- Página web oficial
- http://www.rtrussell.co.uk/products/
- http://mdfs.net/bbcbasic/
- Implementación de TI-83 + y TI-84 + de BBC BASIC
- El sitio de los usuarios de Amstrad NC
- Guía de programación de libros electrónicos con métodos de interfaz
- Manual de referencia de BBC BASIC (para RISC OS)
- Guía del usuario de microcomputadoras de la BBC (HTML)
- Guía del usuario de microcomputadoras de la BBC (PDF)
- Código Python vs BBC Basic para Windows
- RT Russell's Z80 BBC Basic ahora es de código abierto en GitHub