Super Expander 64

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Super Expander 64
Cover
Entwickler Fred Bowen
Firma Commodore
Verleger Commodore
Release 1983
Lizenz Vollversion
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png
Medien Icon cartridge.png
Sprache(n) Sprache:englisch
Information Es existiert eine Version für den VC-20

Das von Commodore herausgegebene Steckmodul Super Expander 64 ist eine BASIC-Erweiterung für den C64. Es erweitert das BASIC V2 um 21 Befehle und 11 Funktionen, die dem Anwender einen komfortableren Umgang mit Grafik (HiRes-Grafiken, Sprites, Shapes, Zeichen, Split-Screen), Sound und Eingabeabfrage von Tastatur, Joystick, Paddles oder Lightpen ermöglichen. Der Super Expander hat keine modifizierte Einschaltmeldung, aber reduziert den Arbeitsspeicher des C64 auf 30719 freie Bytes und belegt somit 8 KByte.
Ein ähnliches Steckmodul ist von Commodore für den VC-20 erschienen.

Hinweis: Wie bei allen BASIC-Erweiterungen ist darauf zu achten, dass mit Super Expander 64 entwickelte Programme nur fehlerfrei laufen, wenn das Steckmodul im C64 eingesteckt und aktiv ist!

Die Befehlsreferenz und einige Beispiele sind der Bedienungsanleitung "Super Expander 64" [1] entnommen.

Die angegebenen Definitionen und Beschreibungen orientieren sich an einer bestimmten Syntax.

Grafik-Befehle[Bearbeiten | Quelltext bearbeiten]

GRAPHIC[Bearbeiten | Quelltext bearbeiten]

Um schnell in einen anderen Grafikmodus zu wechseln, steht dieser Befehl zur Verfügung:

GRAPHIC <Modus>[,<Löschbit>]

Wobei <Modus> die folgenden Werte annehmen kann:

  • 0 = Normaler Textmodus (wie beim Einschaltend des C64: 1000 Zeichen mit 25 Zeilen á 40 Zeichen - 8×8-Pixel - in den 16 C64-Grundfarben)
  • 1 = Multicolor Modus (Bit Map; 160×200 Pixel, horizontal vergrößertes Pixel im Vergleich zum Hires-Modus, da für jeden 8×8-HiRes-Block vier Farben vergeben werden können: Text- und Hintergrundfarbe, sowie Multicolor-Farbe 1 und 2)
  • 2 = Hires-Modus (High Resolution Mode, Bit Map; Bit Map; 320×200 Pixel, jedes Pixel kann in einem 8×8-Block entweder mit Text- oder Hintergrundfarbe des jeweiligen Blocks dargestellt werden)
  • 3 = Split-Screen bzw. unterteilter Bildschirm mit Textbereich (5 normale Textzeilen, unten) und Hires-Grafikbereich (320×200 Pixel, oben)

Wird das <Löschbit> mit 1 gesetzt, so wird der neu aufgerufene Bildschirmmodus gleich gelöscht (Standardwert 0).

SCNCLR[Bearbeiten | Quelltext bearbeiten]

Der aktuelle Bildschirmmodus wird auch gelöscht durch

SCNCLR 

COLOR[Bearbeiten | Quelltext bearbeiten]

Die Vergabe von den 16 C64-Grundfarben erfolgt nun einfacher mit diesem Befehl. Die Farben können Werte von 0 bis 15 annehmen, ab 16 wiederholen sich die Farben. Das Setzen der Hintergrundfarbe hat nur im Textmodus eine sofortige Auswirkung. In den anderen Bildschirmmodi ändert sich die Hintergrundfarbe erst, wenn der entsprechende Bildschirmmodus aufgerufen wird oder der Bildschirm mit SCNCLR gelöscht wird.

COLOR [<Hintergrundfarbe>][,[<Textfarbe>][,[<Multicolor_Farbe_1>][,[<Multicolor_Farbe_2>][,[<Rahmenfarbe>]]]]]

