C 64
Software-Hilfe

Tips und Tricks zu Vizawrite (Teil 10)

Hochauflösende Grafik in Vizawrite 64-Texten verwenden — ein Wunschtraum? Nicht mehr, denn das Vizawrite-Grafik-System ermöglicht das Einbinden beliebiger HiRes-Grafiken in Ihre Briefe und Schriftstücke. Außerdem druckt der CP80X im Epson-Modus mit Vizawrite 64

Was noch vor wenigen Monaten unmöglich schien, ist nun Realität geworden: Allen Vizawrite 64-Besitzern die Möglichkeit zu bieten, in Ihren Texten fast beliebigen Gebrauch von hochaufgelösten Grafiken zu machen, gleich welcher Art diese Bilder sind. So ist es beispielsweise möglich, Giga-CAD-Bilder, »Apfelmänner«-Grafiken, digitalisierte, konstruierte oder einfach mit einem Grafikprogramm erstellte hochaufgelöste Bilder zu verwenden, um Briefköpfe optisch aufzuwerten, erläuterndes Bildmaterial in den Text mit einzubinden oder beliebige Spezialeffekte zu erzielen.

Das Vizawrite Grafik-System

Dieses Grafik-System wurde geschaffen, um hochauflösende Grafiken in Vizawrite 64-Texte einzubauen. Das Programmpaket setzt den ESC/*-Befehl von Epson- und kompatiblen Druckern voraus, eine Spezialversion für den Drucker CP80X (ESC/K-Befehl) ist ebenfalls enthalten (Listings 5 und 6). Die Grafik, die Sie in ein Vizawrite 64-Dokument übernehmen wollen, muß sich auf Diskette befinden. Dabei ist es gleichgültig, um welche Art von Grafik es sich handelt. Zur Gestaltung von optisch ansprechenden Briefköpfen eignen sich besonders Programme, wie etwa der »Print-Shop«. Die Grafiken können in beliebigen Speicherbereichen gestanden haben, bevor sie auf Diskette gespeichert wurden (Print-Shop-Bilder beispielsweise ab $4000). Multi-Color-Grafiken sollten Sie vorher mit einem dafür ausgelegten Programm bearbeiten. Für diese Zwecke besonders geeignet ist das Programm »Hardmaker« aus der 64er, Ausgabe 4/86 (T«-Befehl zum Umwandeln von Multi-Color-Grafiken in HiRes-Format). Es ist also durchaus möglich, »Apfelmännchen«-Grafiken in Vizawrite 64-Texte einzuarbeiten.

Um Grafiken für Vizawrite 64 aufzubereiten, laden Sie das Basic-Programm (Listing 1) von Diskette mit

LOAD "VG-CONVERTER",8 und starten es mit »RUN«. Das Programm lädt nun automatisch die benötigten Maschinen-Unterprogramme (Listing 2) nach. Nach dem Programmstart geben Sie den Namen des Bildes ein, das bearbeitet werden soll. Wenn Sie sich nicht ganz sicher sind, ob und unter welchem Namen sich das Bild auf der Diskette befindet, so geben Sie anstelle des Namens ein »$« ein, wodurch das Inhaltsverzeichnis auf dem Bildschirm ausgegeben wird. Sie können dabei die Ausgabe mit <SPACE> beliebig oft anhalten/fortsetzen und mit der Pfeil-nach-links-Taste abbrechen. Wenn Sie sich für ein Bild entschieden haben, werden Sie aufgefordert, die Diskette, auf der sich das zu bearbeitende Bild, befindet, ins Laufwerk zu legen. Nachdem Sie dies getan und die <RETURN>-Taste gedrückt haben, wird das Bild nach $2000 geladen, unabhängig davon, in welchem Bereich es vorher gestanden hat.

Nach dem Laden erscheint folgendes Auswahl-Menü:

1 Bild ansehen
2 ganzes Bild konvertieren
3 Ausschnitt konvertieren
4 Neues Bild laden
5 Disk-Befehl senden
6 Directory
7 Programmende

Sie können nun durch Drücken einer Taste zwischen 1 und 7 die gewünschte Funktion aufrufen. Alle anderen Tasten werden ignoriert.

Zu Punkt 1: Hiermit wird das Bild, das geladen wurde, angezeigt, wie es auch hinterher auf dem Papier erscheint: gesetzte Punkte sind schwarz, der Hintergrund weiß. Sie haben nun die Möglichkeit, das Bild durch <I> zu invertieren, durch <RETURN> gelangen Sie wieder ins Hauptmenü. Zu Punkt 2:

Zu Punkt 2:

Hier wird das Bild angezeigt und umgewandelt. Beim Konvertieren wird jeder 8 x 8-Pixel-Block um 90 Grad nach rechts gedreht. Dies können Sie auch auf dem Bildschirm verfolgen. Zu Punkt 3:

Zu Punkt 3:

Mit diesem Menüpunkt haben Sie die Möglichkeit, nur Ausschnitte des Bildes in Vizawrite 64 zu verwenden. Die Breite der Grafik beträgt immer 320 Pixel, also die ganze Bildbreite, die Höhe können Sie jedoch beliebig verändern. Das Bild wird angezeigt und am oberen Bildschirmrand erscheint eine rot punktierte Linie. Diese Linie ist Ihr Zeiger und besteht aus sieben Sprites. Mit dieser Linie können Sie den Beginn des Ausschnittes festlegen. Der Zeiger läßt sich mit den Cursor-Tasten beliebig auf- und abbewegen. Zusätzlich besteht die Möglichkeit das Bild mit <I> zu invertieren. Wenn Sie die <HOME>-Taste drücken, wird der Zeiger wieder ganz nach oben gebracht.

Ist der gewünschte Bereich durch die Sprites markiert, so wird nach Drücken der <RETURN>-Taste der Bereich über dem Zeiger gelöscht. Anschließend befindet sich der Zeiger in der vorletzten Zeile und Sie bestimmen analog die untere Grenze des Ausschnitts. Nachdem Sie die <RETURN>-Taste gedrückt haben, wird der Bereich unter dem Zeiger gelöscht. Alles, was nun noch von dem Bild sichtbar ist, wird später auf Diskette gespeichert. Nachdem Sie das Bild oder auch nur einen Ausschnitt konvertiert haben, werden Sie gefragt, unter welchem Namen das Bild abgespeichert werden soll. Diesem Namen wird automatisch ein »/G« (für Vizawrite-Grafik) vorangestellt. Anschließend werden Sie — wie beim Laden auch — aufgefordert, die Diskette einzulegen, auf die das Bild gespeichert werden soll. Danach wird das Bild auf Diskette geschrieben. Wenn Sie ein ganzes Bild konvertiert haben, dauert das Speichern etwas länger, da eine 64 Blocks lange sequentielle Datei auf Diskette geschrieben werden muß. Sie haben nun die Möglichkeit, weitere Bilder umzusetzen oder das Programm zu beenden.

Zu Punkt 4:

Sofern Ihnen das geladene Bild nicht gefällt, können Sie durch diese Option eine andere Grafik einladen.

Zu Punkt 5:

An dieser Stelle können Sie Floppy-Befehle senden, ohne die umständliche OPEN- und CLOSE-Prozedur hinter sich bringen zu müssen (bei VALIDATE beispielsweise lediglich <V> und <RETURN>; die verfügbaren Befehle können dem Floppy-Handbuch entnommen werden) Nach dem Diskettenzugriff wird der Fehlerkanal abgefragt. Zu Punkt 6: :

Zu Punkt 6:

Die Directory-Option kann analog der gleichen Option bei der Eingabe des Bildnamens verwendet werden. Zu Punkt 7:

Zu Punkt 7:

Haben Sie das Programm versehentlich verlassen, so können Sie es durch »RUN« erneut starten.

Um die Grafiken mit Vizawrite benutzen zu können, laden Sie nun das Objektprogramm von Vizawrite-Grafik-Print (Listing 4) mit

LOAD "VG-PRINT $0365",8,1.

Danach geben Sie »NEW« ein und initialisieren Vizawrite-Grafik-Print mit

SYS 869

(das, Quellprogramm im Profi-Ass-Format finden Sie als Listing 3). Jetzt laden Sie wie gewohnt Vizawrite 64 und verfügen über die zusätzliche Grafikoption.

Geben Sie jetzt Ihren Text ganz normal ein. Wenn Sie die konvertierte Grafik in den Text einbauen wollen, geben Sie an der gewünschten Stelle den »Merge«-Befehl ein. Tragen sie nach »Merge:«den Namen des Bildes ein. Dabei dürfen Sie jedoch nicht vergessen, das »VG.« vor den Namen zu setzen. Nach »Page:« geben Sie ein »S« für sequentiellen Dateneinzug ein und drücken die <RETURN>-Taste. Das Bild wird jetzt geladen. Kurze Zeit später befindet sich das Bild im Speicher. Das Ganze sieht auf dem Bildschirm recht seltsam aus, je Grafikzeile befinden sich 640 Buchstaben im Speicher. Es ist ganz wichtig, daß Sie in diesem konfus aussehenden Buchstabensalat nichts ändern. Damit nicht soviele Zeilen benötigt werden, können Sie die Zeilenlänge auf 240 Zeichen in der Formatzeile ausdehnen (am besten vor Erstellen des Textes und Einlesen der Grafik, da es sonst sehr schleppend vonstatten gehen kann).

Den linken Rand der Grafik bestimmen Sie ganz normal, wie beim Text auch, mit der Formatzeile. Dabei müssen Sie darauf achten, daß Sie den Rand nicht zu weit nach rechts legen, da sonst die Grafik nicht mehr auf das Blatt paßt und in die nächste Zeile übernommen wird.

Nun müssen Sie noch den Zeilenabstand festlegen, der zwischen den einzelnen Grafikzeilen gedruckt werden soll. Dazu definieren Sie in der Formatzeile die entsprechenden Steuerzeichen (siehe Druckerhandbuch). Die ideale Einstellung ist 24 6 inch (CHR$@T);CHR$ (52); CHR$(24)). Nach der Grafik müssen Sie den Zeilenabstand wieder für die Textausgabe einstellen zum Beispiel % oder % inch.

Es ist ratsam, den Steuerzeichen im Text jeweits eine eigene Zeile zu widmen und diese durch <RETURN> abzuschließen.

Bei voraussichtlich häufigerer Nutzung eines Bildes ist es ratsam, das Bild jetzt, da es im Speicher steht, auch gleich als Vizawrite-Datei zu speichern. Das Ganze ist leider eine speicherplatzintensive Angelegenheit. Ein komplettes Bild belegt 16000 Zeichen. Dies ist aber nicht weiter schlimm, da der Textspeicher von Vizawrite 64 sehr groß ist und sich ohne weiteres Bilder mit der »GLOBAL«-Funktion beim Drucken in den Text einbinden lassen.

Wenn Sie möchten, können Sie ohne weiteres Text in die Grafik einarbeiten. Am einfachsten ist es, Text rechts der Grafik zu verwenden. Dazu gehen Sie mit dem Cursor an das Ende einer Grafikzeile (= Return-Zeichen, zeigt in der Blinkphase »R« auf dem Bildschirm). Wenn der Cursor auf dem <RETURN>-Symbol steht, drücken Sie <F7>, um eine Einfügung zu ermöglichen. Geben Sie nun den gewünschten Text ein, alserstesjedoch ein Leerzeichen, um den Text von der Grafik zu trennen. Dabei sollten Sie beachten, daß Sie nicht zu viele Buchstaben einfügen (abhängig vom linken Rand der Grafik), damit alles in eine Zeile paßt. Ebenso verfahren Sie in den anderen Zeilen, in denen Sie Text wünschen. Da Sie den Zeilenabstand der Grafik entsprechend kleiner eingestellt haben (das sollten Sie jedenfalls), ist es nicht besonders sinnvoll, in jeder Zeile Text einzufügen. Begnügt man sich jedoch mit jeder zweiten Zeile, so erhält man ein recht gutes Ergebnis. Bei oben angegebenen Texteingaben sollten Sie beachten, daß der rechte Rand von Vizawrite 64 beim Ausdruck nicht justiert wird, es entsteht also »Flattersatz«, wenn Sie nicht jede Zeile »von Hand« auf die gleiche Länge bringen. Wollen Sie Text links der Grafik einfügen, so müssen Sie in der Formatzeile einen Tabulator für den linken Rand der Grafik setzen und diese mit <CONTROL+I> einrücken. Den gewünschten Text schreiben Sie jetzt links neben die Grafik, indem Sie zum Anfang der Zeile gehen und <F7> für Einfügen drücken. . Weitere Informationen zur Eingabe von Text links der Grafik können Sie dem Beispielausdruck (Bild 1) entnehmen.

Druckerausdruck einer Textseite mit einem eingebundenen gerasterten Porträt und der Zeichnung eines Raumschiffs
Bild 1. Beispielausdruck des Vizawrite 64-Grafik-Systems

Eines sollten Sie noch beachten: Durch die Grafikausgabe kommt der Zeilenzähler Vizawrites etwas durcheinander. Daher sollten Sie im Print-Menü bei »Single Sheet« ein <Y> eingeben und das Papier nach jeder gedruckten Seite neu justieren.

Allgemeine Hinweise

Die Spezialversion für den CP80X (Listing 5) wird analog geladen und gestartet. Es steht Ihnen jedoch nicht nur die Möglichkeit des Ausdruckens hochauflösender Grafiken zur Verfügung, sondern sind auch alle Umlaute, »ß« und Schmalschrift in Vizawrite 64 vollständig verwendbar. Sie haben weiterhin die Möglichkeit, im Epson-Modus von Vizawrite 64 alle Möglichkeiten des Druckers zu verwenden, die Schmalschrift kann mit dem Code 21 (in der Formatzeile definiert) ein- und ausgeschaltet werden.

Bei der Epson-Version des Grafik-Prints kann durch

POKE 977, Wert(0-6)

die Art der Grafikausgabe beeinflußt werden. Der voreingestellte Modus ist »6«, vielleicht finden Sie aber auch unter einem der anderen Modi Ihren Favoriten. Ich glaube, daß man den nötigen Aufwand in Kauf nehmen kann, wenn man sich das Ergebnis ansieht.

(Ralf Lenz/bj)
10 ifpeek(49152)=32 and peek(49153)=84then210
20 load"grconv.code.obj",8,1
30 rem ********************************
40 rem *                              *
50 rem * vizawrite-grafik-converter   *
60 rem *                              *
70 rem * (c) 1986 markt&technik verlag*
80 rem *                              *
90 rem *       written by             *
100 rem*                              *
110 rem*        ralf lenz             *
120 rem*                              *
130 rem*     am landgraben 12         *
140 rem*                              *
150 rem*    4290 bocholt-barlo        *
160 rem*                              *
170 rem*                              *
180 rem*                              *
190 rem********************************
200 :
210 vic=53248:rem startadresse vic-chip
220 laden = 12*4096:rem bild laden
230 hires= laden+20:rem umschalten auf hires
240 lres= laden+53:rem umschalten auf lores
250 lcol= laden+65:rem farbe textbildschirm
260 colr= laden+76 :rem farbe hires
270 invert= laden+103:rem bild invertieren
280 speichern= laden+127:rem bild speichern
290 cnvert= laden+276:rem bild convertieren
300 setsprite= laden+349:rem sprites initialisieren
310 down= laden+436:rem sprites nach untenbewegen
320 up=laden+453:rem sprites nach oben bewegen
330 :
340 sys lcol:printchr$(14):rem farbe setzen und umschalten auf kleinschrift
350 printchr$(30):rem schriftfarbe blau
360 print"{clr}****************************************"
370 print" {$a0}{$a0}     Vizawrite-Grafik-Converter"
380 print"{down}      (c) 1986 Markt&Technik Verlag"
390 print"                  by
400 print"               Ralf Lenz
410 print"            Am Landgraben 12
420 print"           4290 Bocholt-Barlo
430 print
440 print"{down}****************************************"
450 name$=""
460 print"{down}{down}Name des Bildes ('$' fuer Directory): ";
470 inputname$:ifname$=""then340
480 ifname$="$"thengosub1650:goto340
490 print"{down}Legen Sie die Diskette mit dem Bild ins Laufwerk und druecken Sie ";
500 print"{rvon}RETURN{rvof}"
510 gosub980
520 sys laden,name$:rem bild nach $2000 laden
530 gosub1080
540 ifa=0then590
550 print"{down}{rvon}Disk Fehler!{rvof} ";
560 print"Druecken Sie {rvon}RETURN{rvof}";
570 gosub 980
580 goto340
590 gosub1010
600 print"{down}{rvon}1{rvof} Bild ansehen"
610 print"{rvon}2{rvof} Ganzes Bild convertieren"
620 print"{rvon}3{rvof} Ausschnitt convertieren"
630 print"{rvon}4{rvof} Neues Bild laden"
640 print"{rvon}5{rvof} Disc-Befehl senden"
650 print"{rvon}6{rvof} Directory"
660 print"{rvon}7{rvof} Programmende"
670 print"{down}{down}Ihre Wahl (1-7) ? ";
680 geta$:ifa$<"1" or a$>"7"then 680
690 printa$:on val(a$) gosub 1160,1230,1290
700 if a$="4"then340
710 if a$="5"thengosub1910:goto590
720 if a$="6"thengosub1680:goto590
730 if a$="7"thenprint"{clr}";:end
740 iff3then 760:rem flag fuer ende des convertierens
750 goto590
760 syslres:pokevic+21,0:rem sprites aus
770 gosub1010
780 name$=""
790 print"{down}{down}Unter welchem Namen soll das Bild"
800 print"{down}gespeichert werden?"
810 input"{down}";name$:ifname$=""then900
820 name$="vg."+na$+",s,w"
830 print"{down}{down}Legen Sie die Diskette, auf die das Bildgespeichert werden soll ";
840 print"ins Laufwerk und";
850 print"druecken Sie {rvon}RETURN{rvof}"
860 gosub980
870 sys speichern,name$,oben,unten
880 gosub1080:ifa<>0then770
890 gosub1010
900 print"{down}{down}Wollen Sie noch ein Bild convertieren?"
910 print"{down}Falls ja, druecken Sie {rvon}RETURN{rvof}"
920 geta$:ifa$=""then920
930 ifa$=chr$(13)thenrun210
940 print"{clr}":end
950 :
960 rem wartet auf returntaste
970 :
980 geta$:ifa$<>chr$(13)then 980
990 return
1000 :
1010 print"{clr}****************************************"
1020 print" {$a0}{$a0}     Vizawrite-Grafik-Converter      "
1030 print"****************************************"
1040 return
1050 :
1060 rem fehlerkanal abfragen
1070 :
1080 open15,8,15:input#15,a,b$,c,d:print:printb$:close15:return
1090 :
1100 print"{down}Zum Ausfuehren druecken Sie {rvon}RETURN{rvof}"
1110 print"{down}Rueckkehr zum Menue mit {rvon}RETURN{rvof}"
1120 gosub 980:return
1130 :
1140 rem bild ansehen
1150 :
1160 gosub1100:syscolr,1:syshires
1170 geta$:ifa$="i"then sys invert
1180 ifa$=chr$(13)then syslres :return
1190 goto1170
1200 :
1210 rem ganzes bild convertieren
1220 :
1230 f3=-1:syscolr,1:sys hires:sys cnvert:sys lres
1240 oben=8192:unten=8192+8000
1250 return
1260 :
1270 rem ausschnitt convertieren
1280 :
1290 print"{clr}{down}{down}{down}Bewegen Sie den Zeiger mit den Cursor-  Tasten auf und ab"
1300 print"Zuerst legen Sie die obere Grenze fest. Wenn Sie die gewuenschte Zeile"
1310 print"erreicht haben, druecken Sie die Return-Taste. Analog verfahren Sie mit"
1320 print"der unteren Grenze."
1330 print"{rvon}HOME{rvof} bringt den Zeiger nach oben und"
1340 print"{rvon}I{rvof} invertiert die Grafik"
1350 print"Zum Start druecken Sie {rvon}RETURN{rvof}":gosub 980
1360 syshires:syscolr,1:sys setsprite
1370 geta$:ifa$=""then 1370
1380 ifa$=chr$(13)thengosub1470 :iff3thenreturn
1390 ifa$="{down}"then sys down
1400 ifa$="{up}"then sys up
1410 ifa$="i"then sys invert:fori=1to200:next
1420 ifa$="{home}"thenfori=vic+1 to vic+14step2:pokei,50:next
1430 goto 1370
1440 :
1450 rem obere grenze berechnen
1460 :
1470 iff2then1580 :rem untere grenze
1480 f2=-1
1490 oz=int((peek(vic+1)-50)/8):rem bildschirmzeilennummer des sprites
1500 ifoz=0then1520 :rem sprite ist ganz oben
1510 fori=1024to1023+oz*40:pokei,0:next:rem im farbram loeschen
1520 oben=8192+oz*320
1530 fori=vic+1 to vic+14step2:pokei,242:next:rem alle sprites nach unten
1540 return
1550 :
1560 rem untere grenze berechnen
1570 :
1580 uz=int((peek(vic+1)-50)/8):rem bildschrimzeilennummer des sprites
1590 ifuz=250then 1610 :rem sprite ist ganz unten
1600 fori=1024+uz*40to 2023:pokei,0:next:rem im farbram loeschen
1610 unten=8192+uz*320
1620 f3=-1:fori=1to800:next
1630 syscnvert
1640 return
1650 :
1660 rem inhaltsverzeichnis anzeigen
1670 :
1680 print"{clr}";
1690 open1,8,0,"$0"
1700 get#1,u$,v$
1710 get#1,u$,v$
1720 get#1,u$,v$
1730 bl=0
1740 ifu$<>""thenbl=asc(u$)
1750 ifv$<>""thenbl=bl+asc(v$)*256
1760 printmid$(str$(bl),2);tab(4);
1770 get#1,v$:ifst<>0then1890
1780 ifv$<>chr$(34)then1770
1790 get#1,v$:ifv$<>chr$(34)thenprintv$;:goto1790
1800 get#1,v$:ifv$=chr$(32)then1800
1810 ifv$=chr$(42)thenv$="{left}*"
1820 printtab(22);:w$=""
1830 w$=w$+v$:get#1,v$:ifv$<>""then1830
1840 printleft$(w$,5)
1850 getx$
1860 ifx$="_"thenclose1:return
1870 ifx$=" "thenpoke198,0:wait198,1:poke198,0
1880 ifst=0then1710
1890 print"blocks free"
1900 close1:poke198,0:wait198,1:poke198,0:return
1910 open15,8,15:print"Befehl: ";:poke631,34:poke198,1:inputdb$
1920 print#15,db$:close15:gosub1080
1930 poke198,0:wait198,1:poke198,0:return
Listing 1. Der Vizawrite-Grafik-Konverter wandelt beliebige hochauflösende Grafiken zur Verwendung in Vizawrite 64 um. Bitte verwenden Sie zur Eingabe den Checksummer (ab Seite 76).
PROGRAMM : GRCONV.CODE.OBJ C000 C1E2
-----------------------------------
C000 : 20 54 E2 A2 08 A0 00 20   1D
C008 : BA FF A9 00 A2 00 A0 20   19
C010 : 20 D5 FF 60 AD 11 D0 8D   E8
C018 : D6 C1 A9 3B 8D 11 D0 AD   A1
C020 : 18 D0 8D D7 C1 A9 18 8D   E3
C028 : 18 D0 A9 00 8D 20 D0 A9   83
C030 : 01 8D 21 D0 60 AD D6 C1   AD
C038 : 8D 11 D0 AD D7 C1 8D 18   29
C040 : D0 A9 03 8D 20 D0 A9 01   89
C048 : 8D 21 D0 60 20 F1 B7 8A   2B
C050 : A2 04 A0 00 84 FB A0 04   CF
C058 : 84 FC A0 00 91 FB C8 D0   40
C060 : FB E6 FC CA D0 F6 60 A2   F2
C068 : 20 8A A0 00 84 FB 85 FC   2E
C070 : B1 FB 49 FF 91 FB C8 D0   2F
C078 : F7 E6 FC CA D0 F2 60 20   E1
C080 : 54 E2 A9 02 A2 08 A0 02   E1
C088 : 20 BA FF 20 C0 FF 20 FD   92
C090 : AE 20 8A AD 20 F7 B7 A5   92
C098 : 14 A4 15 85 FB 84 FC 20   0C
C0A0 : FD AE 20 8A AD 20 F7 B7   79
C0A8 : A5 14 A4 15 85 FD 84 FE   7B
C0B0 : A2 02 20 C9 FF A9 40 8D   FE
C0B8 : DF C1 A9 01 8D E0 C1 A5   34
C0C0 : FB C5 FD D0 0F A5 FC C5   D5
C0C8 : FE D0 09 20 CC FF A9 02   EC
C0D0 : 20 C3 FF 60 A9 A8 20 D2   E4
C0D8 : FF A0 00 B1 FB 48 29 0F   22
C0E0 : 20 0D C1 68 4A 4A 4A 4A   B9
C0E8 : 20 0D C1 18 A5 FB 69 01   E4
C0F0 : 85 FB 90 02 E6 FC CE DF   28
C0F8 : C1 D0 E0 CE E0 C1 10 DB   47
C100 : A9 A8 20 D2 FF A9 0D 20   21
C108 : D2 FF 4C B5 C0 18 69 40   97
C110 : 20 D2 FF 60 A9 00 A0 20   03
C118 : 8D 29 C1 8D 37 C1 8C 2A   64
C120 : C1 8C 38 C1 A0 07 A2 07   48
C128 : 5E 00 20 6A CA 10 F9 48   81
C130 : 88 10 F3 A2 00 68 9D 00   CB
C138 : 20 E8 E0 08 D0 F7 18 AD   8E
C140 : 29 C1 69 08 8D 29 C1 8D   E9
C148 : 37 C1 AD 2A C1 69 00 8D   93
C150 : 2A C1 8D 38 C1 AD 38 C1   B3
C158 : C9 40 D0 C8 60 A2 03 A9   09
C160 : AA 9D BF 02 CA D0 FA A2   6D
C168 : 3C A9 00 9D C2 02 CA D0   36
C170 : FA A2 07 A9 0B 9D F7 07   3E
C178 : CA D0 FA A9 7F 8D 15 D0   F8
C180 : 8D 1D D0 A2 07 A9 02 9D   25
C188 : 26 D0 CA D0 FA A0 00 A2   DD
C190 : 00 B9 D8 C1 9D 00 D0 E8   CA
C198 : E8 C8 C0 07 D0 F3 A9 60   09
C1A0 : 8D 10 D0 A0 00 A2 01 A9   EA
C1A8 : 32 9D 00 D0 E8 E8 C8 C0   3D
C1B0 : 07 D0 F6 60 AD 01 D0 C9   A3
C1B8 : FA F0 F8 18 69 08 A0 00   C5
C1C0 : A2 01 4C A9 C1 AD 01 D0   5A
C1C8 : C9 32 F0 E7 38 E9 08 A0   18
C1D0 : 00 A2 01 4C A9 C1 00 00   94
C1D8 : 14 44 74 A4 D4 04 34 00   FE
C1E0 : 00 FF                     84
Listing 2. »GRCONV.CODE.OBJ« enthält die Assembler-Routinen für den Grafik-Konverter und wird auch von diesem nachgeladen, muß sich also auf der gleichen Diskette befinden. Bitte verwenden Sie zur Eingabe den MSE (Hinweise zur Eingabe ab Seite 76).
50 sys9*4096
100 ;
110 ;
120 ;
130 ;vizawrite grafikprint
140 ;    version 3.0
150 ;
160 ;(c) 1986 markt&technik
170 ;
180 ;     written by
190 ;     ralf lenz
200 ;   am landgraben 12
210 ;  4290 bocholt-barlo
220 ;
230 .opt oo
240 ;
250 *= $0365;startadresse des programms
260 ;
270 print  = $f1ca;ausgabe eines zeichens
280 graphcode = $a8;code fuer grafik
290 cr = $0d;carriage return 
300 ;
310 init       lda #<newout;outputvektor auf
320            sta $0326;eigene routine verstellen
330            lda #>newout
340            sta $0327
350            rts
360 ;
370 newout     pha;zu druckendes byte auf stapel
380            lda $9a;pruefen, ob ausgabe auf drucker
390            cmp #4
400            bne noprinter;ausgabe nicht auf drucker
410            pla;druckbyte zurueckholen
420            cmp #graphcode;pruefen, ob grafikzeile
430            bne nographik;normaler textausdruck
440            sty yzw;y-register zwischenspeichern
450            ldy #0
460            sty flag;flag fuer nibble
470 bin320     lda tabelle1,y;drucker auf 320 binaer-
480            jsr print;daten einstellen
490            iny
500            cpy #5
510            bne bin320
520            ldy yzw;y-register zurueckholen
530            lda #<graphout;outputvektor erneut
540            sta $0326;verstellen fuer ausgabe von
550            lda #>graphout;grafik
560            sta $0327;outputvektor erneut verstellen
570 exit       clc
580            rts
590 noprinter  pla;druckbyte zurueckholen
600 nographic  jmp print;normale output-routine
610 ;
620 graphout   cmp #graphcode;pruefen, ob zeilenende
630            bne g1
640            clc;ende der grafikzeile erreicht.
650            jmp init;output-vektor zurueckstellen
660 g1         cmp #63;pruefen, ob illegaler code (0-63)
670            bcc exit
680            and #%00001111;nur unteres nibble verwenden
690            pha; und auf stapel
700            lda flag;oberes oder unteres nibble
710            bne nibble2
720 ;
730 nibble1    inc flag;flag=1
740            pla;nibble zurueckholen
750            sta store;und zwischenspeichern
760            clc
770            rts
780 ;
790 nibble2    dec flag;flag=0
800            pla;nibble zurueckholen
810            asl;und um 4 bit nach links schieben
820            asl:asl:asl
830            ora store;verknuepfen mit unterem nibble
840            jsr print;und ausgeben
850            rts
860 ;
870 yzw        .byte 00;zwischenspeicher fuer y-register
880 tabelle1   .byte $1b;escape senden
881 .byte $2a;'*' fuer 8-nadel-bitmuster-modus
882 .byte $06;modus 0-6 anwaehlen,hier 6 voreingestellt
883 .byte $40,$01;320-punkte-dichte
890 store      .byte 00;speicher fuer grafikbyte
900 flag       .byte 00;flag fuer oberes/unteres nibble
910 ;
920 ;
930 ;
Listing 3. Assembler-Quellcode von Vizawrite-Grafik-Print im Profi-Ass-Format. Das Objektprogramm muß gestartet werden, bevor mit Vizawrite 64 gearbeitet wird. Anhand der Kommentare ist die Programmierung gut nachzuvollziehen.
PROGRAMM : VG-PRINT $0365 0365 03D6
-----------------------------------
0365 : A9 70 8D 26 03 A9 03 8D   13
036D : 27 03 60 48 A5 9A C9 04   95
0375 : D0 27 68 C9 A8 D0 23 8C   E3
037D : CE 03 A0 00 8C D5 03 B9   EC
0385 : CF 03 20 CA F1 C8 C0 05   AA
038D : D0 F5 AC CE 03 A9 A2 8D   80
0395 : 26 03 A9 03 8D 27 03 18   56
039D : 60 68 4C CA F1 C9 A8 D0   4F
03A5 : 04 18 4C 65 03 C9 3F 90   12
03AD : EE 29 0F 48 AD D5 03 D0   34
03B5 : 09 EE D5 03 68 8D D4 03   57
03BD : 18 60 CE D5 03 68 0A 0A   23
03C5 : 0A 0A 0D D4 03 20 CA F1   F2
03CD : 60 00 1B 2A 06 40 01 00   A0
03D5 : 00                        AC
Listing 4. Das fertige Objektprogramm von Vizawrite-Grafik-Print. Bitte verwenden Sie zur Eingabe den MSE (ab Seite 76).
PROGRAMM : VG-PRINT CP80X 02A7 03EE
-----------------------------------
02A7 : 8C E5 03 A0 00 8C ED 03   1D
02AF : B9 E8 03 20 CA F1 C8 C0   82
02B7 : 04 D0 F5 AC E5 03 A9 C9   E7
02BF : 8D 26 03 A9 02 8D 27 03   85
02C7 : 18 60 C9 A8 D0 04 18 4C   BD
02CF : 65 03 C9 3F 90 F2 29 0F   73
02D7 : 48 AD ED 03 D0 09 EE ED   BE
02DF : 03 68 8D EC 03 18 60 CE   27
02E7 : ED 03 68 0A 0A 0A 0A 0D   E4
02EF : EC 03 20 CA F1 60 00 00   E0
02F7 : 00 00 00 00 00 00 00 00   F8
02FF : 00 8B E3 83 A4 7C A5 1A   27
0307 : A7 E4 A7 86 AE 00 00 00   C6
030F : 00 4C 48 B2 00 31 EA E6   A1
0317 : 8F 47 FE 4A F3 91 F2 0E   06
031F : F2 50 F2 33 F3 57 F1 CA   B4
0327 : F1 ED F6 3E F1 2F F3 66   C9
032F : FE A5 F4 ED F5 00 00 00   5A
0337 : 00 00 00 00 00 00 00 00   38
033F : 00 00 00 00 00 00 00 00   40
0347 : 00 00 00 00 00 00 00 00   48
034F : 00 00 00 00 00 00 00 00   50
0357 : 00 00 00 00 00 00 00 00   58
035F : 00 00 00 00 00 00 A9 70   E7
0367 : 8D 26 03 A9 03 8D 27 03   3D
036F : 60 48 A5 9A C9 04 D0 57   5F
0377 : 68 C9 A8 D0 03 4C A7 02   3D
037F : 48 8C E5 03 A0 07 D9 D5   3C
0387 : 03 F0 05 88 10 F8 D0 08   71
038F : 68 B9 DD 03 48 18 90 34   9C
0397 : 68 C9 0F D0 0F AC E7 03   BE
039F : F0 05 09 80 A0 00 2C A0   60
03A7 : 01 8C E7 03 48 AD E6 03   DC
03AF : C9 1B F0 18 68 C9 41 90   40
03B7 : 12 C9 5B B0 04 09 80 90   46
03BF : 0A C9 61 90 06 C9 7B B0   16
03C7 : 02 29 DF 48 AC E5 03 68   36
03CF : 8D E6 03 4C CA F1 5B 5C   7C
03D7 : 5D 7E 7B 7C 7D 40 DB DC   E5
03DF : DD 5E 5B 5C 5D C0 00 00   2A
03E7 : 00 1B 4B 40 01 00 00      30
Listing 5. Vizawrite-Grafik-Print speziell für den Drucker CP80X beseitigt unter anderem auch die Probleme der Ausgabe von Umlauten in Vizawrite 64.
50 sys9*4096
100 ;
110 ;
120 .opt oo
130 ;anpassung von cp 80x an vizawrite
140 ;umlaute und steuercodes werden
150 ;vom cp 80x richtig ausgegeben, wenn
160 ;er als epson-drucker (e) angesteuert
170 ;wird
180 ;zusaetzlich ist es moeglich grafiken zu drucken!
190 ;
200 ;version 2.2
210 ;
220 ;(c) 1986 markt&technik
230 ;
240 ;       written by
250 ;       ralf lenz
260 ;     am landgraben 12
270 ;    4290 bocholt-barlo
280 ;
290 ;
300 print  = $f1ca;ausgabe eines zeichens
310 graphcode = $a8;code fuer grafik
320 cr = $0d;carriage return 
330 ;
340 ;
350 *= $02a7
360 ;
370 grafik      sty yzw;y-register zwischenspeichern
380             ldy #0
390             sty flag;flag fuer nibble
400 bin320      lda tabelle3,y;drucker auf 320 binaer-
410             jsr print;daten einstellen
420             iny
430             cpy #4
440             bne bin320
450             ldy yzw;y-register zurueckholen
460             lda #<graphout;outputvektor erneut
470             sta $0326;verstellen fuer ausgabe von
480             lda #>graphout;grafik
490             sta $0327;outputvektor erneut verstellen
500 exit2       clc
510             rts
540 ;
550 graphout    cmp #graphcode;pruefen, ob zeilenende
560             bne g1
570             clc;ende der grafikzeile erreicht.
580             jmp init;output-vektor zurueckstellen
590 g1          cmp #63;pruefen, ob illegaler code (0-63)
600             bcc exit2
610             and #%00001111;nur unteres nibble verwenden
620             pha; und auf stapel
630             lda flag;oberes oder unteres nibble
640             bne nibble2
650 ;
660 nibble1     inc flag;flag=1
670             pla;nibble zurueckholen
680             sta store;und zwischenspeichern
690             clc
700             rts
710 ;
720 nibble2     dec flag;flag=0
730             pla;nibble zurueckholen
740             asl;und um 4 bit nach links schieben
750             asl:asl:asl
760             ora store;verknuepfen mit unterem nibble
770             jsr print;und ausgeben
780             rts
790 ;
800 ;
810 ;
820 *= $0365
830 init        lda #<start ;output-vektor aendern
840             sta $0326
850             lda #>start
860             sta $0327
870             rts
880 ;
890 start       pha;druckbyte auf stapel retten
900             lda $9a  ;pruefen ob
910             cmp #$04;ausgabe auf drucker
920             bne ende   ;nein
930             pla ;wenn ja, druckbyte zurueckholen
940             cmp #graphcode
950             bne s1
960             jmp grafik
970 s1          pha ;und sofort wieder auf stapel
980             sty yzw   ;yregister zwischenspeichern
990             ldy #$07
1000 such        cmp tabelle1,y;druckbyte mit zu aendernden
1010 ;                       zeichen vergleichen
1020             beq tausch1;zeichen gefunden
1030             dey
1040             bpl such ;weitersuchen
1050             bne smalltest;kein umlaut gefunden
1060 tausch1     pla;druckbyte vom stapel holen
1070             lda tabelle2,y ;ersatzbyte aus tabelle holen
1080             pha;und als neues druckbyte zum stapel
1090             clc
1100             bcc ende1;esctest kann entfallen, da umlaut
1110 smalltest   pla;druckbyte vom stapel holen
1120             cmp #15; mit code fuer schmalschrift vergleichen
1130             bne nosmall
1140             ldy smallflg;flag pruefen
1150             beq smallon 
1160             ora #128; bit 7 setzen fuer schmalschrift aus
1170 smalloff    ldy #0
1180             .byte $2c; die folgenden 2 bytes ueberspringen
1190 smallon     ldy #1
1200             sty smallflg
1210 nosmall     pha;druckbyte wieder auf stapel
1220 esctest     lda test
1230             cmp #27;escapecode
1240             beq ende1;vorhergegangener code war escape
1250 ;                    ===> byte nicht aendern
1260 tausch2     pla
1270             cmp #65
1280             bcc exit ;kleiner als 65 (a)
1290             cmp #91
1300             bcs weiter;groesser als 90 (z)
1310             ora #%10000000 ;bit 7 setzen
1320             bcc exit ;springt hier immer
1330 weiter      cmp #97
1340             bcc exit;kleiner als 97 ({$61})
1350             cmp #123
1360             bcs exit;groesser als 122 ({$7a})
1370             and #%11011111;bit 5 loeschen
1380 exit        pha
1390 ende1       ldy yzw;yregister zurueckholen
1400 ende        pla;druckbyte zurueckholen
1410             sta test;und fuer esctest beim naechsten
1420 ;                     einsprung speichern
1430             jmp print;sprung zum normalen output-vektor
1440 ;
1450 tabelle1    .byte  91,92,93,126,123,124,125,64
1460 ;                     sollen getauscht werden
1470 tabelle2    .byte  219,220,221,94,91,92,93,192
1480 ;                     sollen dafuer gedruckt werden
1490 yzw         .byte 00 ;zwischenspeicher fuer yregister
1500 test        .byte 00;zwischenspeicher fuer esctest
1510 smallflg    .byte 00;flag fuer smalltest
1520 tabelle3    .byte $1b,$4b,$40,$01;escape k 320
1530 store       .byte 00;speicher fuer grafikbyte
1540 flag        .byte 00;flag fuer oberes/unteres nibble
1550 ;
1560 ;
Listing 6. Der Assembler-Quellcode von Listing 5 im Profi-Ass-Format. Hinweise hierzu können Sie der Programmbeschreibung entnehmen.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →