BASCOM, für BASIC compiler stehend, ist eine von Mark Alberts entwickelte Familie von Cross-Compilern, die BASIC mitsamt einigen proprietären Erweiterungen in ausführbare Maschinensprache für mehrere Prozessorarchitekturen für eingebettete Systeme übersetzen kann. Unterstützt werden Mikrocontroller der AVR-Architektur und die MCS-51-Familie. Die Cross-Compiler laufen unter Microsoft Windows und bieten neben der reinen Übersetzungsfunktion auch noch eine Entwicklungsumgebung und Emulatoren der jeweiligen Zielsysteme, die das Testen unter dem Entwicklungssystem erlauben. Ferner stehen Schnittstellen zur Verfügung, die es ermöglichen, den erzeugten Code in die Zielsysteme zu übertragen. Die Cross-Compiler sind nur kommerziell erhältlich. Eine kostenfrei erhältliche Demoversion ist dahingehend eingeschränkt, dass der erzeugte Code nur maximal einen Umfang von vier Kilobyte haben darf. Ansonsten ist die Demo voll funktionsfähig, womit die Bascom-Demoversion somit für einige der kleineren Atmel-Microcontroller (z. B. ATtiny) ausreichend ist, da diese sowieso nur einen kleinen Programmspeicher haben.
BASCOM unterstützt zahlreiche proprietäre Erweiterungen, die den speziellen Anforderungen bei eingebetteten Systemen gerecht werden. Der gegenüber einfacheren BASIC-Varianten deutlich erweiterte Satz elementarer Datentypen umfasst einzelne Bits, die auch als solche repräsentiert werden, ganze Zahlen mit 1, 2 oder 4 Bytes, sowohl mit als auch ohne Vorzeichen und Gleitkommazahlen mit 32 oder 64 Bit entsprechend dem Standard IEEE 754. Die Deklaration von Arrays mit einem elementaren Datentyp ist möglich. Eine spezielle Variante der Arrays sind die ebenfalls bei der Deklaration fest zu dimensionierenden Zeichenketten, die implizit durch ein Byte mit dem Wert 0 terminiert werden.
Da die Zielarchitekturen Gleitkommazahlen selbst nicht unterstützen, erfolgt dies durch eine zu BASCOM gehörende Bibliothek, die insbesondere auch die trigonometrischen Funktionen abdeckt. Die Bibliothek umfasst außerdem für die mehr Speicherplatz bietende AVR-Architektur die Unterstützung von TCP/IP-Sockets und die Ausgabe auf Flüssigkristallbildschirmen.
Ferner ist die Einbettung von Assemblercode in den BASIC-Programmtext möglich. Dies erfolgt entweder durch die Verwendung der entsprechenden Befehlsnamen der Maschinensprache, sofern sie nicht in Konflikt zu den bereits reservierten Wörtern stehen, oder durch das Einbetten der Assembler-Anweisungen in spezielle Schlüsselwörter. Um im Kontext der Maschinensprache direkt auf Basic-Variablen zugreifen zu können, steht eine Anweisung zur Verfügung, welche die Adresse einer Variablen in ein Register lädt.
Versionen
- BASCOM-AVR: BASIC-Compiler für die Mikrocontroller der Atmel AVR-Architektur
- BASCOM-8051: BASIC-Compiler für die MCS-51 Familie von Mikrocontrollern
- BASCOM-LT: Vorgängerversion von BASCOM-8051 speziell für AT89Cx051 Prozessoren, nicht mehr verfügbar.
Literatur
- Burkhard Kainka: Basiskurs BASCOM-AVR, 2011, ISBN 978-3-89576-238-3.
- Stefan Hoffmann: Einfacher Einstieg in die Elektronik mit AVR-Mikrocontroller und BASCOM, 2010, ISBN 978-3-8391-8430-1.
- Claus Kühnel: Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR. 3. Auflage, 2010, ISBN 978-3-907857-14-4.
- Roland Walter: AVR-Mikrocontroller-Lehrbuch. 3. aktualisierte Auflage, 2009, ISBN 978-3-9811894-4-5.