Die Linienstärke beträgt normal 1 Pixel (POKE 49168,0). Diese kann mit POKE 49168,1 auf doppelte Linienstärke umgestellt werden.

BOX[Bearbeiten | Quelltext bearbeiten]

Folgende Grafikbefehle stehen für das Erstellen von Grafikobjekten (Shapes) im Hires- und Multicolor-Modus zur Verfügung:

Rechteck zeichnen:

BOX [<Linienfarbe>],<X1>,<Y1>[,[<X2>,<Y2>][,[<Drehung>][,<Füllung>]]]

CIRCLE[Bearbeiten | Quelltext bearbeiten]

Kreise, Kreisbögen, Ellipsen oder regelmäßige Vielecke zeichnen:

CIRCLE [<Linienfarbe>],<X1>,<Y1>,<X_Radius>[,[<Y_Radius>][,[<Startpixel>][,[<Endpixel>][,[<Drehung>][,[<Inkrement>]]]]]]

Beispiele:

CIRCLE 1,160,100,100, 75                 :REM Kreis
CIRCLE 1,160,100, 65, 10                 :REM Ellipse
CIRCLE 1,160,100, 65, 10,   ,   , 45     :REM eine um 45° gedrehte Ellipse
CIRCLE  , 60, 40, 20, 18,   ,   ,   , 45 :REM Achteck
CIRCLE  ,260, 40, 20,   ,   ,   ,   , 90 :REM Viereck (Diamant)
CIRCLE  , 60,140, 20, 18,   ,   ,   ,120 :REM Dreieck
CIRCLE  , 40, 40, 20, 20, 90,270         :REM Kreisbogen von 90 bis 270°

DRAW[Bearbeiten | Quelltext bearbeiten]

Linie zeichnen:

DRAW [<Linienfarbe>][,<X1>,<Y1>] [TO [<X2>,<Y2>]]...
DRAW [<Linienfarbe>][,<Distanz>;<Drehung>] [TO [<Distanz>;<Drehung>]]...

PAINT[Bearbeiten | Quelltext bearbeiten]

Ausfüllen der Grafikobjekte bzw. des Bildschirms mit Farbe:

PAINT [<Farbe>][,[<X1>,<Y1>][,<Stoppwert>]]

Der <Stoppwert> kann 0 (stoppt beim Erreichen der gleichen Farbe wie <Farbe>) oder 1 (stoppt beim Erreichen einer Text- oder Multicolor-Farbe) annehmen. Werden keine Koordinaten angegeben, so startet der Füllbefehl bei der aktuellen Cursor-Position!

LOCATE[Bearbeiten | Quelltext bearbeiten]

Setzen der aktuellen Cursor- bzw. Pixel-Position:

LOCATE <X>,<Y>

SCALE[Bearbeiten | Quelltext bearbeiten]

Einstellung des benutzen Koordinatensystem für die X- und Y-Positionen der Pixel:

SCALE <n>


<n> | Modus		     | X-Koordinate  | Y-Koordinate
0   | Multicolor             | 0 - 159	     | 0 - 199
0   | HiRes	             | 0 - 319	     | 0 - 199
0   | geteilter Bildschirm   | 0 - 319	     | 0 - 159
1   | für alle Grafikmodi    | 0 - 1023      | 0 - 1023

Mit dem Wert 0 wird das für den entsprechenden Grafikmodus gewählte Standard-Koordinatensystem genutzt. Beim Wert 1 das spezielle System des Super Expander 64.

CHAR[Bearbeiten | Quelltext bearbeiten]

Text auf den Bildschirm eines beliebigen Grafikmodus schreiben:

 CHAR [<Farbe>],<Spalte>,<Zeile>,<Zeichenkette>[,<Invers>]
  • Der Wert <invers> (eingeschaltet mit den Zahlenwert 1, Standardwert 0) ist nur in den Grafikmodi (1 bis 3) verfügbar. Im Textmodus wird dieser Parameter ignoriert. Ist die inverse Darstellung aktiviert, so werden die Steuerzeichen nicht ausgeführt, sondern auf dem Bildschirm dargestellt!
