home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1986 October / 64er_Magazin_86-10_1986_Markt__Technik_de_Side_B.d64 / vg-cp80x.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  5KB  |  147 lines

  1. 50 sys9*4096
  2. 100 ;
  3. 110 ;
  4. 120 .opt oo
  5. 130 ;anpassung von cp 80x an vizawrite
  6. 140 ;umlaute und steuercodes werden
  7. 150 ;vom cp 80x richtig ausgegeben, wenn
  8. 160 ;er als epson-drucker (e) angesteuert
  9. 170 ;wird
  10. 180 ;zusaetzlich ist es moeglich grafiken zu drucken!
  11. 190 ;
  12. 200 ;version 2.2
  13. 210 ;
  14. 220 ;(c) 1986 markt&technik
  15. 230 ;
  16. 240 ;       written by
  17. 250 ;       ralf lenz
  18. 260 ;     am landgraben 12
  19. 270 ;    4290 bocholt-barlo
  20. 280 ;
  21. 290 ;
  22. 300 print  = $f1ca;ausgabe eines zeichens
  23. 310 graphcode = $a8;code fuer grafik
  24. 320 cr = $0d;carriage return 
  25. 330 ;
  26. 340 ;
  27. 350 *= $02a7
  28. 360 ;
  29. 370 grafik      sty yzw;y-register zwischenspeichern
  30. 380             ldy #0
  31. 390             sty flag;flag fuer nibble
  32. 400 bin320      lda tabelle3,y;drucker auf 320 binaer-
  33. 410             jsr print;daten einstellen
  34. 420             iny
  35. 430             cpy #4
  36. 440             bne bin320
  37. 450             ldy yzw;y-register zurueckholen
  38. 460             lda #<graphout;outputvektor erneut
  39. 470             sta $0326;verstellen fuer ausgabe von
  40. 480             lda #>graphout;grafik
  41. 490             sta $0327;outputvektor erneut verstellen
  42. 500 exit2       clc
  43. 510             rts
  44. 540 ;
  45. 550 graphout    cmp #graphcode;pruefen, ob zeilenende
  46. 560             bne g1
  47. 570             clc;ende der grafikzeile erreicht.
  48. 580             jmp init;output-vektor zurueckstellen
  49. 590 g1          cmp #63;pruefen, ob illegaler code (0-63)
  50. 600             bcc exit2
  51. 610             and #%00001111;nur unteres nibble verwenden
  52. 620             pha; und auf stapel
  53. 630             lda flag;oberes oder unteres nibble
  54. 640             bne nibble2
  55. 650 ;
  56. 660 nibble1     inc flag;flag=1
  57. 670             pla;nibble zurueckholen
  58. 680             sta store;und zwischenspeichern
  59. 690             clc
  60. 700             rts
  61. 710 ;
  62. 720 nibble2     dec flag;flag=0
  63. 730             pla;nibble zurueckholen
  64. 740             asl;und um 4 bit nach links schieben
  65. 750             asl:asl:asl
  66. 760             ora store;verknuepfen mit unterem nibble
  67. 770             jsr print;und ausgeben
  68. 780             rts
  69. 790 ;
  70. 800 ;
  71. 810 ;
  72. 820 *= $0365
  73. 830 init        lda #<start ;output-vektor aendern
  74. 840             sta $0326
  75. 850             lda #>start
  76. 860             sta $0327
  77. 870             rts
  78. 880 ;
  79. 890 start       pha;druckbyte auf stapel retten
  80. 900             lda $9a  ;pruefen ob
  81. 910             cmp #$04;ausgabe auf drucker
  82. 920             bne ende   ;nein
  83. 930             pla ;wenn ja, druckbyte zurueckholen
  84. 940             cmp #graphcode
  85. 950             bne s1
  86. 960             jmp grafik
  87. 970 s1          pha ;und sofort wieder auf stapel
  88. 980             sty yzw   ;yregister zwischenspeichern
  89. 990             ldy #$07
  90. 1000 such        cmp tabelle1,y;druckbyte mit zu aendernden
  91. 1010 ;                       zeichen vergleichen
  92. 1020             beq tausch1;zeichen gefunden
  93. 1030             dey
  94. 1040             bpl such ;weitersuchen
  95. 1050             bne smalltest;kein umlaut gefunden
  96. 1060 tausch1     pla;druckbyte vom stapel holen
  97. 1070             lda tabelle2,y ;ersatzbyte aus tabelle holen
  98. 1080             pha;und als neues druckbyte zum stapel
  99. 1090             clc
  100. 1100             bcc ende1;esctest kann entfallen, da umlaut
  101. 1110 smalltest   pla;druckbyte vom stapel holen
  102. 1120             cmp #15; mit code fuer schmalschrift vergleichen
  103. 1130             bne nosmall
  104. 1140             ldy smallflg;flag pruefen
  105. 1150             beq smallon 
  106. 1160             ora #128; bit 7 setzen fuer schmalschrift aus
  107. 1170 smalloff    ldy #0
  108. 1180             .byte $2c; die folgenden 2 bytes ueberspringen
  109. 1190 smallon     ldy #1
  110. 1200             sty smallflg
  111. 1210 nosmall     pha;druckbyte wieder auf stapel
  112. 1220 esctest     lda test
  113. 1230             cmp #27;escapecode
  114. 1240             beq ende1;vorhergegangener code war escape
  115. 1250 ;                    ===> byte nicht aendern
  116. 1260 tausch2     pla
  117. 1270             cmp #65
  118. 1280             bcc exit ;kleiner als 65 (a)
  119. 1290             cmp #91
  120. 1300             bcs weiter;groesser als 90 (z)
  121. 1310             ora #%10000000 ;bit 7 setzen
  122. 1320             bcc exit ;springt hier immer
  123. 1330 weiter      cmp #97
  124. 1340             bcc exit;kleiner als 97 (A)
  125. 1350             cmp #123
  126. 1360             bcs exit;groesser als 122 (Z)
  127. 1370             and #%11011111;bit 5 loeschen
  128. 1380 exit        pha
  129. 1390 ende1       ldy yzw;yregister zurueckholen
  130. 1400 ende        pla;druckbyte zurueckholen
  131. 1410             sta test;und fuer esctest beim naechsten
  132. 1420 ;                     einsprung speichern
  133. 1430             jmp print;sprung zum normalen output-vektor
  134. 1440 ;
  135. 1450 tabelle1    .byte  91,92,93,126,123,124,125,64
  136. 1460 ;                     sollen getauscht werden
  137. 1470 tabelle2    .byte  219,220,221,94,91,92,93,192
  138. 1480 ;                     sollen dafuer gedruckt werden
  139. 1490 yzw         .byte 00 ;zwischenspeicher fuer yregister
  140. 1500 test        .byte 00;zwischenspeicher fuer esctest
  141. 1510 smallflg    .byte 00;flag fuer smalltest
  142. 1520 tabelle3    .byte $1b,$4b,$40,$01;escape k 320
  143. 1530 store       .byte 00;speicher fuer grafikbyte
  144. 1540 flag        .byte 00;flag fuer oberes/unteres nibble
  145. 1550 ;
  146. 1560 ;
  147.