★ APPLICATIONS ★ DIVERS ★ CPC-464-RSX-Erweiterung WRITE für doppelte Zeichendichte ★ |
RSX Write (Schneider Magazin) | Applications Divers |
Bisher mußte man bei Programmen, die eine Mischung aus Bild (möglichst vielfarbig) und Text (möglichst viele Buchstaben pro Zeile) erforderten, mit MODE 1 einen Kompromiß (4 Farben, 40 Buchstaben) eingehen. Diese Zeiten sind nun endgültig vorbei. Mit dem RSX-Befehl |WRITE, @a$ kann man in MODE 0 bei allen 16 Farben immer noch volle 40 Buchstaben in eine Zeile bekommen. Die Lesbarkeit nimmt dabei sogar eher noch zu, da die Buchstaben nicht so in die Breite gezogen sind. Natürlich lassen sich nun auch in MODE 1 80 Zeichen darstellen. In MODE 2 sind sogar 160 möglich, doch dann wird es sehr unübersichtlich.
Der Befehl |WRITE, @a$ bewirkt, daß an der aktuellen Cursor-Position der String a$ ausgedruckt wird, und zwar mit doppelter Zeichendichte. Mit Hilfe des Ladeprogramms legt sich das Maschinenspracheprogramm direkt an die obere Speichergrenze. Wenn man die zu verändernden Adressen berücksichtigt, ist es ansonsten frei verschiebbar. Das Assembler-Programm hat eine Länge von etwa 200Byte; der Rest be-, steht aus einem neu definierten Zeichensatz. Im Programmablauf wird das Zeichen Nummer 255 jeweils mit den neuen umdefiniert, d.h., zwei der komprimierten Buchstaben kommen in einen normalen. Dies wird nun ausgedruckt und wiederum neu definiert. Kleinbuchstaben werden automatisch in große umgewandelt, da es nicht möglich ist, sie mit einer 8 x 4-Matrix vernünftig lesbar darzustellen. Daher geht der neue Zeichensatz nur bis zu CHR$ (90), d. h. bis Z. Selbstverständlich läßt sich der "eingebaute” Zeichensatz über PRINT (und auch den normalen WRITE-Befehl) parallel weiterverwenden. Es ist außerdem möglich, ein anderes Zeichen als Nummer 255 zu verwenden, da dieses z.B. auch im Programm "Pointer” aus Heft 2/87 gebraucht wird. Die Nummer dieses Zeichens, das man benutzen will, ist in folgende Speicherzellen zu poken: start+&01, &0B, &AF, &B7. Bei der Startadresse &8000 wären das also &8001, &800B, &80AF, &80B7; eine entsprechende Zeile kann man in das Ladeprogramm einfügen. Der komprimierte Zeichensatz ist folgendermaßen organisiert: Jeweils acht Byte stellen zwei Buchstaben dar, wobei der nummernmäßig kleinere im oberen Nibble liegt, also quasi mit 16 multipliziert wurde. Die Isolierung der Bit-Muster geschieht über AND 00001111, wobei vorher gegebenenfalls viermal eine Verschiebung nach rechts erfolgte, wenn der obere Buchstabe ausgedruckt werden sollte. Beim Neudefinieren des Zeichens Nummer 255 wird der erste der beiden komprimierten Buchstaben viermal nach links geschoben und mit dem zweiten durch OR verknüpft. Als Weiterentwicklung des Programms könnte man es mit der Indirection TXT OUT ACTION koppeln, so daß jede normale Bildschirmausgabe (also auch PRINT und LIST) komprimiert wird. Hier ergibt sich ein großes Feld von Möglichkeiten. Oliver Jakobs , Schneider Magazin
|