<Farbe>     | <Invers> | Beschreibung
1,2,3       |	  0    | Textfarbe, keine inverse Textdarstellung
1,2,3       |     1    | inverse Textdarstellung der gewählten Farbe
0           |     0    | Hintergrundfarbe ist Multicolor 1
0           |     1    | Hintergrundfarbe ist Multicolor 2
  • Spalte: Werte von 0 bis 39
  • Zeile: Werte von 0 bis 24
  • Farbe: Im HiRes- und Split-Screen-Modus ergeben nur die Werte 0 (löscht Text) und 1 einen Sinn. Ist der Wert 0 im Multicolor-Modus, so wird ausnahmsweise die Vordergrundfarbe verwendet.

Parameter von Grafikbefehle[Bearbeiten | Quelltext bearbeiten]

Es gilt für die Argumente folgendes für alle Grafikbefehle von Super Expander 64:

  • Die <Linienfarbe> und <Farbe> kann Werte von 0 bis 3 annehmen, entsprechend der zugewiesenen Farben der Grafikmodi des COLOR-Befehls. Mit dem Wert 0 nimmt der Punkt bzw. Linie die Farbe des Bildschirmhintergrunds an und wird somit unsichtbar bzw. gelöscht. 1 für Zeichenfarbe (Standardwert), 2 für Multicolorfarbe 1 und 3 für Multicolorfarbe 2. Bei PAINT: Ist der Zahlenwert nicht 0, so wird das Objekt mit der Linienfarbe ausgefüllt.
  • <X>,<Y>, <X1>,<Y1>, <X2>,<Y2>. Es sind entsprechende Zahlenwerte als X- und Y-Koordinate einzusetzen. Dies kann absolut oder relativ (mit + bzw. - Vorzeichen) erfolgen. (Standardwert 0)
  • <Distanz>: Distanz in Pixel
  • <Drehung>: Ein angegebener Zahlenwert in Grad dreht das Grafikobjekt im Uhrzeigersinn um die Mitte seiner eigenen Achsen.
  • Es müssen nicht unbedingt alle Argumente angegeben werden. Fehlen diese werden oft Standardwerte verwendet!

Grafik-Funktionen[Bearbeiten | Quelltext bearbeiten]

RCLR()[Bearbeiten | Quelltext bearbeiten]

RCLR(<Bildschirmbereich>) 

Abfrage der aktuellen Farbe (0 bis 15) mit den Werten:

  • 0 (Hintergrund)
  • 1 (Textfarbe)
  • 2 (Multicolor 1)
  • 3 (Multicolor 2)
  • 4 (Rahmen)

RDOT()[Bearbeiten | Quelltext bearbeiten]

RDOT(<Zahl>) 

Abfrage der aktuellen Cursorposition mit

  • 0 (für X-Koordinate eines Pixels bzw. Spalten-Werte 0 bis 24),
  • 1 (für Y-Koordinate eines Pixelsbzw. Zeilen-Werte 0 bis 39)
  • 2 (aktuelle Pixelfarbe des aktuell zugewiesenen Farbregisters 0 bis 3)

RGR()[Bearbeiten | Quelltext bearbeiten]

RGR(0)

Liefert einen Wert von 0 bis 3, der anzeigt, welcher Bildschirmmodus gerade aktiv ist.

Sprites und Shapes[Bearbeiten | Quelltext bearbeiten]

SSHAPE[Bearbeiten | Quelltext bearbeiten]

Ein rechteckigen Bildschirmbereich (HiRes, Multicolor, Split-Screen) in einer Zeichenkettenvariablen abspeichern:

SSHAPE <Zeichenkettenvariable>,<X1>,<Y1>[,<X2>,<Y2>]

Dabei ist <X1>,<Y1> die linke, obere Ecke und <X2>,<Y2> die rechte, untere Ecke des Rechtecks. Falls <X2>,<Y2> nicht angegeben wird, wird die aktuelle Pixelposition genutzt. Der abzuspeichernde Bereich darf 251 Zeichen nicht überschreiten, da die letzten 4 Bytes für den Befehl GSHAPE für die Ausmaße des Shapes in Pixelzeilen und Pixelspalten benötigt werden!

