APPLICATIONSDIVERS ★ GEMlike auf dem CPC|CPC Magazin) ★

Gemlike (CPC Magazin)Applications Divers
★ 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 ★ 

Mit einer RSX-Erweiterung bekommen Sie einen Vorgeschmack auf die 16-Bit-Benutzeroberflächen. Windows stehen in allen Variationen zur Verfügung.

Die sogenannten benutzerfreundlichen Oberflächen sind im Augenblick im Vormarsch. Alles begann mit der Programmiersprache Smalltalk, die von einer Tochterfirma des XEROX-Konzems entwickelt wurde. Diese Sprache unterstützte sehr stark die sogenannten Icons, kleine grafische Symbole. Aus Smalltalk wurde dann Star, das auch schon mit der Maus arbeitete. Nachdem dieses System lange Zeit kaum Beachtung fand, wurde es mit Apples Lisa 1982 schlagartig bekannt. Lisa war dennoch kein Verkaufsschlager, da es vielleicht einfach zu ungewöhnlich war. Erst auf dem Macintosh erlangte das benutzerfreundliche System weitere Verbreitung. Es handelte sich allerdings nicht mehr um Star, sondern um ein vollständig neues System. Kürzlich folgten Atari mit dem ST und Commodore mit dem Amiga. Auch der neue Schneider PC 16-Bit-Computer wird mit Maus und Oberfläche geliefert.

Alle oben genannten Rechner haben etwas gemeinsam:. Sie sind keine 8-Bit-Computer. Das bedeutet eine hohe Ausführungsgeschwindigkeit und viel Speicherplatz. Dies ist sehr wichtig, da eine Oberfläche nämlich besonders zeit- und speicherplatzintensiv ist. Dennoch ist es möglich, auch auf 8-Bit-Computern, wie z.B. dem Schneider, eine Art GEM (TM) zu programmieren. Es handelt sich allerdings um keine Oberfläche, sondern um eine Befehlserweiterung mit 12 neuen Befehlen und 10 neuen Fehlermeldungen. Außerdem gibt es eine kleine Demo. Statt der Maus wird ein Joystick verwandt, es geht aber auch ohne.

Bis zu zehn Fenster können mit allen möglichen Arten von Rahmen, Überschriften und Schatten eröffnet werden. Der alte Inhalt des Bildschirms wird zwischengespeichert und erscheint beim Schließen des Fensters wieder.

Als Bildschirmmodus wurde der hochauflösende MODE 2 gewählt, da Anwendungssoftware vor allem in diesem Modus läuft. Und Anwenderprogramme sind ja vor allem das Gebiet von "GEMlike”. Nichtsdestotrotz wird demnächst vermutlich auch eine MODE-1 -Version abgedruckt.

Wichtig ist noch, daß der Bildschirm nach dem letzten MODE-Befehl nicht mehr gescrollt wurde, da sich dabei der Bildschirmspeicherstart verschiebt und "GEMlike" durcheinanderkommt. Deshalb wird dann bei Ausführung eines erweiterten Befehls die Fehlermeldung Scroll Error ausgegeben. Sie tippen dann einfach MODE 2, und weiter geht's.

"GEMlike” läuft auf den Schneider-Rechnern 464, 664 und 6128 mit oder ohne Floppy.

Eintipphilfe

Tippen Sie zuerst Listing 1 sorgfältig ab. Anschließend starten Sie mit RUN. Die DATA-Zeilen werden nun vom Rechner auf Richtigkeitüberprüft. Taucht ein Fehler auf, so wird die fehlerhafte Zeile vom Rechner angezeigt. Verbessern Sie dann bitte die entsprechende Zeile und starten erneut mit RUN.

Laufen alle Zeilen fehlerfrei durch, so muß das Programm an die verschiedenen Schneider-Rechner angepaßt werden. Es erscheint ein Menü. Wählen Sie durch Drücken der entsprechenden Taste Ihren Rechner aus. Das Programm wird dann angepaßt.

Nun speichern Sie das entsprechende Maschinenprogramm mit folgendem Befehl ab:

SAVE "GEMLIKE.RSX”, b, 39900, 2720

Anschließend tippen SieListing 2 ein und speichern es mit

SAVE "GEMLIKE.BSP”

