★ APPLICATIONS ★ PROGRAMMATION ★ Programmhit des Monats XBASIC Erweiterung für den CPC 464 ★![]() |
Xbasic (CPC Amstrad International) | Applications Programmation |
... und das klingt ein bißchen wie „die x-te Basicerweiterung für den CPC 464". Doch lassen Sie sich davon nicht täuschen - hinter diesem unscheinbaren Titel verbirgt sich ein Programm, das es in sich hat! Da es erst knapp vor Redaktionsschluß fertig wurde, präsentieren wir es hier kurzerhand unter seinem Arbeitstitel ("eX-tended BASIC") und verzichten auf eine großartige Verpackung. Die neuen Befehle wurden nicht als RSX-Kommandos programmiert, sondern als "echte" Erweiterungen direkt in den Basicinterpreter des CPC eingebunden. Damit entfällt der übliche Strich vor dem Befehlswort, und auch die umständliche Variablenübergabe per "Klammeraffe" ist nicht mehr notwendig. Weiterhin enthält XBASIC erstmalig neue Basic-Funktioncn - auch das ist mit der RSX-Methode nicht realisierbar. Insgesamt bietet XBASIC 20 zusätzliche Befehle, die eine ausgewogene Mischung aus nützlichen Arbeitshilfen und effektvollen Mitteln zur Bildschirmgestaltung darstellen. Hier ein paar Stichworte:
Hier noch ein Hinweis für Bastler und Assemblerspeziali-sten: In der Serie „Der gläserne CPC" erfahren Sie. wie die XBASIC-Erweiterung noch ausgebaut werden kann; und noch ein Hinweis für Basicspezialisten: Interessante Programme, die unter XBASIC geschrieben wurden, werden wir natürlich gerne veröffentlichen! Beschreibung der neuen Befehle: Die Befehls- und Funktionsargumente, die nicht in Fettdruck erscheinen, sind wahlweise. CHAR < ganzzahliger Ausdruck > Bestimmt die Größe und den Typ der Zeichen bei Textausgaben. Hier können folgende Werte eingesetzt werden: 0 - normale Schrift Die verschiedenen Möglichkeiten können kombiniert werden, indem man einfach die entsprechenden Werte addiert. So ergibt zum Beispiel CHAR 22 unterstrichene Zeichen in der Schriftart "light" mit doppelter Breite (22=16+4+2). Dieses Kommando wirkt auf alle Textausgaben mit PRINT, WRITE, LIST, INPUT usw., nicht aber auf direkte Tastatureingaben und Ausgaben auf Grafikcursor-Position. 10 CHAR 12:PRINT" Gigantisch !" CIRCLE < Radius >, < Farbstift > Zeichnet einen Kreis mit dem angegebenen Radius un Farbstift. Der Mittelpunkt wird durch den Grafikcursor bestimmt. COPY$( < # Window>. < -Koord.> ,< y-Koord.>,< Länge > ) Liest eine Zeichenkette vom Bildschirm. Die Textkoordinaten geben die Position des ersten Zeichens an. Wenn keine Länge angegeben wird, so wird nur ein Zeichen gelesen. Nicht identifizierbare Zeichen (z.B. Grafik) werden durch ein Leerzeichen ersetzt. 10 LOCATE 10.10:PRINT "Basic" 20 a$=COPY$( 10,10,5) 30 PRINT a$ CURSOR < ganzzahliger Ausdruck > Ermöglicht es, während eines Programmablaufcs den Cursor auf dem Bildschirm erscheinen zu lassen: Im Direktmodus hat dieser Befehl keine Auswirkung. DEC$(Sumerischer Ausdruck>,) Gibt den numerischen Ausdruck als formatierte Zeichen-kette zurück. Die Formatierung erfolgt genau wie bei PRINT USING. 10 PRINT DEC$( 1/7," #. # # # ") EDT Editiert den in der Stringvariablen enthaltenen Text auf dem Bildschirm, wo er auf die beim CPC übliche Weise bearbeitet werden kann. Nach F.NTER wird der veränderte Text wieder in die Stringvariable übernommen. 10 a$—"Dieser Text soll editiert werden" 20 EDT a$:PRINT a$ FILL < Farbstift > Füllt eine beliebig umrandete Fläche auf dem Bildschirm mit der angegebenen Farbe. Der Vorgang beginnt an der aktuellen Grafikcursor-Position und wird durch das Gra-fikfenster begrenzt. 10 MOVE 320.200 20 CIRCLE 100,2:FILL 3 FIND < Textausdruck>, , < # Ausgabcgcräl > Listet alle Zeilen eines Basicprogramms, in denen der Textausdruck enthalten ist. IstderTextausdruckein Leerstring (" "), so werden sämtliche Zeilen angezeigt. Der Zeilenbereich wird genau wie bei LIST angegeben. Im Unterschied zu LIST kann dieser Befehl jedoch innerhalb eines Programms verwendet werden, ohne daß ein Rück-sprung in den Ready-Modus erfolgt. Die folgende Zeile führt zur Ausgabe aller Programmzeilen zwischen 100 und 1000, in denen GOSUB 500 steht: FIND "GOSUB 500", 100-1000 Die Ausgabe kann mit ESC angehalten oder abgebrochen werden. GPAPER < Farbstift > Wählt die Hintergrundfarbe für Textausgaben auf Grafikcursor-Position (nach TAG). GPEN ,
10 TAG: MOVE 100,100 20 |GPEN,2:|GPAPER,3 30 PRINT "ABC": MONITOR < Startadresse>, < Endadresse >,< RAM/ROM-Select > Gibt den Inhalt des angegebenen Speicherbereichs in hexadezimaler und ASCII-Form auf dem Bildschirm aus. Bei der ASCII-Darstellung wird bei Zeichen > 127 Bit 7 gelöscht. Die Steuerzeichen < 32 werden durch einen Punkt dargestellt. Der dritte Parameter ist wahlweise und hat folgende Bedeutung:
Das folgende Kommando liest die Fehlermeldung des Basicinterpreters im oberen ROM: MONITOR &CC5B,&CE66,! PEN <#Window>.< 1. Farbstift >,< 2. Farbsstift > Wählt die Schreibfarbe für das angegebene Textfenster. Wird ein zweiter Farbstift angegeben, so werden die beiden Farben bei allen Textausgaben rasterförmiggemischt. Dadurch stehen insbesondere in MODE 1 effektiv mehr Farben zur Verfügung (maximal 10). SET TIME , < Minuten >, < Sekunden > Dient zur Eingabe der Uhrzeit und stellt die XBASIC-Systemuhr. TIME$ Gibt die Uhrzeit als Zeichenkette in der Form STUN-DEN:MINUTEN:SEKUNDEN zurück. Diese Uhr ist unabhängig von dem normalen CPC-Timer und wird bei der Initialisierung von XBASIC mit 00:00:00 gestartet. Das folgende Programm verwandelt den CPC 464 in eine Digitaluhr: VAL( < Textausdruck > ) Gibt den Wert des Textausdrucks als numerischen Ausdruck zurück. Im Unterschied zur normalen VAL-Funktion des CPC wird der Text, falls nötig, auch als Formel interpretiert. Damit kann auf bequeme Weise die Eingabe von Funktionen für Mathematikprogramme oder Funktionenplotter per INPUT programmiert werden. Die folgende, sehr leistungsfähige Gruppe von Befehlen dient dazu, auf dem CPC 464 externe Windows einzurichten und zu verwalten. Dem Inhalt dieser Bildschirmfenster wird ein separater Platz im RAM zugewiesen, wodurch sich ganz neue Möglichkeiten eröffnen:
KOMMANDO: Definiert die Größe der maximal vier externen Fenster und reserviert den notwendigen Speicherplatz. Die Liste der Windowdaten enthält folgende Informationen: Breite W indow 0, Höhe Window 0, Breite Window 1, Höhe Window 1,... Die Breite und Höhe der Fenster wird in Form von Textspalten bzw. Textzeilen angegeben. Die effektive Breite ist also vom aktuellen MODE abhängig. Das folgende Programm installiert zwei zusätzliche Bildschirmseiten: RESET WINDOW Setzt alle durch SET WINDOW definierten Fenster zurück und gibt den Speicherplatz im RAM wieder frei. Bitte beachten: SET und RESET Window führen intern einen MEMORY- Befehl aus und verändern HIMEM. Deshalb kann es zu einem "Memory Full"-Error kommen, wenn der zur Verfügung stehende Speicherplatz nicht ausreicht oder gesperrt ist (z.B. durch einen Puffer für Kassetten I/O). PUT WINDOW < Nummer>, < x-Koord. >, < y-Koord.> Legt einen Bildschirmbereich unter der angegebenen Nummer im Speicher ab. Die Größe wird durch SET WINDOW bestimmt, die linke obere Ecke durch die Textkoordinaten x,y. Wurde ein Fenster mit der Nummer noch nicht definiert, so folgt die Fehlermeldung "Improper Argument". GET WINDOW < Nummer >, < x-Koord. > , < y-Koord. > Holt den Inhalt des externen Fensters mit der angegebenen Nummer auf den Bildschirm. Die Parameter haben die gleiche Bedeutung wie bei PUT WINDOW. EXC WINDOW < Nummer> , < x-Koord. > , < v-Koord > Tauscht einen Bildschirmbereich gegen den Inhalt eines externen Fensters aus ("Exchange"). Die Parameter haben die gleiche Bedeutung wie bei den vorhergehenden Befehlen. Insbesondere dieser Befehl ermöglicht die Programmierung von Pull-Down-Windows, wie das Beispielprogramm 1 zeigt:
|