GSHAPE[Bearbeiten | Quelltext bearbeiten]

Ein abgespeicherter Bildschirmbereich (Shape) aus einer Zeichenkettenvariablen wieder auf dem Bildschirm darstellen:

GSHAPE <Zeichenkettenvariable>[,<X1>,<Y1>[,<Methode>]]

Wird <X1>,<Y1> nicht angegeben, so wird standardmäßig 0,0 angenommen. <Methode> mit den Werten 0 bis 4 gibt an, wie das Shape wieder auf den Bildschirm im HiRes-Mode angezeigt wird. Bei der Verwendung der Methoden 1 bis 4 im Multicolor-Modus werden die Farben verändert!

<Methode> | Beschreibung
0         | genau wie abgespeichert
1         | invertiert - Hintergrund- und Zeichenfarbe werden vertauscht.
2         | OR - verschmilzt das Shape mit dem aktuellen Grafikbereich auf dem Bildschirm.
3         | AND - deckungsgleiche Pixel werden gesetzt, wenn sie im Shape und im 
          | aktuellen Grafikbereich gesetzt sind.
4         | XOR (Exklusiv-Oder) - ein Pixel an überdeckender Position, entweder beim Shape 
          | oder beim aktuellen Grafikbereich gesetzt, wird dargestellt (das jeweilig andere
          | ist dabei nicht gesetzt), andernfalls wird es gelöscht.

SPRSAV[Bearbeiten | Quelltext bearbeiten]

SPRSAV <Quelle>,<Ziel>

Dient zum Umkopieren oder Speichern von Sprites zu Sprites oder Shapes im Speicher. Beide Parameter dürfen die Werte von 0 bis 7 annehmen oder einer Zeichenkettenvariable entsprechen.

SPRDEF[Bearbeiten | Quelltext bearbeiten]

Um den Sprite-Designer aufzurufen, steht dieser Befehl zur Verfügung:

SPRDEF

Im Editor können u.a. folgende Tasten benutzt werden:

Eine Multicolor-Sprite im Sprite-Editor
  • CRSR  zur Anwahl des zu bearbeitenden Pixels und Editieren im Editor
  • RETURN  Sprung in die nächste Editorzeile
  • HOME  Sprung zur ersten, oberste Editorposition
  • CLR  Löscht alle gesetzten Pixel
  • 1  Zeichnen mit Spritefarbe 1 (Hintergrundfarbe, Löschen des Pixels)
  • 2  Zeichnen mit Spritefarbe 2 (Zeichenfarbe, Setzen des Pixels)
  • 3  Zeichnen mit Spritefarbe 3 (Multicolorfarbe 1, Setzen des Pixels)
  • 4  Zeichnen mit Spritefarbe 4 (Multicolorfarbe 2, Setzen des Pixels)
  • A  Automatische Weiterbewegung des Cursors an/aus
  • M  Multicolor-Modus an/aus
  • X  Skalierung in X-Richtung an/aus
  • Y  Skalierung in Y-Richtung an/aus
  • CTRL  oder C=  in Kombination mit den Ziffertasten 1 bis 9, Auswahl der aktuellen Spritefarbe 2 (Zeichenfarbe)

Der Editor kann wie folgt verlassen werden:

  • SHIFT +RETURN  Sprite im Speicher abspeichern und Spriteauswahl (0 bis 7) über die entsprechende Zifferntaste
  •   oder RUN/STOP  Änderungen abbrechen und zu bearbeitende Sprite (0 bis 7) auswählen
  •   oder RUN/STOP , danach sofort RETURN : Verlassen des Sprite-Editors

Wird SPRDEF in einem BASIC-Programm verwendet, wird nach Beendigung des Sprite-Editors das Programm fortgesetzt.

SPRITE[Bearbeiten | Quelltext bearbeiten]

SPRITE <Nummer>[,[<Aus_Ein>][,<Hauptfarbe>][,[<Ebene>][,[<X_Dehnung>][,[<Y_Dehnung>]][,<Modus>]]]]]] 

