APPLICATIONSPROGRAMMATION ★ Programmhit des Monats XBASIC Erweiterung für den CPC 464 ★

Xbasic (CPC Amstrad International)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

... 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:

  • Pull-Down-Windows
  • maximal 3 (!) Bildschirmsciten
  • eine sehr schnelle FILL-Routine
  • variable Schriftgröße bei Textausgaben
  • direktes Editieren von Stringvariablen
  • selektives Listen von Programmzeilen
  • HEX-Monitor
  • zusätzliche Farben
  • eingebaute Digitaluhr
Und das ist noch längst nicht alles - die weiteren Möglichkeiten können Sie der Benutzeranleitung entnehmen. Um das Programm in Ihre Softwaresammlung einzureihen, gehen Sie am besten wie folgt vor:

  1. Tippen Sie den Basiclader ab, und sichern Sie ihn vorsichtshalber vor dem ersten Start auf Kassette oder Diskette.
  2. Für jeden Programmblock wird separat eine Prüfsumme ermittelt. Ist sie korrekt, so folgt die Meldung "Block x OK"; anderenfalls wird der fehlerhafte Block angegeben. Wenn alle 16 Blöcke in Ordnung sind, wird der Maschincncode automatisch als Binärfile abgesaved (Datenträger bereitstellen!) und danach initialisiert, so daß Sie die neuen Befehle gleich ausprobieren können. Ein zweiter Start des Laders nach der Initialisierung kann Probleme ergeben, verzichten Sie also besser darauf.
  3. Schreiben Sie ein kurzes Ladeprogramm für den Maschinencode;
    10 SYMBOL AFTER 256
    20 MEMORY &9DFF
    30 SYMBOL AFTER 240
    40 LOAD "XBASIC.BIN"
    50 CALL &9E00
    60 PRINT "XBASIC initialisiert"
Speichern Sic es ab, und danach können Sic den Basiclader vergessen.

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 >
KOMMANDO:

Bestimmt die Größe und den Typ der Zeichen bei Textausgaben. Hier können folgende Werte eingesetzt werden:

0 - normale Schrift
1 - Zeichenhervorhebung ("emphasized")
2 - Dünnschrift ("light")
4 - doppelte Breite ("Mode Mix")
8 - doppelte Höhe
16 - unterstreichen

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 >
KOMMANDO:

Zeichnet einen Kreis mit dem angegebenen Radius un Farbstift. Der Mittelpunkt wird durch den Grafikcursor

bestimmt.
10 MOVE 320,200
20 FOR r=0 TO 100 STEP 10
30 CIRCLE r,3
40 NEXT r

COPY$( < # Window>. < -Koord.> ,< y-Koord.>,< Länge > )
FUNKTION:

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 >
KOMMANDO:

Ermöglicht es, während eines Programmablaufcs den Cursor auf dem Bildschirm erscheinen zu lassen:
CURSOR 1 - schaltet den Cursor ein
CURSOR 0 - schaltet ihn aus

Im Direktmodus hat dieser Befehl keine Auswirkung.

DEC$(Sumerischer Ausdruck>,)
FUNKTION:

Gibt den numerischen Ausdruck als formatierte Zeichen-kette zurück. Die Formatierung erfolgt genau wie bei PRINT USING.

10 PRINT DEC$( 1/7," #. # # # ")

EDT
KOMMANDO:

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 >
KOMMANDO:

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 >
KOMMANDO:

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 >
KOMMANDO:

Wählt die Hintergrundfarbe für Textausgaben auf Grafikcursor-Position (nach TAG).

GPEN ,
KOMMANDO: Wählt die Schreibfarbe für Grafik und bestimmt, wie die neuen Bildpunkte mit der Hintergrundfarbe verknüpft werden sollen. Der zweite Parameter hat folgende Wirkung:

  • 0-normal
  • 1 - XOR-Modus
  • 2 - AND-Modus
  • 3 - OR-Modus
Angewendet wird die Verknüpfung auf die Farbstiftnummer der Grafik-Schreibfarbe und des Hintergrundes.
10 TAG: MOVE 100,100
20 |GPEN,2:|GPAPER,3
30 PRINT "ABC":

MONITOR < Startadresse>, < Endadresse >,< RAM/ROM-Select >
KOMMANDO:

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:

  • 0 - RAM ausgewählt
  • 1 - ROM ausgewählt
Wird er nicht angegeben, so wird der RAM-Bereich angezeigt. Die Ausgabe kann mit ESC angehalten oder abgebrochen werden.

Das folgende Kommando liest die Fehlermeldung des Basicinterpreters im oberen ROM: MONITOR &CC5B,&CE66,!

PEN <#Window>.< 1. Farbstift >,< 2. Farbsstift >
KOMMANDO:

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).
10 MODE 1:|CHAR,12
20 INK 0,0:INK 1,6:INK 2,9:INK 3,13 30 FOR i=0 TO 3:FOR j=i TO 3
40 PEN i,j:PRINT "Bunte Mischung"
50 NEXT j,i

SET TIME , < Minuten >, < Sekunden >
KOMMANDO:

Dient zur Eingabe der Uhrzeit und stellt die XBASIC-Systemuhr.
10 SET TIME 10,30,0

TIME$
FUNKTION:

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:
10 MODE 1:INK 0,0:INK 1,12
20 |CHAR,12
30 LOCATE 12,12:PRINT TIME$:GOTO 30

VAL( < Textausdruck > )
FUNKTION:

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.
10 x=3
20 f$="sin(x/2)"
30 PRINT VAL(f$)

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:

  • Kopieren von Bildschirmbereichen an eine andere Stelle
  • Maximal drei voneinander unabhängige Bildschirmseiten
  • Pull-Down-Windows: Fenster können auf den Bildschirm gerufen werden, ohne daß der bisherige Inhalt des Bereiches verloren geht.
SET WINDOW
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:
10 MODE 1
20 SET WINDOW 40,25,40,25

RESET WINDOW
KOMMANDO:

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.>
KOMMANDO:

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. >
KOMMANDO.

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 >
KOMMANDO:

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:

CPCAI 8606

★ PUBLISHER: CPC Amstrad International
★ YEAR: 1986
★ CONFIG: 64K (464 ONLY) + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC AMSTRAD INTERNATIONAL 1986
★ AUTHOR: Matthias Uphoff
 



★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» XBASIC-Erweiterung    (CPC  Amstrad  International)    GERMANDATE: 2012-12-16
DL: 396
TYPE: ZIP
SiZE: 19Ko
NOTE: 40 Cyls
.HFE: Χ

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » Strings Vertauschen (CPC Amstrad International)
» Applications » MONA-3 (Amstrad Personal)
» Applications » Micro (Amstrad Semanal)
» Applications » Function Keys (Amstrad Action)
» Applications » Dump (Tilt)
» Applications » Bug - Ubug
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 712 millisecondes et consultée 2392 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.