ab. Nach Start des Demoprogramms wird zunächst das obige Maschinenprogramm nachgeladen.

Nun werden Ihnen einige Möglichkeiten vorgestellt, wie Windows aussehen können. Bei den Informationstexten fahren Sie bitte mit dem Joystick den Pfeil auf 'WEITER', um die Programmausführung fortzusetzen. Drücken Sie TAB, um die Programmabarbeitung abzubrechen. Besitzen Sie keinen Joystick, so können Sie in Zeile 1135 einen DEFKEY-Befehl einfügen, der die Steuerung auch mit der Tastatur ermöglicht (Erklärung des Befehls folgt später). Eine Hardcopy des Demoprogramms ist abgedruckt.

Bedienung des Programms

"GEMlike” belegt die Speicherzellen oberhalb von 39900 für Programm und Aussehen des Mauszeigers. Ferner wird der Bereich von 30000 bis 39899 als Buffer für die Windows vorgesehen. Sie müssen "GEMlike” also folgendermaßen laden:

MEMORY 29999: LOAD "GEMLIKE.RSX"

Mit CALL 39900 werden die neuen Befehle dann initialisiert. Sie werden als RSX-Befehle aufgerufen, d.h., jedem Befehl ist ein senkrechter Strich (Shift + Klammeraffe) vorangestellt.

Die Befehle im einzelnen

1. |OPENWINDOW, X, Y, Breite, Höhe, Aussehen < , a$ >

Unter "GEMlike” können bis zu zehn Fenster gleichzeitig eröffnet werden. Dabei geben die ersten 4 Parameter die Größe des Fensters an. Die X- und Y-Koordinaten sind kompatibel zum LOCATE-Befehl des CPC-Basic. Die Parameter Breite und Höhe geben die Ausdehnung des Fensters an. Der nächste Parameter definiert das Aussehen der Fenster. Folgende Werte sind möglich:

0 - Ohne alles
1 - Kleiner Rahmen
2 - Großer Rahmen
4 - Überschriftsbalken
8 - Schatten

Für Kombinationen addieren Sie einfach die Werte der verschiedenen Möglichkeiten. Erhält ein Fenster beispielsweise einen Border, so wird es auf jeder Seite zwei Zeichen breiter. Die angegebenen Parameter sollen aber immer dem beschreibbaren Leerraum im Window entsprechen. So vergrößern sich die Fenster, und es kann auch passieren, daß sie sich über den Bildschirm hinaus Vergrößern', was eine Fehlermeldung zur Folge hat.

In der folgenden Tabelle sind alle Window-Kombinationen aufgeführt. Zuerst die Parameterzahl, dann die Kombination, wobei S für Schatten, Ü für Überschriftsbalken, GR für einen großen Rahmen und KR für einen kleinen Rahmen steht. Die angewählten Möglichkeiten sind jeweils mit einem x gekennzeichnet. Anschließend ist angegeben, um wieviel sich das Fenster nach links, rechts, oben und unten vergrößert. Daraus resultieren die kleinste X- und die kleinste Y-Koordinate, die gewählt werden müssen, damit das Fenster innerhalb des Bildschirms bleibt. Ein Fenster mit Rahmen muß beispielsweise als X-Koordinate mindestens drei haben, weil es sich um 2 nach links ausdehnt.

Par.SüGRKRlinksrechtsobenuntenmind. Xmind.Y
0----000011
1---X221132
2--X-221132
3--XX221132
4-X--002013
5-X-X222133
6-XX-222133
7-XXX222133
8X---020111
9X--X241232
10X-X-241232
11X-XX241232
12XX--022113
13XX-X242233
14XXX-242233
15XXXX242233

Sie müssen natürlich auch darauf achten, daß das Fenster nicht rechts oder unten aus dem Bildschirm hinausragt. Das Basic-Fenster #7 wird auf die Koordinaten des beschreibbaren Teils des eröffneten Fensters gesetzt, also auf die vorher angegebenen Koordinaten. Somit kann man direkt mit PRINT #7 oder CLS #7 darauf zugreifen. Die Übergabe der Koordinaten an Fenster #7 wird mit dem Befehl |SEVEN ein- oder ausgeschaltet.