Dabei darf dürfen die Argumente folgende Werte annehmen:

  • <Nummer>: 0 bis 7
  • <Aus_Ein>: 0 oder 1 (0 = aus)
  • <Hauptfarbe>: Farbe des Sprites mit den C64-Farbwerten 0 bis 15
  • <Ebene>: Anordnung des Sprites im Vorder- oder Hintergrund mit 0 oder 1
  • <X_Dehnung>, <Y_Dehnung>: zum De-/aktivieren der Verdopplung in X- und Y-Richtung mit 0 oder 1
  • <Modus>: Multicolor-Modus an/aus mit 0 oder 1

SPRCOL[Bearbeiten | Quelltext bearbeiten]

SPRCOL [<Sprite_multicolor_1>][,<Sprite_multicolor_2>]

Legt die Multicolor-Farben 1 und 2 für Sprites fest.

MOVSPR[Bearbeiten | Quelltext bearbeiten]

MOVSPR <Nummer>[,<X1>,<Y1>|<Angle>#<Speed>]

Dient in einer Form zum Positionieren des Sprite <Nummer> in X- und Y-Richtung und in der anderen Variante wird eine automatische Animation im Winkel <Angle> mit Geschwindigkeit <Speed> angestoßen.
Die Parameter <X1> und <Y1> können absolut oder relativ (mit Vorzeichen) gesetzt werden.

RSPCOL()[Bearbeiten | Quelltext bearbeiten]

RSPCOL(<register>)
  • <register>: Werte 0 und 1 für aktuelle Multicolor-Farben; 0 für Sprite-Multicolor 1 und 1 für Sprite-Multicolor 2.

RSPPOS()[Bearbeiten | Quelltext bearbeiten]

RSPPOS(<Nummer>,)
  • <Nummer>: Werte 0 bis 7 für jeweiliges Sprite
  • : Werte 0 bis 2 für Abfrage von aktueller 0 X-, 1 Y-Position und 2 Geschwindigkeit (Rückgabewert 0 bis 15).

RSPR()[Bearbeiten | Quelltext bearbeiten]

RSPR(<Nummer>,<Eigenschaften>)
  • <Nummer>: Werte 0 bis 7 für jeweiliges Sprite
  • <Eigenschaften>: Werte 0 bis 5
Eigenschaften | Beschreibung      | Rückgabewert
0             | Sprite sichtbar   | 0 oder 1 (sichtbar)
1             | Spritefarbe       | 0 bis 15
2             | Pirorität         | 0 oder 1; Sprite im Vordergrund 0 oder im Hintergrund 1
3             | X-Skalierung      | 0 oder 1 (an)
4             | Y-Skalierung      | 0 oder 1 (an)
5             | Multicolor-Sprite | 0 oder 1 (an)

Sprite-Kollisionsabfragen[Bearbeiten | Quelltext bearbeiten]

COLINT[Bearbeiten | Quelltext bearbeiten]

Mit dem Befehl COLINT können zahlreiche Abhandlungen von Sprite-Ereignisse definiert werden. Es wird aber nur das erst festgestellte Ereignis abgearbeitet!

COLINT <Ereignis>[,<Zeilennummer>]

Eine Sprite-Kollision des Typs <Ereignis>

  • 0 bei einer Sprite-Sprite-Kollision,
  • 1 bei einer Sprite-Vorder-/Hintergrund-Kollision,
  • 2 bei einer Sprite-Lightpenposition

bewirkt das Anspringen der Programmzeile <Zeilennummer> als Unterprogramm (das mit RETURN wieder die Kontrolle an das unterbrochene Programm zurück gibt).

RBUMP()[Bearbeiten | Quelltext bearbeiten]

RBUMP(<Ereignis>)
  • <Ereignis>: Werte 0 und 1 für Information über 0 Sprite-Sprite-Kollison, 1 Sprite-Hintergrund-Kollision.

Die Funktion RBUMP liefert Rückgabewerte von 0 bis 255.

I/O-Funktionen[Bearbeiten | Quelltext bearbeiten]

Funktionstasten - KEY[Bearbeiten | Quelltext bearbeiten]

Die Funktionstasten sind beim Super Expander 64 in BASIC wie folgt vorbelegt:

Durch Druck auf die Funktionstaste wird der hinterlegte BASIC-Befehl nur soweit angezeigt, als wäre er eingetippt worden. Erst mit der Eingabe von RETURN  wird er tatsächlich ausgeführt.

Eine Übersicht der aktuellen Funktionstastenbelegung erfolgt mittels Eingabe von

KEY

Die Funktionstasten können wie folgt neu belegt werden:

KEY [<Funktionstastennummer>,<Zeichenkette>]

Hierbei wird nur die <Funktionstastennummer> von 1 bis 8 benötigt, sowie ein Ausdruck der eine <Zeichenkette> ergibt. Erlaubt ist das Anhängen Zeichen mit der CHR$-Funktion durch Verknüpfung über das Pluszeichen +. Damit eine Funktionstaste unbelegt wird, muss eine leere Zeichenkette angegeben werden.
Zum automatischen Ausführen von BASIC-Befehlen, ist es z.B. sinnvoll den BASIC-Befehl RUN mit einem anschließenden RETURN  zu kombinieren:

KEY 5,"RUN"+CHR$(13)

Joystick - RJOY()[Bearbeiten | Quelltext bearbeiten]

RJOY(<Joystick>)

Auslesen der Joystickrichtung (Rückgabewerte 0 bis 8) in Joystickport 1 oder 2 (entsprechend dem Wert für <Joystick>: 1 und 2). Werte haben den Betrag 128 addiert, wenn der Feuerknopf gedrückt ist.
Die Joystickrichtungen:

          1
        8   2
 links 7  0  3 rechts
        6   4
          5

Paddle - RPOT()[Bearbeiten | Quelltext bearbeiten]

RPOT(<Paddle>)

Auslesen der Paddle-Richtungen von Paddle 1 bis 4 (<Paddle> Werte 0 bis 3). Bei gedrücktem Feuerknopf erfolgt eine Addition von 256.

Lightpen - RPEN()[Bearbeiten | Quelltext bearbeiten]

RPEN()

Auslesen der X-/Y-Koordinaten ( 0/1) eines Lightpens.

Musik- und Soundfunktionen[Bearbeiten | Quelltext bearbeiten]

TEMPO[Bearbeiten | Quelltext bearbeiten]

TEMPO <speed>

Abspielgeschwindigkeit der Musik. <speed> kann Werte von 0 bis 255 annehmen. Grundeinstellung ist 8.
Die Notendauer (in Sekunden) einer ganzen Note kann mit (19.22 / <speed>) berechnet werden.

TUNE[Bearbeiten | Quelltext bearbeiten]

TUNE <env>,[,[<attack>][,[<decay>][,[<sus>][,[<rel>][,[<form>][,[<amplitude>]]]]]]]

Einstellen der Tonstimme 0-9 und Definition der Hüllkurvenparameter (quasi Festlegung eines Musikinstruments). Die Parameter können folgende Werte annehmen:

  • <env>: (envelope) Hüllkurvennummer 0-9
  • <attack>: Anstiegszeit 0-15
  • <decay>: Abfallzeit 0-15
  • <sus>: (sustain) Haltepegel 0-15
  • <rel>: (release) Freigabezeit 0-15
  • <form>: Wellenform Dreieck (0), Sägezahn (1), Pulse (2), Rauschen (3), Ring Modulation (4)
  • <amplitude>: Pulseverhältnisparameter, nur für Wellenform 2: von 0 bis 4095 (Standardwert 2048 = symmetrisch), Position des Nulldurchgangs einer Rechteckwelle

Beispiele für Musikinstrumente:

<env> <atk> <dec> <sus> <rel> <form> <ampl>   Instrument
  0      0    9      0    0     2      1536   Klavier
  1     12    0     12    0     1             Akkordion
  2      0    0     15    0     0             Kalliope (Orgelart)
  3      0    5      5    0     3             Trommel
  4      9    4      4    0     0             Flöte
  5      0    9      2    1     1             Gitarre
  6      0    9      0    0     2       512   Cembalo (Orgelart)
  7      0    9      9    0     2      2048   Orgel
  8      8    9      4    1     2       512   Trompete
  9      0    9      0    0     0             Xylophon

FILTER[Bearbeiten | Quelltext bearbeiten]

FILTER <frequenz>,[,[<low>][,[<band>][,[<high>][,<res>]]]]

Zum Manipulieren bzw. zur Filterung der Sound-Ausgabe. Die Parameter können folgende Werte annehmen:

  • <frequenz> 0-2048. Der Wert dieser Grenzfrequenz in Hertz ergibt sich für den gegebenen Parameterwert x mit der Formel x*5.8+30.
  • <low>: Low-Pass-Filterung: 0 (aus) oder 1 (ein)
  • <band>: Band-Pass-Filterung: 0 (aus) oder 1 (ein)
  • <high>: High-Pass-Filterung: 0 (aus) oder 1 (ein)
  • <res>: Resonanzeffekt: 0 (keine) bis 15 (stark)

Musikargumente[Bearbeiten | Quelltext bearbeiten]

Musik wird einfach mit Hilfe des PRINT-Befehls in Verbindung mit CHR$(6) und den Musikargumenten, die sich in einer Zeichenkette befinden müssen, abgespielt.
Mit der Tastenkombination <CTRL+F> gefolgt von der Eingabe eines Anführungszeichens " kann direkt Musik durch drücken der entsprechenden Noten-Tasten erzeugt werden.

Element		        Beschreibung
A, B, C, D, E, F, G	verwendbare Noten (angelsächsische Notation mit B für H)
#			Erhöhungszeichen, um eine halbe Note höher, d.h. z.B. aus dem C wird ein CIS
$			Absenkungszeichen, um eine halbe Note tiefer, d.h. z.B. aus dem D wird ein DES
.			punktierte Note (note with point, prolonged)
W		        ganze Note (whole)
H		        halbe Note (half)
Q		        viertelnote (quarter)
I		        Achtelnote (eighth
S		        Sechzehntelnote	(sixteenth) 	
R		        Pause (rest)


SID-Einstellungen	Beschreibung
<CTRL+F>	        De- bzw. aktivieren der Musikwiedergabe; in Programmen sollte CHR$(6) genutzt werden!
O		        Oktave (octave; Wert 0-6; Standardwert 4)
T		        Musikinstrumenttyp (tune; Wert 0-9; Standardwert 0), definierbar mit TUNE
U		        Lautstärke (volume; Wert 0-9; Standardwert 9) 
V		        Stimme (voice; Wert 0-2; Standardwert 0)
X		        Filter (0 oder 1 = an; Standardwert 0), definierbar mit FILTER


Beispiel:

PRINT CHR$(6)"I DEF U6 DEF U8 DEF Q EFG EFG EFG S G$ F$ E. U4 R EDC" CHR$(6)

Bedienungsanleitung[Bearbeiten | Quelltext bearbeiten]

Inhaltsverzeichnis (kurz)

  • PREFACE
  • USER CONVENTIONS
  • COMMAND SUMMARY
  • 1. GETTING STARTED
  • 2. TEXT and GRAPHIC
  • 3. SPRITE GRAPHICS
  • 4. GAME CONTROLS and FUNCTION KEYS
  • 5. SOUND EFFECTS and MUSIC
  • APPENDICES
  • Appendix I: PROGRAMMING NOTES
  • Appendix II: COMMAND REFERENCE GUIDE
  • Appendix III: SAMPLE PROGRAMS

In der 67-seitigen englischsprachigen Bedienungsanleitung zum Super Expander 64 sind im Anhang 3.Kapitel 11 kurze Beispiellistings (ca. von Seite 54 bis 60) enthalten. Diese demonstrieren die Programmiermöglichkeiten der neuen BASIC-Befehle und regen an, die BASIC-Programme zu verändern oder weiterzuentwickeln. In Klammern steht eine alternative Bezeichnung der Listings.

Listing 4 in Echtzeitgeschwindigkeit
  • Listing 1: Logo of Commodore
  • Listing 2: Exercise of Split Screen
  • Listing 3: Polygons
  • Listing 4: Arcs, Circumferences and Ellipsis
  • Listing 5: Memorization and Resuming of Forms (Saving Shapes and Getting Shapes)
  • Listing 6: Sketch and Coloration of Forms (Drawing and Painting Shapes)
  • Listing 7: Animated Sprites (Floating Sprites)
  • Listing 8: Demonstrations Joystick
  • Listing 9: SUPER EXPANDER 64 Pong (ein Paddle-Spiel)
  • Listing 10: Ripple Effect (Moire Pattern)
  • Listing 11: Hypnotic sketch (Hypnotic Pattern)


Hinweise[Bearbeiten | Quelltext bearbeiten]

  • Bei der Benutzung der Datasette müssen alle Sprites abgeschaltet werden.
  • Bei der fehlerhaften Verwendung der neuen BASIC-Befehle erscheinen keine neuen BASIC-Fehlermeldungen.
  • Bei Abbruch eines BASIC-Programms mit RUN/STOP  oder durch einen Fehler, wird der Grafikmodus automatisch im Textmodus umgeschaltet, wobei automatische Abläufe noch zu Ende ausgeführt werden. Dies erfolgt nicht bei Beendigung eines Programms durch die BASIC-Befehle END oder STOP.
  • Ein mit CONT fortgesetztes BASIC-Programm führt nicht zur Fortsetzung oder Start von automatischen Abläufe wie Umschalten auf den benötigten Grafikmodus, Start der Hintergrundmusik, Bewegung von Sprites oder Abfrage der Spritekollision, die in vorausgegangenen BASIC-Zeilen definiert wurden.
  • Durch Drücken der Tastenkombination RUN/STOP +RESTORE  erfolgt ein Programmabbruch mit Anhalten der automatischen Abläufe, sowie einem Reset auf die Einschaltparameter (ausgenommen die aktuelle Funktionstastenbelegung) von Super Expander 64.
  • Bei der Verwendung von IF...THEN...Abfragen müssen "Super Expander 64"-Befehle hinter dem THEN einen : beinhalten!

Speicherbelegung[Bearbeiten | Quelltext bearbeiten]

Der Super Expander 64 belegt den folgenden Speicherbereich $8000 - $9FFF (32768 - 40959) und reduziert den freien BASIC-Speicher um 8192 Bytes.
Für die Benutzung des Commodore IEEE-488 Interface wird nochmals 2048 Bytes ab dem Speicherbereich von $C000 (49152) benötigt. Wenn dieser Bereich von Geräten verwendet wird, werden diese 2048 Bytes an die Speicherstelle $7800 (30720) automatisch umkopiert. Dabei reduziert sich zusätzlich der freie Speicher nochmals um diese 2048 Bytes.

Hexadezimal | Dezimal | Beschreibung
=====================================================================================================
$8000       | 32768   | Koordinaten-Stack für PAINT
$8A00       | 35328   | Ablage der 8 Sprite-Grafiken
$8C00       | 35840   | Farbspeicher für HiRes-Bilder
$9000       | 36864   | Umkopiertes Zeichen-ROM
$A000       | 40960   | Speicher für HiRes-Bilder
$C000       | 49152   | Temporärer Bereich für Speichervorgänge u.a. für das IEEE-488 Interface
$C400       | 50176   | Speicher für modifizierte Zeichen durch CHAR und bei Split-Screen-Text
$CC00       | 52224   | Reserviert für zukünftige Systemerweiterungen bis ($CFFF; 53247)

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Quelle: Bedienungsanleitung Super Expander 64, Commodore Computer, 1983

Weblinks[Bearbeiten | Quelltext bearbeiten]

Download:

Allgemein:

WP-W11.png Wikipedia: Super Expander 64 Sprache:english