★ APPLICATIONS ★ DIVERS ★ Kein Ärger mit List #8|CPC Magazin) ★ |
List #8 for Schneider NLQ 401 (CPC Magazin) | Applications Divers |
Wenn man zum Schneider-Computer den Schneider-Drucker kauft, sollte man eigentlich erwarten, daß beides zueinander paßt. Leider gibt es aber beim NLQ 401 ein paar Unverträglichkeiten, die einem die Freude verderben können. Altbekannt sind die Probleme mit dem fehlenden achten Bit. Ebenso schwerwiegend ist, daß der NLQ 401 Grafikzeichen mit 6 Pixel Breite druckt, während die Bildschirmdarstellung mit 8 Pixel-Zeichen arbeitet. Obendrein sind die Druckpixel in Höhe und Breite unterschiedlich, so daß Grafikausdrucke immer verzerrt sind. Aber selbst eine einfache Aufgabe bereitet Verdruß: Programmlistings werden nur verstümmelt ausgedruckt, weil die Zeichensätze nicht übereinstimmen. Wenigstens dieses Problem kann nun mit der hier vorgestellten Routine behoben werden. Sobald der Maschinencode mit dem Ladeprogramm erzeugt und auf Kassette/Diskette gesichert ist, kann er mit LOAD "LIST#8.BIN”,q an eine beliebige freie RAM-Adresse oberhalb &4000 geladen werden. Die Anwendung ist dann denkbar einfach: Einschalten: CALL q Ausschalten: CALL &BD28 Zusätzliche Bildschirmausgabe: Einschalten: POKE q+&3C,0 Ausschalten: POKE q+&3C,3 Diese Eingaben können wiederholt werden, LIST#8 ist gegen Fehlbedienung abgesichert. Was leistet nun diese Routine? Die Firmware des CPC enthält den Sprungvektor &BDF1 (MC WAIT PRINTER), der für Veränderungen der Druckausgabe ausgelegt ist. LIST#8 enthält (in DATA-Zeile 100) eine Initialisierung, mit der in zwei Schritten dieser Vektor umgebogen wird. Die endgültige Einstellung erfolgt erst mit Druckbeginn. Dabei wird aus Sicherheitsgründen der Vektor zunächst (mit &BD28) zurückgesetzt und dann in eine kurze Ausgaberoutine von &BDF7 bis &BDFE kopiert. Dies ist ein Bereich, den die Firmware für Erweiterungen freiläßt. Anschließend führt jede Druckausgabe über die Adresse q+&37. Dort steht in diesem Fall der Hauptteil von LIST# 8, es ist aber auch möglich, dort andere Routinen anzubringen. Für die eigentliche Druckausgabe muß dann der neue Einsprung &BDF7 verwendet werden. Das Hauptprogramm ab DATA-Zeile 110 gibt zunächst (wenn gewünscht) ein Zeichen an den Bildschirm aus. Dann wird auf alle Fälle der Drucker auf den Zeichensatz 1 geschaltet. In DATA-Zeile 120 werden die Z-80-Register mit Bitbildern geladen. Soll eines der dazugehörigen Zeichen (&5E, senkrechter Pfeil; &7C, senkrechter Strich; &7F, Schachbrettmuster) gedruckt werden, so wird in die Routine in DATA-Zeile 140 gesprungen und das Zeichen im einfachen Bitbildmodus ausgegeben. Das Hauptprogramm ersetzt außerdem das Zeichen &80 durch &20 (Leerzeichen) und wenn Bit 8 gesetzt ist, wird auf den Grafikzeichensatz umgeschaltet. So, jetzt ist der Zeichensatz des Druckers so gut es geht mit dem des CPC 464 identisch, und alle Zeichen mit Ausnahme der Grafikbilder der Steuerzeichen werden mit LIST#8 endlich vollständig übertragen. Die Routine enthält keine besonderen Programmiertricks und kann deshalb leicht auch an andere Drucker angepaßt werden. Gerhard Knapienski , CPC MAGAZIN
|