Pegasus-Basic Anleitung Teil 2 ------------------------------
PLOT (modus), x, y(, x, y) - setzt einen Punkt im Modus#modus an Koordinate x,y.
PLOT (modus),x1,y1 TO x2,y2 (TO x3,y3..)
- zeichnet eine Linie im Modus #modus von x1,y1 nach x2,y2 (nach x3,y3). PLOT TO x,y - zieht eine Linie vom zuletzt ge- zeichneten Punkt nach x,y. HLINE (modus), x1 TO x2,y - zeichnet eine horizontale Linie von Spalte x1 nach Spalte x2 in Zeile y. VLINE (modus),x,y1 TO Y1 - zeichnet eine vertikale Linie in Spalte x von Zeile y1 nach Zeile y2.
FRAME (modus), x1, y1, x2, y2
- zeichnet ein Rechteck mit den gegen- überliegenden Eckpunkten x1, y1 und x2, y2. BOX (modus), x1, y1, x2, y2 - zeichnet ein ausgefülltes Rechteck mit den gegenüberliegenden Eckpunkten x1, y1 und x2, y2. CIRCLE (modus), x, y, r - zeichnet einen Kreis mit dem Mittel- punkt bei x, y und Radius r (2-255). FILL x, y - füllt eine Fläche um x, y. HARDCOPY - gibt eine Hardcopy des Grafikbild- schirms auf einem Drucker (#4) aus. MOVE int - bewegt den Grafikcursor um #int Schritte. MOVE TO x, y - bewegt den Grafikcursor nach x, y. TURN winkel - dreht den Grafikcursor um #winkel Grad. TURN TO winkel - dreht den Grafikcursor auf #winkel Grad. PENUP - der Grafikcursor wird nur bewegt. PENDOWN - der Grafikcursor zeichnet bei jeder Bewegung. GSIZE gx, gy(, ax, ay) - legt die Buchstabengröße für GPRINT in x- und y-Richtung fest (1-8) (und bestimmt den Abstand der Buchstaben (0-255) zueinander). GPRINT (modus), x, y, str$ - gibt den Text str$ im Modus #modus ab Koordinate x, y aus. Als Steuerzeichen werden anerkannt: RVS ON/RVS OFF Darstellung CTRL+1-8 & CBM+1-8 Schriftfarbe CTRL+f, dann Farbtaste Hintergrund CTRL+h x-Schreibrichtung CTRL+v y-Schreibrichtung REPEAT...UNTIL bedingung - die zwischen REPEAT und UNTIL angege- benen Befehle werden solange ausge- führt, bis die Bedingung wahr wird. WHILE bedingung...WEND - solange die Bedingung wahr ist, werden die Befehle zwischen WHILE und WEND ausgeführt. Diese Schleifenkon- struktion kann, genau wie REPEAT... UNTIL, auch mehrere Zeilen umfassen. Der Unterschied zur REPEAT-Schleife besteht darin, daß die Bedingung zu Beginn der WHILE-Schleife getestet wird und nicht, wie bei REPEAT..UNTIL, am Ende. So kann es passieren, daß die WHILE-Schleife kein einziges Mal aus- geführt wird. IF bedingung THEN befehle1:ELSE befehle2 - ist die Bedingung wahr, so werden Be- fehle1 ausgeführt. Wenn nicht kommen die Befehle2 an die Reihe.
IF bedingung GOTO zeile1:ELSE zeile2
- ist die Bedingung wahr, so wird in Zeile1 gesprungen, sonst in Zeile2.
LIST zeilennr/label RUN zeilennr/label GOTO zeilennr/label GOSUB zeilennr/label RESTORE zeilennr/label
- diese fünf Befehle haben erweiterte Eigenschaften. Statt einer Zeilen- nummer kann nun ein Label, d.h. ein symbolischer Name benutzt werden. Erlaubte Zeichen für den Labelnamen sind die Buchstaben A-Z, die Ziffern 0-9 und der Punkt. Ein Label steht direkt nach der Zeilennummer und beginnt grundsätzlich mit einem Buch- staben.
BEISPIELPROGRAMM: 100 GOSUB AUSGABE 110 END 200 AUSGABE:PRINT"TEST" 210 RETURN
Beginnt ein Label mit einem Befehls- wort (z.B.: TOrtengrafik), so muß das Label mit dem Kennwort "LABEL" markiert werden:
BEISPIELPROGRAMM: 100 GOSUB TORTENGRAFIK 110 END 200 LABEL TORTENGRAFIK 210 PRINT "TORTEN SCHMECKEN GUT!" 220 RETURN
Natürlich sind auch berechnete Sprünge möglich: GOTO 1000+10*A Dabei ist folgendes zu beachten: Ein Befehl der Form GOSUB Z oder RESTORE I*100+60000 wird primär als Sprung auf das Label "Z" bzw. "I" interpretiert. Um Mißverständnissen aus dem Wege zu gehen, müssen Sie vor das "Z" nun einen Punkt setzen: GOSUB .Z Label werden normalerweise vom Anfang des Programms her gesucht. Schreibt man vor dem Labelnamen allerdings das Zeichen "<", so beginnt die Suche erst ab der aktuellen Zeile. Das kann Zeit sparen, setzt jedoch voraus, daß der Sprung nach vorne, d.h. auf höhere Zeilen erfolgt. RADIAN - schaltet alle Winkelangaben bei tri- gonometrischen Berechnungen auf das Bogenmaß. DEGREE - alle Winkelangaben erfolgen in Grad. SWAP var1, var2 - vertauscht die Variablen var1 und var2 miteinander. Beide müssen vom gleichen Variablentyp sein. Dieser Befehl ent- spricht der allgemein verwendeten Er- satzform: Q=VAR1:VAR1=VAR2:VAR2=Q DOKE adr, int - speichert die Zahl #int im Format LO-/ Hibyte an Adresse #adr/adr+1. DELAY int - hält das Programm für #int/50s an. CLS (zeile) - löscht den gesamten Textbildschirm (löscht Zeile #zeile). CLS zeile1, zeile2(, spalte1, spalte2) - löscht den Textbildschirm im Bereich der Zeilen zeile1 bis zeile2 (inner- halb der Spalten spalte1 bis spalte2). COLOUR farbregister, farbe(, farbre- gister, farbe) - legt die Farben (1-16) für ein be- stimmtes Register fest:
1 : Schriftfarbe 2 : Rahmenfareb 3 : Hintergrundfarbe 4 : MC-Farbe 1 5 : MC-Farbe 2 6 : MC-Farbe 3 7 : Sprite-MC 1 8 : Sprite-MC 2 9 : Punktfarbe 1 10: Punktfarbe 2 11: Punktfarbe 3
MULTI ON/OFF - schaltet den Multicolourmodus an/aus. CHAR zeile, spalte(, farbe)(, text) - setzt den Cursor auf Position (zeile, spalte), bestimmt die Schriftfarbe und gibt einen Text text aus. CHARSET nr - kopiert den Originalzeichensatz #nr (1/2) in den Zeichensatzspeicher.
DEFINE CHAR bsc(, MULTI)
- bestimmt den Bildschirmcode (bsc, 0-255) des zu definierenden Zeichens. Ist der Zusatz MULTI angegeben, so wird ein Multicolourzeichen definiert.
DEFINE SPRITE block(, MULTI)
- legt den zu ändernden Spriteblock (1-16) fest. MULTI bewirkt die Definition eines MC-Sprites. CODE str$ - Dieser Befehl zeigt sich für die Festlegung des Aussehens eines Zeichens oder Sprites verantwortlich. Die Definition eines neuen Zeichens besteht aus acht CODE-Befehlen (entsprechend der Höhe eines Zeichens auf dem Bildschirm). Für ein Sprite sind 21 CODE-Befehle notwendig. Die Länge des Definitionsstrings be- trägt 8 bzw. 24 Zeichen, bei einer MULTI-Definition halbiert sie sich auf 4 bzw. 12 Zeichen. Im Definitionstring sind erlaubt:
NORMALMODUS " ", "." Punkt löschen "+", "*" punkt setzen MULTI-MODUS " ", "." Punkt löschen "a", "1" Punkt setzen: MC1 "b", "2" Punkt setzen: MC2 "c", "3" Punkt setzen: MC3 SPRITE nr,block,farbe,xexp,yexp,pri,mult
- legt die Parameter eines Sprites fest. #Nr ist die Nummer des Sprites (1-8), #block der Block in dem es definiert ist (1-16) und #farbe die Spritefarbe. #Xexp, #yexp, #prior und #multi (0=aus 1=an) legen die x- und y-Vergrößerung, Priorität (vor oder hinter den Zeichen) und den Multicolourmodus (1=MULTI) fest. Innerhalb des Befehls können Parameter ohne weiteres weggelassen werden, so legt SPRITE 1,3,7 fest, daß Sprite #1 in Block 3 definiert ist und die Farbe 7 (blau) hat. Alle anderen Parameter werden nicht verändert. Ähnlich bestimmt SPRITE 7,,,1,1 nur die Vergrößerung in x- und y-Richtung. SPRON nr(, nr) - schaltet das Sprite #nr an.
SPRON nr1 TO nr2(, nr1 TO nr2)
- schaltet die Sprites #nr1 bis #nr2 an. SPROFF nr(, nr) - schaltet das Sprite #nr wieder aus.
SPROFF nr1 TO nr2(, nr1 TO nr2)
- schaltet die Sprites #nr1 - #nr2 aus. SETSPRITE nr, x, y - setzt das Sprite #nr auf die Koordi- nate x, y (x=0-511, y=0-255).
DIE NEUEN FUNKTIONEN: var = DEG(num) wandelt #num von Bogenmaß in Grad um. var = RAD(num) wandelt #num von Grad in Bogenmaß um.
var = FRAC(num) Nachkommateil der Zahl #num. var = MOD(num1, num2) Ganzzahliger Rest der Division num1/num2 var = ROUND(num) rundet #num auf ein ganzzahliges Ergeb- nis. var = ROUND(num, anz) rundet #num auf #anz Nachkommastellen. var = DEC(str$) wandelt die hexadezimale Zahl str$ ins Dezimalsystem um. var = BIN(str$) wandelt die Binärzahl str$ ins Dezimal- system um. var = DEEK(adr) entspricht PEEK(adr)+256*PEEK(adr+1). var = INSTR(str1$, str2$(, pos)) prüft, ob str2$ in str1$ (suchend ab Position #pos) enthalten ist. var = JOY(port) liest den Joystickport #port.
1 Ist der Feuerknopf gedrückt, 8 | 2 so erhöhen sich die Werte um | 128. 7 --0-- 3 | 6 | 4 5 var = POT(nr) Wert des Analogeingangs #nr (1-4).
var = SCREEN (zeile, spalte) Bildschirmcode des Zeichens bei Position #zeile, #spalte. var = TEST (x, y) prüft, ob in der Grafik ein Punkt ge- setzt ist. var = USING format$; var... erzeugt einen String, in dem die angege- benen Variablen formatiert werden. Hier- bei gelten die folgenden Vereinbarungen: # ist eine Ziffer ###.## ist eine Zahl mit 3 Vorkomma- und 2 Nachkommastellen.
! ist das erste Zeichen eines Strings. / / sind (Anzahl Spaces +2) Zeichen eines Strings. & ist der komplette String. <zchn Zeichen zchn wird direkt über- nommen.
Steht vor einem # ein +, so wird das Vorzeichen immer angegeben. BEISPIELE:
?USING "###.###";π => " 3.1415" ?USING "###.###";-π => " 3.1415-" ?USING "/ /";"COMMODORE" => "COMMO" var$ = DS$ Fehlerstatus des aktuellen Laufwerks.
var$ = Hex$(int) wandelt #int in eine Hex-Zahl um. var$ = BIN$(int) wndelt #int in eine Binärzahl um. var$ = SPACE$(int) erzeugt einen String mit #int Leer- zeichen. var$ = UCASE$(str$) wandelt alle Kleinbuchstaben in str$ in Großbuchstaben um. var$ = STRING$(asc, anz) erzeugt einen String aus #anz Zeichen mit dem ASCII-Wert #asc. var$ = STRING$(str$, anz) erzeugt einen String, der anz-mal str$ enthält. var$ = INPUT$(anz) liest #anz Zeichen von der Tastatur. var$ = INPUT$(#filenr) liest solange Zeichen aus dem File #filenr, bis ein CR gelesen wird. Entspricht INPUT#filenr, var$ kann je- doch auch Trennzeichen (Komma, Semi- kolon) lesen. var$ = INPUT(#filenr, anz) liest #anz Zeichen aus dem File #filenr. var$ = TIME$ liefert die Uhrzeit (entspricht nicht TI$).
var = SPRITEX(nr) var = SPRITEY(nr) X- bzw. y-Koordinate von Sprite #nr. BEISPIEL FÜR EINE ERWEITERUNG:
Ein Beispiel für die Erweiterbarkeit von PBasic mit neuen Befehlen und Funktionen ist das Programm "WINDOW.O". Es stellt Befehle für die Programmierung von Fenstern zur Verfügung. Sie laden und starten es mit BRUN "WINDOW.O". Dabei bindet sich diese Erweiterung über die bereits erwähnten Vektoren bei $0334 und $0336 in PBasic ein. Bitte laden Sie nun den dritten Teil der Pegasus-Basic Anleitung.