Nikolaus Heusler Archiv

Erschienen in 64'er Magazin, Ausgabe unbekannt · Originaldatei: UNIPRINT.TXT

Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.

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 RUN STOP. 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 RUN STOP wird eine der Programmfunktionen aufgerufen (dieser Teil wird im Folgenden als »Menü« bezeichnet):

<f1>: 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.

<f3>: Sprites nachzeichnen
Einen Nachteil hat die Grafik, die mittels <f1> erzeugt wurde, noch: Falls auf dem Bildschirm Sprites waren, fehlen diese im erzeugten Bild noch. Diese werden mit <f3> 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.

<f4>: 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 <f4>. Soll der Rahmen wieder gelöscht werden, wird erst der Schirm vollständig invertiert (<f5>), dann der dadurch gelöschte Rahmen wieder nachgezeichnet (<f4>) 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.

<f5>: Alles invertieren
Diese Funktion haben wir schon unter der <f4>-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.

<f6>: 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 <f6> 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.

<f7>: 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.

<f8>: Druck
Endlich die wichtigste Funktion. Nach dem Druck auf <f8> 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
RUN STOP 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 RUN STOP 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 <f8> 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).

RUN STOP: 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 <f7> (Preview), unmittelbar nachdem Sie auf RESTORE 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 RESTORE gleichzeitig mit SHIFT 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 (<f7>)
A000-BFFF Hires-Bild
C7A7-CFFF Uniprint 24 (Version 51111)
D000-DFFF Zwischenspeicher