Hier ist nun der dritte und letzte Teil der 8-Bit-Er-weiterung des Druckeranschlusses am CPC. Mit diesem kleinen Programm und der Drahtbrücke aus Teil 1 lassen sich selbstdefinierte Zeichen ohne 1/6 Zeilenvorschübe und andere beliebte Tricks mit dem Drukker erzielen. Das Programm stellt den RSX-Befehl [|PRT.MTR] zur Verfügung, der alle Zeichen, die mit dem SYMBOL-Kommando erzeugt wurden, exakt zu Papier bringt. Hat man z.B. die RSX-Erweiterung installiert und eine eigene Zeichentabelle mit SYMBOL AFTER 200 angelegt, werden ab jetzt alle Zeichen von 200 an aufwärts beim Ausdruck berücksichtigt, alle anderen normal ausgegeben. Die Ausgabe der selbstdefinierten Zeichen erfolgt mit [ESC * m n1 n2] und ist somit auf Epson-kompatiblen Printern einsetzbar. Wer eine andere Steuersequenz benötigt, kann diese leicht in das Programm ein-poken. Für Drucker, die mit dem achten Bit die unterste Nadel ansteuern, muß das Programm etwas geändert werden. Den Steuer-String finden Sie ab Adresse & A609 in folgender Form: 05 1B 2A 010A 00 0 0 0 0 0 0 0 0 0 0 0 Alle Werte sind hexadezimal angegeben. Das erste Byte beinhaltet die Länge des Strings, also &05. Das folgende, &1B, stellt den eigentlichen Beginn des Strings dar und den Wert für ESC. &2A entspricht dem * und ist mit ESC für die Auswahl des Grafikmodus des Druckers zuständig. Mit &01 für m wird die doppelte Dichte eingeschaltet. Der Wert &0A von n1 bedeutet 10 dezimal und gibt an, wie viele Daten-Bytes folgen. Der folgende Wert &00 für n2 besagt, wie viele 256-Byte-Blöcke gesendet werden, nämlich kein einziger. Diese beiden letzten Werte (nl und n2) errechnen sich folgendermaßen: n1 = Anzahl Bytes MOD 256 n2 = Anzahl Bytes \ 256 Die folgenden 11 Bytes stehen für Steuer-Strings mit mehr als 5 Zeichen zur Verfügung. Der Bereich für die Daten-Bytes beginnt dann bei Adresse & A61A und ist entsprechend aufgebaut. Das erste Byte enthält die Länge, in diesem Fall wiederum 10, da sie ja auch im Steuer-String angegeben wurde. Diese beiden Werte sollten immer übereinstimmen, da sonst die korrekte Funktion der RSX-Erweiterung nicht gewährleistet ist. Außerdem sollte der Maximalwert 16 nicht überschreiten, weil die folgenden 16 Bytes für die Druckermatrix vorgesehen sind. Das Programm belegt somit nach (!) der Initialisierung das RAM von &A500 bis einschließlich &A62A. Die Einbindung des RSX-Befehls |PRT.MTR geschieht folgendermaßen: [CTRL] [SHIFT] [ESC] SYMBOL AFTER 256 MEMORY &A482:LOAD”8PRT#8.RSX”:CLOSEIN CALL &A483 :'-> HIMEM wird auf &A4FF gesetzt SYMBOL AFTER ???:'-> ganz nach WunschBetrachten wir nun noch die Darstellung eines Zeichens auf dem Bildschirm. Zunächst wird dieser mit MODE 2 initialisiert. Nun definiert man ein Zeichen, z.B. Nummer 255. Schematisch sieht das so aus: SYMBOL 255, Byte1, Byte2, .. .Byte8 B1% = &X11111111 B2% = &X01111111 B3% = &X00111111 B4% = &X00011111 B5% = &X00001111 B6% = &X00000111 B7% = &X00000011 B8% = &X00000001 SYMBOL 255, B1%, B2%, B3%, B4%, B5%, B6%, B7%, B8% Dieses Zeichen wird nun mit LOCATE 1,1 :PRINT CHR$ (255) in der linken oberen Ecke angezeigt. Da der Bildschirm aber immer im Grafikmodus arbeitet, ist Zeile 1 in acht Grafikzeilen unterteilt, in die nun die acht Bytes des Symbols geschrieben wurden. Das erste Byte in der obersten Zeile hat dann im Bildschirm-RAM die Adresse &C000. C000 Byte 1 in Zeile 398 11111111 C800 Byte 2 in Zeile 396 01111111 D000 Byte 3 in Zeile 394 00111111 D800 Byte 4 in Zeile 392 00011111 E000 Byte 5 in Zeile 390 00001111 E800 Byte 6 in Zeile 388 00000111 F000 Byte 7 in Zeile 386 00000011 F800 Byte 8 in Zeile 384 00000001 Für den Drucker sind aber immer nur acht untereinander liegende Bits interessant. Man kann also nicht einfach Byte 1, Byte 2 usw. an ihn senden, sondern muß aus den untereinander liegenden Bits aller acht Bytes ein neues Byte bilden. Diesen Vorgang erledigt unter anderem auch |PRT.MTR. Das erste Byte für den Drucker wäre also &X10000000, das zweite &X11000000 usw. Da aber ein normales Zeichen in mehr als acht Punktspalten vom Drucker dargestellt wird, gibt man noch einige Leerspalten aus. Der Steuer-String ist auf zwei davon eingestellt (8+2=10). Dies entspricht dem Modus Elite der Epson-Drucker. Bei anderen Geräten muß man etwas experimentieren. WIDTH 10 PRINT#8, ”HHHHHHHHHH” V$=”HHHH”+CHR$(255) + CHRa(255) + "HHHHHHHHHHHHHH" |PRT.MTR, @Va Die Ausgabe müßte so aussehen: HHHHHHHHHH HHHH HHHH HHHHHHHHHH Alle Hs sollten untereinander liegen. Wenn die der mittleren Zeile etwas überstehen, so sind die Werte zu verkleinern. Befindet sich das letzte H zu weit innen, muß man die Werte erhöhen (Erklärung SteuerjVa,1 Das entspricht dem Semikolon des PRINT-Kommandos. Zum Schluß sei noch erwähnt, daß auch Druckersteuer-Strings in Va enthalten sein können. Hierbei ist aber zu beachten, daß eventuell erforderliche Parameter unterhalb des SYMBOL-AFTER-Befehls liegen, da sonst der Parameter in acht Bytes aufgesplittet wird. Von diesen acht Bytes würde wiederum das erste als Parameter interpretiert, und das Chaos wäre perfekt. Hier ein Beispiel, wie es nicht aussehen sollte: SYMBOL AFTER 128 V$=”XYZ” + CHR$(27) + ”0” + CHR$(132) + ”XYZ” |PRT.MTR, @V$ Mit [ESC Q n] wird normalerweise der rechte Rand eingestellt. Der Wert von n liegt aber mit 132 innerhalb der Symboltabelle und würde somit als Grafikzeichen behandelt. Zum Glück benötigen aber die meisten Steuersequenzen keine so hohen Werte und können somit problemlos eingesetzt werden. Besitzer eines NEC Px erhalten mit diesem Programm zwar leserliche, aber gestreifte Zeichen, da nur jede dritte Nadel der 24-Nadel-Matrix im 8-Bit-Modus angesteuert wird. Deshalb sollten sie die 24-Nadel-Version des Lister-Programms (8-Bit-Fassung, s. Ausgabe 9/87 des Schneider Magazins) und des |PRT.MTR-Befehls verwenden. Beide Programme sind als Zugabe auf den Fingerschonend-Datenträgern 10/87 erhältlich. H. H. Fischer, Schneider Magazin
★ AMSTRAD CPC ★ DOWNLOAD ★ |
|
CPCrulez[Content Management System] v8.7-desktop/c Page créée en 700 millisecondes et consultée 796 foisL'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. |
|
|