Epson-Support
Epson-Support läßt die Herzen eines jeden FX/RX-80-Besitzers höher schlagen. Mit einfachen Befehlen und kurzen Programmen können Sie jetzt komplizierte Grafiken auf Ihrem Drucker erstellen. Und das mit einer Auflösung, die fast siebenmal so hoch ist wie die des C 64, nämlich bis zu 800 mal 552 Punkten.
Epson-Support ist eine Basic-Erweiterung und belegt den Speicherbereich ab $C000 (49152). Der Programmstart erfolgt durch SYS 49152; jetzt stehen einige leistungsfähige Befehle zur Verfügung, um Grafiken zu erstellen und auf den Epson FX/RX-Druckern auszugeben. Die Grafiken liegen im Speicher des Commodore 64 ab $2000 (8192). Wegen des enormen Speicherplatzbedarfs wird auch das RAM unter dem Basic, dem Betriebssystem und unter dem Zeichen-ROM verwendet. Die Bitmap wird über Koordinaten adressiert, dabei liegt der Punkt (0,0) in der linken Ecke oben wie bei den normalen HiRes-Grafiken auf dem Bildschirm. Die X-Werte laufen von 0 bis 799, die Y-Werte von 0 bis 551, so daß 800x 552 = 441600 Dots adressiert werden können. Die Bitmap ist so organisiert, daß der Ausdruck relativ schnell geht.
Die Ausgabe mit dem Drucker läuft über ein User-Port-Kabel, die nötige Treibersoftware ist im Epson-Support schon enthalten. Der Ausdruck erfolgt in der sogenannten doppelten Zeichendichte, also mit 960 Punkten pro Zeile, aus Speichermangel können aber nur 800 Punkte pro Zeile verwendet werden. Listing 1 und Listing 2 sind zwei Beispielprogramme. Als Ergebnis liefern sie Bild 1 und Bild 2. Bevor Sie diese Beispiele probieren, muß das Listing 3 mit dem MSE (siehe Seite 7) eingegeben werden und mit SYS 49152 initialisiert werden.


