home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 86xx / 8601.d64 / hardcopy.src (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  310 lines

  1. 1000 OPEN2,8,2,"HARDCOPY.OBJ,P,W"
  2. 1010 SYS9*4096
  3. 1020 ;*********************************
  4. 1030 ;*      LOWSCREENHARDCOPY        *
  5. 1040 ;*            INCL.              *
  6. 1050 ;*   GRAFIK- UND REVERSZEICHEN   *
  7. 1060 ;*     EPSON/WIESEMANN & KOMP.   *
  8. 1070 ;*         VERSION 1.2           *
  9. 1080 ;*    HARALD MEYER 21.05.1985    *
  10. 1090 ;*********************************
  11. 1100 .OPT O2  ; CODE AUF DISK
  12. 1110 *= $C000 ; STARTADRESSE
  13. 1120 ; ROUTINEN DES BETRIEBSSYTEMS
  14. 1130 ;**********************************
  15. 1140 ;
  16. 1150 OPEN    = $FFC0 ; FILE OEFFNEN
  17. 1160 SETNAM  = $FFBD ; FILENAMEN SETZEN
  18. 1170 SETFLS  = $FFBA ; FILEPARAMETER
  19. 1180 PRINT   = $FFD2 ; ZEICHEN AUSGEBEN
  20. 1190 CLRCH   = $FFCC ; BILDSCH.-AUSGABE
  21. 1200 CHKOUT  = $FFC9 ; AUSGABEGERAET
  22. 1210 CLOSE   = $FFC3 ; FILE SCHLIESSEN
  23. 1220 STOP    = $FFE1 ; STOPVEKTOR
  24. 1230 IRQEND  = $EA31 ; KERNAL-IRQ-ROUT.
  25. 1240 LOVIDEO = $D018 ; VIDEORAM LO
  26. 1250 CHRGEN1 = $D000 ; 1.ZEICHENSATZ
  27. 1260 CHRGEN2 = $D800 ; 2.ZEICHENSATZ
  28. 1270 ;
  29. 1280 ; BENOETIGTE SPEICHERZELLEN
  30. 1290 ; *********************************
  31. 1300 ;
  32. 1310 CURSOR  = 204   ; CURSOR AUS/AN
  33. 1320 IRQVEK  = $0314 ; IEQ-VEKTOR
  34. 1330 TASTE   = $C5   ; LETZTE TASTE
  35. 1340 F1      = 4     ; F1-MATRIXNUMMER
  36. 1350 CR      = 13    ; CARRIAGE RETURN
  37. 1360 ESC     = 27    ; ESCAPE
  38. 1370 ADRESSE = $F8   ; ZEICHENADRESSE
  39. 1380 ZEICHEN = $D6   ; ZEICHENCODE
  40. 1390 VIRAM   = $15   ; ZEICHENADRESSE
  41. 1400 ZROM    = $F9   ; ZEICHENGENERATOR
  42. 1410 MASKE   = $9D   ; BIT-ABFRAGE
  43. 1420 ;
  44. 1430 ; INTERRUPT INITIALISIEREN
  45. 1440 ; *********************************
  46. 1450 ;
  47. 1460 SEI             ; IRQ VERHINDERN
  48. 1470 LDA #<START     ; IRQ VEKTOR AUF
  49. 1480 LDY #>START     ; DIESES PROGRAMM
  50. 1490 STA IRQVEK
  51. 1500 STY IRQVEK+1
  52. 1510 CLI             ; IRQ FREIGEBEN
  53. 1520 RTS             ; INIT. ENDE
  54. 1530 ;
  55. 1540 ;
  56. 1550 ; F1 GEDRUECKT, DANN START
  57. 1560 ; *********************************
  58. 1570 ;
  59. 1580 START LDA TASTE ; TASTENABFRAGE
  60. 1590 CMP #F1         ; TASTE = F1 "?"
  61. 1600 BNE L1          ; NEIN, DANN ENDE
  62. 1610 LDA #00         ; TASTENDRUCK
  63. 1620 STA TASTE       ; LOESCHEN
  64. 1630 JSR HDCOPY      ; PROGRAMMBEGINN
  65. 1640 L1  JMP IRQEND  ; ZUM KERNAL-IRQ
  66. 1650 ;
  67. 1660 ;
  68. 1670 ; ZEROPAGE RETTEN
  69. 1680 ; *********************************
  70. 1690 ;
  71. 1700 HDCOPY LDX #$FF ; BYTE 255-0
  72. 1710 L2  LDA 0,X     ; LADEN
  73. 1720 STA MEMORY,X    ; UND SPEICHERN
  74. 1730 DEX             ; NAECHSTES BYTE
  75. 1740 BNE L2          ; X=0, DANN ENDE
  76. 1750 LDA #01
  77. 1760 STA CURSOR      ;AUSSCHALTEN
  78. 1770 ;
  79. 1780 ;
  80. 1790 ; DRUCKERFILE OEFFEN UND
  81. 1800 ; ZEILENABSTAND INITIALISIEREN
  82. 1810 ; *********************************
  83. 1820 LDA #126     ; FILENUMMER
  84. 1830 LDX #4       ; GERAETEADRESSE
  85. 1840 LDY #1       ; SEKUNDAERADRESSE
  86. 1850 JSR SETFLS   ; PARAMETER SETZEN
  87. 1860 LDA #0       ; KEIN FILENAMEN
  88. 1870 JSR SETNAM   ; NAMEN SETZEN
  89. 1880 JSR OPEN     ; FILE OEFFNEN
  90. 1890 LDX #126     ; ALLE
  91. 1900 JSR CHKOUT   ; AUSGABEN AUF #126
  92. 1910 ;
  93. 1920 ; DRUCKER AUF EINZEILIGEN ABSTAND
  94. 1930 LDA #ESC     ; ESC-SEQUENZ-BEGINN
  95. 1940 JSR PRINT    ; CHR$(27) AN DRUCKER
  96. 1950 LDA #"3"     ; "3"+CHR$(24)
  97. 1960 JSR PRINT
  98. 1970 LDA #24
  99. 1980 JSR PRINT    ; AN DRUCKER
  100. 1990 ;
  101. 2000 ; ZEIGER AUF VIDEORAM
  102. 2010 ; ********************************
  103. 2020 ;
  104. 2030 VIDEORAM LDA #$00
  105. 2040 LDY $288     ; VIDEORAMADRESSEN
  106. 2050 STA VIRAM    ; UEBERGEBEN
  107. 2060 STY VIRAM+1
  108. 2070 ;
  109. 2080 ;
  110. 2090 ; ZEICHEN VOM SCREEN HOLEN,
  111. 2100 ; CHARAKTERGENERATOR LESEN UND
  112. 2110 ; ZEICHENMATRIX ZUSAMMENSETZEN
  113. 2120 ; *********************************
  114. 2130 ;
  115. 2140 LDX #25      ; ZEILENANZAHL
  116. 2150 ;
  117. 2160 ; AUSGABESCHLEIFE
  118. 2170 ; *********************************
  119. 2180 ;
  120. 2190 AUSG JSR STOP; STOPTASTE ABFRAGEN
  121. 2200 BEQ HDENDE   ; GEDRUECKT,DANN ENDE
  122. 2210 ;
  123. 2220 ; IST ZEILE LEER "?"
  124. 2230 ; *********************************
  125. 2240 ;
  126. 2250 LDY #39
  127. 2260 L9 LDA (VIRAM),Y
  128. 2270 CMP #32
  129. 2280 BNE L10
  130. 2290 DEY
  131. 2300 BPL L9
  132. 2310 LDA #CR
  133. 2320 JSR PRINT
  134. 2330 JMP L11
  135. 2340 ;
  136. 2350 ; CHRGEN-ADRESSE HOLEN
  137. 2360 ; GROSS/KLEIN ODER GROSS/GRAFIC
  138. 2370 ; *********************************
  139. 2380 ;
  140. 2390 L10 JSR CHRTEST ;SCHRIFTMODUS-TEST
  141. 2400 ;
  142. 2410 ; DRUCKZEILE VORBEREITEN
  143. 2420 ; *********************************
  144. 2430 ;
  145. 2440 LDY #7            ; 6 CODES
  146. 2450 L3  LDA GRAFIK,Y  ; ESC-SEQUENZ
  147. 2460 JSR PRINT         ; SENDEN
  148. 2470 DEY               ; NAECHSTER CODE
  149. 2480 BNE L3            ; FERTIG "?"
  150. 2490 ;
  151. 2500 ; NEUE ZEILE BEGINNEN
  152. 2510 ; *********************************
  153. 2520 ;
  154. 2530 LDY #0  ; ZEILE VON NEUEM
  155. 2540 ;
  156. 2550 ; ZEILE ABARBEITEN, 2. SCHLEIFE
  157. 2560 ; ZEICHEN HOLEN UND IM UP BEARBEI.
  158. 2570 ; *********************************
  159. 2580 ; ZEICHEN V. BILDSCH. HOLEN
  160. 2590 L5  LDA #0   ; ZEICHEN VON
  161. 2600 LDA (VIRAM),Y; BILDSCHIRM HOLEN
  162. 2610 STA ZEICHEN  ; MERKEN
  163. 2620 JSR AUSWERT  ; BEARBEITEN
  164. 2630 INY          ; SPALTE ERHOEHEN
  165. 2640 CPY #40      ; ZEILENENDE "?"
  166. 2650 BNE L5       ; BILDSCH.-ENDE "?"
  167. 2660 ;
  168. 2670 ; NEUE ZEILE VORBEREITEN
  169. 2680 ; *********************************
  170. 2690 ;
  171. 2700 L11 LDA #40; 40 SPALTEN
  172. 2710 CLC    ; ZEIGER AUF NAECHSTE ZEILE
  173. 2720 ADC VIRAM    ; NEUE ZEILE SETZEN
  174. 2730 STA VIRAM
  175. 2740 BCC L12
  176. 2750 INC VIRAM + 1
  177. 2760 L12 DEX       ; ZEILEN ERNIEDRIGEN
  178. 2770 BNE AUSG      ; SCREEN ZU ENDE "?"
  179. 2780 HDENDE LDA #13; ZUM ENDE CR AN
  180. 2790 JSR PRINT     ; DRUCKER SENDEN
  181. 2800 ;
  182. 2810 ; FERTIG, DANN FILE SCHLIESSEN
  183. 2820 ; *********************************
  184. 2830 ;
  185. 2840 LDA #126 ; FILENUMMER
  186. 2850 JSR CLOSE; DRUCKERDATEI SCHLIESSEN
  187. 2860 JSR CLRCH; CMD AUF SCREEN
  188. 2870 ;
  189. 2880 ;
  190. 2890 ; ZEROPAGE WIEDERHERSTELLEN
  191. 2900 ; *********************************
  192. 2910 ;
  193. 2920 LDX #$FF        ; ZEROPAGE
  194. 2930 L4  LDA MEMORY,X; WIEDER
  195. 2940 STA $00,X       ; HERSTELLEN
  196. 2950 DEX
  197. 2960 BNE L4
  198. 2970 ;
  199. 2980 RTS             ; HARDCOPY ENDE
  200. 2990 ;
  201. 3000 ;
  202. 3010 ;
  203. 3020 ;
  204. 3030 ; CHARAKTERGENERATOR LESEN
  205. 3040 ; *********************************
  206. 3050 ;
  207. 3060 AUSWERT PHA;  REGISTER RETTEN
  208. 3070 TXA
  209. 3080 PHA
  210. 3090 TYA
  211. 3100 PHA
  212. 3110 ;
  213. 3120 ; ADRESSE IM CHARAKTERRAM BERECH.
  214. 3130 ; = ZEICHENCODE * 8
  215. 3140 ; *********************************
  216. 3150 ;
  217. 3160 LDA ZEICHEN; ZEICHENCODE LADEN
  218. 3170 STA ADRESSE; ADRESSE IM ZEICHEN-
  219. 3180 LDA #0     ; ROM FESTSTELLEN
  220. 3190 STA ADRESSE+1
  221. 3200 ASL ADRESSE; ZEICHENCODE
  222. 3210 ROL ADRESSE+1
  223. 3220 ASL ADRESSE
  224. 3230 ROL ADRESSE+1
  225. 3240 ASL ADRESSE
  226. 3250 ROL ADRESSE+1 ; MAL 8
  227. 3260 LDA ADRESSE+1
  228. 3270 CLC             ; UND
  229. 3280 ADC ZROM+1    ; ROMADRESSE
  230. 3290 STA ADRESSE+1 ; ADDIEREN
  231. 3300 ;
  232. 3310 ; CHARAKTERGEN. LESEN UND ZEICHEN-
  233. 3320 ; MATRIX FUER DRUCKER AUFBEREITEN
  234. 3330 ; *********************************
  235. 3340 ;
  236. 3350 LDX $01        ; SPEICHERSELEKT
  237. 3360 LDA #%10000000 ; BIT-MASKE
  238. 3370 STA MASKE      ; SPEICHERN
  239. 3380 L14 LDA #$00   ; CODE
  240. 3390 PHA            ; LOESCHEN
  241. 3400 LDY #7         ; 8 BYTES ABFRAGEN
  242. 3410 ;
  243. 3420 ; CHR-RAM EINSCHALTEN & BYTE LESEN
  244. 3430 ; *********************************
  245. 3440 ;
  246. 3450 L15 SEI     ; IRQ SPERREN
  247. 3460 LDA #01:AND #251        ; ZEICHEN-ROM
  248. 3470 STA $01     ; SELEKTIEREN
  249. 3480 LDA (ADRESSE),Y ; CODE HOLEN
  250. 3490 AND MASKE       ; MASKENVERGLEICH
  251. 3500 ;
  252. 3510 ; CHR-ROM WIEDER EINSCHALTEN
  253. 3520 ; *********************************
  254. 3530 ;
  255. 3540 STX $01     ; NORM SPEICHERKONF.
  256. 3550 CLI         ; WIEDER HERSTELLEN
  257. 3560 BEQ L6
  258. 3570 PLA         ; CODE LADEN UND
  259. 3580 CLC         ; CODE LADEN UND
  260. 3590 ADC NWERT,Y ; BITWERT ZU CODE ADD.
  261. 3600 PHA         ; UND MERKEN
  262. 3610 L6  DEY     ; NAECHSTES BYTE
  263. 3620 BPL L15     ; 8 BITS GELESEN "?"
  264. 3630 PLA         ; JA, DANN
  265. 3640 JSR PRINT   ; AN DRUCKER
  266. 3650 LSR MASKE   ; MASKE ERHOEHEN
  267. 3660 BCC L14     ; NAECHSTE PUNKTZEILE
  268. 3670 ;
  269. 3680 ; REGISTER WIEDER HOLEN
  270. 3690 ; *********************************
  271. 3700 ;
  272. 3710 PLA ; REGISTER WIEDER HOLEN
  273. 3720 TAY
  274. 3730 PLA
  275. 3740 TAX
  276. 3750 PLA
  277. 3760 RTS
  278. 3770 ;
  279. 3780 ; ANFANGSADRESSE DES CHARAKTERRAMS
  280. 3790 ; FESTSTELLEN UND MERKEN
  281. 3800 ; *********************************
  282. 3810 ;
  283. 3820 CHRTEST LDA #$00
  284. 3830 STA ZROM     ; ZEICHENSATZADR. LO
  285. 3840 LDA LOVIDEO  ; ZEICHENSATZ-PAGE
  286. 3850 AND #%00000010
  287. 3860 BNE L16
  288. 3870 LDA #>CHRGEN1         ;$D000
  289. 3880 STA ZROM + 1
  290. 3890 .BYT $2C
  291. 3900 L16 LDA #>CHRGEN2     ;$D800
  292. 3910 STA ZROM + 1
  293. 3920 RTS           ; ZUM HAUPTPROGRAMM
  294. 3930 ;
  295. 3940 ;
  296. 3950 ;
  297. 3960 ;TABELLE 320 BITMUSTERDATEN
  298. 3970 GRAFIK .BYT 0,$01,$40
  299. 3980 ;
  300. 3990 ;EPSON AUF EINZELNADELANSTEUERUNG
  301. 4000 .BYT 4,"*",ESC,CR,24
  302. 4010 ;
  303. 4020 ;TABELLE FUER BIT-WERTIGKEITEN
  304. 4030 NWERT .BYT 128,64,32,16,8,4,2,1
  305. 4040 ;
  306. 4050 ;ZEICHENSATZ STARTADRESSEN
  307. 4060 MEMORY .BYT 0
  308. 4070 .END
  309. 4080 SYS49152
  310.