★ APPLICATIONS ★ DIVERS ★ Profi-RSX Teil 3 ★ |
Profi-RSX 3 (CPC Amstrad International) | Applications Divers |
Dies ist jetzt schon die dritte Folge dieser Befehlserweiterung und gleichzeitig auch eine der leistungsfähigsten. Hier dürften Sie wahrscheinlich eine »Weltpremiere« für die CPC's erleben, denn meines Wissens nach ist es das erste Mal, daß ein System veröffentlicht wird, bei dem Sie 26 verschiedene Farben bei 80 Zeichen pro Zeile (bzw. 640200 Pixels) benutzen können, wovon immerhin 16 (!) im beschreibbaren Ausschnitt des Bildschirmes zuverwenden sind. Diese Farbfähigkeit entspricht dem spezial hochauflösenden Modus des neuen SCHNEIDER PC 1512 (!). Allerdings gilt dies nur mit einer Einschränkung, die ich auch nicht verschweigen will. Beim PC 1512 können Sie jeden der 128.000 Punkte in einer der 16 Farben darstellen, während Sie beim CPC (auch 128.000 Pixels!) an sogenannte Farb-Balken, wie später noch genau erklärt wird, gebunden sind. Gleichzeitig absolut neu ist die Möglichkeit, 8 (!) Mal den Mode wechseln zu können und die Graphik in verschiedenen Auflösungen gleichzeitig darstellen zu können. Bisher war letzteres, wenn überhaupt, nur bei Text-Ausgaben gegeben. Das einzige Negative dürfte sein, daß dises Programm erst zu diesem relativ späten Zeitpunkt veröffentlicht wird, da es bei mir privat bereits seit fast 2 Jahren läuft. Nun, besser spät als nie. Damit jetzt auch Sie diese Erweiterung einsetzen können, beenden wir hier schnellstens diese Einleitung und gehen zur Erklärung der Befehle über. Mit Hilfe dieser Erweiterung, in Anlehnung an das Firmwarehandbuch zum CPC könnte man es als SCREEN PACK von Profi RSX bezeichnen, können Sie den Bildschirm in bis zu 8 Abschnitte einteilen. Diese Abschnitte kann man auch als Balken ansehen, wir werden sie hier jedoch unter der Bezeichnung BEREICHe führen. Falls Sie sich mit weniger Farben zufrieden geben wollen, oder die Bereiche für Ihren Anwendungsfall größer sein sollen, sind auch 4 Bereiche möglich. Die Anordnung der Bereiche entnehmen Sie bitte den Abbildungen 1 und 2. Für jeden von diesen Bereichen können Sie den Auflösungsmodus (0,1,2) sowie die Farben für alle 16 Stifte seperat setzen. Selbstverständlich ist auch das bekannte Blinken einzelner Sifte möglich und in der Geschwindigkeit frei wählbar. Diese Eigenschaften werden in 8 Farbtabellen festgehalten, wobei standardmäßig Farbtabelle 0 für den BEREICH 0 zuständig ist. Dies ist aber nicht zwingend, jedem BEREICH kann irgendeine Farbtabelle zugeordnet sein. Es kann auch eine Farbtabelle für mehrere (oder alle) Bereiche gültig sein.
Fassen wir kurz zusammen: Es gibt entweder 4 oder 8 BEREICHe, die die Nummern 0 bis 7 haben. Dabei geht die Zählung, wie aus den Abbildungen ersichtlich, von oben nach unten. Die Bereiche 0—3 sind immer vorhanden, während die anderen 4 BEREICHe nur bei der zweiten Version benutzbar sind. Alle Bereiche umfassen entweder 3 oder 6 Bildschirmzeilen, nur der letzte Bereich hat eine Zeile mehr, um auf eine Gesamtzeilenzahl von 25 zu kommen. Der Rahmen oberhalb des beschreibbaren Bereiches entspricht dem »normalen« Rahmen, während der unterhalb liegende die höchste Nummer hat und gesondert definiert werden kann. Es gibt 8 Farbtabellen (0—7), wobei jede Tabelle folgende Features beinhaltet: a) einen Bildschirmmodus (0, 1,2) b) die Farben für die 16 Stifte (1. und 2. Farbe) c) die zugehörige Rahmenfarbe Dabei kann jede Tabelle einen oder mehreren Bereichen zugeordnet werden, für welche ihre Eigenschaften gelten. Das Zuweisen einer Farbtabelle zu einem Bereich ist mit Hilfe des Befehls |BEREICH, Nummer des Bereiches, Nummer der Farbtabellemöglich. Mit den Befehlen INK, BORDER, MODE können Sie die Farben/Modi für die einzelnen Tabellen neu festlegen. Falls Sie eine bestimmte Eigenschaft für alle Farbtabellen gleichzeitig definieren wollen, so gibt es die Befehle RI, RM, RB, RIN. RI steht für Reset Inks und bewirkt, daß alle Farben auf die normalen Werte gesetzt werden. RM bewirkt das gleiche für die Modi, während der Befehl RB die beiden vorgenannten Befehle zusammenfaßt. Falls Sie vergessen haben, welche Farbtabelle Sie welchem Bereich zugeordnet haben, so weist der Befehl RIN den Bereichen ihre Standardtabellen zu. Das Aktivieren des Systems geschieht mit BON, während DEL dieses System wieder ausschaltet. Die Bildschirmverwaltung ist also nicht ständig eingeschaltet. Mit den Befehlen BMI und BM2 können Sie die Version auswählen (4 oder 8 Bereiche). Jetzt haben Sie im Schnelldurchgang alle Befehle kennengelernt, bis auf den Befehl |GMODE, Mode.Dies hat seine Ursache darin, daß wir diesen näher betrachten wollen. Denn hiermit ist es (wahrscheinlich) erstmals möglich, alle Graphik-Auflösungen gleichzeitig anzuwenden. Daß dies nicht möglich sein soll, wie man schon lesen oder hören konnte, stimmt nicht. Die Frage, wie dies realisiert werden kann, ist jedoch berechtigt. Um eine optimale Nutzung zu erreichen, wäre es ideal, wenn alle Operationen, die der Locomo-tive BASIC-Befehl MODE anstellt, auch beim Befehl GMODE durchgeführt würden. Denn dann wird neben dem kompletten Graphik-Bereich auch der Text-Bereich im Gesamten optimal an den Mode angepaßt. Das bedeutet, daß auch alle Fenster zurückgesetzt werden. Wenn wir die Aufgabe, die der Befehl GMODE hat, analysieren, so entsprechen diese folgerichtig vollständig dem MODE-Befehl, mit Ausnahme des Löschens des Bildschirmes. Dieses deshalb, weil sonst keine zwei Darstellungen in unterschiedlichen Modien möglich wären. Für unsere MC-Routine bedeutet das, daß wir praktisch die normalen MODE-Routinen übernehmen können, wenn wir irgendwie das Löschen des Bildschirmes verhindern können. Und hier gibt es tatsächlich eine (noch nicht einmal versteckte) Möglichkeit innerhalb des Betriebssystemes. Unter den »INDI-RECTIONs«, das sind Routinen, die immer an Schlüsselpositionen durch das Betriebssystem verwendet werden, gibt es die Routine SCR MODE CLEAR (&BDEB).Der Zweck von Indirections ist es, die Arbeitsweise des Betriebssystemes beeinflussen zu können. Die aufgeführte Indirection hat als Aufgabe das Löschen des Bildschirmes. Da wir dies verhindern müssen, sperren wir diese Routine einfach. Dadurch wird der Bildschirm beim Aufruf der MODE-Routine der Firmware nicht mehr gelöscht. Unsere GMODE-Routine muß also folgend ablaufen:
Und das führt die Routine auch aus, wie Sie aus Listing 1 entnehmen können. Das Sperren wird durch Einsetzen des Z80-Befehls RET in die Sprungtabelle erreicht und durch das Rüddaden des alten Inhaltes wieder anuliert. An der Kürze der Routine können Sie auch erkennen, daß dieses eine der simpelsten Routine innerhalb von Profi RSX ist. Trotzdem ist dieses noch kaum — wenn überhaupt — bekannt. Zum Abschluß möchte ich noch auf eine Routine hin-weisen, die Ihnen auf den ersten Blick nicht auffallen wird. Wie Sie sich denken können, kostet das ständige Setzen der unterschiedlichen Farben Zeit, und das nicht zu knapp. Das Einfachste wäre es gewesen, die Routine, die das Setzen der Farben zur Aufgabe hat, so zu konzipieren, daß diese »stur«, Bereich für Bereich, die Farben ausgibt, unabhängig von den Farben. Dabei wird es aller Wahrscheinlichkeit nach nicht Vorkommen, daß in allen Bereichen unterschiedliche Farben zur Anwendung kommen. Wenn nun in zwei aufeinanderfolgenden Bereichen die gleichen Farben und Modien definiert sind, wäre es doch »Blödsinn«, diese auch doppelt auszugeben. Deshalb wird bei jeder Abänderung der monentanen Konfiguration intern überprüft, ob eine Ausgabe eingespart werden kann, damit möglichst wenig Rechenkapazität für Ihre Programme verloren geht. Da aber nun den Bereichen unterschiedliche Tabellen zugeordnet werden können, oder sogar mehrere Bereiche von einer Tabelle versorgt werden, gestaltet sich dieses sehr komplex, da zudem einzelne Bereiche aufgrund der internen Steuerung voneinander abhängen usw. Leider ist die Routine dadurch ziemlich lang geworden. Sie haben dafür aber die Gewißheit, daß für die Bildschirm-Darstellung nur soviel Rechenleistung abgezweigt wird, wie unbedingt erforderlich ist. Wie Sie hier sehen, habe ich mich bemüht, auch diesen Bereich optimal zu gestalten, auch wenn er »nur« in einer Zeitschrift veröffentlicht und nicht professionell vermarktet wird. Auch die saubere Bildschirmdarstellung dürfte zu Ihrer Zufriedenheit ausgeführt worden sein. Anmerken möchte ich noch, daß ich selber noch eine andere Routine besitze, die insgesamt erheblich schneller arbeitet. Doch hat diese den Nachteil, daß sie nicht in der Lage ist, sich selbstständig mit dem Bildschirmaufbau zu synchronisieren. Da ich Ihnen dies nicht zumuten will, habe ich diese Version nicht gewählt. Den oben genannten Effekt (unterschiedliche Geschwindigkeit je nach Farbenhäufikeit) können Sie selbstverständlich per Benchmark-Test überprüfen. Am krassesten wird der Unterschied zwischen einem »einheitlichen Bildschirm« und 8 unterschiedlichen Bereichen ausfallen, aber auch das Übereinstimmen zweier aufeinander folgender Bereiche bringt einen Gewinn. Bitte überprüfen Sie das selber. Für die Freunde der Assembler-Sprache folgt hier: Die Assembler-Ecke Bis jetzt haben Sie viele neue RSX-Befehle kennengelemt. Die Anwendung unter Locomotive BASIC dürfte dabei keine Probleme gemacht haben. Hier übernimmt der Interpreter für Sie die notwendige Übergabe der Parameter. In Assembler ist das leider nicht so komfortabel. Hier müssen Sie die Aufgaben des Interpreters mit übernehmen. Um nun zu sehen, was auf Sie zukommt, wenn Sie Profi RSX in Ihre MC-Programme einbinden wollen, ist es nützlich, wenn wir das Innenleben Ihres CPC in Bezug auf unser Problem näher betrachten. Ich könnte es Ihnen natürlich auch komprimiert in 5 Zeilen ohne jeglichen Kommentar darlegen, doch das würden die meisten unter Ihnen wahrscheinlich als zu kurz empfinden. Und schließlich wollen Sie doch auch noch was lernen, oder irre ich mich hier? Mich würde es übrigens sehr interessieren, ob der in dieser Serie veröffentlichte Stoff zu schwer/ leicht, zu kurz oder zu langatmig etc. ist. Schreiben Sie uns doch einmal kurz Ihre Meinung hierzu. Wie werden die zusätzlichen Routinen der RSXen nun vom Betriebssystem verwaltet? Die Verwaltung aller Erweiterungen, sei es eine RSX oder ein zusätzliches ROM, obliegt natürlich dem Betriebssytem. Innerhalb dessen ist der sogenannte Betriebssystem-Kern für uns interessant, da dieser die Verwaltung zur Aufgabe hat. Außerdem stellt er uns einige nützliche Routinen bereit. Übrigens: Nach den Deklarationen der Firmen Amstrad/Locomotive sowie Schneider, wird der Betriebs-sytem-Kern unter der englischen Bezeichnung KERNEL (KL) geführt. Es befindet sich wie alle Firmware-Routinen im unteren ROM und zwar im Bereich von 0 bis &057F (CPC 464), &057A (CPC 664), &0591 (CPC 6128). Dabei sind für uns folgende Routinen interessant: KL CHOKE OFF (RAM-Einsprung ab: &BCC8) |
★ APPLICATIONS ★ DIVERS ★ Befehlsliste Teil 3 : Bildschirm-Steuerung ★ |
Diese Erweiterung erlaubt das Einteilen des Bildschirmes in bis zu 8 Bereiche, für die jeweils der Mode sowie die Farben frei definierbar sind. Dadurch ist es möglich, bis zu 8 mal den Modus zu wechseln und 26 Farben (davon 16 im beschreibbaren Bildschirmteil) im MODE 2 (also bei 80 Zeichen/Zeile (!)) darzustellen! Die folgende Tabelle zeigt die theoretisch mögliche Farbenanzahl, wenn sich der ganze Bildschirm in einem Mode befindet. Da der Schneider CPC jedoch maximal nur 27 Farben darstellen kann, müssen teilweise einzelne Farben mehrfach verwendet werden. (siehe Tabelle 1)
Schriftfeld | Rand | Insgesamt | |
MODE 0 | 126 (!) | 10 | 136 |
MODE 1 | 32 | 10 | 42 |
MODE 2 | 16 | 10 | 26 |
Tabelle 1 |
Die normale Farbensteuerung wird durch Profi-RSX abgeschaltet und durch eine neue ersetzt. Diese steuert nun die Farben (inkl. Blinken der Farben) in den einzelnen Bereichen.
Der Bildschirm kann in 2 Versionen behandelt werden. Grundsätzlich wird er in Bereiche, die mehrere Zeilen umfassen, aufgeteilt. Es sind 8 oder 4 Bereiche möglich. Die Aufteilung erfolgt wie nachfolgend dargestellt.
42. BM2 (keine Parameter)
normale Rahmenfarbe | ||
Rahmen 0 | Bildschirm-Bereich 0 (3 Zeilen) | Rahmen 0 |
Rahmen 1 | Bildschirm-Bereich 1 (3 Zeilen) | Rahmen 1 |
Rahmen 2 | Bildschirm-Bereich 1 (3 Zeilen) | Rahmen 2 |
Rahmen 3 | Bildschirm-Bereich 3 (3 Zeilen) | Rahmen 3 |
Rahmen 4 | Bildschirm-Bereich 4 (3 Zeilen) | Rahmen 4 |
Rahmen 5 | Bildschirm-Bereich 5 (3 Zeilen) | Rahmen 5 |
Rahmen 6 | Bildschirm-Bereich 6 (3 Zeilen) | Rahmen 6 |
Rahmen 7 | Bildschirm-Bereich 7 (4 Zeilen) | Rahmen 7 |
Rahmen 8 | ||
Tabelle 2 |
43. BMI (keine Parameter)
Für jeden Bildschirm-Bereich sowie für den zugehörigen Rahmen kann nun mit Hilfe der nachstehend aufgeführten Befehle der Modus sowie die Farben festgelegt werden.
normale Rahmenfarbe | ||
Rahmen 0 | Bildschirm-Bereich 0 (6 Zeilen) | Rahmen 0 |
Rahmen 1 | Bildschirm-Bereich 1 (6 Zeilen) | Rahmen 1 |
Rahmen 2 | Bildschirm-Bereich 2 (6 Zeilen) | Rahmen 2 |
Rahmen 3 | Bildschirm-Bereich 3 (7 Zeilen) | Rahmen 3 |
Tabelle 3 |
44. MODE, Farbtabellen-Nr., Mode
45. BORDER, Farbtabellen-Nr., 1. Farbe (, 2. Farbe)
FARBTABELLE:
Es gibt 8 Farbtabellen, wobei standardmäßig Farbtabelle Nr.O dem Bereich 0 zugeordnet ist, Farbtabelle 1 dem Bereich 1 usw.
Die Nummer der Farbtabelle entspricht also in der Regel der Nummer des Bildschirm-Bereiches.
Es ist aber auch möglich, eine Farbtabelle einem anderen Bereich zu zuordnen, bzw. eine Farbtabelle für mehrere Bereiche zusammen zu definieren.Eine Farbtabelle enthält 16 mal die Nummern der Farben für die 16 möglichen Stifte (1. und 2. Farbe) sowie der Farben für den Rand.
46. INK, Farbtabellen-Nr., Stift-Nr., 1. Farbe (, 2. Farbe)
Die 2. Farbe muß nicht mit angegeben werden. Fehlt diese Farbe, so wird die 2. Farbe auf die Werte der 1. Farbe gesetzt, die entsprechenden Punkte auf dem Bildschirm blinken dann nicht.
47. BEREICH, Bereich-Nr., Farbtabellen-Nr,
48. RI (keine Parameter)
49. RM (keine Parameter)
50. RB (keine Parameter)
51. SYNC (keine Parameter)
52. 1BON (keine Parameter)
53. RIN (keine Parameter)
54. DEL (keine Parameter)
55. GMODE, Mode
|
Page précédente : Profi-RSX 2 |
|