Der alte Bildschirminhalt wird in einem speziellen Puffer abgelegt, dessen Größe und Startadresse durch den Befehl |WINDOWSTACK verändert werden können. Am Anfang ist dieser 9900 Byte groß. Sie können sich selbst ausrechnen, ob noch genug Platz im Puffer ist. Die von einem Fenster belegten Byte ermitteln Sie durch folgende Formel:

Byte = Breite * Höhe * 8

Als Breite und Höhe dürfen Sie aber nicht die angegebenen Koordinaten nehmen, sondern müssen die Vergrößerung des Fensters durch Border o.ä. dazuzählen. Die Formel müßte also korrekt lauten:

Byte = (Breite + Rechts + Links) * (Höhe + Oben + Unten) *

Ist nicht mehr genug Speicherplatz vorhanden, so wird die Fehlermeldung Window out of Memory ausgegeben.

Als sechster Parameter kann noch der Stringdescriptor einer einzublendenden Überschrift angegeben werden. Wird er weggelassen, so erscheint keine Überschrift. Sie darf auch nur eingeblendet werden, wenn ein Überschriftsbalken existiert, und muß mindestens um vier Print-Positionen kürzer sein als die Gesamtbreite des Fensters, sonst folgt die Fehlermeldung Illegal Headline.

Alle möglichen Fehlermeldungen werden mit Ursache vorgestellt (auf diesen Befehl bezogen). Die ersten drei kommen bei allen anderen Befehlen genauso vor und werden dort nicht mehr erwähnt.

Fehlermeldungen:

  • Syntax Error - Zu wenige oder zu viele Parameter
  • Improper Argument - Parameter außerhalb zulässiger Grenzen
  • Scroll Error - Bildschirmspeicheranfang durch Scrollen verschoben
  • All windows open - Bereits alle 10 Fenster geöffnet
  • Window out of memory - Im Buffer nicht mehr genug Platz
  • Window out of screen - Fenster außerhalb des Bildschirms
  • Parameter error - Überschrift versucht einzublenden, ohne Überschriftsbalken
  • Illegal headline - Zu lange Überschrift

2. |CLOSEWINDOW < , Anz >

Durch diesen Befehl können Fenster geschlossen werden. Wird kein Parameter angegeben, so wird das letzte Fenster geschlossen, ansonsten die durch anz spezifizierte Anzahl (jeweils das letzte zuerst). Dabei wird der Bildschirm wiederhergestellt; der Buffer wird dadurch vergrößert. Werden zu viele Windows angegeben, wird anz auf die Anzahl der geöffneten Fenster reduziert. Fehlermeldungen:

Window not open - Kein Fenster geöffnet

3. |SEVEN, 0 oder 1

Mit diesem Befehl kann selektiert werden, ob bei |OPEN-WINDOW das Fenster #7 entsprechend den Koordinaten verändert werden soll. Bei |SEVEN, 0 wird dies abgeschaltet, bei |SEVEN, 1 angeschaltet.

4. |CHOICE, @, a%

Mittels dieses Befehls können verschiedene Fenster mit einem Mauszeiger selektiert werden. Die Steuerung erfolgt mit dem Joystick, kann mit Hilfe des Befehls |DEFKEY (s. u.) aber auch mit der Tastatur geschehen. Um ein Fenster auszuwählen, drücken Sie Feuer. Es wird immer das an dieser Position oberste Fenster ausgewählt und seine Nummer in der angegebenen Variablen zurückgegeben. Dabei bedeutet 1 das zuerst geöffnete Fenster, 2 das nächste usw., bis maximal 10.

Ein Abbruch erfolgt mit der Taste TAB. Es wird dann kein Fenster selektiert und der Wert 255 zurückgegeben. Mit Hilfe des Befehls |QUIT kann man die QUIT-Taste sperren. Allerdings müssen die Fenster erst zum Anklicken zugelassen werden. Dazu dienen die Befehle |CHOICEON und |CHOICEOFF.

5. |CHOICEON <, nr, nr,.. >

