====== PBASIC - Der Basic Interpreter für den ATARI Portfolio ======
PBASIC ist ein Freeware BASIC-Interpreter, den B.J.Gleason speziell für den Portfolio geschrieben hat. Es ist ein reiner Interpreter der BASIC-Programme ausführt, die mit Portfolios Text-Editor geschrieben wurden. Eine Befehlszeile wie bei BASICA oder GW-BASIC gibt es nicht.
Die letzte Version ist PBASIC 5.0 und besteht aus folgenden Programmen:
^Name^Größe^Datum^Beschreibung^
|PBASIC.EXE| 44.176| 16.01.93 18:06| Der Interpreter selbst|
|PBDOC.EXE| 20.795| 21.01.93 17:21| PBASIC Handbuch|
|ALTR.COM| 273| 31.12.92 17:05| TSR um PBASIC in der Textverarbeitung aufzurufen|
|SPB.EXE| 10.944| 31.12.92 17:05| Schrumpft PBASIC-Dateien (entfernt Umbrüche, Kommentare...)|
|PBCOMP.EXE| 17.842| 31.12.92 17:05| Komprimiert PBASIC Dateien und macht sie uneinsehbar.|
|PBE.EXE| 29.508| 01.12.91 01:50| PBASIC-Editor für den PC|
===== Einsteiger Kurs =====
Für alle, die schon immer einmal programmieren wollten, sich aber immer vor Dingen wie Eingabe, Ausgabe, Variablen, Objektorientiert oder anderen Dingen die mit der Programmierung zu tun haben, gefürchtet haben dann ist dieser Kurs genau das Richtige für Sie!
Programmiersprachen gibt es eine ganze Menge, größtenteils laufen diese auch auf dem Portfolio(tm).
Ich möchte aber, der Einfachheit halber mit Basic beginnen, da diese Sprache dem Programmierer die größten technischen Variationen bietet.
Das dies nicht immer Vorteile hat werden wir noch sehen... \\
Ein Beispiel: Man kann bei Basic die Befehle entweder alle mit Kommas getrennt hintereinander oder aber alle in einzelne Zeilen schreiben, letzteres ist natürlich weit übersichtlicher, braucht aber auch viel mehr Speicher. Die erste Methode mag zwar sparsamer sein, hat aber den entscheidenden Nachteil, daß von nach spätestens drei Wochen nicht mehr weiß, wo welcher Programmteil sitzt. Wie ergeht es nun erst denen, die den Code lesen und sich damit beschäftigen sollen? Damit wäre schon ein wichtiger Punkt geklärt! Man spricht bei dem chaotischen Code von "Spaghetticode". Für den Portfolio gibt es nur zwei diskutable Basic Dialekte, der eine ist PBASIC von Bj. Gleason, ein Interpreter (frei kopierbar) oder das Portfolio Power Basic von Robert S. Zale welches übrigens kompatibel zu der PC Version ist. Wir werden aber mit dem PBASIC arbeiten, da sich dieses Basic jeder sehr einfach besorgen kann!
Dieser Kurs setzt PBASIC 5.0 voraus; fürs erste genügt auch eine ältere Version.
Beim Portfolio(tm) werden die Programme für Basic im Editor eingegeben. Die Bedienung des Editors setze ich an dieser Stelle voraus und werde darauf nicht näher eingehen. Die erstellten Dateien werden mit der Endung ''.bas'' gespeichert. Und können dann mit der Eingabe ''pbasic [datei]'' gestartet. Die Endung muß nicht angegeben werden, sofern sie ''.bas'' lautet.
Zuerst beschäftigen wir uns mit der Ausgabe von Daten auf dem Bildschirm. Im Basic gibt es da einen zentralen Befehl.
==== PRINT ====
Mit Print wird dem Programm die Möglichkeit gegeben dem Anwender eine Meldung zu übermitteln.
Die Zeile:
PRINT "Hallo"
ergibt die Meldung ''Hallo'' auf dem Bildschirm.
Damit können Sie jetzt ein wenig herum experimentieren bevor sie weiterlesen...
==== INPUT ====
Input fragt einen Wert (Text oder Zahen) vom Benutzer ab und legt diese in einer Variablen ab.
Bevor nun aber näher auf die Eingabe eingegangen wird, möchte ich noch etwas zu Variablen sagen.
Anders als bei der Mathematik gibt es in der Programmierung unterschiedliche Arten von Varablen. Die einen können nur Zahlen verarbeiten, die anderen nur Buchstaben/Worte. Es gibt da noch weitere, auf die werde ich nun aber nicht näher eingehen. Im BASIC werden diese beiden Variablentypen durch einen Buchstaben((Oder eine Buchstabenkombination von bis zu 8 Buchstaben)) bei den Numerischen Variablen und einem Buchstaben((Oder einer Kombination mit bis zu 8 Zeichen)) gefolgt von dem Zeichen "$" (z.B. a$).
Ich empfehle allen, bei Variablen einen Namen zu verwenden, dessen Bedeutung auch noch nach 4 Wochen erkennbar ist.
So, zurück zu der Eingabe.
Die Zeile
INPUT "Name";a$
ergibt die folgende Zeile auf dem Bildschirm:
Name? _
Wird statt des ";" in der INPUT... Zeile ein "," gesetzt, so ergibt dies folgendes:
Name _
Komma oder Semikolon entscheiden, ob ein Fragezeichen gesetzt wird oder nicht.
Wie Sie bemerkt haben, ist die Wahl der Variablen für den Namen zu kurz. Besser wäre hier "name$" gewesen.
So, jetzt können wir die beiden Befehle auch miteinander verknüpfen. Der Befehl ''PRINT'' kann nämlich auch den Inhalt einer Variablen ausgeben.
PRINT "Ein kleiner Test"
INPUT "Name";name$
PRINT "Ihr Name ist ";name$
Probieren Sie es einfach aus.
Wie Sie gesehen haben, ist vor dem Anführungszeichen in der letzten Zeile eine Leertaste. Diese ist wichtig, da das Semikolon vor "name$" angibt, daß der Inhalt der Variablen **direkt** hinter den Anführungszeichen ausgegeben wird. Wird anstelle ein Komma eingesetzt, wird ein Platz gelassen.
Hinter der Variablen in der letzten Zeile muß aber nicht Schluß sein.
PRINT "Guten Tag ";name$;", wie geht es?"
Versuchen Sie mal ein paar Variationen.
Noch ein Beispiel((Achtung! Neuer Befehl CLS taucht auf, der dazu verwendet wird um das Display zu löschen und den Cursor in die erste Zeile und erste Spalte des Display zu setzen.))
PRINT "Namensabfrage!"
INPUT "Geben Sie Ihren Namen ein: ",name$
CLS
PRINT "Die Eingabe war: ";name$
Möchten Sie in Ihrem Programmen Anmerkungen einfügen, die nicht auf dem Bildschirm erscheinen sollen, so können Sie dazu den Befehl ''REM'' benutzen.
REM Abfrageroutine
Das Wort "Abfrageroutine" erscheint zwar im Programmcode nicht jedoch auf dem Bilschirm.
Als Abkürzung kann man auch das Zeichen "’" verwenden.
print "Hallo" ' Abfrageroutine
So, als nächstes beschäftigen wir und mit Sprungmarken. Im ''PBASIC'' werden diese durch Zeilennunmmern kenntlich gemacht. Der dazugehörige Befehl lautet ''GOTO''.
==== GOTO ====
Ohne lange Vorerklärung, tippen sie das folgende Programm einfach einmal ab. Sie werden sehen!
10 PRINT "Hallo"
GOTO 10
Nun, damit hätten wir unsere erste Endlosschleife programmiert. Doch keine Angst! Drücken Sie einfach ATARI solange bis auf dem Bildschirm ''BREAK IN xxx'' erscheint. Diese Break-Taste funktioniert übrigens immer und kann auch nicht durch einen Befehl abgeschaltet werden.
Wandeln wir das Programm minimal ab!
10 PRINT "Hallo",
GOTO 10
**Erklärung:**
Das Komma hinter dem Anführungszeichen von ''PRINT'' verhindert, daß ein Zeilenumbruch durchgeführt wird. Hier wird dann, wie bereits unter dem ''INPUT''-Befehl beschrieben, ein Platz gelassen. Natürlich könnte anstatt des Kommas auch wieder ein Semikolon gesetzt werden. Dann wird kein Platz gelassen und der Text direkt hintereinander geschrieben.
So, zum Schluß wollen wir uns dann noch mit einer kontrollieren Schleife beschäftigen. Es soll ja nicht immer die BREAK-Taste gedrückt werden. Vor allem, weil ja sonst das Programm danach nicht weiterlaufen könnte.
Die erste und wahrscheinlich am häufigsten verwende Schleife im Basic ist die ''IF THEN ELSE''-Schleife.
==== INKEY$ ====
Bevor wir aber loslegen muß ich noch die Variable ''INKEY$'' erklähren. Diese enthhält immer das zuletzt über die Tastatur eingegebene Zeichen. ''INKEY$'' kann allerdings nur einmal ausgelesen werden.
Ein Beispiel:
30 IF INKEY$<>"x" THEN GOTO 30
Der Befehl ''GOTO'' wird in diesem Programm nicht zwingend benötigt und kann auch weggelassen werden.
Diese Schleife wird solange durchlaufen, bis x gedrückt wird. Mit einer solchen Schleife können aber noch weitere Tasten abgefragt werden. Dazu wird allerdings ein weiterer Befehlt benötigt.
Dazu in einem anderen Kapitel...
So, jetzt ein komplettes Programm!
10 CLS
REM Abfrageroutine
INPUT "Name ";name$
INPUT "Straße ";str$
INPUT "PLZ ";plz
INPUT "Ort ";ort$
PRINT
PRINT "Sind die Eingaben korrekt (j/n)?"
20 ANTW$=INKEY$
IF ANTW$="" then 20
IF ANTW$="j" then 50
IF ANTW$="n" then 10
GOTO 20
50 CLS
PRINT "Guten Tag ";name$
PRINT "Sie wohnen in ";plz;"";ort$
END
Die Variable für die Straße wurde nicht wieder verwendet. Das können Sie aber gerne noch nachtragen.
Mit ''END'' wird das Programm beendet.
Arbeiten wir mit ''ELSE'', so könnte ein Programm so aussehen:
IF ANTW$="n" then 10
ELSE goto 20
ENDIF
Wichtig ist, daß hier der ''ENDIF''-Befehl gesetzt wird. Andernfalls kommt das Programm total durcheinander.
===== Handbuch =====
englisches Handbuch zum herunterladen:\\
{{:software:diy:basic:manual.zip|MANUAL.ZIP}}
===== Quellcodes =====
* [[.diy:Basic:pbgk:src_runman|Animation mit GPRINT]] -- RUNMAN.BAS
* [[.diy:Basic:pbgk:src_menu|Menüsteuerung]] -- MENU.BAS
* [[.diy:Basic:pbgk:src_filsel|Dateiauswahlmenü]] -- FILES.BAS
* [[.diy:Basic:pbgk:src_cmdlin|PBASIC Befehlszeile]] -- CMDLIN.BAS
===== FAQs =====