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 gezeichneten 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 Mittelpunkt bei x, y und Radius r (2-255) .
FILL x, y
- füllt eine Fläche um x, y.
HARDCOPY
- gibt eine Hardcopy des Grafikbildschirms 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
xund 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 angegebenen Befehle werden solange ausgeführt, bis die Bedingung wahr wird.
WHILE bedingung. . . WEND
- solange die Bedingung wahr ist, werden
die Befehle zwischen WHILE und WEND
ausgeführt. Diese Schleifenkonstruktion 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 ausgeführt wird.
IF bedingung THEN befehle1 : ELSE befehle2
- ist die Bedingung wahr, so werden Befehle1 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 Zeilennummer 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 Buchstaben.
BEISPIELPROGRAMM: 100 GOSUB AUSGABE 110 END 200 AUSGABE:PRINT"TEST" 210 RETURN
Beginnt ein Label mit einem Befehlswort ( 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 trigonometrischen 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 entspricht der allgemein verwendeten Ersatzform: 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/50 s 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( innerhalb der Spalten spalte1 bis spalte2) .
COLOUR farbregister, farbe(, farbregister, farbe)
- legt die Farben (1-16) für ein bestimmtes 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 beträgt 8 bzw.24 Zeichen, bei einer
MULTI-Definition halbiert sie sich auf4 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 xund 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 xund 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 Koordinate 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 Ergebnis.
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 Dezimalsystem 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 gesetzt ist.
var = USING format$ ; var. . .
erzeugt einen String, in dem die angegebenen Variablen formatiert werden. Hierbei gelten die folgenden Vereinbarungen:
# ist eine Ziffer ### .## ist eine Zahl mit 3 Vorkommaund
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 Leerzeichen.
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 anzmal 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 jedoch auch Trennzeichen ( Komma, Semikolon) 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.