<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GW-BASIC</id>
	<title>GW-BASIC - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=GW-BASIC"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GW-BASIC&amp;action=history"/>
	<updated>2026-06-03T02:38:12Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=GW-BASIC&amp;diff=61725&amp;oldid=prev</id>
		<title>imported&gt;Blueduck4711: Änderung 249333949 von 147.161.255.85 rückgängig gemacht; &quot;Bei mir laufen ...&quot; ist kein valider Beleg für irgendwas.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=GW-BASIC&amp;diff=61725&amp;oldid=prev"/>
		<updated>2024-10-12T06:10:25Z</updated>

		<summary type="html">&lt;p&gt;Änderung &lt;a href=&quot;/index.php/Spezial:Diff/249333949&quot; title=&quot;Spezial:Diff/249333949&quot;&gt;249333949&lt;/a&gt; von &lt;a href=&quot;/index.php/Spezial:Beitr%C3%A4ge/147.161.255.85&quot; title=&quot;Spezial:Beiträge/147.161.255.85&quot;&gt;147.161.255.85&lt;/a&gt; rückgängig gemacht; &amp;quot;Bei mir laufen ...&amp;quot; ist kein valider Beleg für irgendwas.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Infobox Software&lt;br /&gt;
| Name                             =&lt;br /&gt;
| Beschreibung                     = &lt;br /&gt;
| Hersteller                       = [[Microsoft|Microsoft Corporation]]&lt;br /&gt;
| AktuelleVersion                  = 3.23&lt;br /&gt;
| AktuelleVersionFreigabeDatum     = 1988&lt;br /&gt;
| Betriebssystem                   = [[MS-DOS]]&lt;br /&gt;
| Kategorie                        = [[BASIC]]-Interpreter und [[Integrierte Entwicklungsumgebung|Entwicklungsumgebung]]&lt;br /&gt;
| Lizenz                           = [[Proprietäre Software|proprietär]] ([[Intel 8088|8088]]: [[MIT-Lizenz]])&amp;lt;ref name=&amp;quot;ms-devblog_commandline_microsoft-open-sources-gw-basic&amp;quot;&amp;gt;{{Internetquelle |autor=Rich Turner |url=https://devblogs.microsoft.com/commandline/microsoft-open-sources-gw-basic/ |titel=Microsoft Open-Sources GW-BASIC |werk=Microsoft Developer Blogs - Windows Command Line |hrsg=Microsoft |datum=2020-05-21 |abruf=2020-05-22 |sprache=en |zitat=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.}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;heiseonline_4726428&amp;quot; /&amp;gt;&lt;br /&gt;
| Deutsch                          = Nein&lt;br /&gt;
| Website                          = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;GW-BASIC&amp;#039;&amp;#039;&amp;#039; ist ein [[Interpreter]] für die [[Programmiersprache]] [[BASIC]] des Unternehmens [[Microsoft]]. Es wurde für die ersten [[IBM-PC-kompatibler Computer|IBM-kompatiblen]], aber nicht direkt von IBM hergestellten [[Personal Computer|PC]] entwickelt. Zwischen 1983 und 1991 wurde es als Bestandteil des [[Betriebssystem]]s [[MS-DOS]] bis Version 4.02 vertrieben, danach von [[QBasic]] und dem aufwendigeren Programmpaket [[QuickBASIC]] ersetzt.&lt;br /&gt;
&lt;br /&gt;
Die [[Assemblersprache|Assembler]]-[[Quelltext]]e der [[Intel 8088|8088]]-[[Portierung (Software)|Portierung]] für MS-DOS von 1983 wurden am 22. Mai 2020 unter der [[MIT-Lizenz]] veröffentlicht.&amp;lt;ref name=&amp;quot;heiseonline_4726428&amp;quot;&amp;gt;{{Heise online |ID=4726428 |Titel=Microsoft legt Sourcen für GW-BASIC-Interpreter offen |Autor=Alexander Neumann |Datum=2020-05-22 |Abruf=2020-05-22}}&amp;lt;/ref&amp;gt; Gedacht ist der auf [[GitHub]] einsehbare Quelltext für Ausbildungszwecke und um historische Einsichten zu ermöglichen.&amp;lt;ref name=&amp;quot;ms-devblog_commandline_microsoft-open-sources-gw-basic&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Geschichte ==&lt;br /&gt;
[[BASIC]] war die erste Programmiersprache für den 1981 erschienenen [[IBM Personal Computer|IBM&amp;amp;nbsp;PC]]. Dieser verfügte (wie viele [[Heimcomputer]] jener Zeit) über einen BASIC-[[Interpreter]] im [[Festwertspeicher|ROM]] namens {{lang|en|[[IBM Cassette BASIC|Cassette BASIC]]}}. Dieses ROM-BASIC wurde gestartet, wenn beim [[Booten]] des Rechners kein Betriebssystem gefunden wurde. Es war jedoch nicht möglich, von einem auf dem PC gestarteten Betriebssystem aus auf das BASIC zuzugreifen. Daher entwickelte Microsoft mit [[BASICA]] (für „{{lang|en|Advanded BASIC}}“) einen Interpreter für [[PC-kompatibles DOS|DOS]], der auf IBM&amp;amp;nbsp;PCs das BASIC im ROM nutzbar macht und um einige fehlende Funktionen für den Diskettenzugriff erweitert. IBM integrierte den Befehl &amp;lt;code&amp;gt;BASICA&amp;lt;/code&amp;gt; anschließend in PC&amp;amp;nbsp;DOS. {{lang|en|Cassette BASIC}} war exklusiv für die Firma IBM lizenziert, sodass {{lang|en|Advanced BASIC}} auf [[IBM-PC-kompatibler Computer|IBM-PC-kompatiblen Computern]], die kein ROM-BASIC besitzen, nicht funktioniert.&lt;br /&gt;
&lt;br /&gt;
Im Laufe der 1980er Jahre kamen IBM-PC-kompatible Computer anderer Hersteller auf den Markt, die oft [[MS-DOS]] (großteils identisch mit PC&amp;amp;nbsp;DOS) als Betriebssystem nutzten. Für diese Klone lizenzierte Microsoft MS-DOS und verkaufte an interessierte Anwender direkt GW-BASIC, welches nicht auf dem ROM-BASIC-Interpreter angewiesen ist, auf Diskette. Bald darauf lizenzierten auch einige [[Erstausrüster]] von „IBM-PC-Kompatiblen“ GW-BASIC, sodass deren Systeme mit bereits vorinstalliertem zum IBM&amp;amp;nbsp;PC kompatiblem BASIC ausgeliefert werden konnten, denn BASICA und GW-BASIC sind vollständig kompatible BASIC-Dialekte, wobei GW-BASIC auf jedem PC-kompatiblen Rechner unter DOS läuft.&amp;lt;ref&amp;gt;{{Literatur |Autor=Stuart R. Greenberg |Titel=Languages – BASIC, Yes; Feeble, No: GW-BASIC and BASICA |Sammelwerk=[[PC&amp;amp;nbsp;Magazine]] |Band=8 |Nummer=18 |Verlag=[[Ziff Davis]] |Datum=1989-10-31 |Sprache=en |Seiten=202 |Online={{Google Buch |BuchID=HXDkCoqMiVIC |SeitenID=RA11-PA4}} |Zitat=Microsoft’s generic interpreter, GW-BASIC (included with most MS-DOS versions), and IBM’s version, BASICA (included with PC-DOS), are essentially the same program.}}&amp;lt;/ref&amp;gt; Dabei handelt es sich im Wesentlichen um eine direkte [[Portierung (Software)|Portierung]] von Microsofts [[MBASIC]] (auch bekannt als BASIC-80) auf den [[IBM-PC-kompatibler Computer#PC als Plattform|IBM&amp;amp;nbsp;PC]] – MBASIC war für [[Intel 8080|8080]]/[[Zilog Z80|Z80]]-Rechner geschrieben worden und lag seinerseits bereits den meisten Erstausrüster-Systemen mit [[CP/M]] bei.&lt;br /&gt;
&lt;br /&gt;
Die Verfügbarkeit als Teil von MS-DOS, die oft per Vorinstallation einer OEM-Version von DOS ohne Zusatzkosten gegeben war, förderte in kleinen Unternehmen die Entstehung vielfältiger Programme in GW-BASIC&amp;amp;nbsp;– bis hin zu „ausgewachsenen“ Datenbanksystemen, ähnlich wie später kleinere Applikationen in [[Visual Basic for Applications]] geschrieben wurden. Ab ca. 1985 wurde Microsoft BASIC (MBASIC, BASICA, GW-BASIC) in seiner Bedeutung von [[Turbo Pascal]] der Firma [[Borland]] verdrängt.&lt;br /&gt;
&lt;br /&gt;
Am [[21. Mai]] [[2020]] hat Microsoft GW-BASIC Version 1.0, wegen seiner historischen Relevanz und zu Bildungszwecken, als [[Open Source]] freigegeben, womit es nunmehr unter der [[MIT-Lizenz]] frei zur Verfügung steht.&amp;lt;ref name=&amp;quot;heiseonline_4726428&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Namensgebung ==&lt;br /&gt;
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 &amp;#039;&amp;#039;gee whiz!&amp;#039;&amp;#039; (zu deutsch etwa „Potz Blitz!“) an. Diese Erläuterung taucht angeblich auch im &amp;#039;&amp;#039;Microsoft User Manual&amp;#039;&amp;#039; der Microsoft Press auf.&amp;lt;!-- Bitte nachprüfen! --&amp;gt; Eine weitere verbreitete Erklärung geht davon aus, dass es sich bei den Initialen GW um Abkürzung für &amp;#039;&amp;#039;Graphics and Windows&amp;#039;&amp;#039; 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 &amp;#039;&amp;#039;William „Bill“ Gates&amp;#039;&amp;#039; stammen, der Microsofts ersten BASIC-Interpreter selbst programmiert hatte.&lt;br /&gt;
&lt;br /&gt;
== Entwicklungsumgebung ==&lt;br /&gt;
GW-BASIC hat wie das originale BASIC aus dem [[Dartmouth College]] eine [[Kommandozeile|kommandobasierte]] [[Integrierte Entwicklungsumgebung|Entwicklungsumgebung]]. Programmzeilen müssen mit Zeilennummern beginnen. Eingaben ohne Zeilennummer werden direkt ausgeführt. Mittels &amp;lt;code&amp;gt;LOAD&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;SAVE&amp;lt;/code&amp;gt; können BASIC-Programme geladen und gespeichert werden. Als Dateiformate können ein [[Bytecode]]- als auch das [[ASCII]]-Format verwendet werden. &amp;lt;code&amp;gt;LIST&amp;lt;/code&amp;gt; zeigt das aktuelle Programm an, &amp;lt;code&amp;gt;NEW&amp;lt;/code&amp;gt; löscht den aktuellen Programmspeicher. &amp;lt;code&amp;gt;RENUM&amp;lt;/code&amp;gt; erlaubt die Neuzuweisung von Programmzeilen. Zur Fehlersuche kann man mittels &amp;lt;code&amp;gt;STOP&amp;lt;/code&amp;gt; im Programm [[Haltepunkt]]e setzen, wobei die Ausführung mit &amp;lt;code&amp;gt;CONT&amp;lt;/code&amp;gt; fortgesetzt werden kann. Zur [[Ablaufverfolgung]] können die Befehle &amp;lt;code&amp;gt;TRON&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;TROFF&amp;lt;/code&amp;gt; verwendet werden. &amp;lt;code&amp;gt;SYSTEM&amp;lt;/code&amp;gt; beendet den Interpreter und kehrt zum Betriebssystem zurück. Viele dieser Anweisungen zur Programmerstellung und Fehlersuche können über die [[Funktionstaste]]n {{Taste|F1}} bis {{Taste|F10}} aufgerufen werden. Eine Neubelegung dieser Tasten ist mit der Anweisung &amp;lt;code&amp;gt;KEY&amp;lt;/code&amp;gt; möglich.&lt;br /&gt;
&lt;br /&gt;
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 (Microsoft)|BASCOM]] angeboten.&lt;br /&gt;
&lt;br /&gt;
== Sprachaufbau ==&lt;br /&gt;
Der [[Datentyp]] von [[Variable (Programmierung)|Variablen]] wird in GW-BASIC wie in vielen BASIC-Dialekten durch Typenzeichen festgelegt, die an den Variablennamen angehängt werden. &amp;lt;code&amp;gt;A$&amp;lt;/code&amp;gt; ist eine [[Zeichenkette]], &amp;lt;code&amp;gt;A%&amp;lt;/code&amp;gt; ist eine [[Integer (Datentyp)|ganze Zahl]], &amp;lt;code&amp;gt;A!&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;A#&amp;lt;/code&amp;gt; sind [[Gleitkommazahl]]en mit einfacher bzw. doppelter Genauigkeit. Fehlt das Typenzeichen, so wird eine Gleitkommazahl einfacher Genauigkeit angenommen. Durch Anweisungen &amp;lt;code&amp;gt;DEFINT&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DEFSTR&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
GW-BASIC erzwingt keine [[Strukturierte Programmierung]]. Der Programmablauf kann mittels der [[Sprunganweisung]] &amp;lt;code&amp;gt;GOTO&amp;lt;/code&amp;gt; bestimmt werden. [[Unterprogramm]]e können mittels &amp;lt;code&amp;gt;GOSUB/RETURN&amp;lt;/code&amp;gt; aufgerufen werden. Die [[Bedingte Anweisung|bedingten Anweisungen]] &amp;lt;code&amp;gt;IF/THEN/ELSE&amp;lt;/code&amp;gt; müssen in einer Zeile geschrieben werden. Die [[Anweisung (Programmierung)|Anweisungen]] &amp;lt;code&amp;gt;WHILE/WEND&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;FOR/NEXT&amp;lt;/code&amp;gt; können über mehrere Programmzeilen gehen. [[Funktion (Programmierung)|Funktionen]] können mit der Anweisung &amp;lt;code&amp;gt;DEF FN&amp;lt;/code&amp;gt; definiert werden, wobei die Definition jeweils in eine einzige Zeile passen muss, z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;DEF FNLOG(basis,nummer)=LOG(nummer)/LOG(basis)&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Merkmale ==&lt;br /&gt;
GW-BASIC kann Dateien, [[Line Printing Terminal|parallele Schnittstellen]] und [[RS-232|serielle Schnittstellen]] lesen und schreiben. Als Eingabegeräte werden neben der Tastatur auch analoge [[Joystick]]s und [[Lichtgriffel]] unterstützt, nicht aber [[Maus (Computer)|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 &amp;lt;code&amp;gt;CALL&amp;lt;/code&amp;gt; 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 &amp;lt;code&amp;gt;PEEK&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;POKE&amp;lt;/code&amp;gt;) als auch seitenweise (mittels &amp;lt;code&amp;gt;BLOAD&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;BSAVE&amp;lt;/code&amp;gt;) erfolgen. Portzugriffe auf interne [[Schnittstelle]]n erfolgen mittels &amp;lt;code&amp;gt;INP&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;OUT&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Mittels der Konstruktion &amp;lt;code&amp;gt;ON ... GOTO/GOSUB&amp;lt;/code&amp;gt; bietet GW-BASIC eine Möglichkeit zum [[Interrupt]]-gesteuerten Programmablauf. Unterbrechungen können hierbei z.&amp;amp;nbsp;B. durch einen Tastendruck, ein Signal der seriellen Schnittstelle oder den Ablauf einer festgelegten Zeitspanne ausgelöst werden.&lt;br /&gt;
&lt;br /&gt;
Die Programmiersprache unterstützt [[Color Graphics Adapter|CGA]]- als auch [[Enhanced Graphics Adapter|EGA]]-Grafik. [[Video Graphics Array|VGA]] Grafikmodi werden in GW-Basic noch nicht unterstützt. Auch höhere Grafikanweisungen wie &amp;lt;code&amp;gt;LINE&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PAINT&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;CIRCLE&amp;lt;/code&amp;gt; stehen zur Verfügung. Einzelne Punkte können mit &amp;lt;code&amp;gt;PSET&amp;lt;/code&amp;gt; eingefärbt und der Farbwert mit &amp;lt;code&amp;gt;POINT&amp;lt;/code&amp;gt; wieder ausgelesen werden. [[Windows Bitmap|Bitmaps]] können mittels &amp;lt;code&amp;gt;GET&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;PUT&amp;lt;/code&amp;gt; gelesen und geschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Mit der &amp;lt;code&amp;gt;PLAY&amp;lt;/code&amp;gt;-Anweisung kann der PC-Lautsprecher einstimmige Melodien abspielen, wobei Noten als [[Zeichenkette]] angegeben werden (z.&amp;amp;nbsp;B. &amp;lt;code&amp;gt;PLAY &amp;quot;edcdeee2dfedc4&amp;quot;&amp;lt;/code&amp;gt;). Ein Zugriff auf niedrigerer Ebene ist mit der &amp;lt;code&amp;gt;SOUND&amp;lt;/code&amp;gt;-Anweisung möglich. Dabei wird die Frequenz in [[Hertz (Einheit)|Hertz]] und die Länge in &amp;#039;clock ticks&amp;#039; für den [[Systemlautsprecher]] angegeben.&lt;br /&gt;
&lt;br /&gt;
== Grenzen ==&lt;br /&gt;
Eine Hürde für die Verwendung von GW-BASIC für größere Anwendungen besteht darin, dass der verfügbare Speicher auf 64&amp;amp;nbsp;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 &amp;lt;code&amp;gt;CHAIN&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;MERGE&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
Da weder Mausunterstützung vorliegt noch moderne Grafik- oder Soundkarten unterstützt werden, ist die Programmierung optisch zeitgemäßer Anwendungen kaum möglich.&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.antonis.de/qbebooks/index.htm#gwbasman GW-BASIC-Manual als E-Book]&lt;br /&gt;
* [https://archive.org/details/gwbasic.exe GW-BASIC 3.23 (1988) in der Archive.org-Software-Bibliothek]&lt;br /&gt;
* [https://github.com/microsoft/GW-BASIC Microsofts veröffentlichte GW-BASIC-Quelltexte] der 8088-Portierung in Assemblersprache; die Quelltexte stammen vom 10. Februar 1983 und laufen u.&amp;amp;nbsp;a. auf MS-DOS 1.25 und 2.00.&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{SORTIERUNG:Gw Basic}}&lt;br /&gt;
[[Kategorie:BASIC]]&lt;br /&gt;
[[Kategorie:Historische Software]]&lt;br /&gt;
[[Kategorie:DOS-Software]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Blueduck4711</name></author>
	</entry>
</feed>