GW-BASIC

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Dieser Artikel oder Abschnitt bedarf einer Überarbeitung. Näheres ist auf der Diskussionsseite angegeben. Hilf mit, ihn zu verbessern, und entferne anschließend diese Markierung.
GW-BASIC
Entwickler Microsoft Corporation
Aktuelle Version 3.23
(1988)
Betriebssystem MS-DOS
Kategorie BASIC-Interpreter und Entwicklungsumgebung
Lizenz Proprietär
Deutschsprachig Nein

GW-BASIC ist ein Interpreter für die Programmiersprache BASIC der Firma 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.

Geschichte[Bearbeiten]

BASIC war die erste Programmiersprache für den 1981 erschienenen IBM-PC. Dieser verfügte (wie viele Heimcomputer der damaligen 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 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.

Schon bald begann Microsoft, GW-BASIC mit jeder Kopie von MS-DOS mitzuliefern. Unter anderem durch diese allgemeine Verfügbarkeit ohne weitere Anschaffungskosten spielte es bis Mitte der 80er-Jahre eine nicht unwichtige Rolle in kleinen Unternehmen, da viel Betriebssoftware von angestellten Programmierern in GW-BASIC geschrieben wurde – bis hin zu „ausgewachsenen“ Datenbanksystemen, ähnlich, wie heute kleinere Applikationen in Visual Basic geschrieben werden. Ab 1985 wurde es in seiner Bedeutung allerdings zunehmend von Turbo Pascal der Firma Borland verdrängt.

Namensgebung[Bearbeiten]

Der Ursprung des Namens „GW-BASIC“ ist unklar. Die Initialen „GW“ könnten nach Greg Whitten, einem frühen Angestellten von Microsoft, der für die Standards bei den 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[Bearbeiten]

GW-BASIC hat wie das originale BASIC aus dem Dartmouth College eine kommandobasierte Entwicklungsumgebung. Alle 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 sowohl 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 können mittels der Anweisung STOP im Programm Haltepunkte gesetzt werden, 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 die Funktionstasten F1 bis F10 aufgerufen werden. Eine Neubelegung dieser Tasten ist mittels der Anweisung KEY möglich.

Als Interpreter kann GW-BASIC keine unabhängig ausführbaren Programmdateien erzeugen. In dieser Sprache geschriebene Programme mussten also stets zusammen mit dem Interpreter gestartet werden. Von Microsoft wurde daher später der BASIC-Compiler BASCOM angeboten.

Sprachaufbau[Bearbeiten]

Der Datentyp von Variablen wird in GW-BASIC wie in vielen anderen 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 bietet nur wenig Unterstützung für strukturiertes Programmieren. 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[Bearbeiten]

GW-BASIC kann Dateien, parallele Schnittstellen und serielle Schnittstellen lesen und schreiben. Als Eingabegeräte werden neben der Tastatur auch analoge Joysticks und Lichtgriffeln 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 sowohl CGA- als auch EGA-Grafik. Einige höhere Grafikanweisungen wie LINE, PAINT oder CIRCLE stehen zur Verfügung. Einzelne Punkte können mittels 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 können einstimmige Melodien auf dem eingebauten PC-Lautsprecher abgespielt werden, wobei die 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[Bearbeiten]

Eine große 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 sowohl Daten als auch Programmcode untergebracht werden. Diese Einschränkung kann nur bedingt durch die eingesetzte 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 umfangreicherer 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.

Weblinks[Bearbeiten]