Hardcopies auf Tastendruck! Uniprint jetzt für 24 Nadel-Drucker Uniprint aus 64'er 4/88 für MPS-Drucker war ein voller Erfolg. Viele Leser arbeiten gern mit diesem Programm, das auf Tastendruck eine Bildschirmhardcopy liefert und dabei auf Wunsch auch Sprites berücksichtigt. Im Sonderheft 32 wurde eine Anpassung für den Star NL 10 vorgestellt. Jetzt kommt Uniprint 24 für 24 Nadel-Drucker. von Nikolaus M. Heusler Dieses Hardcopyprogramm übertrifft herkömmliche Bildschirmdruck-Routinen. Es ermöglicht dem Benutzer, auf Tastendruck eine Hardcopy des Bildschirms auszugeben. Das alleine wäre noch nichts Besonderes. »Uniprint 24« erkennt jedoch automatisch, ob Grafik oder Text angezeigt wird, stellt automatisch fest, wo im Speicher das Bild liegt, berücksichtigt neue Zeichensätze und auch Sprites. Die Umsetzung von Rasterinterrupts ist leider nicht möglich, da die Routine, wenn sie vom NMI (der RESTORE Taste) aufgerufen wird, den IRQ sperrt. Es gibt verschiedene Programmversionen, die in unterschiedlichen Speicherbereichen liegen. Sie unterscheiden sich nicht in der Bedienung, auch nicht im internen Aufbau, müssen aber mit verschiedenen SYS-Befehlen gestartet werden. Laden Sie beispielsweise die Version im Speicher ab 51111. Obwohl das Programm aus Gründen des Komforts und der Geschwindigkeit vollständig in Maschinensprache geschrieben ist, brauchen Sie keine Assemblerkenntnisse, um damit arbeiten zu können. Geben Sie ein: LOAD "UNIPRINT 51111",8,1 Nach dem Laden der Routine kann sie in diesem Fall mit SYS 51111 gestartet werden. Falls ein ?OUT OF MEMORY ERROR erscheint, geben Sie zur Rücksetzung der Zeiger den NEW-Befehl ein. Dabei wird Uniprint nicht gelöscht, jedoch ein evtl. im Speicher befindliches Basicprogramm. Die Adresse, die hinter SYS anzugeben ist, ist im Filenamen enthalten. Nach dem Start erscheint eine Einschaltmeldung auf dem Schirm, dann verschwindet das Utility in der »Versenkung«. Sie können nun ein beliebiges Programm laden und starten, das allerdings zwei Bedingungen erfüllen muß: Erstes darf es den von der Routine benutzten Speicherbereich nicht belegen, und zweitens darf es den NMI-Vektor (792/793) nicht verändern. Ist das interessierende Bild zu sehen, drücken Sie nur die RESTORE-Taste, ohne . Das Programm wird nun »eingefroren«, und Uniprint tritt in Aktion. Das erkennen Sie daran, daß der Rahmen seine Farbe ändert. Durch Betätigung einer Funktionstaste oder der Taste wird eine der Programmfunktionen aufgerufen (dieser Teil wird im Folgenden als »Menü« bezeichnet): : Bild umrechnen Nach Druck auf diese Taste wechselt der Bildschirmrahmen wieder seine Farbe, und das Programm beginnt, das sichtbare Bild in eineHiresgrafik umzurechnen, wenn es ein Textbild ist, oder zu übernehmen, wenn es schon eine hochauflösende Grafik (Hires) war. Bei der Umrechnung werden der aktuelle Zeichensatz (auch ein modifizierter) und die aktuelle Speicherposition des Bildschirmspeichers (normalerweise ab 1024) berücksichtigt. Dabei werden alle Zeichen unabhängig von ihrer Farbe in die Grafik eingetragen - mit einer Ausnahme: Zeichen in der Hintergrundfarbe, die somit unsichtbar sind, werden nicht kopiert. Falls sich ein Hiresbild auf dem Monitor befindet, wird erkannt, welcher der acht Grafikspeicher angezeigt wird, und dieser dann übernommen. In jedem Fall steht hier also eine Kopie des Bildschirms. Das Umrechnen dauert für den Textbildschirm etwa zwei Sekunden, im Grafikmodus ist die Pause vernachlässigbar. Danach kommen Sie wieder in das Menü zurück. : Sprites nachzeichnen Einen Nachteil hat die Grafik, die mittels erzeugt wurde, noch: Falls auf dem Bildschirm Sprites waren, fehlen diese im erzeugten Bild noch. Diese werden mit in die bereits erzeugte Grafik einkopiert. Dies dauert je nach Anzahl aktiver Sprites maximal drei bis vier Sekunden. Auch für die Kleingrafiken gilt das für den Textbildschirm gesagte: Sprites, die die Hintergrundfarbe haben, werden übergangen. Solche, die in X und/oder Y Richtung expandiert sind, werden entsprechend vergrößert übertragen. : Rahmen Wenn eine Grafik den Monitor nicht ganz ausfüllt, sondern sich nur in der Mitte des Bildes befindet, kann es nützlich sein, um die Hardcopy einen dünnen Rahmen zeichnen zu lassen. Dies ereichen Sie durch Druck auf . Soll der Rahmen wieder gelöscht werden, wird erst der Schirm vollständig invertiert (), dann der dadurch gelöschte Rahmen wieder nachgezeichnet () und dann ein zweites Mal invertiert. Die Rahmen-Funktion arbeitet »intelligent«: Sie erkennt Teile der Grafik, die bis an den Rand des Bildschirms reichen, und stoppt das Zeichnen des Rahmens kurz vorher. Aus diesem Grund wird bei vollständig freiem Bildschirmrand der Rand nicht bis ganz an den linken bzw. rechten Rand gezeichnet, insgesamt vier Pixel fehlen. Aus technischen Gründen kann dieser kleine Schönheitsfehler leider ohne unverhältnismäßig großen Aufwand nicht beseitigt werden. Dies fällt jedoch nicht weiter ins Gewicht, die fehlenden Pixel fallen im Druck wirklich nicht auf. : Alles invertieren Diese Funktion haben wir schon unter der -Funktion kennengelernt. Alle Punkte, die vorher gesetzt waren, werden hierdurch gelöscht, und umgekehrt. Wenn Sie beispielsweise ein Bild haben, auf dem helle Zeichen auf dunklem Grund stehen, ist es wichtig, dieses nach der Umrechnung zu invertieren, damit der Ausdruck originalgetreu wird. : Gitter zeichnen Für Blockgrafiken, die noch verbessert werden sollen, ist es praktisch, wenn man sie ausdruckt, dann auf dem Papier korrigiert und wieder in den Computer eingibt. Damit das leichter geht, kann vor dem Ausdruck noch ein Raster eingebaut werden. Dies geschieht mit der f6-Taste. Erneuter Druck auf genügt, und das Gitter verschwindet wirder. Für Fortgeschrittene: Dieses Gitter wird nicht wie der Rahmen durch Setzen der entsprechenden Punkte erzeugt, sondern durch Invertieren. : Preview Drucken Sie nichts, was Sie nicht vorher gesehen haben! Bevor der Druck gestartet, läßt sich das Ergebnis vorher auf dem Bildschirm schon einmal begutachten. Drücken Sie die f7-Taste. Sie sehen nun ein schwarz-weiß Bild, das genau dem Ausdruck entspricht: Schwarze Punkte werden gedruckt, weiße nicht. Eine beliebige Taste führt ins Menü zurück. : Druck Endlich die wichtigste Funktion. Nach dem Druck auf wird mit den folgenden Tasten die Position des Ausdrucks bestimmt: <1> druckt das Bild auf der linken Seite des Papiers <2> das Bild wird in der Mitte des Papiers gedruckt <3> das Bild wird rechtsbündig gedruckt bricht die Funktion ab Nach Bestimmung der Position beginnt der Drucke. Die Hardcopyroutine wurde für einen Fujitsu DL 900 (24 Nadeln) mit Wiesemann-Interface 92000 geschrieben, verträgt sich jedoch mit den meisten 24 Nadel-Druckern, die zum Beispiel kompatibel zum Epson LQ 2500 sind. Der Druck läßt sich durch Gedrückthalten der Taste abbrechen. Bitte betätigen Sie diese Taste so lange, bis das Gerät entsprechend reagiert. Sie müssen ein so erzeugtes Bild aber nicht ausdrucken, sondern können es auch auf Diskette abspeichern, um es dann etwa in einer Diashow weiterzuverwenden. Dazu veranlassen Sie, statt auf die Taste zu drücken, einen Reset und speichern das Hiresbild ab $A000. Sehr bequem geht das mit HI-EDDI oder dem Hardmaker (64'er, Ausgabe 4/86, Taste <4> drücken). : Ende Wurde ein Bild umgerechnet und ausgedruckt, müssen Sie natürlich irgendwie auch wieder in das eingefrorene Programm zurückkehren. Dazu dient die f2-Taste. Der Bildschirmrahmen nimmt wieder seine ursprüngliche Farbe an, und das unterbrochene Programm macht weiter, als wäre nichts gewesen. Dieses kann übrigens sowohl ein Maschinenprogramm wie auch ein Basicprogramm sein! Einen kleinen Haken hat die Sache aber noch. Drücken Sie einmal auf (Preview), unmittelbar nachdem Sie auf gedrückt haben. Sie sehen ein weißes Bild vor sich. Der Grafikspeicher, in den dann das Bild »eingetragen« wird, wurde also gelöscht. Das ist auch erwünscht, dabei ergibt sich nur dann das Problem, wenn das Programm, dessen Grafik Sie ausdrucken wollen, diese gerade ab $A000 ablegt! Doch auch an diesen Fall wurde gedacht. Wenn Sie gleichzeitig mit drücken, unterbleibt das Löschen. Auf diese Weise kann auch ein schon erzeugtes Bild nach dem Verlassen des Menüs mit Uniprint weiterbearbeitet werden. Probleme beim Drucken? Falls alle Zeilen des Bildes übereinander gedruckt wird, müssen Sie den Drucker in den Auto-LF Modus schalten, da Uniprint 24 am Zeilenende nur ein CR (CHR$(13)) sendet, kein LF. Das Programm steuert mit folgenden Befehlen den Drucker: CR neue Zeile ESC Klammeraffe Drucker initialisieren ESC 3 n Zeilenabstand n/180 inch ESC * ' l h d 24-Nadelgrafik (hier: 960 Pixel pro Zeile) Uniprint 24 spricht den Drucker am seriellen Port unter der Geräteadresse 4 mit der Sekundäradresse 1 an. Bereiten diese Werte Schwierigkeiten, besteht die Möglichkeit, Uniprint beim Start neue Adressen mitzugeben. Diese werden ggf. einfach durch Komma getrennt angegeben: SYS 51111 keine Änderung der Voreinstellung SYS 51111,A A=Sekundäradresse SYS 51111,A,B B=Geräteadresse Entnehmen Sie dem Handbuch Ihres Interfaces, unter welcher Sekundäradresse der Linearkanal (Tranparant-Modus) aktiviert wird. Voreingestellt sind für B (Gerätenummer) der Wert 4 und für A (Sekundäradresse) eine 1. Im Folgenden die grobe Speicherbelegung (hexadezimal): 00A6-00A9 temporäre Speicherzellen 00F7-00FA temporäre Speicherzellen 02B2-02D3 Puffer für Hardcopyroutine 8400-87FF »Farbspeicher« für Schwarzweißbild () A000-BFFF Hires-Bild C7A7-CFFF Uniprint 24 (Version 51111) D000-DFFF Zwischenspeicher