IRQ-BASIC

Aus C64-Wiki
Zur Navigation springenZur Suche springen
IRQ-BASIC
Die Einschaltmeldung von IRQ-Basic
Entwickler Ralf Kronemeyer, Ralf Wessling
Verleger Multisoft
Release 1986
Lizenz Vollversion
Plattform(en) C64
Genre BASIC-Erweiterung
Steuerung Icon tastatur.png
Medien Icon disk525.png
Sprache(n) Anleitung Sprache:deutsch
Information Preis: 39 DM

IRQ-BASIC ist eine BASIC-Erweiterung für den Commodore 64, die von Ralf Kronemeyer und Ralf Wessling programmiert wurde. Diese bietet vorwiegend neue BASIC-Befehle zum einfachen Umgang mit der Grafik und Musik, d.h. für die Erstellung, Bearbeitung und Abfrage von HiRes, Sprites, dem Zeichensatz oder von Geräuschen und Computermusik, an. Weiterhin gibt es einen nützlichen OLD- und DIR-Befehl.

Befehle[Bearbeiten | Quelltext bearbeiten]

Toolkitbefehle[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
HELP Auflistung aller Befehle.
DIR Auflistung des Directorys, ohne das Programm im Speicher zu löschen.
OLD Ein versehentlich durch NEW gelöschtes Programm kann durch OLD wiederhergestellt werden.
DEL Z1
DEL Z1-
DEL -Z1
DEL Z1-Z2
Durch DEL können Zeilen bzw. Zeilenblöcke komfortabel gelöscht werden.
AUTO Z,ST Automatische Zeilennummerierung mit Angabe der Schrittweite. (Beenden durch RETURN )
PAUSE T Pause ermöglicht es, den Programmablauf für eine bestimmte Zeit (T = 0...255) zu unterbrechen.
TIME X,Y,"HHMMSS",F Die angegebene Uhrzeit wird an der Position X/Y mit der Farbe F angezeigt. Ohne Parameter wird die Uhr nicht mehr angezeigt.
GOTO X Beim erweiterten GOTO-Befehl kann die Zeilennummer durch einen Ausdruck oder durch eine Variable ersetzt werden.
GOSUB X Beim erweiterten GOSUB-Befehl kann die Zeilennummer durch einen Ausdruck oder durch eine Variable ersetzt werden.
RESTORE X Beim erweiterten RESTORE-Befehl kann die Zeilennummer durch einen Ausdruck oder durch eine Variable ersetzt werden.
BEEP X Geräusch bei Tastaturanschlag (X=1 ein ; X=0 aus)

Soundbefehle[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
VOL L Lautstärke einstellen (0-15)
WAVE ST, WE$, RI, SY Stimme (1-3), Wellenform, Ringmodulation (0=aus 1=an), Synchronisation (0=aus 1=an)
PULS ST, PU Tastverhältnis einstellen: Stimme (1-3), Pulsweite (0-4095). Nur bei Wellenform Rechteck notwendig.
ENVELOPE ST,A,D,S,R Hüllkurvenverlauf (ADSR) einstellen: Stimme (1-3), Attack (0-15), Decay (0-15), Sustain (0-15), Release (0-15)
FRQ Z,ST Frequenz des Tones einstellen: Stimme (1-3), Frequenz (0-65535)
FILTER "00000000",GF,RE
FILTER A$,GF,RE
A$ (Zahlen im String dürfen 0 und 1 sein), Grenzfrequenz (0-65535), Resonanz (0-15)
PLAY 0
PLAY AR,SP
PLAY AR,SP,ZE
ART des Play (1-3), Geschwindigkeit (0-255), Zeilennummer

Grafikbefehle und -funktionen[Bearbeiten | Quelltext bearbeiten]

Lowres-Grafik[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
COLOR RA,HI,SF [,FL] Farbeinstellungen: Rahmenfarbe (0-15), Hintergrundfarbe (0-15), Schriftfarbe/Cursorfarbe (0-15), Flag für Runstop+Restore (0-1)
PLACE X,Y (,belieb. Ausdruck) Positioniert den Cursor auf X/Y und gibt optional einen Text/Ausdruck dort aus.
TEXT X,F (,belieb. Ausdruck) Gibt einen Text/Ausdruck in der aktuellen Zeile mit angegebener Farbe 4-fach vergrößert aus.
SWITCH Zwischen zwei Textbildschirmen umschalten. Mit jedem Aufruf wird immer auf den anderen Textbildschirm umgeschaltet.
SCROLL RI,SP Softscrolling in 8 möglichen Richtungen in zwei Geschwindigkeiten:

Richtung (1-12): (1=links, 2=rechts, 4=oben, 5=links/oben, 6=rechts/oben, 8=unten, 9=links/unten, 10=rechts/unten)
Geschwindigkeit (1-2): (1=langsam, 2=schnell)

SCREEN X,Y Um das Scrollen fließend aussehen zu lassen, ist es notwendig den Bildschirm zu verkleinern.
X=0: 40 Zeichen/Zeile ; X=1: 38 Zeichen/Zeile
Y=0: 25 Zeilen ; Y=1: 24 Zeilen

Hires-Grafik[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
HIRES PF,HF [,PF2] [,PF3] Hires-Modus aktivieren: Plotfarbe (0-15), Hintergrundfarbe (0-15), Plotfarbe2 (0-15), Plotfarbe3 (0-15)
LOWRES In den Lowres-Grafikmodus wechseln.
CLEAR [AB] Löscht den Grafikbildschirm. (Parameter AB (0-24) gibt an, ab welcher Zeile gelöscht werden soll.)
PLOT X,Y,Z Einzelnen Grafikpunkt ansteuern.


Z=0 Punkt löschen
Z=1 Punkt setzen (P)
A=2 Punkt invertieren (Hires) ; Punkt setzen (PF2) (Multimodus)
A=3 Punkt setzen (PF3) (Multimodus)

LINE X1,Y1,X2,Y2,Z Zeichnet eine Linie. X1/Y1 ist die Anfangskoordinate, X2/Y2 die Endkoordinate, Z der Zeichentyp.
REC X1,Y1,X2,Y2,Z Zeichnet ein Rechteck. X1/Y1 obere linke Ecke, X2/Y2 untere rechte Ecke, Z der Zeichentyp.
FILL X,Y,Z Füllt eine beliebige umschlossene Fläche mit einer Farbe, die durch den Zeichentyp Z angegeben wird.
TEST (X,Y) Die Funktion TEST bestimmt, ob ein Punkt an den Koordinaten X/Y gesetzt ist, bzw. welche Farbe er besitzt. Beispiel: A=TEST(10,100)


A=0 Punkt gelöscht
A=1 Punkt gesetzt (P)
A=2 Punkt gesetzt (PF2) (nur im Multicolor-Modus)
A=3 Punkt gesetzt (PF3) (nur im Multicolor-Modus)

CIRCLE X,Y,X1,Y1,Z [,SP] [,WA] [,WE] Mit CIRCLE können sie Kreisen, Ellipsen, Vielecke oder Kreisbögen zeichnen.


X/Y ist der Mittelpunkt. X1/Y1 ist der Radius. Z ist der Zeichentyp. SP ist der Step-Wert (0-120). WA ist der Startwinkel (0-359) & <WE. WE ist der Endwinkel (0-359) & >WA.

WRITE X,Y,Z,EX,A$ Text in hochauflösende Grafik schreiben. X/Y sind die Koordinaten. Z ist der Zeichentyp. A$ der Textausdruck.


EX im Hires-Modus: 0 = normale Größe ; 1 = X-vergrößert ; 2 = X und Y vergrößert.
EX im Multicolor-Modus: 0 = X-vergrößert ; 1 = X und Y vergrößert.

DRAW X,Y,Z,EX,RI,A$ Mit DRAW können sie beliebige Figuren definieren, die sie dann vergrößern und drehen können. Es funktioniert nach dem Turtle-Prinzip.
SPLIT Y1,Y2 Der Split-Befehl erzeugt ein Grafikfenster. Y1 ist der Beginn des Fensters (0-24). Y2 ist das Ende des Fensters (1-25).
GSAVE "H/NAME" Speichert die Hires-Grafik (hochauflösende Grafik).
GSAVE "S/NAME",NR
GSAVE "S/NAME",NR1-NR2
Speichert einzelnes Sprites (NR: 0-159) oder Spritebereich (NR1: 0-158) bis (NR2: 1-159)
GSAVE "Z/NAME" Speichert den Zeichensatz.
GSAVE "L/NAME" Speichert die Lowres-Darstellung (Textbildschirm mit Farbinformation).
GSAVE "M/NAME" Speichert Musikdaten
GLOAD Der GLOAD bezieht sich genau wie der GSAVE-Befehl auf alle Programmierbereiche.
HARDCOPY A,B,C,D Codes, um den Drucker auf Grafikmodus einzustellen.

Sprites[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
DESIGN ZN,TP DESIGN erstellt im Basic-Programm 21 REM-Zeilen (ZN=Startzeile) mit 24 Punkten (Hires: TP=0) oder 12 Punkten (Multi: TP=1).

Hires: "A" = Punkt gesetzt ; "." = Punkt gelöscht.
Multi: "A", "B" oder "C" = Punkt in Farbe 1,2 oder 3 gesetzt ; "." = Punkt gelöscht.

CREATE ZN,BN,TP Spritedaten ab Zeilennummer (ZN) einem Spriteblock (0-159) des Typs (TP) zuweisen. (Hires: TP=0, Multi: TP=1)
SPRITE NR,BN,F1 [,F2] [,F3] Spritenummer (0-7) einem Spriteblock (0-159) mit enstrechender Farben zuweisen.
SET NR
SET NR,X,Y
Sprite NR ausschalten.
Sprite NR einschalten und Spriteposition X/Y für Sprite NR festlegen.
SIZE NR,VX,VY,PR SIZE setzt die Sprite-Eigenschaften für Sprite NR. VX bzw. VY=1 schaltet die Sprite X- bzw. Y-Vergrößerung ein (0=Normalgröße). PR(0-1) setzt die Spritepriorität.
TURN BN,FL TURN dreht den angegebenen Spriteblock BN um 180°. (Hires: FL=0 ; Multi: FL=1)
SCOPY FL,BN,X,Y FL=0: Kopiert einen Teil der Grafik mit den Eckkoordinaten X,Y (oben links) in den Spriteblock BN.
FL=1: Kopiert den Spriteblock BN in den Grafikbereich X,Y (links oben).
CHANGE NR
CHANGE NR,SP
CHANGE NR,SP,BA-BE
CHANGE NR,SP,B1,B2 (,B3,.....)
Sprite NR wird nicht mehr animiert.
SP=Animationsgeschwindigkeit von Sprite NR ändern.
Erstellt eine Sprite-Animationen für Sprite NR. (NR=Spritenummer, SP=Animationsgeschwindigkeit, BA=Erster zu animierender Spriteblock, BE=Letzter zu animierender Spriteblock.
Erstellt eine Sprite-Animationen für Sprite NR. (NR=Spritenummer, SP=Animationsgeschwindigkeit, B1,B2,B3,..... sind die zu animierenden Spriteblöcke.
MOVE NR,SP,UM,X1,Y1,X2,Y2
MOVE NR,SP,UM,E,X2,Y2
MOVE NR,SP,UM
MOVE NR,SP
MOVE NR
Bewegt das Sprite NR von X1/Y1 nach X2/Y2. (UM=0 einfach bzw. UM=1 kontinuierlich hin und her.)
Bewegt das Sprite NR nach X2/Y2.
Ändert das Umlaufflag UM von Sprite NR.
Ändert die Bewegungsgeschwindigkeit SP(0-255) von Sprite NR.
Stoppt die Bewegung von Sprite NR.

Zeichensatzprogrammierung[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
DESIGN ZN,TY DESIGN erstellt im Basic-Programm 8 REM-Zeilen (ZN=Startzeile) mit 8 Punkten (Hires: TP=2) oder 4 Punkten (Multi: TP=3).

Hires: "A" = Punkt gesetzt ; "." = Punkt gelöscht.
Multi: "A", "B" oder "C" = Punkt in Farbe 1,2 oder 3 gesetzt ; "." = Punkt gelöscht.

CHAR ZN,PO,TY Schreibt die Zeichensatzdaten ab Zeile ZN des Zeichens PO (0-255) in den Zeichensatzspeicher. (Hires: TP=0 oder Multi: TP=1).
MEM Durch MEM wird der originale Zeichensatz wiederhergestellt.
MULTI C1,C2,C3 Durch den Befehl MULTI werden die drei Farben für die Zeichen in Multicolor angegeben. (Multicolor nur wenn Cursorfarbe >7)
ZCOPY FL,PO,X,Y FL=0: Kopiert die Teilegrafik X/Y in das Zeichen PO.
FL=1: Kopiert das Zeichen PO in die Grafik an die Koordinaten X/Y.

Weitere IRQ-BASIC Befehle[Bearbeiten | Quelltext bearbeiten]

Befehl Beschreibung
CRASH ZE,SS$,SH$
CRASH 0
Der CRASH-Befehl ruft ein Unterprogramm auf, wenn zwei Sprites aufeinander stoßen oder ein Sprite mit dem Hintergrund kollidiert, wenn dieses durch die Strings SS$ und SH$ erlaubt wurden.
Beispiel: SS$="00000101" = Aufruf, wenn Sprite 0 und 2 kollidieren.
Beispiel: SH$="01100111" = Aufruf, wenn Sprite 0,1,2,5 oder 6 auf Hintergrund treffen.

CRASH 0 schaltet die Unterprogrammbehandlung wieder ab.
RETURN C Beendet ein Unterprogramm, dass durch CRASH aufgerufen wurde.
BASIRQ ZE,T
BASIRQ 0
Ein Unterprogramm, dass in der Zeile ZE beginnt, wird in einem Zeitabstand T kontinuierlich aufgerufen. (T=1: 50ms ; T=50: 2500ms)
BASIRQ 0 schaltet die Unterprogrammbehandlung wieder ab.
RETURN B Beendet ein Unterprogramm, dass durch BASIRQ aufgerufen wurde.

Speicherverwaltung[Bearbeiten | Quelltext bearbeiten]

Adressbereich Belegung
$0000-$033B Zeropage (RAM-Speicher für Betriebssystem)
$033B-$03FF Blockzeiger für den CHANGE-Befehl
$0400-$07FF Variablenspeicher für IRQ-Befehle u.ä.
$0800-$5FFF Speicher für Anwendungsprogramm
$6000-$9FFF Programm IRQ-Basic
$A000-$BFFF Platz für Musikdaten; diverse Tabellen für IRQ-Basic
$C000-$C3FF Video RAM I
$C400-$C7FF Video RAM II
$C800-$CFFF Spritedaten für Spriteblöcke 0-31
$D000-$DFFF Zeichensatz
$E000-$FFFF Grafik-Speicher bzw. Spriteblöcke 32-159

Diskette[Bearbeiten | Quelltext bearbeiten]

Das Inhaltsverzeichnis der Originaldiskette:

0 "   irq-basic    " 86 2a
66   "irq-basic"        prg
0    "................" del
67   "irq-maler",8:     prg
17   "z/maler"          prg
8    "l/maler"          prg
8    "s/maler"          prg
1    "s/maler ii"       prg
2    "................" del
61   "irq-synthi",8:    prg
17   "z/irq-synthi"     prg
8    "l/irq-synthi"     prg
9    "s/irq-synthi"     prg
20   "irq-sounds"       seq
1    "irq-koordinaten"  seq
2    "irqtoene"         seq
1    "s/irq-boxes"      prg
0    "................" del
22   "chareditor",8:    prg
2    "s/charsprites"    prg
8    "l/charmenue"      prg
0    "................" del
6    "wuerfel-demo"     prg
5    "move&change-demo" prg
6    "timechars"        prg
5    "duesenjet"        prg
5    "sounddemo"        prg
19   "tonband"          prg
10   "spritedemo"       prg
6    "scroll-demo"      prg
17   "z/zeichen i"      prg
17   "z/zeichen ii"     prg
17   "z/zeichen iii"    prg
17   "z/zeichen iv"     prg
17   "z/zeichen v"      prg
17   "z/zeichen vi"     prg
17   "z/zeichen vii"    prg
17   "z/zeichen viii"   prg
67   "irq-runtime v1."  prg
1    "boot"             prg
23 blocks free.

Beispiele[Bearbeiten | Quelltext bearbeiten]

Softscrolling

Das folgende Listing zeigt das Programm "scroll-demo.prg" von der Originaldiskette.
Anmerkung: Die Animation ruckelt etwas wegen der geringen Framerate.

Beispiel eines Softscrolling in IRQ-BASIC.
5 GOSUB 910
10 REMAAAAAAAA
11 REM...AA...
12 REM...AA...
13 REM...AA...
14 REMAAAAAAAA
15 REMA......A
16 REMA......A
17 REMA......A
18 :
20 CHAR 10,0,0
50 PRINT CHR$(147)
60 TEXT 10,14,"SCROLL"
100 PLACE 0,10,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
110 PLACE 0,11,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
120 PLACE 0,12,"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
130 PLACE 0,13,"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC"
140 PLACE 0,23,"ICH BIN IN DER ZEILE : 200 GOTO 200 ***"
150 SET 1,100,140 : SET 2,100,140
160 SPRITE 1,0,1  : SPRITE 2,0,7
170 MOVE 1,1,1,0,150,350,150
180 MOVE 2,2,1,350,145,0,145
190 SCROLL 1,1
200 GOTO 200
910 REM..AAAAAAAAAAAA..........
911 REMAAA.....AA....AA........
912 REMAAA.....AA.....A........
913 REMAAAAAAAAAA.....A........
914 REMAAA.....AA.....A........
915 REM.AA.....AA.....A.A......
916 REM..A.....AA...A.AAAAA.A..
917 REM..AAAAAAAA..AA.AAAAA.A..
918 REM..AAAAAAAA....AAAAAAAAA.
919 REM.A....AAAAAAA..AAA.....A
920 REMA.AAAA.AAAAAA..AA.AAAA.A
921 REM.AA..AA.AAAAAAAA.AA..AA.
922 REM.A....A.AAAAAAAA.A....A.
923 REM.AA..AA.AAAAAAAA.AA..AA.
924 REM..AAAA............AAAA..
925 REM........................
926 REM........................
927 REM........................
928 REM........................
929 REM........................
930 REM........................
940 CREATE 910,0,0
950 RETURN

Quellen[Bearbeiten | Quelltext bearbeiten]


Weblinks[Bearbeiten | Quelltext bearbeiten]