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;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 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 (a) 1350 CMP #123 1360 BCS EXIT;GROESSER ALS 122 (z) 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 ;