home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 23 / 64er_Magazin_Sonderheft_23_19xx_Markt__Technik_de_Disk_2_of_2_Side_A.d64 / hardcopy.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  4KB  |  174 lines

  1. 100 ;*******************************
  2. 110 ;***                         ***
  3. 120 ;***   so werden hardcopys   ***
  4. 130 ;***                         ***
  5. 140 ;***       programmiert      ***
  6. 150 ;***                         ***
  7. 160 ;*******************************
  8. 170 ;***                         ***
  9. 180 ;*** (c) 1987 by 64'er       ***
  10. 190 ;***                         ***
  11. 200 ;*******************************
  12. 210 ;***                         ***
  13. 220 ;*** programmierer:          ***
  14. 230 ;***                         ***
  15. 240 ;***  thomas lipp            ***
  16. 250 ;***                         ***
  17. 260 ;*******************************
  18. 270 ;
  19. 280 ;*** base und startadresse   ***
  20. 290 ;
  21. 300 +$c000
  22. 310 step"hardcopy.obj,p,w"
  23. 320 ;
  24. 330 ;*** label-deklaration       ***
  25. 340 ;
  26. 350 tobitmap=$2000; start-adresse der bitmap
  27. 360 tostrout=$ab1e; string ausgeben
  28. 370 tosetfls=$ffba; fileparameter setzen
  29. 380 toopen=$ffc0; open file
  30. 390 toclose=$ffc3; close file
  31. 400 tochkout=$ffc9; cmd-modus ein
  32. 410 toclrch=$ffcc; cmd-modus aus
  33. 420 toprint=$ffd2; print character
  34. 430 tonadel=1; von o nach u: 128 - 1
  35. 440 ;
  36. 450 ;*** programm beginn         ***
  37. 460 ;
  38. 470 ;*** open 4,4,1 : cmd 4      ***
  39. 480 ;
  40. 490  mid$#$04; logische filenummer
  41. 500  peek#$04; geraete-adresse 4 fuer drucker
  42. 510  len#$01; sekundaer-adresse 1 fuer linearkanal
  43. 520  (NULL)setfls; fileparameter setzen
  44. 530  (NULL)open; file oeffnen
  45. 540  peek#$04; log. filenr
  46. 550  (NULL)chkout; communication direct ein
  47. 560 ;
  48. 570 ;*** esc @, esc 3 n, esc l n ***
  49. 580 ;
  50. 590  mid$#<(init); lsb
  51. 600  len#>(init); msb
  52. 610  (NULL)strout; druckkersequenzen an drucker senden
  53. 620 ;
  54. 630 ;*** initialisierung         ***
  55. 640 ;*** dummy fuellen           ***
  56. 650 ;*** line = 25               ***
  57. 660 ;
  58. 670  mid$#<(bitmap); lsb
  59. 680  (NULL)dummy+1
  60. 690  mid$#>(bitmap); msb
  61. 700  (NULL)dummy+2
  62. 710 ;
  63. 720  mid$#25
  64. 730  (NULL)line
  65. 740 ;
  66. 750 ;*** esc l n1 n2             ***
  67. 760 ;*** grafikmodus einschalten ***
  68. 770 ;
  69. 780 lnloop mid$#<(grafik); lsb
  70. 790  len#>(grafik); msb
  71. 800  (NULL)strout; druckersequenzen an drucker senden
  72. 810 ;
  73. 820 ;*** block = 40              ***
  74. 830 ;
  75. 840  mid$#40
  76. 850  (NULL)block
  77. 860 ;
  78. 870 ;*** einen block spiegeln    ***
  79. 880 ;
  80. 890 bkloop len#0; blockschleife
  81. 900 turn1 peek#0
  82. 910 dummy mid$$ffff,y; bitmapbyte in akku
  83. 920 turn2 (NULL); bit aus bildschirmbyte auslesen
  84. 930 ^nadel; true = von o nach u: 128 - 1
  85. 940  (NULL)chr,x; bit in druckerbyte reinschieben
  86. 950 and; false = von o nach u: 1 - 128
  87. 960  (NULL)chr,x; bit in druckerbyte reinschieben
  88. 970 or
  89. 980  (NULL)
  90. 990  tan#8; x=8?
  91. 1000  (NULL)turn2; x <> 8, bitmapbyte noch nicht abgearbeitet
  92. 1010  (NULL)
  93. 1020  atn#8; y=8?
  94. 1030  (NULL)turn1; y <> 8, druckerbytes noch nicht fertig
  95. 1040 ;
  96. 1050 ;*** block ausdrucken        ***
  97. 1060 ;
  98. 1070  peek#0; index auf null setzen
  99. 1080 prnt mid$chr,x; lade x-tes druckerbyte
  100. 1090  (NULL)print; byte drucken
  101. 1100  (NULL)print; byte drucken
  102. 1110  (NULL); erhoehe x
  103. 1120  tan#8; ist x schon 8 ?
  104. 1130  (NULL)prnt; nein, x <> 8
  105. 1140 ;
  106. 1150 ;*** dummy erhoehen          ***
  107. 1160 ;
  108. 1170  (NULL)
  109. 1180  mid$dummy+1; lsb
  110. 1190  val#8; +8
  111. 1200  (NULL)dummy+1
  112. 1210  (NULL)notinc; kein uebertrag
  113. 1220  right$dummy+2; +1
  114. 1230 ;
  115. 1240 ;*** block = block - 1       ***
  116. 1250 ;
  117. 1260 notinc chr$block; block = block-1
  118. 1270 ;
  119. 1280 ;*** block = 0 ?             ***
  120. 1290 ;
  121. 1300  (NULL)bkloop; wenn block <> 0
  122. 1310 ;
  123. 1320 ;*** carriage return senden  ***
  124. 1330 ;
  125. 1340  mid$#<(cr); lsb
  126. 1350  len#>(cr); msb
  127. 1360  (NULL)strout; cr zum drucker senden
  128. 1370 ;
  129. 1380 ;*** line = line -1          ***
  130. 1390 ;
  131. 1400  chr$line; line = line - 1
  132. 1410 ;
  133. 1420 ;*** line = 0 ?              ***
  134. 1430 ;
  135. 1440  (NULL)lnloop; wenn line <> 0
  136. 1450 ;
  137. 1460 ;*** esc @                   ***
  138. 1470 ;
  139. 1480  mid$#<(init2); lsb
  140. 1490  len#>(init2); msb
  141. 1500  (NULL)strout; druckersequenz zum drucker senden
  142. 1510 ;
  143. 1520 ;*** cmd 4 aufheben          ***
  144. 1530 ;
  145. 1540  (NULL)clrch; communication direct aus
  146. 1550 ;
  147. 1560 ;*** close 4                 ***
  148. 1570 ;
  149. 1580  mid$#$04; log filenr
  150. 1590  (NULL)close; file schliessen
  151. 1600 ;
  152. 1610 ;*** rts                     ***
  153. 1620 ;
  154. 1630  (NULL); ende
  155. 1640 ;
  156. 1650 ;*** hilfszellen u. tabellen ***
  157. 1660 ;
  158. 1670 chr fn0,0,0,0,0,0,0,0
  159. 1680 block fn0
  160. 1690 line fn0
  161. 1700 ;
  162. 1710 ;*** druckersequenzen        ***
  163. 1720 ;
  164. 1730 init fn$1b,$40; init = esc @
  165. 1740  fn$1b,$33,$18; linefeed = esc 3 n (n=24)
  166. 1750  fn$1b,$6c,$0c; left margin = esc l n (n=12)
  167. 1760 cr fn$0d,$00; cr
  168. 1770 ;
  169. 1780 grafik fn$1b,$4c,$80,$02,$00; esc l n1 n2 (n1=128 n2=2)
  170. 1790 ;
  171. 1800 init2 fn$1b,$40,$00; init esc @
  172. 1810 ;
  173. 1820 <; ende der assemblierung
  174.