„GW-BASIC“ – Versionsunterschied
[ungesichtete Version] | [ungesichtete Version] |
→Merkmale: Kein VGA Support in GW-Basic latest (3.23) |
PC-Basic, eine zu GW-Basic kompatible Open Source Alterantive für moderne Betriebssysteme Markierung: Zurückgesetzt |
||
Zeile 50: | Zeile 50: | ||
Eine Hürde für die Verwendung von GW-BASIC für größere Anwendungen besteht darin, dass der verfügbare Speicher auf 64 KB begrenzt ist. In diesen Speicherraum müssen Daten als auch Programmcode untergebracht werden. Diese Einschränkung kann nur bedingt durch die [[Overlay (Programmierung)|Overlay-Technik]] ausgeglichen werden, die mittels der Anweisungen <code>CHAIN</code> und <code>MERGE</code> zur Verfügung gestellt wird. Auch die nur rudimentäre Unterstützung strukturierter Programmierung erschwert die Wartung größerer Programme, weswegen die Sprache für größere Anwendungen nur wenig geeignet ist. |
Eine Hürde für die Verwendung von GW-BASIC für größere Anwendungen besteht darin, dass der verfügbare Speicher auf 64 KB begrenzt ist. In diesen Speicherraum müssen Daten als auch Programmcode untergebracht werden. Diese Einschränkung kann nur bedingt durch die [[Overlay (Programmierung)|Overlay-Technik]] ausgeglichen werden, die mittels der Anweisungen <code>CHAIN</code> und <code>MERGE</code> zur Verfügung gestellt wird. Auch die nur rudimentäre Unterstützung strukturierter Programmierung erschwert die Wartung größerer Programme, weswegen die Sprache für größere Anwendungen nur wenig geeignet ist. |
||
Da weder Mausunterstützung vorliegt noch moderne Grafik- oder Soundkarten unterstützt werden, ist die Programmierung optisch zeitgemäßer Anwendungen kaum möglich. |
Da weder Mausunterstützung vorliegt noch moderne Grafik- oder Soundkarten unterstützt werden, ist die Programmierung optisch zeitgemäßer Anwendungen kaum möglich. |
||
== Alternativen == |
|||
Mit [https://robhagemans.github.io/pcbasic/ PC-Basic] existiert eine zu GW-Basic kompatible Open Source Alternative für moderne Betriebssysteme die in Python realisiert wurde. |
|||
== Weblinks == |
== Weblinks == |
Version vom 18. März 2023, 11:28 Uhr
GW-BASIC | |
---|---|
Basisdaten
| |
Entwickler | Microsoft Corporation |
Erscheinungsjahr | 1983 |
Aktuelle Version | 3.23 (1988) |
Betriebssystem | MS-DOS |
Kategorie | BASIC-Interpreter und Entwicklungsumgebung |
Lizenz | proprietär (8088: MIT-Lizenz)[1][2] |
deutschsprachig | nein |
GW-BASIC ist ein Interpreter für die Programmiersprache BASIC des Unternehmens Microsoft. Es wurde für die ersten IBM-kompatiblen, aber nicht direkt von IBM hergestellten PC entwickelt. Zwischen 1983 und 1991 wurde es als Bestandteil des Betriebssystems MS-DOS bis Version 4.02 vertrieben, danach von QBasic und dem aufwendigeren Programmpaket QuickBASIC ersetzt.
Die Assembler-Quelltexte der 8088-Portierung für MS-DOS von 1983 wurden am 22. Mai 2020 unter der MIT-Lizenz veröffentlicht.[2] Gedacht ist der auf GitHub einsehbare Quelltext für Ausbildungszwecke und um historische Einsichten zu ermöglichen.[1]
Geschichte
BASIC war die erste Programmiersprache für den 1981 erschienenen IBM PC. Dieser verfügte (wie viele Heimcomputer jener Zeit) über einen BASIC-Interpreter im ROM namens BASICA. Das BASIC wurde gestartet, wenn beim Booten des Rechners kein Betriebssystem gefunden wurde. Es war exklusiv für die Firma IBM lizenziert. Das Betriebssystem MS-DOS verfügte ursprünglich über den Befehl BASICA (für BASIC Advanced), mit dem dieses BASIC mit einigen Erweiterungen gestartet werden konnte, während MS-DOS bereits lief. BASICA war eine direkte Portierung von Microsofts MBASIC (auch bekannt als BASIC-80) mit IBM-PC-spezifischer Zusatzfunktionalität. (MBASIC war für 8080/Z80-Maschinen geschrieben worden und lag bereits den meisten Distributionen von CP/M bei.) Später kamen IBM-PC-kompatible Computer anderer Hersteller auf den Markt, die oft ebenfalls MS-DOS als Betriebssystem nutzten. Aus lizenzrechtlichen Gründen verfügten diese aber nicht über den eingebauten BASIC-Interpreter des IBM PC. Daraufhin verkaufte Microsoft GW-BASIC, welches nicht auf dem BASIC-Interpreter im ROM basiert, auf Diskette. GW-BASIC ist eine wesentlich erweiterte, zu BASICA kompatible BASIC-Version, die auf jedem PC-kompatiblen DOS läuft.
Die Verfügbarkeit als Teil von MS-DOS ohne Zusatzkosten förderte in kleinen Unternehmen die Entstehung vielfältiger Programme in GW-BASIC – bis hin zu „ausgewachsenen“ Datenbanksystemen, ähnlich, wie heute kleinere Applikationen in Visual Basic for Applications geschrieben werden. Ab 1985 wurde es in seiner Bedeutung von Turbo Pascal der Firma Borland verdrängt.
Am 21. Mai 2020 hat Microsoft GW-BASIC Version 1.0 als Open Source freigegeben. Es steht nun – wegen seiner historischen Relevanz und zu Bildungszwecken – unter der MIT-Lizenz frei zur Verfügung.[3]
Namensgebung
Der Ursprung des Namens „GW-BASIC“ ist unklar. Die Initialen „GW“ könnten nach Greg Whitten, einem frühen Microsoft-Angestellten, der auch für Standards bei Microsoft-BASIC-Compilern zuständig war, gewählt sein. Whitten schreibt die Namenswahl Microsoft-Gründer Bill Gates zu und gibt als Ursprung den englischen Ausruf gee whiz! (zu deutsch etwa „Potz Blitz!“) an. Diese Erläuterung taucht angeblich auch im Microsoft User Manual der Microsoft Press auf. Eine weitere verbreitete Erklärung geht davon aus, dass es sich bei den Initialen GW um Abkürzung für Graphics and Windows handelt, da GW-BASIC neue Befehle für Grafikroutinen und grundlegende Fensterunterstützung mitbrachte. Andere vermuten, dass der Name GW-Basic von den (vertauschten) Initialen von Bill Gates' vollständigem Namen William „Bill“ Gates stammen, der Microsofts ersten BASIC-Interpreter selbst programmiert hatte.
Entwicklungsumgebung
GW-BASIC hat wie das originale BASIC aus dem Dartmouth College eine kommandobasierte Entwicklungsumgebung. Programmzeilen müssen mit Zeilennummern beginnen. Eingaben ohne Zeilennummer werden direkt ausgeführt. Mittels LOAD
und SAVE
können BASIC-Programme geladen und gespeichert werden. Als Dateiformate können ein Bytecode- als auch das ASCII-Format verwendet werden. LIST
zeigt das aktuelle Programm an, NEW
löscht den aktuellen Programmspeicher. RENUM
erlaubt die Neuzuweisung von Programmzeilen. Zur Fehlersuche kann man mittels STOP
im Programm Haltepunkte setzen, wobei die Ausführung mit CONT
fortgesetzt werden kann. Zur Ablaufverfolgung können die Befehle TRON
und TROFF
verwendet werden. SYSTEM
beendet den Interpreter und kehrt zum Betriebssystem zurück. Viele dieser Anweisungen zur Programmerstellung und Fehlersuche können über die Funktionstasten F1 bis F10 aufgerufen werden. Eine Neubelegung dieser Tasten ist mit der Anweisung KEY
möglich.
Als Interpreter erzeugt GW-BASIC keine unabhängig ausführbaren Programmdateien. In dieser Sprache geschriebene Programme sind zusammen mit dem Interpreter zu starten. Von Microsoft wurde daher später der BASIC-Compiler BASCOM angeboten.
Sprachaufbau
Der Datentyp von Variablen wird in GW-BASIC wie in vielen BASIC-Dialekten durch Typenzeichen festgelegt, die an den Variablennamen angehängt werden. A$
ist eine Zeichenkette, A%
ist eine ganze Zahl, A!
und A#
sind Gleitkommazahlen mit einfacher bzw. doppelter Genauigkeit. Fehlt das Typenzeichen, so wird eine Gleitkommazahl einfacher Genauigkeit angenommen. Durch Anweisungen DEFINT
, DEFSTR
usw. kann festgelegt werden, dass alle Variablen, deren Name mit einem bestimmten Zeichen beginnt, einen bestimmten Variablentyp haben, so dass auf das Typenzeichen verzichtet werden kann.
GW-BASIC erzwingt keine Strukturierte Programmierung. Der Programmablauf kann mittels der Sprunganweisung GOTO
bestimmt werden. Unterprogramme können mittels GOSUB/RETURN
aufgerufen werden. Die bedingten Anweisungen IF/THEN/ELSE
müssen in einer Zeile geschrieben werden. Die Anweisungen WHILE/WEND
und FOR/NEXT
können über mehrere Programmzeilen gehen. Funktionen können mit der Anweisung DEF FN
definiert werden, wobei die Definition jeweils in eine einzige Zeile passen muss, z. B. DEF FNLOG(basis,nummer)=LOG(nummer)/LOG(basis)
.
Merkmale
GW-BASIC kann Dateien, parallele Schnittstellen und serielle Schnittstellen lesen und schreiben. Als Eingabegeräte werden neben der Tastatur auch analoge Joysticks und Lichtgriffel unterstützt, nicht aber Mäuse, da diese zur Zeit der Entwicklung von GW-BASIC auf IBM-kompatiblen PCs noch wenig verbreitet waren und häufig zueinander inkompatible Treiber verwendeten. Zur maschinennahen Programmierung können in Maschinencode geschriebene Unterprogramme eingebunden werden, die durch CALL
aufgerufen werden. Der gesamte unter MS-DOS verfügbare Adressraum kann sowohl gelesen als auch geschrieben werden; der Zugriff kann dabei sowohl byte-weise (mittels PEEK
und POKE
) als auch seitenweise (mittels BLOAD
und BSAVE
) erfolgen. Portzugriffe auf interne Schnittstellen erfolgen mittels INP
und OUT
.
Mittels der Konstruktion ON ... GOTO/GOSUB
bietet GW-BASIC eine Möglichkeit zum Interrupt-gesteuerten Programmablauf. Unterbrechungen können hierbei z. B. durch einen Tastendruck, ein Signal der seriellen Schnittstelle oder den Ablauf einer festgelegten Zeitspanne ausgelöst werden.
Die Programmiersprache unterstützt CGA- als auch EGA-Grafik. VGA Grafikmodi werden in GW-Basic noch nicht unterstützt. Auch höhere Grafikanweisungen wie LINE
, PAINT
oder CIRCLE
stehen zur Verfügung. Einzelne Punkte können mit PSET
eingefärbt und der Farbwert mit POINT
wieder ausgelesen werden. Bitmaps können mittels GET
und PUT
gelesen und geschrieben werden.
Mit der PLAY
-Anweisung kann der PC-Lautsprecher einstimmige Melodien abspielen, wobei Noten als Zeichenkette angegeben werden (z. B. PLAY "edcdeee2dfedc4"
). Ein Zugriff auf niedrigerer Ebene ist mit der SOUND
-Anweisung möglich. Dabei wird die Frequenz in Hertz und die Länge in 'clock ticks' für den Systemlautsprecher angegeben.
Grenzen
Eine Hürde für die Verwendung von GW-BASIC für größere Anwendungen besteht darin, dass der verfügbare Speicher auf 64 KB begrenzt ist. In diesen Speicherraum müssen Daten als auch Programmcode untergebracht werden. Diese Einschränkung kann nur bedingt durch die Overlay-Technik ausgeglichen werden, die mittels der Anweisungen CHAIN
und MERGE
zur Verfügung gestellt wird. Auch die nur rudimentäre Unterstützung strukturierter Programmierung erschwert die Wartung größerer Programme, weswegen die Sprache für größere Anwendungen nur wenig geeignet ist.
Da weder Mausunterstützung vorliegt noch moderne Grafik- oder Soundkarten unterstützt werden, ist die Programmierung optisch zeitgemäßer Anwendungen kaum möglich.
Alternativen
Mit PC-Basic existiert eine zu GW-Basic kompatible Open Source Alternative für moderne Betriebssysteme die in Python realisiert wurde.
Weblinks
- GW-BASIC-Manual als E-Book
- GW-BASIC 3.23 (1988) in der Archive.org-Software-Bibliothek
- Microsofts veröffentlichte GW-BASIC-Quelltexte der 8088-Portierung in Assemblersprache; die Quelltexte stammen vom 10. Februar 1983 und laufen u. a. auf MS-DOS 1.25 und 2.00.
Einzelnachweise
- ↑ a b Rich Turner: Microsoft Open-Sources GW-BASIC. In: Microsoft Developer Blogs - Windows Command Line. Microsoft, 21. Mai 2020, abgerufen am 22. Mai 2020 (englisch): „These sources, as clearly stated in the repo’s readme, are the 8088 assembly language sources from 10th Feb 1983, and are being open-sourced for historical reference and educational purposes. … Many have asked if we can also open-source implementations for processors other than the 808x. Alas, we’re unable to provide sources for these ports and/or customizations.“
- ↑ a b Alexander Neumann: Microsoft legt Sourcen für GW-BASIC-Interpreter offen. In: Heise online. 22. Mai 2020. Abgerufen am 22. Mai 2020.
- ↑ Meldung bei Heise zur Quellcode-Freigabe