GW-BASIC Emulator

Aus C64-Wiki
Wechseln zu: Navigation, Suche
GW-BASIC Emulator
Startbildschirm
Entwickler G. Mariani & F. Sorgato
Verleger Systems Editoriale
Release 1987
Plattform(en) C64
Genre Programmiersprache
Steuerung Icon tastatur.png
Medien Icon disk525 1.png Icon kassette.png
Sprache(n) Sprache:englisch
Information Diskmag Commodore Computer Club Spezialausgabe 28,80 DM Sprache:deutsch Sprache:italienisch
Kurze Vorstellung in Ausgabe No.37 Sprache:italienisch - Seite 16
Version 2 erwähnt in Ausgabe No.46 - Seite 42Sprache:italienisch


Inhaltsverzeichnis

[Bearbeiten] Beschreibung

GW-BASIC war in den 1980er Jahren eine beliebte Programmiersprache für PC, Atari und viele weitere Computersysteme. GW-BASIC wurde seit 1981 von Microsoft zunächst für den IBM-PC herausgegeben. Ab Mitte der 1980er wurde es kostenlos mit MS-DOS vertrieben (bei den damaligen Commodore-PCs lag es auch bei). Ab 1991 wurde das kostenlose GW-BASIC durch eine abgespeckter Version der Programmierentwicklungsumgebung QuickBASIC, kurz QBASIC, ersetzt. Die Programmiersprache GW-BASIC war für die Adressierung von max. 64 KByte RAM ausgelegt und es musste noch mit Zeilennummern programmiert werden.

