BBC BASIC
BBC BASIC ist eine Programmiersprache, die 1981 als eine native Programmiersprache für den 6502-basierten Acorn BBC Micro Heimcomputer, hauptsächlich von Sophie Wilson, entwickelt wurde. Es ist eine Version der BASIC-Programmiersprache, adaptiert für ein britisches Computerbildungsprojekt der BBC.
BBC BASIC ist aufgebaut auf dem älteren Atom BASIC (für den Acorn Atom) und erweitert das traditionelle BASIC mit benannten Prozeduren und Funktionen, REPEAT-UNTIL-Schleifen und IF-THEN-ELSE-Strukturen, inspiriert von der Programmiersprache COMAL. Der Interpreter enthält auch Anweisungen, um BBC Micros Vier-Kanal-Tonausgabe und seine hochauflösende Bildschirmausgabe zu steuern.
Eine der herausragenden Funktionen von BBC BASIC war ein inline-Assembler, der es dem Benutzer erlaubte, prozessorspezifische (6502-)Programme zu schreiben. Dieser Assembler war vollständig in den BASIC-Interpreter integriert und konnte auf seine Variablen zugreifen. Das erlaubte Entwicklern, nicht nur direkt im Assembler-Code zu schreiben, sondern auch BASIC-Programme zu verfassen, die ihrerseits zur Laufzeit Assembler-Code erzeugten. So konnte man auch einfache Compiler in BASIC schreiben.
Das Erscheinen der Acorn Archimedes Computerreihe (1987) und damit einhergehend RISC OS führte auch beim BBC BASIC, hier Basic V genannt, zu einer Weiterentwicklung, die es einen Sprachstandard erreichen ließ, der es auf das Level einer modernen, funktionalen Sprache ähnlich Pascal hebt. Neuerungen sind u. a. eine Erweiterung des Schleifenkonzepts mittels WHILE, eine Fallunterscheidung mit CASE-OF-WHEN-OTHERWISE-ENDCASE, ein Bibliothekskonzept über LIBRARY, eine Fehlerbehandlung auf Prozedurenebene, eine flexibilisierte Datenübergabe mittels LOCAL DATA und einem RESTORE, welches absolut und relativ benutzbar ist sowie die Möglichkeit lokaler Arrays und direkter Array-Operationen, z. B. um Matrizenmultiplikationen ausführen zu können, etwa für 3D Grafiken. Des Weiteren gibt es verbesserte Unterstützung von Sound und Grafik sowie Mauseingabe.
BBC BASIC wurde auf viele verschiedene Computerplattformen portiert und ist verfügbar z. B. unter CP/M, für die Amstrad NC100 und NC200 Padcomputer, den Cambridge Z88; aber auch für DOS und Windows und viele weitere existieren Versionen.<ref name="bbcbasicUK">http://www.bbcbasic.co.uk/bbcbasic.html</ref> Mit Brandy BASIC gibt es eine unter der GPL stehende, frei verfügbare und gut portable Version.<ref name="BrandyBasic">https://sourceforge.net/projects/brandy/</ref>
Seit 2018 steht der Sourcecode<ref name="ROOL-CVS"><templatestyles src="Webarchiv/styles.css" />Archivierte Kopie ( vom 9. November 2018 im Internet Archive)</ref> der aktuellen Version bei ROOL unter einer Apache-Lizenz und inkl. Dokumentation<ref name="RISCOSCOM-BasicManual">https://www.riscos.com/support/developers/bbcbasic/index.html</ref><ref name="RISCOSCOM-BasicIndex">https://www.riscos.com/support/developers/manual_index/basic.html</ref><ref name="MikeWilliams-BasicV">https://www.riscos.com/support/developers/basicv/index.htm</ref> zur Verfügung.
Mit RISC OS Pico<ref name="ROOL-RISCOS-Pico">https://www.riscosopen.org/wiki/documentation/show/Software%20information:%20RaspberryPi:%20RC5%20RISC%20OS%20Pico</ref> kann ein Raspberry Pi direkt in ein BBC BASIC gebootet werden; optimal um etwa Gerätesteuerungen oder Makerprojekte einfach und schnell umzusetzen, oder auch nach klassischem Muster einen "Homecomputer on Speed" nachzubilden. BBC BASIC ist aber auch Bestandteil jeder anderen aktuellen RISC OS Installation und eignet sich auch im 21. Jahrhundert immer noch für allererste und erweiterte Programmiererfahrungen.<ref>https://www.riscosbasic.uk/ kleine anschauliche Grafikroutinen mit Quellcodes</ref>
Das Projekt 'BBC Basic for SDL'<ref>https://www.bbcbasic.co.uk/bbcsdl/ Projektseite von 'BBC BASIC for SDL 2.0'</ref> verbindet die hohe Geschwindigkeit der Grafikausgabe von Simple DirectMedia Layer mit den Eigenschaften von BBC BASIC.<ref>http://www.proggies.uk/bbcsdl/index.html Webseite mit Beispielprogrammen für 'BBC Basic for SDL'</ref>
Einzelnachweise
<references />