Magic Disk 64

home to index to html: MD9102-UTILITIES-PEGASUS-BASIC_ANLEITUNG_TEIL_2.html
     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.                
Valid HTML 4.0 Transitional Valid CSS!