Um Fenster als anklickbar zu definieren, benötigt man den Befehl |CHOICEON. Wird versucht, ein als nicht anklickbar definiertes Fenster anzuklicken, wird dies einfach ignoriert. Wird |CHOICEON kein Parameter übergeben, dann werden alle geöffneten Fenster als anklickbar definiert, ansonsten nur die angegebenen Fenster. Die Nume- ( rierung erfolgt wie beim |CHOICE-Befehl. Ist ein Fenster ; nicht geöffnet, so wird eine Fehlermeldung ausgegeben. j Wird ein Fenster durch |CLOSEWINDOW geschlossen, . so erlischt die Anklickerlaubnis und wird auch dann nicht wieder aktiv, wenn das Fenster wieder eröffnet wurde. Es . müßte dann erneut zum Anklicken definiert werden. Fehlermeldung:

Window not open -Geschlossenes Fenster als anklickbar definiertes Fenster anzuklicken, wird dies einfach ignoriert. Wird |CHOICEON kein Parameter übergeben, dann werden alle geöffneten Fenster als anklickbar definiert, ansonsten nur die angegebenen Fenster. Die Numerierung erfolgt wie beim |CHOICE-Befehl. Ist ein Fenster nicht geöffnet, so wird eine Fehlermeldung ausgegeben.

Wird ein Fenster durch |CLOSEWINDOW geschlossen, so erlischt die Anklickerlaubnis und wird auch dann nicht wieder aktiv, wenn das Fenster wieder eröffnet wurde. Es müßte dann erneut zum Anklicken definiert werden. Fehlermeldung:

Window not open -Geschlossenes Fenster als anklickbar definiert

6. |CHOICEOFF < , nr, nr, nr >

Damit werden Fenster als nicht anklickbar definiert. Bei der Übergabe keines Parameters werden alle Fenster als nicht anklickbar definiert, ansonsten nur die angegebenen. Hier ist es egal, ob das Fenster geschlossen oder geöffnet ist, obwohl geschlossene Fenster nie zum Anklicken zugelassen sind.

7. |SPEED, speed

Wem sich der Mauszeiger zu schnell bewegt, kann die Geschwindigkeit herabsetzen. Je höher der Wert hinter |SPEED ist, desto langsamer bewegt sich der Mauszeiger. Möglich sind Werte zwischen 1 und 200. |SPEED, 0 bewirkt die Bewegung des Mauszeigers in Originalgeschwindigkeit.

8. |MOUSEPOS, x,y

Durch den Befehl |MOUSEPOS Ist es möglich, den Mauszeiger auf dem Bildschirm zu positionieren. Die Parameter sind kompatibel zum LOCATE-Befehl. Auf einen Plotpunkt genau kann man den Mauszeiger jedoch nicht setzen, sondern immer nur auf Print-Positionen. Er erscheint auch nach Ausführung des Befehls nicht an der angegebenen Stelle. Dies geschieht erst beim nächsten |CHOICE-Befehl.

9. |DEFKEY, Links, Rechts, Oben, Unten, Feuer, Abbruch Damit kann die Steuerung des Mauszeigers geändert

werden. Als Parameter sind die Tastennummern (beim 664/6128 auf Floppy gedruckt, sonst siehe Handbuch) der gewünschten Tasten anzugeben. Die Originalstellung ist |DEFKEY, 74, 75, 72, 73, 76, 68

10. |QUIT, 0 oder 1

Mit Hilfe dieses Befehls wird selektiert, ob die Abbruchtaste (normalerweise TAB) zugelassen wird (1) öder nicht (0).

11. |GRID, X, Y, Breite, Höhe

Beim Atari ST oder Rechnern mit ähnlichen Oberflächen wird als Hintergrund oft eine graue Fläche verwandt. Mit dem Befehl |GRID können Sie diese auf den Bildschirm zaubern. Dabei ist die Parameterübergabe wie beim lOPENWINDOW-Befehl.

Fehlermeldung:

Grid out of Screen -Hintergrund teilweise außerhalb des Bildschirms

12. |WINDOWSTACK, Start, Länge

"GEMlike" benötigt einen Puffer, um die alten Bildschirminhalte zwischenzuspeichern. Dieser Puffer kann durch obigen Befehl verändert werden, und zwar können Startadresse und Länge angegeben werden. Beachten Sie jedoch folgendes:

  • Der Puffer darf die Adresse 39900 nicht überschreiten, da dort "GEMlike" abgelegt Ist.
  • Der Pufferstart sollte immer durch ein MEMORY geschützt sein (z.B. sollte einem |WINDOWSTACK, 20000, 19900 ein MEMORY 19999 vorangehen).
  • Der Befehl kann nur ausgeführt werden, wenn kein Fenster geöffnet ist, sonst folgt eine Fehlermeldung.

Fehlermeldung: Window open -Ein oder mehrere Fenster geöffnet

RAM-Aufteilung

  • 30000-39899 Windowbuffer
  • 39900-42489 Programm "GEMlike”
  • 42490-42619 Aussehen der Maus

Systemvariablen

"GEMlike” hat auch mehrere Systemvariablen, die dem Benutzer wertvolle Hilfen über den Zustand des Systems geben können.

Zuerst folgt die Adresse der Systemvariablen, dann die Länge in Bytes und dann eine Kurzbeschreibung.

Systemvariablentabelle

Adr.LängeKurzbeschreibung
+9BDE1Anzahl der geöffneten Fenster
+9BDF2Augenblicklicher Bufferstart
#9BE12Augenblicklicher Freiraum im Buffer
#9BE31Sevenflag (0=Nein, 1 = Ja)
#9BE41Quitflag (1 = Zugelassen)
#9BF060Window-Systemvariabien (s. u.)
#9C2C10Flags, ob anklickbar für alle Fenster (255 = Ja, 0 = Nein)
#9C361SPEED-Parameter
#9C381X-Koordinate des Mauszeigers (1 -80)
#9C391Y-Koordinate des Mauszeigers (1 -25)
#9C3A2X-Koordinate (Plotposition, 0-639)
#9C3C1Y-Koordinate (Plotposition, 0-200)

Für jedes Fenster gibt es 6-Byte-Systemvariablen. Das zuerst eröffnete Fenster belegt die ersten 6 Byte, das zweite die zweiten usw. Die Bytes 1-4 geben X, Y, Breite und Höhe (in dieser Reihenfolge) an. Dabei handelt es sich allerdings um die durch Border etc. korrigierten Werte. Die Bytes 5 und 6 beinhalten die Adresse, ab der der alte Bildschirminhalt im Puffer abgelegt wurde.

Erweiterungen

Bei diesem einen Programm wird es jedoch nicht bleiben. So soll eine MODE-1-Version erstellt werden. Außerdem ist es vorstellbar, beide Versionen zu erweitern. Die Einbeziehung von Icons (kleine grafische Symbole, Diskettenlaufwerk, Papierkorb) oder die Programmierung von Pulldown-Menüs wäre durchaus realisierbar.

Auch sollen natürlich einige Programme, die mit Hilfe von "GEMlike” geschrieben wurden, hier abgedruckt werden, beispielsweise ein Programm zum Entwerfen einer Maus oder der Icons.

Andreas Zallmann , CPC Magazin

★ PUBLISHER: CPC Magazin
★ YEAR: 1987
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LiCENCE: LISTING
★ COLLECTION: CPC MAGAZIN 1987
★ AUTHOR: Andreas Zallmann
 

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listings:
» RSX-Gemlike    (CPC  Magazin)    ENGLISHDATE: 2021-02-02
DL: 136
TYPE: ZIP
SiZE: 6Ko
NOTE: 40 Cyls
.HFE: Χ

» RSX-Gemlike    (CPC  Magazin)    LISTING    GERMANDATE: 2021-02-02
DL: 156
TYPE: PDF
SiZE: 869Ko
NOTE: 6 pages/PDFlib v1.6

» RSX-Gemlike    (CPC  Magazine  Fingerschonend)    ENGLISHDATE: 2020-05-28
DL: 242
TYPE: ZIP
SiZE: 7Ko
NOTE: 40 Cyls
.HFE: Χ

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

Lien(s):
» Applications » Rsx - Reflection (Amstrad Computer User)
» Applications » Rsx - Resident System Extensions (CPC Amstrad International)
» Applications » RSX Encrypter
» Applications » X-Ddos v1 ROM
» Applications » RSX Exform: Extended Diskformat (CPC Magazin)
» Applications » RSX Byte Search
Je participe au site:
» Vous avez des infos personnel, des fichiers que nous ne possédons pas concernent ce programme ?
» 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.7-desktop/c
Page créée en 208 millisecondes et consultée 1847 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.