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.