Zum Inhalt springen

BBC BASIC

aus Wikipedia, der freien Enzyklopädie

Vorlage:Hinweisbaustein

Datei:Hard reset BBC Micro 32K Acorn DFS.gif
BASIC-Eingabeaufforderung ("prompt") auf dem BBC Micro nach einem Reset

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.

Datei:RISCOSBasicV.png
BasicV auf einem RaspberryPi unter RISC OS

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" />{{#if:20181109140909

      | {{#ifeq: 20181109140909 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20181109140909}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20181109140909}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }} (Memento{{#if: {{#if:  | {{{archiv-bot}}} |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: Archivierte Kopie | {{#invoke:WLink|getEscapedTitle|Archivierte Kopie}} | {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access}} }}  
                 }}}}}}}}{{#if:
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20181109140909|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|https://www.riscosopen.org/content/downloads/cvs-access}}
    || {{#if:  || }}
  }}{{#if: Archivierte Kopie
    | {{#if: {{#invoke:WLink|isBracketedLink|Archivierte Kopie}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|https://www.riscosopen.org/content/downloads/cvs-access%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|https://www.riscosopen.org/content/downloads/cvs-access%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|https://www.riscosopen.org/content/downloads/cvs-access }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</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 />