Epson-Support Bedienungsanleitung
Das Programm Epson-Support wird absolut geladen mit LOAD"EPSON-SUPPORT",8,1 und durch SYS 49152 gestartet. Dem Basic-Programmierer stehen dann einige neue Befehle zur Verfügung, um die grafischen Fähigkeiten des Epson-Druckers besser auszunutzen, denn im Speicher des C 64 wird eine Grafik-Bitmap von 800 x 552 Punkten verwaltet. Die Auflösung ist also wesentlich höher als bei normalen Bildschirm-Grafiken.
Die einzelnen Befehle werden im folgenden erläutert:
&CLEAR**
Damit wird die Grafik-Bitmap gelöscht. Dieser Befehl sollte unbedingt am Anfang eines jeden Programms stehen, sonst stehen in der Bitmap wirre Muster.
&DOTX,Y
Dieser Befehl setzt einen Punkt an der Position (X,Y). Der X-Wert liegt zwischen 0 (links) und799 (rechts), der Y-Wert zwischen 0(oben) und551 (unten). Für X und Y kann ein beliebiger numerischer Basic-Ausdruck stehen;
&RESETDOTX,Y
Dieser Befehl löscht einen Punkt an der Position (X,Y). Der X-Wert liegt zwischen 0 (links) und 799 (rechts), der Y-Wert zwischen 0 (oben) und 551 (unten). Für X und Y kann ein beliebiger numerischer Basic-Ausdruck stehen.
&INVDOT X,Y
Dieser Befehl invertiert einen Punkt an der Position (X,Y). Der X-Wert liegt zwischen 0 (links) und 799 (rechts), der Y-Wert zwischen 0 (oben) und 551 (unten). Für X und Y kann ein beliebiger numerischer Basic-Ausdruck stehen.
&LINE X1,Y1,X2,Y2
Dieser Befehl zieht eine Linie zwischen den Punkten (X1 ,Y1) und (X2,Y2). Der Wertebereich der Koordinaten ist der gleiche wie bei den Dot-Befehlen. Für die Parameter können beliebige Basic-Ausdrücke stehen.
&RESETLINE X1,Y1,X2,Y2
Dieser Befehl löscht eine Linie zwischen den Punkten (X1,Y1) und (X2,Y2). Der Wertbereich der Koordination ist der gleiche wie bei den Dot-Befehlen. Für die Parameter können beliebige Basic-Ausdrücke stehen.
&INVLINE X1,Y1,X2,Y2
Dieser Befehl invertiert die Punkte einer Linie zwischen den Punkten (X1,Y1) und (X2,Y2). Der Wertebereich der Koordinaten ist wiederum der gleiche wie bei den Dot-Befehlen. Für die Parameter können beliebige Basic-Ausdrücke stehen.
&SCANLINE X1,Y1,X2,Y2
Dieser Befehl setzt eine Linie zwischen den Punkten (X1,Y1) und (X2,Y2). Falls jedoch auf einen schon gesetzten Punkt auf dem Linienzug getroffen wird, so wird nicht mehr weitergezeichnet. Der Wertebereich der Koordinaten ist der gleiche wie bei den Dot-Befehlen. Für die Parameter können beliebige Basic-Ausdrücke stehen.
Durch diesen Befehl wird die HiRes-Bitmap auf dem Drucker ausgegeben. Das Programm ist für Epson FX/RX-80-Drucker ausgelegt. Bei Verwendung eines anderen Druckers müssen einige Stellen im Assemblerlisting (Listing 4) beim &PRINT-Befehl geändert werden. Siehe dazu auch die Kommentare im Listing bei diesem Befehl.
&EXIT
Führt zum Verlassen von Epson-Support und bewirkt danach einen Basic-Neustart. Basic-Programme sollten vorher unbedingt abgespeichert sein, weil sie sonst gelöscht werden.
&TEXT X,Y,"blablabla…"
Dieser Befehl setzt den Text, welcher in Anführungszeichen steht, in die Bitmap an der Position (X,Y). Diese Position gibt die Koordinaten der linken unteren Ecke des ersten Buchstabens an.
&RESETTEXT, X,Y,"blablabla…"
Dieser Befehl löscht den Text, welcher in Anführungszeichen steht, in die Bitmap an der Position (X,Y). Diese Position gibt die Koordinaten der linken unteren Ecke des ersten Buchstabens an.
&INVTEXT X,Y,"blablabla…"
Dieser Befehl invertiert den Text, welcher in Anführungszeichen steht, in die Bitmap an der Position (X,Y). Diese Position gibt die Koordinaten der linken unteren Ecke des ersten Buchstabens an.
(Alexander Del Pino/gk)5 rem 6 rem demo1 - schnecke 7 rem (c)1985 by a.del pino 8 rem 10 &clear 15 d=~/120:dx=400:dy=276 16 sx=400/240:sy=276/240 20 fori=0to4*~step~/60 30 x1=sin(i)*dx:y1=cos(i)*dy 35 x2=sin(i+d)*dx:y2=cos(i+d)*dy 36 x1=x1+400:x2=x2+400:y1=y1+276:y2=y2+276 40 &line400,276,x1,y1 50 &linex1,y1,x2,y2 60 &linex2,y2,400,276 70 dx=dx-sx:dy=dy-sy 75 print"."; 80 next 90 &print:end
6 rem 7 rem demo2 - interferenz 8 rem (c)1985 by a.del pino 9 rem 10 &clear 20 fori=0to799step7 22 print"."; 30 &line400,0,i,552 35 &line400,552,i,0 40 next 50 fori=0to552step9 55 print"."; 60 &invtext356,i,"interferenz" 70 next 80 &print:end
PROGRAMM : EPSON SUPPORT C000 C54E ----------------------------------- C000 : A9 1D A0 C0 8D 08 03 8C B6 C008 : 09 03 A9 FE A0 1F 85 33 5C C010 : 84 34 85 37 84 38 A9 A4 F1 C018 : A0 C4 4C 1E AB 20 73 00 7B C020 : C9 26 F0 06 20 79 00 4C 60 C028 : E7 A7 A2 FF A0 00 8C 62 8C C030 : 03 E8 C8 BD D7 C4 F0 17 27 C038 : D1 7A F0 F5 E8 BD D7 C4 A6 C040 : D0 FA EE 62 03 A0 00 BD 46 C048 : D8 C4 D0 E5 4C 08 AF 88 48 C050 : 18 98 65 7A 85 7A 90 02 CF C058 : E6 7B A9 A7 48 A9 E9 48 65 C060 : AD 62 03 0A AA BD 31 C5 29 C068 : 48 BD 30 C5 48 4C 73 00 08 C070 : A9 00 A0 20 85 FB 84 FC 8A C078 : 78 A9 34 85 01 A0 00 98 C9 C080 : 91 FB C8 D0 FB E6 FC A6 93 C088 : FC E0 C0 D0 F3 A2 C8 86 C3 C090 : FC 91 FB C8 D0 FB E6 FC EF C098 : D0 F7 A9 37 85 01 58 60 38 C0A0 : A9 00 8D 62 03 20 4E C3 EB C0A8 : 8D 3C 03 8C 3D 03 20 4B A9 C0B0 : C3 C0 02 90 05 C9 28 90 C6 C0B8 : 01 60 8D 3E 03 8C 3F 03 AC C0C0 : A0 03 18 4E 3F 03 6E 3E F4 C0C8 : 03 88 D0 F6 18 AD 3E 03 10 C0D0 : 69 20 85 FC AD 3E 03 85 2E C0D8 : FB 0A 65 FC 85 FC A9 00 B8 C0E0 : 06 FB 2A 06 FB 2A 06 FB 50 C0E8 : 2A 06 FB 2A 06 FB 2A 65 0D C0F0 : FC 85 FC A5 14 29 07 AA 9F C0F8 : BD 88 C4 8D 63 03 AD 3C 5A C100 : 03 AC 3D 03 C0 03 90 05 7A C108 : C9 20 90 01 60 65 FB 85 52 C110 : FB 98 65 FC C9 C0 90 02 39 C118 : 69 07 85 FC 78 A9 34 85 B6 C120 : 01 A0 00 2C 62 03 10 1C AE C128 : 50 10 AD 63 03 A2 00 31 00 C130 : FB F0 01 CA 8E 62 03 4C DE C138 : 59 C1 AD 63 03 51 FB 91 17 C140 : FB 4C 59 C1 50 0C AD 63 D3 C148 : 03 49 FF 31 FB 91 FB 4C EB C150 : 59 C1 AD 63 03 11 FB 91 2D C158 : FB A9 37 85 01 58 60 78 EC C160 : A9 FF 8D 03 DD AD 02 DD DC C168 : 09 04 8D 02 DD AD 00 DD 1E C170 : 09 04 8D 00 DD A9 10 8D 65 C178 : 0D DD AD 0D DD 58 A2 05 B6 C180 : BD 90 C4 20 F1 C1 CA 10 33 C188 : F7 A9 00 A0 20 85 FB 84 8F C190 : FC A9 00 85 FD A2 00 BD 82 C198 : 96 C4 20 F1 C1 E8 E0 0E DA C1A0 : D0 F5 A2 00 20 C7 C1 E8 2D C1A8 : D0 FA 20 C7 C1 E8 D0 FA 93 C1B0 : 20 C7 C1 E8 D0 FA 20 C7 36 C1B8 : C1 E8 E0 20 D0 F8 E6 FD 96 C1C0 : A5 FD C9 45 D0 CF 60 78 7D C1C8 : A9 34 85 01 18 A5 FB 69 7E C1D0 : 00 85 FE A5 FC 69 08 85 4D C1D8 : FF A0 00 A5 FC C9 C0 B0 5F C1E0 : 03 B1 FB 2C B1 FE E6 FB E7 C1E8 : D0 02 E6 FC A0 37 84 01 EA C1F0 : 58 8D 01 DD AD 00 DD 29 AF C1F8 : FB 8D 00 DD 09 04 8D 00 5D C200 : DD AD 0D DD 29 10 F0 F9 7E C208 : 18 60 A9 00 8D 62 03 A9 06 C210 : 00 8D 6B 03 20 4E C3 8D B1 C218 : 50 03 8C 51 03 20 4B C3 1D C220 : 8D 52 03 8C 53 03 20 4B 8D C228 : C3 8D 54 03 8C 55 03 20 E7 C230 : 4B C3 8D 56 03 8C 57 03 83 C238 : A2 01 A0 00 38 AD 54 03 CB C240 : ED 50 03 8D 5C 03 AD 55 07 C248 : 03 ED 51 03 8D 5D 03 10 E7 C250 : 18 CA CA 88 49 FF 8D 5D 16 C258 : 03 AD 5C 03 49 FF 8D 5C 2D C260 : 03 EE 5C 03 D0 03 EE 5D ED C268 : 03 8E 58 03 8C 59 03 A2 0E C270 : 01 A0 00 38 AD 56 03 ED 3E C278 : 52 03 8D 5E 03 AD 57 03 7C C280 : ED 53 03 8D 5F 03 10 18 08 C288 : CA CA 88 49 FF 8D 5F 03 F2 C290 : AD 5E 03 49 FF 8D 5E 03 42 C298 : EE 5E 03 D0 03 EE 5F 03 BB C2A0 : 8E 5A 03 8C 5B 03 A0 00 FE C2A8 : AD 5C 03 0D 5D 03 D0 01 19 C2B0 : 88 8C 60 03 8C 61 03 AD 32 C2B8 : 50 03 AC 51 03 8D 3C 03 73 C2C0 : 8C 3D 03 AD 52 03 AC 53 F8 C2C8 : 03 85 14 84 15 20 5F C4 7D C2D0 : 20 B1 C0 AD 50 03 CD 54 AC C2D8 : 03 D0 19 AD 51 03 CD 55 4E C2E0 : 03 D0 11 AD 52 03 CD 56 66 C2E8 : 03 D0 09 AD 53 03 CD 57 7F C2F0 : 03 D0 01 60 2C 61 03 10 A2 C2F8 : 29 18 AD 52 03 6D 5A 03 EE C300 : 8D 52 03 AD 53 03 6D 5B E7 C308 : 03 8D 53 03 18 AD 60 03 7E C310 : 6D 5C 03 8D 60 03 AD 61 B5 C318 : 03 6D 5D 03 8D 61 03 4C 12 C320 : B7 C2 18 AD 50 03 6D 58 78 C328 : 03 8D 50 03 AD 51 03 6D B3 C330 : 59 03 8D 51 03 38 AD 60 02 C338 : 03 ED 5E 03 8D 60 03 AD 6D C340 : 61 03 ED 5F 03 8D 61 03 B2 C348 : 4C B7 C2 20 FD AE 20 8A 0F C350 : AD 20 F7 B7 A5 14 A4 15 BA C358 : 60 A9 40 4C A2 C0 A9 80 FE C360 : 4C A2 C0 A9 40 4C 0C C2 7F C368 : A9 80 4C 0C C2 A0 A7 A9 09 C370 : E4 8D 08 03 8C 09 03 38 0B C378 : 20 99 FF 86 37 84 38 4C 47 C380 : 9A E3 A9 80 2C A9 40 2C F0 C388 : A9 00 8D 62 03 20 4E C3 D3 C390 : 8D 50 03 8C 51 03 20 4B DC C398 : C3 8D 52 03 8C 53 03 20 C7 C3A0 : 40 C4 D0 01 60 8D 6A 03 B9 C3A8 : 8C 69 03 AC 69 03 B1 64 7D C3B0 : C9 20 90 0B C9 40 90 09 02 C3B8 : C9 60 B0 03 29 1F 2C A9 CD C3C0 : 20 85 02 A9 1A 06 02 2A 87 C3C8 : 06 02 2A 06 02 2A 85 03 A8 C3D0 : 78 A9 31 85 01 A0 07 B1 AE C3D8 : 02 99 00 02 88 10 F8 A9 27 C3E0 : 37 85 01 58 A9 00 8D 67 C5 C3E8 : 03 A9 07 8D 68 03 AE 68 5E C3F0 : 03 BD 00 02 AE 67 03 3D BF C3F8 : 88 C4 F0 1E AD 50 03 AC A5 C400 : 51 03 8D 3C 03 8C 3D 03 4D C408 : AC 53 03 AD 68 03 18 6D AE C410 : 52 03 85 14 90 01 C8 20 3C C418 : B1 C0 CE 68 03 10 CF EE B8 C420 : 50 03 D0 03 EE 51 03 EE EA C428 : 67 03 AE 67 03 E0 08 D0 A2 C430 : B8 EE 69 03 AD 69 03 CD E8 C438 : 6A 03 D0 01 60 4C AB C3 17 C440 : 20 FD AE 20 9E AD 20 A3 2E C448 : B6 A0 00 B1 64 85 63 C8 16 C450 : B1 64 AA C8 B1 64 85 65 16 C458 : 86 64 A0 00 A5 63 60 2C 88 C460 : 6B 03 30 01 60 A2 F0 8E 75 C468 : 62 03 20 B1 C0 AD 52 03 53 C470 : AC 53 03 85 14 2C 62 03 6A C478 : 10 03 68 68 60 A2 00 8E 69 C480 : 62 03 60 A9 FF 4C 11 C2 DD C488 : 80 40 20 10 08 04 02 01 DD C490 : 0D 08 41 1B 38 1B 0A 0D F4 C498 : 20 20 20 20 20 20 20 1B 8E C4A0 : 2A 01 20 03 45 50 53 4F 76 C4A8 : 4E 2D 53 55 50 50 4F 52 76 C4B0 : 54 20 20 56 31 2E 37 20 89 C4B8 : 20 2A 2A 2A 0D 20 20 31 72 C4C0 : 39 38 35 20 56 4F 4E 20 C0 C4C8 : 41 4C 45 58 20 44 45 4C 5E C4D0 : 20 50 49 4E 4F 0D 00 43 18 C4D8 : 4C 45 41 52 00 44 4F 54 6A C4E0 : 00 52 45 53 45 54 44 4F 6C C4E8 : 54 00 49 4E 56 44 4F 54 C6 C4F0 : 00 4C 49 4E 45 00 52 45 5B C4F8 : 53 45 54 4C 49 4E 45 00 A9 C500 : 49 4E 56 4C 49 4E 45 00 AC C508 : 99 00 45 58 49 54 00 54 DE C510 : 45 58 54 00 49 4E 56 54 A0 C518 : 45 58 54 00 52 45 53 45 C6 C520 : 54 54 45 58 54 00 53 43 14 C528 : 41 4E 4C 49 4E 45 00 00 DC C530 : 6F C0 9F C0 58 C3 5D C3 A0 C538 : 09 C2 62 C3 67 C3 5E C1 45 C540 : 6C C3 87 C3 81 C3 84 C3 B8 C548 : 82 C4 00 00 C9 00 73
.BA $C000 ;PC SETZEN ;*********************************** ; E P S O N - S U P P O R T ; ;VERSION 1.7 (C)1984 BY A.DEL PINO ; ;*********************************** ; ;VARIABLEN & SYSTEMADRESSEN ; HELP = $033C YVALUE = $14 XVALUE = $033C X1 = $0350 Y1 = X1+2 X2 = X1+4 Y2 = X1+6 XSTEP = X1+8 YSTEP = X1+10 XDIFF = X1+12 YDIFF = X1+14 SUM = X1+16 XMAX = 800 YMAX = 552 DISABLE = $34 ;ROM AUSBLENDEN ENABLE = 55 ;ROM EINBLENDEN FLAG = X1+18 BITPOS = X1+19 FLAG1 = X1+23 FLAG2 = X1+24 FLAG3 = X1+25 LENGH = X1+26 LINETYP = X1+27 ; ;PROGRAMMSTART, ZEIGER VERBIEGEN ; LDA #<ESUP LDY #>ESUP STA $0308 STY $0309 LDA #<8190 LDY #>8190 STA $33 STY $34 STA $37 STY $38 ; ;PROMPT AUSGEBEN ; LDA #<PROMPT LDY #>PROMPT JMP $AB1E ; ;BASIC-TOKEN ERKENNEN ; ESUP JSR $73 CMP #'&' BEQ SUPPORT JSR $79 JMP $A7E7 SUPPORT LDX #$FF LDY #0 STY FLAG SLOOP INX INY LDA @STMTAB,X BEQ NEWSTMT CMP ($7A),Y BEQ SLOOP NXT INX LDA @STMTAB,X BNE NXT INC FLAG LDY #0 LDA @STMTAB+1,X BNE SLOOP JMP $AF08 NEWSTMT DEY CLC TYA ADC $7A STA $7A BCC L1 INC $7B ; ;RETURN-ADRESSE AUF DEN STACK ; L1 LDA #$A7 PHA LDA #$E9 PHA LDA FLAG ASL TAX LDA @ENTRY+1,X ; ;ADRESSE DES NEUEN BEFEHLS AUF DEN STACK PHA LDA @ENTRY,X PHA JMP $73 ; ;HIER SIND DIE NEUEN BEFEHLE... ; ;************************** ; ; &CLEAR ; ;************************** CLEAR LDA #<8192 LDY #>8192 STA $FB STY $FC SEI LDA #DISABLE STA 1 LDY #0 TYA CL1 STA ($FB),Y INY BNE CL1 INC $FC LDX $FC CPX #$C0 BNE CL1 LDX #$C8 STX $FC CL2 STA ($FB),Y INY BNE CL2 INC $FC BNE CL2 LDA #ENABLE STA 1 CLI RTS ;************************** ; ; DOT - BEFEHLE ; ;************************** DOT LDA #0 STA FLAG JSR VALUE+3 STA XVALUE STY XVALUE+1 JSR VALUE WORKDOT CPY #>YMAX BCC SE1 CMP #<YMAX BCC SE1 RTS ; ;ADRESSE DES PUNKTES BERECHNEN ; SE1 STA @HELP+2 STY @HELP+3 LDY #3 SE2 CLC LSR @HELP+3 ROR @HELP+2 DEY BNE SE2 CLC LDA @HELP+2 ADC #>8192 STA $FC LDA @HELP+2 STA $FB ASL ADC $FC STA $FC LDA #0 ASL $FB ROL ASL $FB ROL ASL $FB ROL ASL $FB ROL ASL $FB ROL ADC $FC STA $FC SE4 LDA $14 AND #7 TAX LDA @BIT,X STA BITPOS LDA XVALUE LDY XVALUE+1 CPY #>XMAX BCC SE5 CMP #<XMAX BCC SE5 RTS SE5 ADC $FB STA $FB TYA ADC $FC CMP #$C0 BCC SE6 ADC #7 SE6 STA $FC SEI ; ;ROM AUSBLENDEN ; LDA #DISABLE STA 1 LDY #0 BIT FLAG BPL DOT0X BVC INVERT ; ;PUNKT TESTEN 'BITTEST' ; LDA BITPOS LDX #0 AND ($FB),Y BEQ TS1 DEX TS1 STX FLAG JMP ENDDOT ; ;PUNKT INVERTIEREN ; INVERT LDA BITPOS EOR ($FB),Y STA ($FB),Y JMP ENDDOT DOT0X BVC SET ; ;PUNKT ZURUECKSETZEN ; LDA BITPOS EOR #$FF AND ($FB),Y STA ($FB),Y JMP ENDDOT ; ;PUNKT SETZEN ; SET LDA BITPOS ORA ($FB),Y STA ($FB),Y ENDDOT LDA #ENABLE STA 1 CLI RTS ;************************** ; ; &PRINT ; ;************************** ;USERPORT-INTERFACE DURCH GEEIGNTES ;SETZEN DER PORTBAUSTEIN-REGISTER ;INITIALISIEREN. BEI DRUCKERN AM SERIELLEN BUS MUSS ;HIER EIN FILE AUF DEN DRUCKER EROEFFNET WERDEN. HARDCOPY SEI LDA #$FF STA $DD03 LDA $DD02 ORA #4 STA $DD02 LDA $DD00 ORA #4 STA $DD00 LDA #$10 STA $DD0D LDA $DD0D CLI ;STEUERCODES FUER EPSON RX-80 AUSGEBEN LDX #5 HC0 LDA @TABLE1,X JSR CWROUT DEX BPL HC0 LDA #<8192 LDY #>8192 STA $FB STY $FC LDA #0 STA $FD ;STEUERCODES FUER NEUE GRAFIKZEILE AUSGEBEN HC1 LDX #0 LDA @TABLE2,X JSR CWROUT INX CPX #14 BNE HC1+2 ;EINE GRAFIKZEILE (8*800 DOTS) AUSGEBEN LDX #0 HC2 JSR WROUT INX BNE HC2 HC3 JSR WROUT INX BNE HC3 HC4 JSR WROUT INX BNE HC4 HC5 JSR WROUT INX CPX #<XMAX BNE HC5 INC $FD LDA $FD CMP #69 BNE HC1 RTS ;ROM AUSBLENDEN WROUT SEI LDA #DISABLE STA 1 ;ADRESSE DES AUSZUGEBENDEN PUNKTES BERECHNEN CLC LDA $FB ADC #<$800 STA $FE LDA $FC ADC #>$800 STA $FF LDY #0 LDA $FC CMP #$C0 BCS WR1 LDA ($FB),Y .BY $2C WR1 LDA ($FE),Y INC $FB BNE WR2 INC $FC ;ROM WIEDER EINBLENDEN WR2 LDY #ENABLE STY 1 CLI ;GEBE ASCII-ZEICHEN IM ACCU AUS ;BEI DRUCKERN MIT SERIELLER SCHNITTSTELLE ;MUSS HIER 'JMP $FFD2' STEHEN ;UND DANACH AUCH EIN 'RTS' CWROUT STA $DD01 LDA $DD00 AND #$FB STA $DD00 ORA #4 STA $DD00 WAIT LDA $DD0D AND #$10 BEQ WAIT CLC RTS ;************************** ; ; LINE-BEFEHLE ; ;************************** LINE LDA #0 STA FLAG LDA #0 STA LINETYP JSR VALUE+3 STA X1 STY X1+1 JSR VALUE STA Y1 STY Y1+1 JSR VALUE STA X2 STY X2+1 JSR VALUE STA Y2 STY Y2+1 LDX #1 LDY #0 SEC LDA X2 SBC X1 STA XDIFF LDA X2+1 SBC X1+1 STA XDIFF+1 BPL LI1 DEX DEX DEY EOR #$FF STA XDIFF+1 LDA XDIFF EOR #$FF STA XDIFF INC XDIFF BNE LI1 INC XDIFF+1 LI1 STX XSTEP STY XSTEP+1 LDX #1 LDY #0 SEC LDA Y2 SBC Y1 STA YDIFF LDA Y2+1 SBC Y1+1 STA YDIFF+1 BPL LI2 DEX DEX DEY EOR #$FF STA YDIFF+1 LDA YDIFF EOR #$FF STA YDIFF INC YDIFF BNE LI2 INC YDIFF+1 LI2 STX YSTEP STY YSTEP+1 LDY #0 LDA XDIFF ORA XDIFF+1 BNE LI3 DEY LI3 STY SUM STY SUM+1 LI4 LDA X1 LDY X1+1 STA XVALUE STY XVALUE+1 LDA Y1 LDY Y1+1 STA YVALUE STY YVALUE+1 JSR SCANN JSR WORKDOT LDA X1 CMP X2 BNE LI5 LDA X1+1 CMP X2+1 BNE LI5 LDA Y1 CMP Y2 BNE LI5 LDA Y1+1 CMP Y2+1 BNE LI5 RTS LI5 BIT SUM+1 BPL LI6 CLC LDA Y1 ADC YSTEP STA Y1 LDA Y1+1 ADC YSTEP+1 STA Y1+1 CLC LDA SUM ADC XDIFF STA SUM LDA SUM+1 ADC XDIFF+1 STA SUM+1 JMP LI4 LI6 CLC LDA X1 ADC XSTEP STA X1 LDA X1+1 ADC XSTEP+1 STA X1+1 SEC LDA SUM SBC YDIFF STA SUM LDA SUM+1 SBC YDIFF+1 STA SUM+1 JMP LI4 VALUE JSR $AEFD JSR $AD8A JSR $B7F7 LDA $14 LDY $15 RTS ;FLAG SETZEN FUER MODIFIZIERTEN PUNKT- UND LINIEN-FUNKTIONEN RESETDOT LDA #$40 JMP DOT+2 INVERTDOT LDA #$80 JMP DOT+2 RESETLINE LDA #$40 JMP LINE+2 INVERTLINELDA #$80 JMP LINE+2 ;************************** ; ; &EXIT ; ;************************** ;ZEIGER WIEDER 'GERADEBIEGEN' EXIT LDY #$A7 LDA #$E4 STA $0308 STY $0309 SEC JSR $FF99 STX $37 STY $38 JMP $E39A ;SYSTEM AUFRUFEN ; TEXT-BEFEHLE, FLAG SETZEN INVTEXT LDA #$80 .BY $2C RESTEXT LDA #$40 .BY $2C TEXT LDA #0 STA FLAG JSR VALUE+3 STA X1 STY X1+1 JSR VALUE STA Y1 STY Y1+1 JSR STRING BNE TXT1 RTS TXT1 STA LENGH STY FLAG3 TXT2 LDY FLAG3 LDA ($64),Y CMP #$20 BCC TXT3 CMP #$40 BCC TXT3+2 CMP #$60 BCS TXT3 AND #$1F .BY $2C TXT3 LDA #$20 STA 2 LDA #$1A ASL 2 ROL ASL 2 ROL ASL 2 ROL STA 3 SEI LDA #$31 STA 1 LDY #7 TXT4 LDA (2),Y STA $200,Y DEY BPL TXT4 LDA #ENABLE STA 1 CLI LDA #0 STA FLAG1 TXT5 LDA #7 STA FLAG2 TXT6 LDX FLAG2 LDA $200,X LDX FLAG1 AND @BIT,X BEQ TXT8 LDA X1 LDY X1+1 STA XVALUE STY XVALUE+1 LDY Y1+1 LDA FLAG2 CLC ADC Y1 STA $14 BCC TXT7 INY TXT7 JSR WORKDOT TXT8 DEC FLAG2 BPL TXT6 INC X1 BNE TXT9 INC X1+1 TXT9 INC FLAG1 LDX FLAG1 CPX #8 BNE TXT5 INC FLAG3 LDA FLAG3 CMP LENGH BNE TXT10 RTS TXT10 JMP TXT2 STRING JSR $AEFD JSR $AD9E JSR $B6A3 LDY #0 LDA ($64),Y STA $63 INY LDA ($64),Y TAX INY LDA ($64),Y STA $65 STX $64 LDY #0 LDA $63 RTS SCANN BIT LINETYP BMI SCA1 RTS SCA1 LDX #$F0 STX FLAG JSR WORKDOT LDA Y1 LDY Y1+1 STA $14 BIT FLAG BPL SCA2 PLA PLA RTS SCA2 LDX #0 STX FLAG RTS SCANNLN LDA #$FF JMP LINE+7 ;************************** ; ; D A T E N B E R E I C H ; ;************************** BIT .BY 128 64 32 16 8 4 2 1 TABLE1 .BY 13 8 'A' 27 '8' 27 TABLE2 .BY 10 13 ' ' 27 '*' 1 XMAX PROMPT .BY 'EPSON-SUPPORT V1.7 ***' 13 .BY '(C)1984 BY ALEX DEL PINO' 13 0 STMTAB .BY 'CLEAR' 0 .BY 'DOT' 0 .BY 'RESETDOT' 0 .BY 'INVDOT' 0 .BY 'LINE' 0 .BY 'RESETLINE' 0 .BY 'INVLINE' 0 .BY 153 0 .BY 'EXIT' 0 .BY 'TEXT' 0 .BY 'INVTEXT' 0 .BY 'RESETTEXT' 0 .BY 'SCANLINE' 0 0 ENTRY .BY CLEAR-1 DOT-1 RESETDOT-1 INVERTDOT-1 .BY LINE-1 RESETLINE-1 INVERTLINE-1 HARDCOPY-1 EXIT-1 .BY TEXT-1 INVTEXT-1 RESTEXT-1 SCANNLN-1 .EN ;END OF SOURCE-FILE READY.