Hardcopy Itoh 8510 mit Hi-Eddi
Besitzern des Itoh 8510 bietet dieses Programm die Möglichkeit, von Hi-Eddi Hardcopies zu erzeugen.
Mit dem Hi-Eddi aus der Ausgabe 1/85 vom 64’er lassen sich mit minimaler Hardware-Ausrüstung (C 64, Diskettenlaufwerk 1541, Joystick) sehr komfortable Grafiken erzeugen. Doch was nützt die schönste Grafik auf Bildschirm oder Diskette, wenn man sie nicht ausdrucken kann?
Die in Ausgabe 1/85 veröffentlichte Druckroutine Hi-Print arbeitet leider nur mit Epson-Druckern zusammen. Da der Itoh 8510 ein verbreiteter und guter Drucker ist, wurden für ihn die im folgenden beschriebenen Programme erstellt. Er wird über eine Centronics-Schnittstelle via User-Port am C 64 angeschlossen.
Zusätzlich wurden einige Features eingebaut, die die Epson-Hardcopy-Routine nicht besitzt. So wäre die Vorgabe von Leerspalten vom linken Rand aus (falls noch Platz ist) eine nützliche Sache. Um zwei Grafiken in der Horizontalen aneinander zu setzen, wurde dazu die volle Bildschirmbreite in 40 Spalten zu je 8 (40 x 8 = 320) Punkten (wie im Textmodus) organisiert. Um jetzt zwei Grafiken nebeneinander zu plazieren, kann dazu die Startspalte (wird mitgedruckt) der links stehenden Grafik (Grafik Nr. 1) und die Endspalte (wird nicht mitgedruckt) der rechts stehenden Grafik (Grafik Nr. 2) vorgewählt werden.
Die Ausdruckbreite wird dazu in drei Sektoren von links nach rechts aufgeteilt.
0. Sektor: Abstand (SPC) in Punkten vom linken Papierrand.
1. Sektor: Grafik Nr. 1 (Bild-Nr.; Startspalte)
Bild-Nr. = 0 = > kein Bild, Startspalte = 48
Bild wird rechtsbündig gedruckt
0 < = Startspalte < = 39
Startspalte = 0 = > volle Hardcopy von Grafik Nr. 1
2. Sektor: Grafik Nr. 2 (Bild-Nr.; Endspalte)
Bild-Nr. = 0 = > kein Bild, Endspalte = 8
Bild wird linksbündig gedruckt
1 < = Endspalte < = 40
Endspalte = 40 = > volle Hardcopy von Grafik Nr. 2
Insgesamt kann folgende Formel für die Aufteilung der drei Sektoren angegeben werden:
SPC + (40-Startspalte)*8 + Endspalte*8 = 640
Im Steuerprogramm werden nacheinander die Bild-Nr. von Sektor 1, dann (falls Bild-Nr. < > 0)die Startspalte von Grafik-Nr. 1, dann die Bild-Nr. von Sektor 2 und (falls Bild-Nr. < > 0) die Endspalte von Grafik-Nr. 2, und schließlich die Anzahl der Leerspalten vor Grafik-Nr. 1 abgefragt.
Die Maximalwerte werden stets durch das Steuerprogramm vorgegeben, so daß in vielen Fällen ein einfaches RETURN genügt.
Um die Druckroutine namens »HI-P(ITOH8510)« für den ITOH 8510 in das Steuerprogramm Hi-Eddi einzubilden, mußte dieses auf die Bedürfnisse der Druckroutine angepaßt werden und heißt nun »HI-E(ITOH8510)«.
Dazu wurden (aus Speicherplatzgründen) alle Zeilen neu numeriert und die Textausgabepassagen verkürzt. In den Programmzeilen 24 und folgende befindet sich das Drucksteuerprogramm.
Es wird hierbei dringend davor gewarnt, das neue Steuerprogramm HI-E(ITOH8510) zu erweitern oder zu ändern, da sonst das Steuerprogramm (inklusive Variablen) nicht mehr in den verfügbaren Basic-Speicherplatz paßt. Dies gilt auch für den eingebauten Parametercheck, da in der Druckroutine selber keine Plausibilitätsprüfung mehr vorgenommen wird.
Für die Initialisierung des Druckers und die Ausgabe der Hardcopy sollte sich der Drucker im SELECT-Modus befinden, da sonst das Programm hängenbleibt (Acknowledge-Signal wird erwartet).
Falls aus irgendeinem Grunde (Drucker beziehungsweise Kabel defekt, falsch oder gar nicht angeschlossen) dieser Fall eintritt, kann mit RUN/STOP-RESTORE die Druckroutine beendet werden. Hi-Eddi kann dann wieder mit RUN gestartet werden. (Das RUN ist notwendig, um HI-EXE nachzuladen, da aus Speicherplatzgründen nach der Anwahl des Drucksteuerprogramms immer die Druckroutine über HI-EXE nachgeladen wird.)
Der Drucker sollte mittels der DIP-Schalter auf CR = CR und 8-Bit-Data eingestellt sein. Da am Anfang kein Carriage Return ausgegeben wird, sollte man dafür sorgen, daß der Druckkopf sich auf einer freien Zeile befindet. Außerdem sollte das Papier zentriert werden, da sich der Ausdruck über die volle Papierbreite erstrecken kann.
Die Anpassung des ITOH 8510A an Hi-Eddi besteht im wesentlichen aus zwei Schriften:
- HI-P(ITOH8510).L abtippen und starten. Dieses ist ein Ladeprogramm, das die Druckroutine HI-P(ITOH8510) auf Diskette ablegt. Es wird (nach erfolgreichem Test) zum Arbeiten mit Hi-Eddi nicht mehr benötigt.
- Hi-E(ITOH8510) abtippen und speichern. Es ist das angepaßte Steuerprogramm und ersetzt das alte Hi-Eddi,
So, das wär's eigentlich. Hi-Eddi mit Itoh 8510A ist nun lauffähig. Mir bleibt nur noch, viel Erfolg mit Hi-Eddi zu wünschen.
(Frank Ziesche/rg)10 rem #### programm zur erzeugung ##### 20 rem ## von hi-p(itoh8510) auf disk ## 30 rem autor: f.ziesche' am: 13. 2.85 ## 40 restore:ps=0:rem data's ueberpruefen 50 print"{clr}{down} data-zeilen werden ueberpruft !" 60 read by : if by < 0 then 80 70 ps = ps + by : goto 60 80 if ps+by <> 0 then print"fehler in data-zeilen !":list160- 90 input"{down} diskette eingelegt ja{left}{left}{left}{left}";in$:ifin$<>"ja"then 90 100 restore : open3,8,3,"hi-p(itoh8510),p,w" 110 print#3,chr$(0);chr$(13);:rem startadresse 120 read by : if by < 0 then 140 130 print#3,chr$(by); : goto120 140 close3 : print"{down} programm wurde erzeugt !" 150 end 160 rem data-zeilen fuer hi-p(itoh8510) 170 data165,1,72,169,55,133,1,173,87,13,32,186,13,141,170,14,173,107,13,32 180 data186,13,141,223,14,169,0,141,164,14,141,217,14,141,174,13,32,248,13 190 data32,212,13,169,27,32,111,14,169,70,32,111,14,169,0,160,0,32,47,14 200 data169,0,141,148,14,169,0,141,201,14,169,27,32,111,14,169,83,32,111 210 data14,169,0,160,0,32,47,14,169,0,240,16,32,135,14,32,241,14,238,148 220 data14,173,148,14,201,40,144,240,169,0,240,16,32,188,14,32,241,14,238 230 data201,14,173,201,14,201,0,144,240,24,173,164,14,105,64,141,164,14,173 240 data170,14,105,1,141,170,14,24,173,217,14,105,64,141,217,14,173,223,14 250 data105,1,141,223,14,169,13,32,111,14,169,10,32,111,14,238,174,13,169 260 data0,201,25,176,3,76,42,13,104,133,1,96,162,7,221,149,31,240,4,202,208 270 data248,232,138,10,10,10,10,10,96,0,0,0,0,0,0,0,0,24,173,123,13,105,40 280 data56,237,60,13,133,251,169,0,133,252,160,3,6,251,38,252,136,208,249 290 data165,251,164,252,141,80,13,140,82,13,96,169,255,141,3,221,173,2,221 300 data9,4,141,2,221,173,0,221,9,4,141,0,221,162,0,189,27,14,32,111,14,232 310 data224,20,144,245,96,127,27,93,27,78,27,84,49,54,27,102,27,76,48,48 320 data48,27,48,27,62,133,99,132,98,56,162,144,32,73,188,32,221,189,162 330 data1,189,0,1,240,6,232,224,6,144,246,202,202,142,81,14,56,169,4,233 340 data0,240,9,168,169,48,32,111,14,136,208,248,172,81,14,240,12,162,1,189 350 data0,1,32,111,14,232,136,208,246,96,141,1,221,173,0,221,41,251,141,0 360 data221,9,4,141,0,221,173,13,221,41,16,240,249,96,120,165,1,72,41,248 370 data133,1,169,0,133,252,169,0,133,251,160,3,6,251,38,252,136,208,249 380 data24,165,251,105,0,133,251,165,252,105,0,133,252,177,251,153,204,13 390 data200,192,8,144,246,104,133,1,88,96,120,165,1,72,41,248,133,1,169,0 400 data133,252,169,0,133,251,160,3,6,251,38,252,136,208,249,24,165,251,105 410 data0,133,251,165,252,105,0,133,252,177,251,153,204,13,200,192,8,144 420 data246,104,133,1,88,96,160,128,140,4,15,169,0,141,8,15,140,10,15,162 430 data7,189,204,13,41,0,240,7,169,0,9,0,141,8,15,78,10,15,202,16,236,173 440 data8,15,32,111,14,78,4,15,144,215,96 450 data -57076 :rem pruefsumme
1 ifa<2thena=a+2:load"hi-exe",8,1 2 ifa=3then6 3 ifa=4then25 4 input"b-art";c:poke780,c:poke56,13:clr:w$="123456":sys3328 5 ifpeek(8073)and64thena=3:load"menue",8,1 6 sys3337:a=peek(8064):ona+1gosub7,10,12,11,18,24,11,11,19,20,12:goto6 7 open3,8,0,"$0":get#3,c$,c$ 8 get#3,c$,c$,l$,h$:ifc$=""thenclose3:wait198,1:return 9 print256*asc(h$+chr$(0))+asc(l$+chr$(0));:sys3334:goto8 10 print"{clr}{down}seq.:":print"{down} "w$:input"{home}{down}{down}{down}";w$:iflen(w$)<2then10 11 return 12 poke8115,8:print"{clr}{down}{rvon}g{rvof}-bild":ifpeek(8073)>127thenprint"{rvon}f{rvof}-bild" 13 print"{rvon}s{rvof}prite":print"{rvon}z{rvof}-satz":print"{down}->"; 14 getc$:ifc$<>"g"andc$<>"f"andc$<>"s"andc$<>"z"then14 15 printc$:poke780,asc(c$):h$=w$:input"{down}f-name";w$:sys3331:w$=h$:h$="" 16 open1,8,15,h$:input#1,a,h$:printa;h$:ifa>0thenwait198,1 17 close1:return 18 poke631,34:poke198,1:h$="":input"{clr}{down}";h$:goto16 19 a=8075:goto21 20 a=8079 21 d=peek(8074):c=peek(a+d):print"{clr}{down}f"2*d+1:print"s-weite:"c, 22 inputc:ifc<1orc>160then22 23 pokea+d,c:return 24 a=4:load"hi-p(itoh8510)",8,1 25 input"{clr}{down}s1:b-nr.(0=kb)";c:poke3415,cand7:ifc=0thend=40:goto27 26 input"ssp.(<=39;0=voll) 0{left}{left}{left}";d:ifd<0ord>39then26 27 poke3388,d:c=40+d:ifc>40thenc=40 28 input"{down}s2:b-nr.(0=kb)";d:poke3435,dand7:ifd=0then30 29 print"esp.(>0;<=";c;"{left}) ";c;:input"{left}{left}{left}{left}{left}";d:ifd<1ord>cthen29 30 poke3451,d:c=640-(40-peek(3388)+d)*8 31 print"{down}spc(=>0;<=";c;"{left}) ";c;:input"{left}{left}{left}{left}{left}{left}";d:ifd<0ord>cthen31 32 c=int(d/256):poke3383,c:input"{down}druck j{left}{left}{left}";c$:ifc$<>"j"then34 33 poke3381,d-c*256:sys3328:input"{down}nochmal j{left}{left}{left}";c$:ifc$="j"then25 34 a=1:goto1