★ APPLICATIONS ★ DIVERS ★ COPYPIC ★ |
Copypic (CPC Amstrad International) | Applications Divers |
LOGO-Grafik schwarz auf weiß Leider bietet die Programmiersprache LOGO keine Möglichkeit, ein erstelltes "Bild" auf dem Drucker auszugeben. Die durch gleichzeitiges Drücken der EXTRA- und PTR-Taste ausgelöste Hardcopy-Funktion bringt naturgemäß den gesamten aktuellen Bildschirminhalt auf das Papier, und dies in einem vergleichsweise kleinen Format. Mit COPYPIC kann man nun LOGO-Grafiken in einem größeren Format auf den Drucker ausgeben. Da die Anzahl der Kopfzeilen und der Rand unter Programnikontrolle einstellbar sind, lassen sich LOGO-Grafiken auch in Loco-Script-Texte "einbinden". LOGO und seine Bilder Wie aus dem "mageren" LOGO-Teil des Joyce-Benutzer-handbuches zu entnehmen ist, wird das gerade auf dem Schirm gezeigte Bild mit dem Befehl savepic "name in die Datei name auf Diskette gespeichert. Wer schon einmal mit DIR [SIZE] unter CP/M seine LOGO-Dateien begutachtet hat, wird bemerkt haben, daß jedes auch noch so kleine Bild volle 23 kByte Speicherplatz verbraucht. (Anmerkung für "Neulinge": bei dem DIR-Befehl muß statt den eckigen Klammern das große Ä für Klammer auf bzw, das große Ü für Klammer zu verwendet werden.) Wer nachrechnet, hat schnell die Lösung: Die Auflösung des Joyce-Monitors beträgt 720 x 256 Punkte (Spalten x Zeilen). Das macht 184320 Punkte, oder Pixel, wie die Eingeweihten einen Punkt auf dem Monitor nennen. Ein Pixel entspricht einem Bit, ein Byte enthält 8 Bit. Also 184320 geteilt durch 8 sind 23040 Bytes. Das entspricht den angezeigten 23 kByte. LOGO tut aber noch mehr. Als Datei-Kopf werden 38 Byte abgespeichert. In den ersten sieben Bytes dieses Datei-Kopfes steht im ASCII-Code das Wort "PICTURE". Hinter dem Datei-Kopf sind dann die 256 Zeilen ä 90 Byte abgespeichert. 720/8 = 90 Byte entsprechend der horizontalen Auflösung, 256 Zeilen entsprechend der vertikalen Auflösung. Der Drucker und seine Grafik Der Drucker von Joyce hat nicht nur einen immensen Zeichensatz und diverse Schriftarten, sondern er kann auch Grafik aufs Papier bringen. Das geht mit einfacher Auflösung (480 Pixel/Zeile) oder mit doppelter Auflösung (960 Pixel/Zeile). Da der Druckkopf des Druckers acht Nadeln besitzt, die untereinander (vertikal) angeordnet sind, druckt er immer acht Grafikzeilen auf einmal. Der springende Punkt In diesen, scheinbar nebensächlichen Anmerkungen liegt nun der Hund bzw. das Pixel begraben. Während LOGO in seiner Bild-Datei jeden Bildpunkt fein säuberlich hintereinander ablegt, braucht der Drucker acht Pixel, die jeweils 720 Bit bzw. 90 Byte auseinanderliegen (siehe auch Bild 1 und 2). Damit liegt die Aufgabenstellung für das Programm fest. Bit für Bit für Bit... Zunächst müssen acht Grafikzeilen ä 90 Byte mit den 720 Bildpunkten von der Diskette gelesen werden. Dann werden jeweils aus den acht untereinanderliegenden Bytes, die eine 8x8-Bit-Matrix bilden, die Werte der Spalten berechnet und diese an den Drucker ausgegeben. Für ein vollständiges LOGO-Bild muß der Drucker also 256 / 8 — 32 Zeilen drucken. Da nun erstens solche Bit-Rechnerei nicht gerade die Stärke von Basic ist und zweitens pro Druckzeile 5760 Bildpunkte umgewandelt werden müssen, dauert die Erzeugung einer Druckzeile ca. eine Minute. Der Gemütsmensch wird sich angesichts dieses Zeitaufwandes zur Kaffeepause zurückziehen und dem Computer die Arbeit überlassen. Wer es eiliger hat, dem bietet das Programm zwei Möglichkeiten immenser Beschleunigung:
Copy mit Komfort Bei der Entwicklung des Programmes wurde darauf geachtet. daß Eingaben auf das unbedingt notwendige Maß reduziert wurden. Nach Eingabe und Start mit RUN, (Eingabe vor Starten des Programmes unbedingt speichern!!) zeigt sich ein viergeteilter Bildschirm. Im ersten Teil finden sich außer dem Namen und der Versionsnummer die Werte einiger Parameter, die weiter unten besprochen werden. Im zweiten Teil befinden sich neun Menuepunkte, die zeigen, wie sich das Programm die weitere Zusammenarbeit mit dem Benutzer vorstellt. Der dritte und größte Teil des Bildschirmes ist dem Inhaltsverzeichnis vorbehalten. Beim ersten Start wird dieses in aller Regel die lapidare Meldung "keine Daten" beinhalten. Der untere Teil gibt Fehlermeldungen aus und informiert über Fortschritte beim Ausdruck eines Bildes. Die Menuepunkte Im zweiten Teil, in dem sich die Menuepunkte befinden, sehen Sie einen Menuepunkt invers dargestellt. Dort befindet sich der Menuecursor. Diesen können Sie mit den Cursor-links- bzw. -rechts-Tasten bewegen. Sicher haben Sie auf irgendeiner Diskette schon ein LOGO-Bild abgespeichert. Diese LOGO-Bildcr nennen wir ab jetzt PIC-Dateien. da sie den Dateityp .PIC besitzen.
Bild 1 Jetzt gehts los...
Nach kurzer Zeit erscheint auf dem Bildschirm im dritten Teil das Inhaltsverzeichnis der Diskette. Allerdings werden zu Ihrer Entlastung nur solche Dateien angezeigt die das Dateiattribut PIC oder PRT besitzen. Die PIC-Dateien sind in der ersten, die PRT-Dateien in der zweiten Spalte aufgelistet. Die oberste PIC-Datei ist invers dargestellt. Dies ist der Dateicursor, mit dem die zu druckende Datei ausgewählt wird. Er kann mit den Cursor-hoch- bzw. -runter-Tasten bewegt werden, jedoch nur innerhalb der Gruppe mit den PIC-Dateien. Um in die Gruppe mit den PRT-Dateien zu gelangen, setzen Sie einfach den Menuecursor auf "PRT" und drücken RETURN. Da Sie aber vorläufig noch keine PRT-Datei im Inhaltsverzeichnis haben, ist diese Funktion noch sinnlos und der Dateicursor bleibt in der ersten Spalte. Mit dem Dateicursor können Sie also immer das Bild auswählen, das Sie ausdrucken lassen wollen. PIC oder PRT Die PIC-Dateien enthalten die Original-LOGO-Bilder. wie sie mit dem savpic-Befehl gespeichert wurden. PRT-Dateien hingegen sind Dateien, welche das Programm während des Ausdruckens einer PIC-Datei selbständig erzeugt. PRT-Dateien enthalten also die "schnellen" Bilder, von denen weiter oben schon die Rede war. Darfs auch ein bißchen mehr sein? Mit dem Menuepunkt "zeilcn" können Sic einstellen, wieviele Druckzeilen der PIC-Datei ausgedruckt werden sollen. Maximal sind dies 32 Zeilen.
Auf gleiche Art und Weise funktionieren die Menue-punkte "köpf und "rand". Mit "köpf' läßt sich die Anzahl der Zeilenvorschübe vor Ausdruck des Bildes eingeben. Mit dem Menuepunkt "rand" wird die Breite des linken Randes eingestellt. Probieren hilft hier, das richtige Maß zu finden. Diese Parameter können ebenso für den Ausdruck einer PRT-Datei bestimmt werden. Mit oder ohne? Mit Hilfe des Menuepunktes "±prt" körinen Sie entscheiden. ob eine PRT-Datei erzeugt werden soll oder nicht. Normalerweise ist die Erzeugung einer PRT-Datei immer empfehlenswert. Sie müssen nur darauf achten, daß auf Ihrer Datendiskette genügend Speicherplatz vorhanden ist. Ein DISK-FULL-Fchler wird nicht abgefangen und bedeutet den unsanften Abbruch des Programmes. Eine PRT-Datei verbraucht nicht generell 23 kByte Speicherplatz; der Platzbedarf richtet sich nach der Anzahl der Zeilen, die gedruckt werden sollen und liegt zwischen einem kByte und 23 kByte. Die Laufzeit des Programmes verlängert sich durch die Generierung der PRT-Datei nur unmerklich. Die PRT-Datei wird mit demselben Namen versehen.den auch die PIC-Datei hat; es wird nurautomatisch der Dateityp in .PRT geändert. Let's go Wenn Sie alle Parameter entsprechend Ihren Wünschen eingegeben haben, der Dateicursor an der richtigen Stelle steht und das Kaffeewasser kocht, bleibt nur noch eins zu tun: — Menuecursor auf "START" stellen und RETURN-Taste drücken - und Kaffee trinken... Zum Verlassen von COPYPIC in Richtung C/PM dient der Menuepunkt "EXIT"; abbrechen können Sie das Programm jederzeit mit der STOP-Taste.
Im Listing sind ab Zeile 10000 die Bildschirm- und Druckcrkommandos definiert. Da dieser Teil als Modul hinzugeladen wurde, werden von diesen Kommandos nicht alle benötigt. Wenn Sie diese zuerst eingeben und als Text-Datei mit SAVE "BDCODES.TXT",A abspeichern, so kommen Sie gleichzeitig zu einer recht umfassenden Kommandobibliothek, die bei der Entwicklung eigener Programme nützlich ist. In Ihre eigenen Programme können diese Kommandos mit MERGE "BDCODES.TXT" leicht eingebunden werden und mit GOSUB 10000 initialisiert werden. Natürlich dürfen in Ihrem Programm die Zeilennummern von 10000 bis 11350 nicht benutzt werden. Thorsten Schlote/MC, CPCAI8608
|