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.