Im Jahr 1987 erschien eine Umsetzung für den C64/C128 unter der Bezeichnung GW-BASIC Emulator Version 1.0 vom 13.09.1986 (kurz GW-BASIC '64). Dieser wurde auf einer Spezialausgabe des Commodore Computer Club des italienischen Publishers Systems Editoriale in Form eines Diskmag zusammen mit dem MS-DOS Simulator veröffentlicht. Ebenfalls gibt es seit Ausgabe No. 37 Tipps zu GW-BASIC '64. Es erschienen ebenfalls noch zwei Nachfolgeversionen, die letzte ist die Version 2.0 vom 03.08.1987.

Nachdem Laden der BASIC-Erweiterung bzw. GW-BASIC-Programmierumgebung stehen für die Eingabe eines GW-BASIC-Programms 26111 (Version 1) bzw. 23295 (Version 2) Bytes frei zur Verfügung.

Der GW-BASIC-Dialekt ist sehr umfangreich und erweiterte das vorhandene BASIC V2 u.a. um Funktionstastenbelegung, Programmiertools, Datei-Utilities, sowie Grafik- und Sound-Befehle. Insgesamt werden 90 BASIC-Befehle erweitert oder hinzugefügt. Auf den ersten Blick sind viele Funktionen 1:1 aus der PC-Version übernommen worden. Eine gute Übersicht über GW-BASIC bietet der HTML-Guide Sprache:englisch, der sich an der Urversion von Microsoft hält.

Für den C128 ist GW-BASIC weniger geeignet, da BASIC 7.0 viele GW-BASIC-Befehle in ähnlicher Form bzw. Funktion schon beinhaltet, es sei denn, bestehende Listings und Quellen erfordern die GW-BASIC-Syntax bzw. machen den Umgang damit einfacher.

[Bearbeiten] Änderungen zu BASIC V2

Damit Sie unter GW-BASIC C64 das echte Feeling zur originalen GW-BASIC PC-Version bekommen, wurden bestimmte Tasten wie RUN/STOP  gesperrt. Als Ersatz für RUN/STOP  dient nun die Tastenkombination CTRL +C .
Falls sich GW-BASIC aufhängt, kann durch die RESTORE  in vielen Fällen Abhilfe geschaffen werden.
Weiterhin wurde die direkte Farbänderung mittels Tastenkombination CTRL  und C=  plus Zifferntaste ebenfalls gesperrt.
Zu dem ist die 16 Farben umfassende Farbpalette ebenfalls anders belegt verglichen mit jener von BASIC V2.

[Bearbeiten] Funktionstastenbelegung

GW-BASIC bringt ebenfalls eine Funktionstastenbelegung mit. Eine Besonderheit ist, das die vier ungeraden Funktionstasten ständig im unteren Bildschirmbereich mittels Sprites angezeigt werden. Dies wirkt leider etwas störend bei der Programmierung in den unteren drei Bildschirmzeilen. Die vorgegebene Belegung der Funktionen ist wie folgt:

  • F1  LIST Anzeige eines GW-BASIC-Listings.
  • F2  RUN Ausführen eines GW-BASIC-Programms.
  • F3  LOAD" Laden eines GW-BASIC-Programms von Diskette, Angabe des Dateinamens erforderlich!
  • F4  SAVE" Speichern eines GW-BASIC-Programms auf Diskette, Angabe des Dateinamens erforderlich!
  • F5  CONT Fortführen eines unterbrochenes GW-BASIC-Programms.
  • F6  TRON← Fehlerverfolgung ein, Programmabarbeitung kontrolliert durch Tastendruck mit Anzeige der aktuellen Zeilennummer.
  • F7  TROFF← Fehlerverfolgung aus.
  • F8  KEY Funktionstastenbelegung anzeigen bzw. ändern
Das Symbol "←" entspricht dem Drücken der Taste RETURN  bzw. der Ausgabe des Zeichens CHR$(13).
  • KEYON - Aktiviert Funktionstasten mit Einblendung der Belegung.
  • KEYOFF - Deaktiviert Funktionstasten (Ausblendung der eingeblendeten Belegung).
  • KEY1,"FILES"+CHR$(13) - Belegt F1  mit der verlustfreien Directory-Anzeige. Der Funktionstasten-String darf max. 10 Zeichen lang sein!

[Bearbeiten] Kurzübersicht GW-BASIC

[Bearbeiten] Grundlegende Befehle

  • SYSTEM - GW-BASIC Programmieroberfläche beenden, zurück zu BASIC 2.0, GW-BASIC-Erweiterung ist noch aktiv.
  • GWBASIC - GW-BASIC Programmieroberfläche über Reset starten, Arbeitsspeicher ist danach wieder leer!
  • VERSION - GW-BASIC Programmierversion anzeigen.
  • QUIT - GW-BASIC mit Reset beenden.

[Bearbeiten] Programmiertools/-hilfen

  • AUTO [<Zeilennummeranfang>][,[<Zeilennummerschrittweite>]] Automatische Zeilennummervorgabe (0 bis 65535) bei Befehlseingabe, Schrittweite optional 10.
  • DELETE <Zeilennummer> Einzelne Zeilennummern löschen.
  • DELETE <Zeilennummerstart>-[<Zeilennummerende>] Zeilennummernbereich löschen.
  • EDIT <Zeilennummer> Einzelne Programmzeile bearbeiten.
  • EL Systemvariable, die sich die aktuelle Fehlerzeilennummer enthält, wenn eine ON ERROR GOTO ...-Konstruktion aktiv ist.
    Im Gegensatz zum Original-GW-BASIC, wo die Variable ERL heißt, ist diese wegen des 2-Stellenlimits bei Variablennamen umbenannt.
  • ER Systemvariable, die sich die aktuelle Fehlernummer enthält, wenn eine ON ERROR GOTO ...-Konstruktion aktiv ist.
    Im Gegensatz zum Original-GW-BASIC, wo die Variable ERR heißt, ist diese wegen des 2-Stellenlimits bei Variablennamen umbenannt.
  • ERROR [<Fehlernr>] Anzeige einer GW-BASIC-Fehlermeldung von 0 bis 255. Bei der Nutzung in Programmen, wird nach der Bildschirmausgabe der Fehlermeldung das Programm abgebrochen! Verwendung in der Behandlungsroutine einer ON ERROR GOTO ...-Konstruktion.
    Beispiel: IF EL = 11 THEN ERROR EL (im Falle eines Syntaxfehlers mit der Fehlermeldung abbrechen)
  • ON ERROR GOTO <Zeilennummer> Verzweigt zur Zeile Zeilennummer, sobald ein Fehler auftritt. Mit den Variablen EL, ER und den Befehlen ERROR und RESUME lassen sich Fehlersituationen entsprechend behandeln.
  • RENUM [Zeilennummeranfang>][,[<Zeilennummerschrittweite>]] GW-BASIC-Programm neu durchnummerieren, Schrittweite optional 10.
  • RESUME [NEXT|<Zeilennummer>] führt das Programm nach dem fehlerauslösenden Befehl oder bei angegebener Zeilennummer fort (in Verbindung mit ON ERROR GOTO ...).

[Bearbeiten] Dateibefehle

  • BLOAD "Dateiname"[,<Startadresse>] Binärdaten in den Arbeitsspeicher an Speicheradresse (0 bis 65535) laden.
  • BSAVE "Dateiname",<Startadresse>,<Endadresse> Binärdaten aus dem Arbeitsspeicher von Speicheradresse Startadresse bis Endadresse (0 bis 65535) abspeichern.
  • LOAD "Dateiname" Je nach Vorwahl durch die Befehle DISK oder TAPE wird ein GW-BASIC-Programm von Laufwerk 8 oder Laufwerk 1 geladen ohne Angabe von Gerätenummern! Die Benutzung eines Jokerzeichens wie * oder ? im Dateinamen ist nicht erlaubt!
  • SAVE "Dateiname" Je nach Vorwahl durch Anwenden der Befehle DISK oder TAPE wird auf Laufwerk 8 oder Laufwerk 1 gespeichert und zwar ohne die Angabe der Gerätenummer. Um die Kompatibilität zum MS-DOS Simulator zu gewährleisten, speichert GW-BASIC C64 den Dateinamen im Commodore Format (Anzeige mit DIRALL) wie folgt ab "     WIKITESTBAS" (der Dateiname beinhaltet 5 Leerzeichen, gefolgt von einem 8 Zeichen langen Dateinamen (ist er länger, wird er auf 8 Zeichen gekürzt) und der zusätzlichen Dateiendung .BAS. Im MS-DOS-Format wird diese Datei als WIKKITEST.BAS (Anzeige mit FILES) angezeigt
  • CLOSE <log.Dateinr.> - Schließt die geöffnete Datei. Es können auch mehrere Dateien gleichzeitig geschlossen werden; z.B. CLOSE 1, 2, 3
  • DIRALL - Verlustfrei aktuelles Directory im Commodore-Standardformat anzeigen.
  • DISK - Umschalten auf Diskettenmodus, Laufwerk 8 (Standard).
  • EOF(<log.Dateinr.>) Gibt den Wert -1 (wahr) zurück, wenn das Ende einer Datei (End Of File) erreicht ist, ansonsten 0. Kann nur in Programmen verwendet werden!
  • ERDEV Numerische Systemvariable, die den aktuellen Fehlercode im Falle einer Gerätefehlers des aktuellen Geräts enthält.
  • ERDEV$ String-Systemvariable, die den aktuelle Fehlermeldungstext im Falle eines Gerätefehlers des aktuellen Geräts enthält.
  • FIELD #<log.Dateinr.>, <Länge> AS <String-Variable>[, <Länge> AS <String-Variable>, ...] Legt die Aufteilung des sogenannten Record-Puffers für den Zugriff auf relative Dateien fest, wobei die Komponenten bzw. Felder mit String-Variablen verbunden werden, über die auf den Record-Puffer zugegriffen werden kann. Siehe OPEN, LSET, RSET, GET, PUT.
  • FILES - Verlustfrei aktuelles Directory im MS-DOS-Format anzeigen.
  • GET #<log.Dateinr.>,<RN> Liest aus einer relativen Datei den Record mit Nummer RN und füllt damit den Record-Puffer (siehe FIELD).
  • KILL "Dateiname" - Datei im Verzeichnis löschen. Die Angabe des Dateinamens muss im MS-DOS-Format z.B. mit WIKITEST.BAS erfolgen!
  • LSET <String-Variable>=<Ausdruck> Belegt die Feldvariable String-Variable mit dem Wert von Ausdruck (muss einen String ergeben) linksbündig (mit Leerzeichen aufgefüllt auf die in FIELD definierte Feldgröße).
  • MERGE "Weiterer Dateiname" - Eine weitere GW-BASIC-Datei in den Speicher laden und mit der bisherigen zusammenfügen. Falls die Zeilennummern nicht passen, werden diese von der nachgeladenen Datei überschrieben.
  • NAME "Alter Dateiname" AS "Neuer Dateiname" - Datei umbenennen. Die Angabe der Dateinamen muss im MS-DOS-Format z.B. mit WIKITEST.BAS erfolgen!
  • OPEN "Dateiname" FOR [APPEND|INPUT|OUTPUT] AS #<log.Dateinr.> Datei (immer vom Typ PRG) zum Schreiben/Lesen/Anhängen öffnen (die OPEN-Syntax aus BASIC V2 ist weiter gültig).
  • OPEN "<mode>", #(log.Dateinr.), "<Dateiname>" [,Recordlänge] Datei (PRG o. REL) öffnen mit <mode> I für INPUT (Lesen), O für OUTPUT (Schreiben), A für APPEND (Anhängen), R öffnet eine RELative Datei hierbei muss zusätzliche die Standard-Record-Länge von 1 bis 254 Bytes angegeben werden. Die logische Dateinr. darf Werte zwischen 1 bis 13 annehmen.
  • PUT #<log.Dateinr.>,<RN> Schreibt einen zuvor gefüllten Record-Puffer in die relative Datei in den Record mit Nummer RN (siehe FIELD).
  • RESET - Schließen aller geöffneten Dateien und Aktualisierung des Directorys bzw. Schreiben der BAM vor Diskettenwechsel.
  • RSET <String-Variable>=<Ausdruck> Belegt die Feldvariable String-Variable mit dem Wert von Ausdruck (muss einen String ergeben) rechtsbündig (mit Leerzeichen aufgefüllt auf die in FIELD definierte Feldgröße).
  • RUN "Dateiname" - Laden und Ausführen der angegebenen GW-BASIC-Datei.
  • TAPE - Umschalten auf Kassettenmodus, Laufwerk 1 (einige Datei-Befehle funktionieren in diesem Modus nicht!).

Siehe auch Beispiele.

[Bearbeiten] Grafikbefehle

(thumbnail)
Farbpalette unter GW-BASIC 64
  • CLS <Parameter> Aktueller Bildschirm löschen, Grafik und Text mit 0 (Standard), nur Grafik mit 1.
  • COLOR <Farbe1>,<Farbe2>[,<Rahmenfarbe>] Farben ändern mit Werten 0 bis 15, wobei folgende Farbpalette gilt: 0 schwarz, 1 blau, 2 grün, 3 cyan, 4 rot, 5 violett, 6 braun, 7 hellgrau, 8 dunkelgrau, 9 dunkelblau, 10 hellgrün, 11 hellblau, 12 hellrot, 13 orange , 14 gelb, 15 weiß.
    Die Parameter Farbe1 und Farbe2 haben je nach Bildschirmmodus eine unterschiedliche Bedeutung:
    • Im Textmodus (SCREEN 0): COLOR <Hintergrundfarbe>,<Zeichenfarbe>,<Rahmenfarbe> Die Farbeinstellung von vor dem GW-BASIC-Start wird übernommen, entspricht üblicherweise COLOR 1,11,11.
    • Im Grafikmodus (SCREEN 1): COLOR <Zeichenfarbe>,<Hintergrundfarbe>,<Rahmenfarbe> Die Farbeinstellung von vor dem GW-BASIC-Start wird übernommen, entspricht üblicherweise COLOR 11,1,11.
  • CIRCLE (<x>,<y>),<r> [,<c> [,<Anfang>, <Ende> [,<Radiusverhältnis>]]] Kreis oder Ellipse zeichnen mit Kreismittelpunkt an Position x,y und angegebenen Radius r mit den optionalen Parametern: c 0 (löschen) oder 1 (zeichnen; Standard), den Beginnwinkel Anfang und Endewinkel Ende des Bogens in Radiant (0 bis 2*π entspr. dem Winkelbereich 0 bis 360 Grad) und mit Radiusverhältnis als Verhältnis zwischen Y- und X-Ausdehnung - bestimmt, ob Kreis (=1) oder Ellipse gezeichnet wird (<1 liegend, >1 stehend).
    Beispiele:
    • CIRCLE (30,30),10,1 - Kreis mit Radius 10 px zeichnen
    • CIRCLE (200,55),21,1,1,0,2*π,3 - Ellipse mit Radius 21 px im Verhältnis 3 zeichnen (stehende Ellipse)
    • CIRCLE (30,30),40,1,π,2*π,0.5 - liegende Ellipse, nur den Unterteil zeichnen ("Schüssel")
    • CIRCLE (30,30),20,1,-1,1 - Kreisbogen mit einem Winkelbereich ca. -60 bis +60 Grad
    • CIRCLE (30,30),20,1,0,5,3 - offene Ellipse (stehend) zeichnen (etwas mehr als 60 Grad Öffnungswinkel)
  • DRAW <String-Parameter> Beliebigen Linienzug zeichnen, wobei die Befehle im String-Parameter aneinandergereiht sind (optionales Trennzeichen im String können alle Zeichen außer Buchstaben, Ziffern und Vorzeichen dienen). Mit folgenden Parametern:
    (thumbnail)
    Beispielzeichnungen im SCREEN 1-Modus
    • U[Zahl] - Up, Linie nach oben zeichnen
    • D[Zahl] - Down, Linie nach unten zeichnen
    • L[Zahl] - Left, Linie nach links zeichnen
    • R[Zahl] - Right, Linie nach links zeichnen
    • I[Zahl] - Diagonale rechts/oben
    • G[Zahl] - Diagonale rechts/unten
    • F[Zahl] - Diagonale links/unten
    • H[Zahl] - Diagonale links/oben
    • Mx,y - Bewegt sich zeichnend zu den absoluten Zielkoordinaten x,y (entgegen Original-GW-BASIC gibt es keinen relativen Modus durch Voranstellen von "+" oder "-")
    • C - 0 Linie löschen, 1 Linie zeichnen (default)
    • B - Verschiebung ohne Zeichnen vor einem Zeichenkommando
    • N - Verschiebung mit Rücksprung zu den Ausgangskoordianten vor einem Zeichenkommando
    • P - Ausfüllen einer geschlossen geometrischen Figur
Die Zahlwerte dürfen zwischen -32768 und 32767 liegen, Standardwert 1 Pixel
Beispiele:
  • DRAW "D30 R30 U30 L30 BD5 BR5 P" zeichnet ein Quadrat mit 30 Pixel Seitenlänge von der letzten Zeichenposition, positioniert sich ins Quadrat und füllt es von dort ausgehend aus.
  • DRAW "I9 F9 L18" Dreieck
  • DRAW "G50;F50;I50;H50" Raute
  • DRAW "R22,I22,U22,H22,L22,G22,D22,F22" Achteck
  • DRAW "NI11, NH11, NG11, NF11" 45° gedrehtes Kreuz
  • LINE (<x1>,<y1>)-(<x2>,<y2>)[,c [,B [F]]] Linie oder Rechteck zeichnen, dabei ist c 0 (löschen) oder 1 (zeichnen; Standard), B zeichnet ein Rechteck und mir F wird das Rechteck ausgefüllt; Beispiele:
    • LINE (10,10)-(50,50) Schräge Linie
    • LINE (10,10)-(30,50),1,B Unausgefülltes Rechteck
    • LINE (100,10)-(110,50),1,BF Ausgefülltes Rechteck
  • PAINT (<x>,<y>) Bereich mit Farbe füllen. Wenn der Bereich keine geschlossene geometrische Figur ist, wird ggf. der gesamte Bildschirm ausgefüllt!
  • POINT (<x>,<y>) Abfrage, ob an der angegebenen Koordinaten ein Punkt gesetzt ist.
  • PSET (<x>,<y>) Punkt an Koordinate x,y setzen mit x (0 bis 320) und y (0 bis 200).
  • PRESET (<x>,<y>) Punkt an Koordinate x,y löschen.
  • SCREEN <mode> Monitormodus (0|1) auswählen mit nur Text 0 (Standard), Text mit Grafik 1 (HiRes mit 320×200 px, sichtbarer Bereich 319×199 px). Unter SCREEN 1 sind nur die Grafikbefehle zur Bildschirmausgabe nutzbar. Werden z.B. Befehle, die Zeichen auf dem Bildschirm ausgeben, im Grafikmodus genutzt, führt dies zu einen SYNTAX ERROR.
  • PRINT <"Text"|String> <mode> Im Grafikmodus kann nur mittels PRINT zusätzlich Schrift gezeichnet werden. Die Positionierung des Textes erfolgt durch LOCATE.

[Bearbeiten] Sound-Befehle

  • BEEP Ausgabe eines Tons mit 800 Hz.
  • PLAY "<Noten>" Angaben aller Noten als Zeichen (A-G), in Kombination mit < oder > hinter der Note eine Oktave tiefer oder niedriger, mit # und + oder - hinter der Note ein halbe Note höher oder niedriger. Weitere Parameter vor Noten:
    • P<Zahl> - Pausenlänge von 0 bis 9, ansonsten optionale gleichlange Pause.
    • L<Zahl> - Notendauer in 0 bis 9, optional 1.
    • T<Zahl> - Tempo des Liedes von 0 bis 9.
    • O<Zahl> - Oktave 1, 2 oder 3 nutzen.
Beispiel: PLAY "T3,L2,C,D,E,P4,O2,L9,T6,E,F,D-,D>,d#,D<,D+" - Anmerkung: Die Kommas können weggelassen werden!
  • SOUND <Frequenz>,<Dauer> Erzeugen eines Sounds bei der angegebenen Frequenz (0 bis 65535) mit der Taktlänge von 0 bis 255.
    Beispiel: SOUND 5555, 222

[Bearbeiten] Eingabebefehle

  • LINEINPUT["<Kommentar>";]<String-Variable> Eingabe einer logischen Bildschirmzeile (80 Zeichen) mit Übergabe an eine String-Variable, inklusive verbotene Zeichen wie ; : " ,
  • LINEINPUT#(<log.Dateinr.>),<String-Variable> Einlesen einer Zeile mit maximal 254 Zeichen aus einer Datei mit Übergabe an eine String-Variable, inklusive verbotene Zeichen wie ; : " ,
    (bei Version 1 können wegen des limitierten Input-Puffers max. 88 Zeichen gelesen werden)
  • INP$(<max.Länge>[,#<log.Dateinr.>]) Dient zur Tasteneingabe oder zum Einlesen von sonstigen Peripheriegeräten. Die Zeichen werden an eine String-Variable übergeben und auf angegebene maximale Länge (1 bis 80 für den Bildschirm, 1 bis 255 für Dateien) gekürzt (bei Version 1 können wegen des limitierten Input-Puffers max. 88 Zeichen gelesen werden).
    Beispiel: A$ = INP$(20)
  • INKEY$ Eine String-Systemvariable, die die zuletzt gedrückte Taste liefert.
    Beispiel: A$ = INKEY$ - ähnlich einem GET A$ in BASIC V2.

[Bearbeiten] Ausgabebefehle

  • LCOPY ["Dateiname"|0|1] Ausgabe einer Datei oder des Bildschirms Textmodus (0) bzw. Grafik (1) auf dem Drucker
  • LLIST [<Zeilennummerstart>]-[<Zeilennummerende>] Listing anzeigen und auf Drucker ausgeben
  • LPOS(<Zahl>) Abfrage der Position des Druckkopfes
  • LPRINT <Ausdruck> Ausgabe des ausgewerteten Ausdrucks auf dem Drucker
  • LPRINT USING "<Muster>",<Ausdruck>,... Formatierte Ausgabe auf dem Drucker gemäß Muster der Werte der folgenden Ausdruckliste.
  • PRINT USING "<Muster>",<Ausdruck>,... Formatierte Ausgabe auf dem Bildschirm gemäß Muster der Werte der folgenden Ausdruckliste.
    Beispiel: PRINT USING"##.##",123.4567 gibt 23.45 aus.

[Bearbeiten] Variablenbefehle und Funktionen

  • CLEAR <Parameter> Löscht alle Variablendefinitionen und den Stack, schließt alle geöffneten Dateien und setzt Musik (Soundausgabe wird beendet), Grafik, STRIG, ON ERROR zurück. Mit dem Parameter kann ein Speicherbereich von 0 bis 65535 angegeben werden. Der Speicherbereich für Variablen beginnt dann an dieser Adresse. Ist dieser zu stark begrenzt, kann dies zu einem OUT OF MEMORY führen!
  • EL Systemvariable, die sich die aktuelle Fehlerzeilennummer enthält, wenn eine ON ERROR GOTO ...-Konstruktion aktiv ist.
  • ER Systemvariable, die sich die aktuelle Fehlernummer enthält, wenn eine ON ERROR GOTO ...-Konstruktion aktiv ist.
  • FIX(<Zahl>) Die Funktion liefert den jenen Teil einer Fließkommazahl vor dem Dezimalpunkt (Komma). Im Gegensatz zur Funktion INT() erfolgt keine Rundung auf die nächstniedrige Ganzzahl!
  • HEX$(<Dezimale Zahl>) Umrechnen einer dezimalen Zahl von 0 bis 65535 in Hexadezimal $0000 bis $FFFF.
  • &H[<Hexadezimale Zahl>] Umrechnen einer hexadezimalen Zahl $0000 bis $FFFF in Dezimal 0 bis 65535. Die Angabe muss mit 4 Ziffern erfolgen!
  • INSTR([<Startposition>,]<Daten-String>,<Such-String>) Funktion, die die Postition von Such-String innerhalb von Daten-String (sofern gefunden) retourniert. Optional kann die Startposition (1 bis 255) vorgegeben werden.
  • OCT$(<Dezimale Zahl>) Umrechnen einer dezimalen Zahl von 0 bis 65535 in Oktalzahl #000000 bis #177777.
  • RANDOMIZE [<Ausdruck>] Zufallszahlengenerator mit einem Wert des Ausdrucks (muss im Bereich von 0 bis 65535 bleiben) initialisieren, um wirklich zufällige Zahlen mittels RND-Funktion zu generieren.
  • STRING$(<Anzahl Zeichen>,<Zeichencode o. Zeichenkette>) Generieren einer Zeichenkette mit einem definierten Zeichen.
  • SPACES$(<Anzahl Zeichen>) Erzeugt eine Zeichenkette mit Anzahl Zeichen Leerzeichen.
  • <code> SWAP <Variable1>, <Variable2> Den Inhalt zweier Variablen vertauschen.
  • XOR(<Zahl1>,<Zahl2>) Exklusiv-Oder-Funktion für 2 Werte von 0 bis 65535.

[Bearbeiten] Weitere Befehle

  • LOCATE <Zeile>, <Spalte> Positionierung des Cursors an Zeile 1 bis 25 und Spalte 1 bis 40
  • CSRLIN Liefert die Zeilenposition des Cursors als Ausdruck, der einer Zahlenvariable zugewiesen werden kann. Die Spaltenposition ist hingegen weiterhin mit der Funktion POS(Zahl) abzufragen.
  • CALL <Speicheradresse>(Variablen) Aufruf eines Maschinenspracheprogramms an einer Speicherstelle von 0 bis 65535 liegend mit Übergabe von durch Komma getrennte Zahlen- oder Variablenwerte an das Maschinenspracheprogramm.
  • RESTORE [<Zeilennummer>] Setzt DATA-Zeilen für den READ-Befehl zurück. Mit der Angabe der entsprechenden Zeilennummer kann gezielt für das nächste READ auf die entsprechende DATA-Zeile positioniert werden.
  • IF ... THEN ... :ELSE ... Die Wenn-Dann-Bedingung wurde durch einen Sonst-Zweig ergänzt. Er muss allerdings in der IF-THEN-Zeile stehen und mit einem Doppelpunkt getrennt werden.
    Beispiel: 10 X=X+1: IF X<10 THEN 1PRINT X: GOTO 10 :ELSE PRINT "FERTIG"
  • WHILE <Ausdruck> : ... (zu wiederholende Befehle) ... : WEND Die WHILE-WEND-Schleife erweitert die Möglichkeiten von Schleifenbildung erheblich, allerdings darf diese nicht über mehrere Zeilen erstrecken. Solange der Ausdruck wahr (ungleich 0) ist, wird die Schleife bzw. werden die Befehle zwischen WHILE und WEND ausgeführt.
    Beispiel: 10 CLS: WHILE A<39: A = A+1: LOCATE 10,A: PRINT A: WEND
  • WRITE <Variablen> Ausgabe von Argumenten wie Variablen und Text auf dem Monitor. Ähnlich dem PRINT-Befehl aber mit dem Unterschied, dass die Ausgabewerte der Variablen mit Kommas (,) abgetrennt werden und Text in Anführungszeichen ("") angezeigt werden. Das Semikolon (;) kann nicht verwendet werden!
  • WRITE#,(<log.Dateinr>) <Parameter> Ähnlich dem PRINT#-Befehl für das Schreiben in geöffneten Dateien mit o.g. Abweichungen. Nur nutzbar innerhalb von Programmen.


Laut Ausgabe 46 des Commodore Computer Clubs sind noch folgende Befehle vorhanden, deren einwandfreie Funktion bisher noch nicht festgestellt worden ist bzw. dessen Funktionsaufruf unklar ist:

BUFFER, CHDIR (PATH), FUNC1, FUNC2, RGET$

[Bearbeiten] Beispiele

Relative Datei anlegen, schreiben und lesen mit Datei-Befehlen:

 50 RN=33 : REM RECORD-NUMMER
 60 RS=20 : REM RECORD-LAENGE

100 REM DATENSATZ SCHREIBEN
110 OPEN "R",#1,"DATEN.DB",RS   (legt relative Datei autom. an)
120 FIELD #1, 15 AS I$, 5 AS N$ (Record Felder festlegen)
130 RSET I$=STR$(SIN(2))        (Felder füllen)
140 LSET N$=STR$(2)
150 PUT #1,RN                   (Record schreiben)
160 CLOSE 1
170 END

200 REM DATENSATZ LESEN
210 OPEN "R",#1,"DATEN.DB",RS   (relative Datei öffenen, wird gegebenenfalls angelegt)
220 FIELD #1, 15 AS I$, 5 AS N$ (Feldzusammensetzung eines Records festlegen)
230 GET #1,RN                   (Record einlesen)
240 PRINT "("$I","$N")"         (und anzeigen)
250 CLOSE 1


[Bearbeiten] Weblinks

WP-W11.png Wikipedia: GW-BASIC