home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 27 / 64er_Magazin_Sonderheft_27_19xx_Markt__Technik_de_Disk_2_of_2_Side_A.d64 / split-screen.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  29KB  |  1,157 lines

  1. 100 ;*********************************
  2. 110 ;***                           ***
  3. 120 ;***          (NULL)urs             ***
  4. 130 ;*** (NULL)aubereien mit chr$rafik und ***
  5. 140 ;***         atnssembler         ***
  6. 150 ;***                           ***
  7. 160 ;*********************************
  8. 170 ;***                           ***
  9. 180 ;*** peekasic-valrweiterung         ***
  10. 190 ;*** (NULL)plit-(NULL)creen              ***
  11. 200 ;***                           ***
  12. 210 ;*********************************
  13. 220 ;***                           ***
  14. 230 ;*** (len) 1988 by (NULL)homas (NULL)ipp   ***
  15. 240 ;*** 8000 (NULL)uenchen 82          ***
  16. 250 ;***                           ***
  17. 260 ;*********************************
  18. 270 ;
  19. 280 +$c000
  20. 290 usr$c000
  21. 300 ;
  22. 310 ;*********************************
  23. 320 ;***  peekasic-valrweiterung        ***
  24. 330 ;*********************************
  25. 340 ;
  26. 350 ;***  (NULL)abels  ***
  27. 360 ;
  28. 370 tab(chrget=$0073; chrget-(NULL)outine
  29. 380 tab(chrgot=$0079; chrgot-(NULL)outine
  30. 390 tab(txtptr=$007a; chrget-(NULL)eiger
  31. 400 ;
  32. 410 tab(igone=$0308; (NULL)ektor zum (NULL)outinenaufruf
  33. 420 tab(gone1=$a7e4; alter right$nhalt von right$gone
  34. 430 tab(intend=$a7e7; valnde der right$nterpreterschleife
  35. 440 ;
  36. 450 ;***  valrweiterung einschalten  ***
  37. 460 ;
  38. 470  mid$#$ff; (NULL)peichergrenze auf $7fff herabsetzen
  39. 480  (NULL)$37; lsb (NULL)peicherende
  40. 490  mid$#$7f
  41. 500  (NULL)$38; msb (NULL)peicherende
  42. 510 ;
  43. 520  mid$#<(start); lsb der eigenen (NULL)outine
  44. 530  (NULL)igone; in (NULL)ektor schreiben
  45. 540  mid$#>(start); msb der eigenen (NULL)outine
  46. 550  (NULL)igone+1; in (NULL)ektor schreiben
  47. 560 ;
  48. 570  (NULL); (NULL)uecksprung ins peekasic
  49. 580 ;
  50. 590 ;***  valrweiterung ausschalten  ***
  51. 600 ;
  52. 610 aus mid$#<(gone1); (NULL)ektor auf (NULL)ormalwert zurueckstellen
  53. 620  (NULL)igone; lsb
  54. 630  mid$#>(gone1)
  55. 640  (NULL)igone+1;msb
  56. 650 ;
  57. 660  (NULL); (NULL)outinenende
  58. 670 ;
  59. 680 ;***  erweiterte right$nterpreterschleife ***
  60. 690 ;
  61. 700 start (NULL)chrget; (NULL)eichen holen
  62. 710 ;
  63. 720  str$#$60; peekuchstabe ?
  64. 730  (NULL)ende; => peekasic-lenode
  65. 740  str$#$41; peekuchstabe atn ?
  66. 750  (NULL)ende; => (NULL)onderzeichen
  67. 760 ;
  68. 770  (NULL)akku; atnkku sichern
  69. 780 ;
  70. 790  peek#$00
  71. 800  (NULL)befnr; peekefehlsnummer auf 0 setzen
  72. 810 ;
  73. 820 erw1 len#$00; peekasictextindex auf 0 setzen
  74. 830  right$befnr; peekefehlsnummer +1
  75. 840  mid$beftab,x; (NULL)eichen aus peekefehlstabelle holen
  76. 850  (NULL)erw2; kein (NULL)rennzeichen
  77. 860  mid$akku; atnkku holen
  78. 870 ende (NULL)chrgot; chrgot aufrufen
  79. 880  (NULL)intend; zurueck ins normale peekasic
  80. 890 ;
  81. 900 ;***  atndresse suchen  ***
  82. 910 ;
  83. 920 erw2 str$(txtptr),y; (NULL)ergleich mit peekasictext
  84. 930  (NULL)ovrd; ungleich -> (NULL)est ueberlesen
  85. 940  (NULL); peekasictextindex + 1
  86. 950  (NULL); peekefehlstab.-right$ndex + 1
  87. 960  mid$beftab,x; naechstes (NULL)eichen holen
  88. 970  (NULL)erw2; => pruefen
  89. 980 ;
  90. 990 ;
  91. 1000  (NULL)
  92. 1010  (NULL); peekefehlsindex um peekefehlslaenge erhoehen
  93. 1020  valtxtptr
  94. 1030  (NULL)txtptr
  95. 1040  (NULL)erw3; (NULL)ebertrag ?
  96. 1050  right$txtptr+1; msb erhoehen
  97. 1060 ;
  98. 1070 erw3 mid$befnr; peekefehlsnummer verdoppeln
  99. 1080  (NULL)
  100. 1090  (NULL); als right$ndex in (NULL)prungtabelle
  101. 1100  mid$sprtab1,x; lsb lesen
  102. 1110  (NULL)sprung+1; lsb schreiben
  103. 1120  mid$sprtab2,x; msb lesen
  104. 1130  (NULL)sprung+2; msb schreiben
  105. 1140 ;
  106. 1150 sprung (NULL)$ffff; str$ummy
  107. 1160 ;
  108. 1170  (NULL)ende; zurueck ins peekasic
  109. 1180 ;
  110. 1190 ;***  restl. peekefehlstext ueberlesen  ***
  111. 1200 ;
  112. 1210 ovrd (NULL); peekefehlstab.-right$ndex + 1
  113. 1220  mid$beftab,x; naechstes (NULL)eichen holen
  114. 1230  (NULL)ovrd; => kein (NULL)rennzeichen
  115. 1240  (NULL); peekefehlstab.-right$ndex+1
  116. 1250  (NULL)erw1; naechster peekefehl
  117. 1260 ;
  118. 1270 ;***  (NULL)abellen fuer valrweiterung  ***
  119. 1280 ;
  120. 1290 ;***  (NULL)prungtabelle  ***
  121. 1300 ;
  122. 1310 sprtab1 fn$e7
  123. 1320 sprtab2 fn$a7
  124. 1330  spc(aus
  125. 1340  spc(ir
  126. 1350  spc(ia
  127. 1360  spc(gl
  128. 1370  spc(sp
  129. 1380  spc(ep
  130. 1390  spc(ln
  131. 1400  spc(cp
  132. 1410  spc(hc
  133. 1420  spc(sa
  134. 1430  spc(lo
  135. 1440  fn$00,$00
  136. 1450 ;
  137. 1460 ;***  peekefehlstabelle  ***
  138. 1470 ;
  139. 1480 beftab not"off
  140. 1490  [165]$00
  141. 1500  [168]"irq
  142. 1510  fn$00
  143. 1520  not"text
  144. 1530  [165]$00
  145. 1540  [168]"gcl
  146. 1550  fn$00
  147. 1560  not"set
  148. 1570  [165]$00
  149. 1580  [168]"erase
  150. 1590  fn$00
  151. 1600  not"line
  152. 1610  [165]$00
  153. 1620  [168]"char
  154. 1630  fn$00
  155. 1640  not"hc
  156. 1650  [165]$00
  157. 1660  [168]"sa
  158. 1670  fn$00
  159. 1680  not"lo
  160. 1690  [165]$00,$00
  161. 1700 ;
  162. 1710 ;***  [200]ilfszellen  ***
  163. 1720 ;
  164. 1730 akku [165]$00
  165. 1740 befnr [165]$00
  166. 1750 ;
  167. 2000 ;*********************************
  168. 2010 ;***  [210]asterzeileninterrupt    ***
  169. 2020 ;*********************************
  170. 2030 ;
  171. 2040 ;***  [204]abels: [199]rafik  ***
  172. 2050 ;
  173. 2060 [163]v1=$d011; [193]dr. [199]rafikmodus
  174. 2070 [163]v2=$d018; [193]dr. [214]ideoram
  175. 2080 [163]cia=$dd00; 16[203]-[211]election
  176. 2090 [163]clrscr=$e544; [212]extbildschirm loeschen
  177. 2100 [163]cursor=$e510; [195]ursor setzen
  178. 2110 [163]xcur=$00d3; x-[203]oordinate des [195]ursor
  179. 2120 [163]ycur=$00d6; y-[203]oordinate des [195]ursor
  180. 2130 [163]help1=$00fa; [218]eropagespeicherstelle
  181. 2140 [163]help2=$00fb; [218]eropagespeicherstelle
  182. 2150 [163]bitmap=$8000; [194]itmapadresse
  183. 2160 [163]videoram=$a000; [214]ideoramadresse
  184. 2170 ;
  185. 2180 ;***  [205]akros: [199]rafik ein/aus, [214]ideoram loeschen, [195]ursor setzen  ***
  186. 2190 ;
  187. 2200 [161]gra; [199]rafik einschalten
  188. 2210  [202]#$3b; [194]itmapmodus einschalten
  189. 2220  [210]v1
  190. 2230  [202]#$80; [214]ideoram selectieren
  191. 2240  [210]v2
  192. 2250  [202]#$01; 16[203]-[194]ereich selectieren
  193. 2260  [210]cia
  194. 2270 [162]
  195. 2280 ;
  196. 2290 [161]txt; [199]rafik ausschalten
  197. 2300  [202]#$1b; [194]itmapmodus ausschalten
  198. 2310  [210]v1
  199. 2320  [202]#$15; [214]ideoram zuruecksetzen
  200. 2330  [210]v2
  201. 2340  [202]#$03; 16[203]-[194]ereich selectieren
  202. 2350  [210]cia
  203. 2360 [162]
  204. 2370 ;
  205. 2380 [161]vram; [214]ideoram loeschen
  206. 2390  [202]#208; [214]ideoramwert
  207. 2400 ;
  208. 2410  [195]#>(videoram); [211]tartadresse des [214]ideorams in [218][208] schreiben
  209. 2420  [212]help2; msb
  210. 2430  [195]#<(videoram)
  211. 2440  [212]help1; lsb
  212. 2450  [194]#$04; [201]ndex fuer aeussere [211]chleife
  213. 2460 vl1 [210](help1),y; [194]yte im [214]ideoram mit 208 ueberschreiben
  214. 2470  [237]; [217] + 1 ; innere [211]chleife 256 mal
  215. 2480  [246]vl1; => [217]<>0
  216. 2490  [201]help2; msb der [214]ideoramposition + 1
  217. 2500  [238]; aeusserer [211]chleifenzaehler - 1
  218. 2510  [246]vl1; => [216]<>0
  219. 2520 [162]
  220. 2530 ;
  221. 2540 [161]cur
  222. 2550  [202]#12; 12. [218]eile
  223. 2560  [210]ycur; in [218][208] schreiben
  224. 2570  [202]#$00; 0. [211]palte
  225. 2580  [210]xcur; in [218][208] schreiben
  226. 2590  [213]cursor; [195]ursor setzen und [210]outinenende
  227. 2600 [162]
  228. 2610 ;
  229. 2620 ;***  [204]abel: [210]asterzeileninterrupt  ***
  230. 2630 ;
  231. 2640 [163]irq=$0314; [201][210][209]-[214]ektor
  232. 2650 [163]raster=$d012; [210]asterzeilen [210]egister; msb (7.[194]it) = raster-1
  233. 2660 [163]rirqen=$d01a; [214][201][195]-[201][210][209] [197]nable [210]egister
  234. 2670 [163]reqirq=$d019; [214][201][195]-[201][210][209] [210]equest [210]egister
  235. 2680 [163]ciairq=$dc0d; [195][201][193]1 [201][210][209] [203]ontroll [210]egister
  236. 2690 [163]cntirq=$ea31; [195][201][193] [201][210][209] [210]outine
  237. 2700 [163]endirq=$ea81; [197]nde der normalen [201][210][209] [210]outine
  238. 2710 ;
  239. 2720 ;***  [201]nit: [214]ektoren verbiegen, [201][210][209] zulassen  ***
  240. 2730 ;
  241. 2740 ir [232]; [201]nterrupt sperren
  242. 2750 ;
  243. 2760  [202]#<(mainirq); [201][210][209]-[214]ektor auf eigene [201][210][209] [210]outine verbiegen
  244. 2770  [210]irq; lsb
  245. 2780  [202]#>(mainirq)
  246. 2790  [210]irq+1; msb
  247. 2800 ;
  248. 2810  [202]#$00; [210]asterzeile 0 (oberhalb des [194]ildschirmfensters)
  249. 2820  [210]raster; in [210]egister schreiben
  250. 2830  [202]raster-1; msb (7.[194]it) loeschen
  251. 2840  [198]#$7f
  252. 2850  [210]raster-1
  253. 2860 ;
  254. 2870  [202]#%10000001; [210]aster [201][210][209] zulassen
  255. 2880  [210]rirqen
  256. 2890 ;
  257. 2900  [202]#128; timer-irq aus
  258. 2910  [210]$dc0e
  259. 2920 ;
  260. 2940  [231]; [201]nterrupt wieder zulassen
  261. 2950 ;
  262. 2960 ;*** [194]ildschirm und [214]ideoram loeschen, [195]ursor setzen  ***
  263. 2970 ;
  264. 2980  [214]clrscr; [212]extbildschirm loeschen
  265. 2990  vram; [214]ideoram loeschen
  266. 3000  cur; [195]ursor setzen
  267. 3010 ;
  268. 3020 ;***  veraenderte [201][210][209]-[210]outine  ***
  269. 3030 ;
  270. 3040 mainirq [232]; [201]nterrupt sperren
  271. 3050  [202]reqirq; [201][210][209] von [210]asterstrahl ?
  272. 3060  [210]reqirq; [210]egister zurueckschreiben und loeschen
  273. 3070  [241]rasterirq; zur [210]aster [201][210][209] [210]outine
  274. 3080  [202]ciairq; loeschen des [195][201][193]1 [203]ontroll [210]egister
  275. 3090  [231]; [201]nterrupt wieder zulassen
  276. 3100  [213]endirq; zum [197]nde der normalen [201][210][209] [210]outine
  277. 3110 ;
  278. 3120 ;***  [210]aster [201][210][209] [210]outine  ***
  279. 3130 ;
  280. 3140 rasterirq [232]; [201]nterrupt sperren
  281. 3150  [202]raster; [210]asterzeilen-[210]egister auslesen
  282. 3170  [246]textfe; => raster = $91
  283. 3180 ;
  284. 3190  gra; [199]rafik einschalten
  285. 3200 ;
  286. 3210  [202]#$91; 145. [210]asterzeile, [213]mschaltung auf [212]ext
  287. 3220  [210]raster; in [210]egister schreiben
  288. 3230  [202]raster-1; msb (7.[194]it)[160]loeschen
  289. 3240  [198]#$7f
  290. 3250  [210]raster-1
  291. 3260 ;
  292. 3270  [231]; [201]nterrupt wieder zulassen
  293. 3280  [213]cntirq; zur [195][201][193] [201][210][209] [210]outine
  294. 3290 ;
  295. 3300 textfe [194]#$07; [215]arteschleife, bis der [210]asterstrahl im [210]and ist
  296. 3310 irqwait [228]
  297. 3320  [238]
  298. 3330  [246]irqwait
  299. 3340 ;
  300. 3350  txt; [199]rafik ausschalten, [212]extbildschirm einschalten
  301. 3360 ;
  302. 3370  [202]#$00; 0. [218]eile, [213]mschaltung auf [199]rafik
  303. 3380  [210]raster; in [210]egister schreiben
  304. 3390  [202]raster-1; msb (7.[194]it) loeschen
  305. 3400  [198]#$7f
  306. 3410  [210]raster-1
  307. 3420 ;
  308. 3430  [231]; [201]nterrupt wieder zulassen
  309. 3440  [213]endirq; zum [197]nde der [201][210][209]-[210]outine
  310. 3450 ;
  311. 3460 ;***  [210]asterzeileninterrupt wieder ausschalten  ***
  312. 3470 ;
  313. 3480 ia [232]; [201]nterrupt sperren
  314. 3485 ;
  315. 3490  [202]#$00; [210]aster [201][210][209] ausschalten
  316. 3500  [210]rirqen; in [210]egister schreiben
  317. 3510 ;
  318. 3520  [202]#<(cntirq); [201][210][209]-[214]ektor wieder herstellen
  319. 3530  [210]irq; lsb
  320. 3540  [202]#>(cntirq)
  321. 3550  [210]irq+1; msb
  322. 3560 ;
  323. 3570  [202]#1; timer-irq ein
  324. 3580  [210]$dc0e
  325. 3590 ;
  326. 3600  txt; [199]rafik ausschalten, [212]extbildschirm einschaleten
  327. 3610 ;
  328. 3620  [231]; [201]nterrupt wieder zulassen
  329. 3630  [227]; [210]outinenende
  330. 3640 ;
  331. 4000 ;*********************************
  332. 4010 ;***  [199]rafik loeschen          ***
  333. 4020 ;*********************************
  334. 4030 ;
  335. 4040 gl [202]#>(bitmap); [194]itmapadresse in [218][208] schreiben
  336. 4050  [210]help2; msb
  337. 4060  [202]#<(bitmap)
  338. 4070  [210]help1; lsb
  339. 4080 ;
  340. 4090  [194]#$20; aeusserer [211]chleifenindex, 32 mal
  341. 4100 gl2 [218]; innerer [211]chleifenindex [217] auf 0 setzen
  342. 4110 gl1 [210](help1),y; [206]ullbyte in [194]itmap schreiben
  343. 4120  [237]; [217] + 1, innere [211]chleife
  344. 4130  [246]gl1; => [217]<>0
  345. 4140  [201]help2; msb der [194]itmapposition erhoehen
  346. 4150  [238]; [216] - 1, aeussere [211]chleife
  347. 4160  [246]gl2; => [216]<>0
  348. 4170 ;
  349. 4180  [227]; => [216]=0, 32*256 [211]chleifendurchlaeufe,
  350. 4190 ;                   )     [210]outinenende
  351. 4200 ;
  352. 5000 ;*********************************
  353. 5010 ;***  [211]et [208]oint, [197]rase [208]oint   ***
  354. 5020 ;*********************************
  355. 5030 ;
  356. 5040 ;***  [204]abels  ***
  357. 5050 ;
  358. 5060 [163]bal=$f9; [194]yte-[193]dresse low
  359. 5070 [163]bah=$fa; [194]yte-[193]dresse high
  360. 5080 [163]ywert=$fb; y-[203]oordinate
  361. 5090 [163]xwertl=$14; x-[203]oordinate low
  362. 5100 [163]xwerth=$15; x-[203]oordinate high
  363. 5110 [163]chkcom=$aefd; auf [203]omma im [194]asictext pruefen
  364. 5120 [163]getpar=$b7eb; holt 16-[194]it integer [215]ert in $14/$15
  365. 5130 ;                         und 8-[194]it integer [215]ert in [216]-[210]egister
  366. 5140 ;
  367. 5150 ;***  [205]akro: [194]erechnung  ***
  368. 5160 ;
  369. 5170 [161]calc; [194]erechnungsteil fuer [211]et [208]oint und [197]rase [208]oint
  370. 5180  [202]#$00; bal loeschen
  371. 5190  [210]bal
  372. 5200 ;
  373. 5210  [202]ywert; y in [193]kku
  374. 5220  [205]; [y/8]
  375. 5230  [205]
  376. 5240  [205]
  377. 5250 ;
  378. 5260  [210]bah; [193]kku([y/8])*5 = [193]kku*4 + [193]kku
  379. 5270  [203]
  380. 5280  [203]
  381. 5290  [197]bah
  382. 5300 ;
  383. 5310  [205]; [193]kku(5*[y/8])*64 = [193]kku*256/4
  384. 5320  [208]bal; => msb -> lsb und 16-[194]it [196]ivision mit 4
  385. 5330  [205]
  386. 5340  [208]bal
  387. 5350 ;
  388. 5360  [197]#>(bitmap); [194]itmap hinzuaddieren
  389. 5370  [210]bah; [193]kku(320*[y/8]+$8000) speichern
  390. 5380 ;
  391. 5390  [202]xwertl; lsb(x)
  392. 5400  [198]#$f8; [x/8]*8
  393. 5410 ;
  394. 5420  [197]bal; 16-[194]it [193]ddition:
  395. 5430  [210]bal; [193]kku([x/8]*8) + bal/bah
  396. 5440  [202]xwerth; msb(x)
  397. 5450  [197]bah; wird unveraendert hinzuaddiert
  398. 5460  [210]bah
  399. 5470 ;
  400. 5480  [202]ywert; y-[y/8]*8, [210]est der [196]ivision y/8
  401. 5490  [198]#$07
  402. 5500 ;
  403. 5510  [218]; als [201]ndex in [217] verwenden
  404. 5520 ;
  405. 5530  [202]xwertl; lsb(x)
  406. 5540  [198]#$07; x-[x/8]*8, ergibt [194]it-[206]ummer
  407. 5550 ;
  408. 5560  [216]; als [201]ndex in [216] verwenden
  409. 5570 [162]
  410. 5580 ;
  411. 5590 ;***  [211]et [208]oint  ***
  412. 5600 ;
  413. 5610 sp [214]chkcom; auf [203]omma pruefen
  414. 5620  [214]getpar; x und y holen
  415. 5630  [211]ywert; [216](x) in [218][208] schreiben
  416. 5640 ;
  417. 5650 set calc; [194]yte und [194]it errechnen
  418. 5660 ;
  419. 5670  [202]pot1,x; [194]yte aus [212]abelle lesen
  420. 5680  [206](bal),y; [194]yte mit [199]rafikbyte verknuepfen
  421. 5690  [210](bal),y; verknuepftes [194]yte zurueckschreiben
  422. 5700 ;
  423. 5710  [227]; [210]outinenende
  424. 5720 ;
  425. 5730 ;***  [212]abelle der 2er [208]otenzen  ***
  426. 5740 ;
  427. 5750 pot1 [165]$80,$40,$20,$10
  428. 5760  [165]$08,$04,$02,$01
  429. 5770 ;
  430. 5780 ;
  431. 5790 ;***  [197]rase [208]oint  ***
  432. 5800 ;
  433. 5810 ep [214]chkcom; auf [203]omma pruefen
  434. 5820  [214]getpar; x und y holen
  435. 5830  [211]ywert; [216](x) in [218][208] schreiben
  436. 5840 ;
  437. 5850  calc; [194]yte und [194]it errechnen
  438. 5860 ;
  439. 5870  [202]pot2,x; [194]yte aus [212]abelle lesen
  440. 5880  [198](bal),y; [194]yte mit [199]rafikbyte verknuepfen
  441. 5890  [210](bal),y; verknuepftes [194]yte zurueckschreiben
  442. 5900 ;
  443. 5910  [227]; [210]outinenende
  444. 5920 ;
  445. 5930 ;***  [212]abelle mit den invertierten 2er [208]otenzen  ***
  446. 5940 ;
  447. 5950 pot2 [165]$7f,$bf,$df,$ef
  448. 5960  [165]$f7,$fb,$fd,$fe
  449. 5970 ;
  450. 7000 ;*********************************
  451. 7010 ;***  [204]ine-[210]outine             ***
  452. 7020 ;*********************************
  453. 7030 ;
  454. 7040 ;***  [208]arameter holen  ***
  455. 7050 ;
  456. 7060 ln [214]chkcom; auf [203]omma pruefen
  457. 7070  [214]getpar; x1 und y1 holen
  458. 7080 ;
  459. 7090  [211]ywert; y1 in [218][208] ablegen
  460. 7100  [202]$14; lsb(x1)
  461. 7110  [210]x1l; zwischenspeichern
  462. 7120  [202]$15; msb(x1)
  463. 7130  [210]x1h; zwischenspeichern
  464. 7140 ;
  465. 7150  [214]chkcom; auf [203]omma pruefen
  466. 7160  [214]getpar; x2 und y2 holen
  467. 7170 ;
  468. 7180  [211]y2; y2 speichern
  469. 7190  [202]$14; lsb(x2)
  470. 7200  [210]x2l; speichern
  471. 7210  [202]$15; msb(x2)
  472. 7220  [210]x2h; speichern
  473. 7230 ;
  474. 7240  [202]x1l; zwischengespeicherter x1-[215]ert in [218][208] ablegen
  475. 7250  [210]xwertl; lsb
  476. 7260  [202]x1h
  477. 7270  [210]xwerth; msb
  478. 7280 ;
  479. 7290  [234]; [196]ezimalmodus loeschen
  480. 7300 ;
  481. 7310 ;***  [194]eginn der [211]trukturierung  ***
  482. 7320 ;
  483. 7330 ;---------------------------------
  484. 7340 ;
  485. 7350  [230]; dx = x2 - x1
  486. 7360  [202]x2l; lsb(x2)
  487. 7370  [209]xwertl; minus lsb(x1)
  488. 7380  [210]dx; [197]rgebnis in dx
  489. 7390  [202]x2h; msb(x2)
  490. 7400  [209]xwerth; minus msb(x1)
  491. 7410  [210]dx+1; [197]rgebnis in dx+1 ([200]igh-[194]yte)
  492. 7420 ;
  493. 7430 ;---------------------------------
  494. 7440 ;
  495. 7450  [240]line1; => dx > 0, 7. [194]it des msb ist entscheidend
  496. 7460 ;
  497. 7470 ;---------------------------------
  498. 7480 ;
  499. 7490  [200]#$ff; dx = -dx = not(dx) + 1
  500. 7500  [210]dx+1; not(msb(dx)), speichern
  501. 7510  [202]dx
  502. 7520  [200]#$ff; not(lsb(dx))
  503. 7530  [229]; 1 addieren
  504. 7540  [197]#$01; lsb(dx) = lsb(dx) + 1
  505. 7550  [210]dx
  506. 7560  [244]notinc1; => kein [213]ebertrag
  507. 7570  [201]dx+1; bei [213]ebertrag: msb(dx) = msb(dx) +1
  508. 7580 ;
  509. 7590 notinc1 [202]#$ff; xadd = -1 = $ffff
  510. 7600  [210]xadd; lsb
  511. 7610  [210]xadd+1; msb
  512. 7620  [213]line2; zum naechsten [194]lock
  513. 7630 ;
  514. 7640 ;---------------------------------
  515. 7650 ;
  516. 7660 line1 [202]#$01; xadd = +1 = $0001
  517. 7670  [210]xadd; lsb
  518. 7680  [202]#$00
  519. 7690  [210]xadd+1; msb
  520. 7700 ;
  521. 7710 ;---------------------------------
  522. 7720 ;
  523. 7730 line2 [202]dx+1; ist dx = 0 ?
  524. 7740  [246]line3; => dx <> 0
  525. 7750  [202]dx
  526. 7760  [246]line3; => dx <> 0
  527. 7770 ;
  528. 7780 ;---------------------------------
  529. 7790 ;
  530. 7800  [202]#$00; rest = 0 = $00
  531. 7810  [210]rest; lsb
  532. 7820  [210]rest+1; msb
  533. 7830  [213]line4; zum naechsten [194]lock
  534. 7840 ;
  535. 7850 ;---------------------------------
  536. 7860 ;
  537. 7870 line3 [202]#$ff; rest = -1 = $ffff
  538. 7880  [210]rest; lsb
  539. 7890  [210]rest+1; msb
  540. 7900 ;
  541. 7910 ;---------------------------------
  542. 7920 ;
  543. 7930 line4 [230]; dy = y2 - y1
  544. 7940  [202]y2; lsb(y2)
  545. 7950  [209]ywert; minus ywert
  546. 7960  [210]dy; speichern
  547. 7970  [202]#$00; msb(y2) = 0
  548. 7980  [209]#$00; minus 0
  549. 7990  [210]dy+1; speichern
  550. 8000 ;
  551. 8010 ;---------------------------------
  552. 8020 ;
  553. 8030  [240]line5; => dy > 0 ; 7.[194]it des msb ist entscheident
  554. 8040 ;
  555. 8050 ;---------------------------------
  556. 8060 ;
  557. 8070  [200]#$ff; dy = -dy = not(dy) + 1
  558. 8080  [210]dy+1; not(msb(dy)), speichern
  559. 8090  [202]dy
  560. 8100  [200]#$ff; not(lsb(dy))
  561. 8110  [229]; 1 addieren
  562. 8120  [197]#$01;
  563. 8130  [210]dy; speichern
  564. 8140  [244]notinc2; => kein [213]ebertrag
  565. 8150  [201]dy+1; [213]ebertrag => msb(dy) = msb(dy) + 1
  566. 8160 ;
  567. 8170 notinc2 [202]#$ff; yadd = -1 = $ff
  568. 8180  [210]yadd; speichern
  569. 8190  [213]line6; zum naechsten [194]lock
  570. 8200 ;
  571. 8210 ;---------------------------------
  572. 8220 ;
  573. 8230 line5 [202]#$01; yadd = +1
  574. 8240  [210]yadd;aspeichern
  575. 8250 ;
  576. 8260 ;---------------------------------
  577. 8270 ;
  578. 8280 line6 [202]dy+1; ist dx > dy ?
  579. 8290  [196]dx+1; msb [214]ergleich
  580. 8300  [244]line7; => dx > dy
  581. 8310  [202]dy
  582. 8320  [196]dx; lsb [214]ergleich
  583. 8330  [244]line7; => dx > dy
  584. 8340 ;
  585. 8350 ;---------------------------------
  586. 8360 ;
  587. 8370  [202]#$ff; lin = -1 = $ff
  588. 8380  [210]lin; speichern
  589. 8390  [213]line8; zum naechsten [194]lock
  590. 8400 ;
  591. 8410 ;---------------------------------
  592. 8420 ;
  593. 8430 line7 [202]#$01; lin = +1 = $01
  594. 8440  [210]lin; speichern
  595. 8450 ;
  596. 8460 ;---------------------------------
  597. 8470 ;
  598. 8480 line8 [214]set; [208]unkt setzen
  599. 8490 ;
  600. 8500 ;---------------------------------
  601. 8510 ;
  602. 8520 line9 [202]ywert; ist y1 = y2 ?
  603. 8530  [196]y2; vergleichen
  604. 8540  [246]line10; => y1 <> y2
  605. 8550  [202]xwertl; ist x1 = x2 ?
  606. 8560  [196]x2l; lsb(x1) mit lsb(x2) vergleichen
  607. 8570  [246]line10; => x1 <> x2
  608. 8580  [202]xwerth
  609. 8590  [196]x2h; msb(x1) mit msb(x2) vergleichen
  610. 8600  [246]line10; => x1 <> x2
  611. 8610 ;
  612. 8620 ;---------------------------------
  613. 8630 ;
  614. 8640  [227]; y1 = y2 und x1 = x2 => [197]nde
  615. 8650 ;
  616. 8660 ;---------------------------------
  617. 8670 ;
  618. 8680 line10 [202]rest+1; msb(rest) , ist rest < 0 ?
  619. 8690  [241]zweig1; => 7.[194]it des msb gesetzt => rest < 0
  620. 8700 ;
  621. 8710 ;---------------------------------
  622. 8720 ;
  623. 8730 zweig2 [230]; rest >= 0 =>[160]rest = rest - dx
  624. 8740  [202]rest; lsb(rest)
  625. 8750  [209]dx; minus lsb(dx)
  626. 8760  [210]rest; speichern
  627. 8770  [202]rest+1; msb(rest)
  628. 8780  [209]dx+1; minus msb(dx)
  629. 8790  [210]rest+1; speichern
  630. 8800 ;
  631. 8810  [229]; y1 = y1 + yadd
  632. 8820  [202]ywert; y1
  633. 8830  [197]yadd; yadd addieren
  634. 8840  [210]ywert; speichern
  635. 8850 ;
  636. 8860 ;---------------------------------
  637. 8870 ;
  638. 8880  [202]lin; ist lin > 0 ?
  639. 8890  [241]line8; => lin < 0 => [208]unkt setzen
  640. 8900  [213]line9; => line => 0
  641. 8910 ;
  642. 8920 ;---------------------------------
  643. 8930 ;
  644. 8940 zweig1 [229]; rest = rest + dy
  645. 8950  [202]rest; lsb(rest)
  646. 8960  [197]dy; lsb(dy) addieren
  647. 8970  [210]rest; speichern
  648. 8980  [202]rest+1; msb(rest)
  649. 8990  [197]dy+1; msb(dy) addieren
  650. 9000  [210]rest+1; speichern
  651. 9010 ;
  652. 9020  [229]; x1 = x1 + xadd
  653. 9030  [202]xwertl; lsb(x1)
  654. 9040  [197]xadd; lsb(xadd) addieren
  655. 9050  [210]xwertl; speichern
  656. 9060  [202]xwerth; msb(x1)
  657. 9070  [197]xadd+1; msb(xadd) addieren
  658. 9080  [210]xwerth; speichern
  659. 9090 ;
  660. 9100 ;---------------------------------
  661. 9110 ;
  662. 9120  [202]lin; ist lin < 0 ?
  663. 9130  [241]line9; => lin < 0
  664. 9140  [213]line8; => lin >= 0 => set point
  665. 9150 ;
  666. 9160 ;---------------------------------
  667. 9170 ;
  668. 9180 ;***  [211]peicheradressen  ***
  669. 9190 ;
  670. 9200 x1l [165]$00; lsb(x1) [218]wischenspeicher
  671. 9210 x1h [165]$00; msb(x1) [218]wischenspeicher
  672. 9220 y1 [165]$00; y1 [218]wischenspeicher
  673. 9230 x2l [165]$00; lsb(x2)
  674. 9240 x2h [165]$00; msb(x2)
  675. 9250 y2 [165]$00; y2
  676. 9260 rest [165]$00,$00; [210]est
  677. 9270 lin [165]$00,$00; [218]eiger lin
  678. 9280 dx [165]$00,$00; dx = x2 - x1
  679. 9290 dy [165]$00,$00; dy = y2 - y1
  680. 9300 xadd [165]$00,$00; x step: +1/-1
  681. 9310 yadd [165]$00,$00; y step: +1/-1
  682. 9320 ;
  683. 10000 ;*********************************
  684. 10010 ;***  [195]har                     ***
  685. 10020 ;*********************************
  686. 10030 ;
  687. 10040 ;***  [204]abels  ***
  688. 10050 ;
  689. 10060 [163]error=$a437; [198]ehlermeldung ausgeben
  690. 10070 [163]frmevl=$ad9e; [194]asicausdruck holen
  691. 10080 [163]erestr=$b6a3; [211]tringverwaltung
  692. 10090 [163]getbyt=$b79e; liest 8-[194]it integer [215]ert von [194]asictext ein
  693. 10100 [163]charhi=$d8; high-[194]yte des [218]eichensatzspeicher
  694. 10110 ;
  695. 10120 ;***  [198]ehlermeldung ausgeben  ***
  696. 10130 ;
  697. 10140 illerr [194]#14; [198]ehlernummer in [216]
  698. 10150  [213]error; [198]ehlermeldung ausgeben: [201]llegal [209]uantity [197]rror
  699. 10160 ;
  700. 10170 ;***  [208]arameter holen  ***
  701. 10180 ;
  702. 10190 ;***  [218]eile aus [194]asictext holen  ***
  703. 10200 ;
  704. 10210 cp [214]chkcom; auf [203]omma pruefen
  705. 10220  [214]getbyt; [218]eile nach [216] holen
  706. 10230  [192]#13; auf [218]ulassigkeit pruefen
  707. 10240  [245]illerr; => [218]eile >= 13 => [197]rror
  708. 10250  [211]zeile; speichern
  709. 10260 ;
  710. 10270 ;***  [211]palte aus [194]asictext holen  ***
  711. 10280 ;
  712. 10290  [214]chkcom; auf [203]omma pruefen
  713. 10300  [214]getbyt; [211]palte nach [216] holen
  714. 10310  [192]#40; auf [218]ulaessigkeit pruefen
  715. 10320  [245]illerr; => [211]palte >= 40 => [197]rror
  716. 10330  [211]spalte; speichern
  717. 10340 ;
  718. 10350 ;***  [211]tring auf [194]asictext holen  ***
  719. 10360 ;
  720. 10370  [214]chkcom; auf [203]omma pruefen
  721. 10380  [214]frmevl; [211]tring aus [194]asictext holen
  722. 10390  [214]erestr; [211]tringverwaltung
  723. 10395  [247]illerr; [211]tringlaenge = 0 ? => [197]rror
  724. 10400  [210]strlen; [211]tringlaenge speichern
  725. 10410  [202]$22; lsb der [211]tringadresse
  726. 10420  [210]char3+1; speichern
  727. 10430  [202]$23; msb der [211]tringadresse
  728. 10440  [210]char3+2; speichern
  729. 10450 ;
  730. 10460 ;***  [210]ichtung aus [194]asictext holen  ***
  731. 10470 ;
  732. 10480  [214]chkcom; auf [203]omma pruefen
  733. 10490  [214]getbyt; [210]ichung in [216] holen
  734. 10500 ;
  735. 10510 ;***  [210]ichtung auswerten  ***
  736. 10520 ;
  737. 10530 ;         cpx #$00      ; ist [210]ichtung = 0 ?
  738. 10540  [247]waagrecht; => [210]ichtung = 0
  739. 10550 ;
  740. 10560  [202]#$40; [210]ichtung senkrecht: [201]nkrement ist $0140 = 320
  741. 10570  [210]increm; lsb speichern
  742. 10580  [202]#$01
  743. 10590  [210]increm+1; msb speichern
  744. 10600  [213]char1; weiter zur [194]erechnung
  745. 10610 ;
  746. 10620 waagrecht [211]increm+1; [210]ichtung waagrecht: [201]nkrement = $0008 = 8; msb
  747. 10630  [202]#$08; lsb
  748. 10640  [210]increm; speichern
  749. 10650 ;
  750. 10660 ;***  [208]osition in der [194]itmap berechnen ***
  751. 10670 ;
  752. 10680 ;***  [218]eile * 320  ***
  753. 10690 ;
  754. 10700 char1 [202]#$00; lsb(hpoint) = 0
  755. 10710  [210]hpoint+1; speichern
  756. 10720 ;
  757. 10730  [202]zeile; [218]eile in [193]kku; [193]kku(zeile)*5=[193]kku*4+[218]eile
  758. 10740  [203]; * 2
  759. 10750  [203]; * 2
  760. 10760  [197]zeile; + [218]eile
  761. 10770 ;
  762. 10780  [205]; [193]kku(5*[218]eile)*64 = [193]kku*256/4
  763. 10790  [208]hpoint+1; => lsb -> msb und 16-[194]it [196]ivision mit 4
  764. 10800  [205]
  765. 10810  [208]hpoint+1
  766. 10820  [197]#>(bitmap); [193]kku(320*[218]eile)+[194]itmap
  767. 10830  [210]hpoint+2
  768. 10840 ;
  769. 10850 ;***  [211]palte * 8 + [200]point  ***
  770. 10860 ;
  771. 10870  [202]spalte; [211]palte in [193]kku holen
  772. 10880  [203]; * 2
  773. 10890  [203]; * 2
  774. 10900  [203]; * 2
  775. 10910  [244]addspalte; [213]ebertrag ?
  776. 10920  [201]hpoint+2; msb(hpoint) + 1
  777. 10925  [229]; [213]ebertrag loeschen
  778. 10930 addspalte [197]hpoint+1; lsb(hpoint) = lsb(hpoint) + [211]palte * 8
  779. 10940  [210]hpoint+1; speichern
  780. 10950  [244]changestr; [213]ebertrag ?
  781. 10960  [201]hpoint+2; msb(hpoint) + 1
  782. 10970 ;
  783. 10980 ;***  [211]tring auslesen und wandeln  ***
  784. 10990 ;
  785. 11000 changestr [195]#$00; [201]ndex = 0
  786. 11010 strloop [212]index; speichern
  787. 11020 ;
  788. 11030 char3 [202]$ffff,y; y-tes [218]eichen von [211]tring auslesen
  789. 11040 ;
  790. 11050 ;***  [211]tring wandeln  ***
  791. 11060 ;
  792. 11070  [241]char5; [218]eichen > 128
  793. 11080  [196]#32; < 32 ? oder = <[211]pace> ?
  794. 11090  [247]char6; <[211]pace> -> bleibt unveraendert
  795. 11110  [244]nexty; [211]teuerzeichen ueberspringen
  796. 11120 char11 [196]#64; < 64 ; [211]onderzeichen ?
  797. 11130  [244]char6; [211]onderzeichen bleiben unveraendert
  798. 11140  [196]#96; < 96 ; [203]leinbuchstabe ?
  799. 11150  [245]char4; 96 =< [218]eichen < 128 => 5. [194]it loeschen
  800. 11160  [198]#%10111111; 6. [194]it loeschen, da [203]leinbuchstabe
  801. 11170  [213]char6; weitermachen
  802. 11180 char4 [198]#%11011111; 5. [194]it loeschen, da [199]rossbuchstabe
  803. 11190  [213]char6; weitermachen
  804. 11200 char5 [196]#160; < 160 ? [211]teuerzeichen ?
  805. 11210  [244]nexty; [211]teuerzeichen ueberspringen
  806. 11220  [247]char6; <2. [211]pace> -> bleibt unveraendert
  807. 11230  [196]#192; < 192 ? [199]rafikzeichen ?
  808. 11240  [245]char7; [196]oppelbelegung
  809. 11250  [200]#%11000000; 6. und 7. [194]it umkehren
  810. 11260  [213]char6; weitermachen
  811. 11270 char7 [196]#224; =< 224 ? [199]rossbuchstaben ([196]oppelbelegung)
  812. 11280  [247]char9; <3. [211]pace>
  813. 11300  [198]#%01111111; 7. [194]it loeschen
  814. 11320  [196]#127; [195]ode = 255 (=127 da 7. [194]it geloescht)
  815. 11330  [246]char6; weiter
  816. 11340  [202]#94; 255 -> 94
  817. 11350  [213]char6; [199]rafikzeichen, weitermachen
  818. 11360 char9 [202]#32; <3. [211]pace>
  819. 11385 ;
  820. 11390 ;***  [195]har pointer im [218][211][193] berechenen  ***
  821. 11400 ;
  822. 11410 char6 [194]#$00; msb(mvchar) = 0
  823. 11420  [211]mvchar+2; speichern
  824. 11430 ;
  825. 11440  [203]; mvchar * 8
  826. 11450  [207]mvchar+2
  827. 11460  [203]
  828. 11470  [207]mvchar+2
  829. 11480  [203]
  830. 11490  [207]mvchar+2; gleichzeitig [195]arry-[198]lag loeschen
  831. 11500  [210]mvchar+1; lsb speichern
  832. 11510  [202]#charhi; msb von [195]haracter-[210][207][205]
  833. 11520  [197]mvchar+2; addieren
  834. 11530  [210]mvchar+2; msb speichern
  835. 11540 ;
  836. 11550 ;***  [218]eichen aus [218][211][193] in [194]itmap schreiben  ***
  837. 11560 ;
  838. 11570  [232]; [201]nterrupt sperren
  839. 11580  [202]$01; [208]rozessorport auslesen
  840. 11590  [210]processor; [201]nhalt sichern
  841. 11600  [198]#%11111011; [218][211][193]-[210][207][205] zum [204]esen freigeben
  842. 11610  [210]$01; zurueckschreiben
  843. 11620 ;
  844. 11630  [195]#$07; [201]ndex fuer 8 [211]chleifendurchlaeufe
  845. 11640 mvchar [202]$ffff,y; [194]yte aus [218][211][193]-[210][207][205][160]auslesen
  846. 11650 hpoint [210]$ffff,y; [194]yte in [194]itmap schreiben
  847. 11660  [236]; [201]ndex erniedriegen
  848. 11670  [240]mvchar; schon fertig ? => [206]ein, [211]prung nach mvchar
  849. 11680 ;
  850. 11690  [202]processor; alten [208]rozessorportzustand wieder holen
  851. 11700  [210]$01; speichern
  852. 11710  [231]; [201]nterrupt wieder freigeben
  853. 11720 ;
  854. 11730 ;***  [194]itmap um [201]nkrement erhoehen  ***
  855. 11740 ;
  856. 11750  [229]; hpoint + increment
  857. 11760  [202]hpoint+1; lsb
  858. 11770  [197]increm; addieren
  859. 11780  [210]hpoint+1; speichern
  860. 11790  [202]hpoint+2; msb
  861. 11800  [197]increm+1; addieren
  862. 11810  [210]hpoint+2; speichern
  863. 11820 ;
  864. 11830 nexty [195]index; [201]ndex in [217]
  865. 11840  [237]; + 1
  866. 11850  [193]strlen; ist [201]ndex schon [211]tringlaenge ?
  867. 11860  [247]charend; [201]ndex = [211]tringlaenge => [210]outinenende
  868. 11870  [213]strloop; => [201]ndex < [211]tringlaenge
  869. 11880 ;
  870. 11890 charend [227]; [201]ndex = [211]tringlaenge => [210]outinenende
  871. 11900 ;
  872. 11910 ;***  [200]ilfszellen  ***
  873. 11920 ;
  874. 11930 zeile [165]$00; [218]eile
  875. 11940 spalte [165]$00; [211]palte
  876. 11950 strlen [165]$00; [211]tringlaenge
  877. 11960 index [165]$00; [201]ndex
  878. 11970 increm [165]$00,$00; [201]ncrement
  879. 11980 processor [165]$00; [208]rozessorportzustand
  880. 11990 ;
  881. 12000 ;******************
  882. 12010 ;***  [200]ardcopy  ***
  883. 12020 ;******************
  884. 12030 ;
  885. 12040 ;***  [204]abels  ***
  886. 12050 ;
  887. 12060 [163]setfls=$ffba; [198]ileparameter setzen
  888. 12070 [163]open=$ffc0; [198]ile eroeffnen
  889. 12080 [163]close=$ffc3; [198]ile schliessen
  890. 12090 [163]chkout=$ffc9; [195][205][196]-[205]odus ein
  891. 12100 [163]clrch=$ffcc; [195][205][196]-[205]odus aus
  892. 12110 [163]print=$ffd2; [218]eichen ausgeben
  893. 12120 ;
  894. 12130 ;***  [205]akros  ***
  895. 12140 ;
  896. 12150 [161]esc; [197][211][195]-[211]equenz uebermitteln
  897. 12160  [202]#$1b; [197][211][195]-[211]equenz
  898. 12170  [214]print; [218]eichen zum [196]rucker senden
  899. 12180 [162]
  900. 12190 ;
  901. 12200 [161]cr; [195][210]-[211]equenz uebermitteln
  902. 12210  [202]#$0d; [195][210]-[211]equenz
  903. 12220  [214]print; [218]eichen zum  [196]rucker senden
  904. 12230 [162]
  905. 12240 ;
  906. 12250 [161]init; [196]rucker initialisieren
  907. 12260  esc; [197][211][195] @ ; 27 64 ; $1b $40
  908. 12270  [202]#$40; @
  909. 12280  [214]print; [218]eichen zum [196]rucker senden
  910. 12290  cr
  911. 12300 [162]
  912. 12310 ;
  913. 12320 ;***  [207][208][197][206] 4,4,1 : [195][205][196] 4  ***
  914. 12330 ;
  915. 12340 hc [202]#$04; logische [198]ilenummer
  916. 12350  [194]#$04; [199]eraeteadresse 4 fuer [196]rucker
  917. 12360  [195]#$01; [211]ekundaeradresse 1 fuer [204]inearkanal
  918. 12370  [214]setfls; [198]ileparameter setzen
  919. 12380  [214]open; [198]ile eroeffnen
  920. 12390  [194]#$04; logische [198]ilenummer
  921. 12400  [214]chkout; [195]ommunicationn direct ein
  922. 12410 ;
  923. 12420 ;***  [197][211][195] @, [197][211][195] 3 n, [197][211][195] l n  ***
  924. 12430 ;
  925. 12440  init; [197][211][195] @, [196]rucker initialisieren
  926. 12450 ;
  927. 12460  esc; [197][211][195] 3 n (n = 24), [218]eilenvorschub auf 24/216 [218]oll
  928. 12470  [202]#$33; '3'
  929. 12480  [214]print; [218]eichen '3' zum [196]rucker senden
  930. 12490  [202]#$18; n = $18 = 24
  931. 12500  [214]print; [195][200][210]$(24) zum [196]rucker senden
  932. 12510  cr
  933. 12520 ;
  934. 12530  esc; [197][211][195] l n (n = 12), linker [210]and bei 12 setzen
  935. 12540  [202]#$6c; 'l'
  936. 12550  [214]print; [218]eichen 'l' zum [196]rucker senden
  937. 12560  [202]#$0c; n = $0c = 12
  938. 12570  [214]print; [195][200][210]$(12) zum [196]rucker senden
  939. 12580  cr
  940. 12590 ;
  941. 12600 ;***  [210]outinenvariablen initialisieren  ***
  942. 12610 ;
  943. 12620  [202]#<(bitmap); [194]itmapadresse im [196]ummy schreiben
  944. 12630  [210]dummy+1; lsb
  945. 12640  [202]#>(bitmap)
  946. 12650  [210]dummy+2; msb
  947. 12660 ;
  948. 12670  [202]#$0c; 12 [218]eilen
  949. 12680  [210]line; speichern
  950. 12690 ;
  951. 12700 ;***  [199]rafik einschalten: [197][211][195] [204] n1 n2  ***
  952. 12710 ;
  953. 12720 lnloop esc
  954. 12730  [202]#$4c; '[204]'
  955. 12740  [214]print; [218]eichen '[204]' zum [196]rucker senden
  956. 12750  [202]#$80; n1 = $80 = 128 = lsb
  957. 12760  [214]print; [195][200][210]$(128) zum [196]rucker senden
  958. 12770  [202]#$02; n2 = $02 =   2 = msb
  959. 12780  [214]print; [195][200][210]$(2)[160]zum [196]rucker senden
  960. 12790 ;
  961. 12800 ;***  [194]lock index  ***
  962. 12810 ;
  963. 12820  [202]#40; 40 [194]loecke
  964. 12830  [210]block; speichern
  965. 12840 ;
  966. 12850 ;***  ein 8-[194]yte [194]lock speigeln  ***
  967. 12860 ;
  968. 12870 bkloop [195]#$00; [194]lockschleife
  969. 12880 turn1 [194]#$00
  970. 12890 dummy [202]$ffff,y; [194]itmapbyte in [193]kku einlesen
  971. 12900 turn2 [203]; [194]it aus [194]itmapbyte auslesen
  972. 12910  [207]chr,x; [194]it in [196]ruckerbyte reinschieben
  973. 12920  [239]
  974. 12930  [192]#$08; ist [216] schon 8 ?
  975. 12940  [246]turn2; => [216] <> 8 => [194]itmapbytes noch nicht abgearbeitet
  976. 12950  [237]
  977. 12960  [193]#$08; ist [217] schon 8 ?
  978. 12970  [246]turn1; => [217]<> 8 => [196]ruckerbytes noch nicht fertig
  979. 12980 ;
  980. 12990 ;***  8-[194]yte [194]lock drucken  ***
  981. 13000 ;
  982. 13010  [194]#$00; [201]ndex auf 0 setzen
  983. 13020 prnt [202]chr,x; x-tes [196]ruckerbyte in [193]kku
  984. 13030  [214]print; [194]yte drucken
  985. 13040  [214]print; [194]yte drucken
  986. 13050  [239]; [201]ndex erhoehen
  987. 13060  [192]#$08; ist [216] schon 8 ?
  988. 13070  [246]prnt; => [216] <> 8 => naechstes [194]yte drucken
  989. 13080 ;
  990. 13090 ;***  [211]chleifenfortschaltung  ***
  991. 13100 ;
  992. 13110  [229]; [194]itmapbyte + 8
  993. 13120  [202]dummy+1; lsb
  994. 13130  [197]#$08; 8 addieren
  995. 13140  [210]dummy+1; speichern
  996. 13150  [244]notinc; kein [213]ebertrag
  997. 13160  [201]dummy+2; => [213]ebertrag, msb(dummy) + 1
  998. 13170 ;
  999. 13180 notinc [199]block; block = block - 1
  1000. 13190  [246]bkloop; ist [194]lock schon 0 ? => [194]lock <> 0
  1001. 13200 ;
  1002. 13210 ;***  [195][210] senden  ***
  1003. 13220 ;
  1004. 13230  cr
  1005. 13240 ;
  1006. 13250 ;***  [211]chleifenfortschaltung  ***
  1007. 13260 ;
  1008. 13270  [199]line; line = line - 1
  1009. 13280  [246]lnloop; ist [204]ine schon 0 ? => [204]ine <> 0
  1010. 13290 ;
  1011. 13300 ;***  [206][207][212]([195][205][196] 4) : [195][204][207][211][197] 4  ***
  1012. 13310 ;
  1013. 13320  init; [196]rucker initialisieren
  1014. 13330  [214]clrch; [195]ommunication direct aus
  1015. 13340  [202]#$04; logische [198]ilenummer
  1016. 13350  [214]close; [198]ile schliessen
  1017. 13360 ;
  1018. 13370  [227]; [210]outinenende
  1019. 13380 ;
  1020. 13390 ;***  [200]ilfszellen  ***
  1021. 13400 ;
  1022. 13410 chr [165]$00,$00,$00,$00; [196]ruckerbytes
  1023. 13420  [165]$00,$00,$00,$00
  1024. 13430 block [165]$00; [194]lockindex
  1025. 13440 line [165]$00; [204]ineindex
  1026. 13450 ;
  1027. 14000 ;**********************
  1028. 14010 ;***  [211]ave-[210]outine  ***
  1029. 14020 ;**********************
  1030. 14030 ;
  1031. 14040 ;***  [204]abels  ***
  1032. 14050 ;
  1033. 14060 [163]listen=$ffb1; [198]loppy zum [197]mpfang schalten
  1034. 14070 [163]salist=$ff93; [211]ekundaeradresse fuer [204][201][211][212][197][206]
  1035. 14080 [163]clsfile=$f642; [198]ile schliessen
  1036. 14090 [163]sendnm=$f3d5; [198]ilename fuer [204][201][211][212][197][206] und [212][193][204][203]
  1037. 14100 [163]iecout=$ffa8; [194]yte auf seriellem [194]us ausgeben
  1038. 14110 ;
  1039. 14120 [163]adress1=$fa; [218][208]-[211]peicher fuer lsb([194]itmapbyte)
  1040. 14130 [163]adress2=$fb; [218][208]-[211]peicher fuer msb([194]itmapbyte)
  1041. 14140 ;***  [205]akro  ***
  1042. 14150 ;
  1043. 14160 [161]filename; [198]ilename uebermitteln
  1044. 14170  [214]chkcom; auf [203]omma pruefen
  1045. 14180  [214]frmevl; [211]tring holen
  1046. 14190  [214]erestr; [211]rtingverwalten
  1047. 14200 ;
  1048. 14210  [210]$b7; [198]ilenamenlaenge speichern
  1049. 14220  [202]$22; lsb der [193]dresse auf den [198]ilenamen
  1050. 14230  [210]$bb; in [218][208]-[218]eiger auf [198]ilename speichern
  1051. 14240  [202]$23; msb
  1052. 14250  [210]$bc; in [218][208]-[218]eiger auf [198]ilename speichern
  1053. 14260 [162]
  1054. 14270 ;
  1055. 14280 ;***  [198]ile eroeffnen  ***
  1056. 14290 ;
  1057. 14300 sa filename; [198]ilename uebermitteln
  1058. 14310 ;
  1059. 14320  [202]#$08; [199]eraeteadresse
  1060. 14330  [210]$ba; [218][208]-[218]eiger fuer aktuelles [199]eraet
  1061. 14340  [202]#$61; [211]ekundaeradresse 1 fuer [211]peichern + $60
  1062. 14350  [210]$b9; [218][208]-[218]eiger fuer aktuelle [211]ekundaeradresse
  1063. 14360 ;
  1064. 14370  [214]sendnm; [198]ilename senden
  1065. 14380 ;
  1066. 14390  [202]$ba; [199]eraeteadresse
  1067. 14400  [214]listen; [204]isten senden
  1068. 14410  [202]$b9; [211]ekundaeradresse
  1069. 14420  [214]salist; [211]ekundaeradresse senden
  1070. 14430 ;
  1071. 14440 ;***  [208]rogrammadresse $8000  ***
  1072. 14450 ;
  1073. 14460  [202]#<(bitmap); lsb(bitmap)
  1074. 14465  [210]adress1; in [218][208] schreiben
  1075. 14470  [214]iecout; auf seriellen [194]us ausgeben
  1076. 14480  [202]#>(bitmap); msb(bitmap)
  1077. 14485  [210]adress2; in [218][208] schreiben
  1078. 14490  [214]iecout; auf seriellen [194]us ausgeben
  1079. 14500 ;
  1080. 14510 ;***  [194]itmap speichern  ***
  1081. 14520 ;
  1082. 14580  [194]#$0f; $0f00 [194]itmapbytes speichern
  1083. 14590 save2 [195]#$00; innere [211]chleife
  1084. 14600 save1 [202](adress1),y; [194]itmapbyte in [193]kku holen
  1085. 14610  [214]iecout; auf seriellen [194]us ausgeben
  1086. 14620  [237]
  1087. 14630  [246]save1; schon 256 [194]ytes ausgegeben ?
  1088. 14640  [201]adress2; adress2 = adress2 + 1
  1089. 14650  [238]; aeusseren [211]chleifenindex um 1 erniedrigen
  1090. 14660  [246]save2; schon $0f00 [194]ytes abgespeichert?
  1091. 14670 ;
  1092. 14680 ;***  [198]ile schliessen  ***
  1093. 14690 ;
  1094. 14700  [214]clsfile; [198]ile schliessen
  1095. 14710 ;
  1096. 14720  [227]; [210]outinenende
  1097. 14730 ;
  1098. 15000 ;**********************
  1099. 15010 ;***  [204]oad-[210]outine  ***
  1100. 15020 ;**********************
  1101. 15030 ;
  1102. 15040 ;***  [204]abels  ***
  1103. 15050 ;
  1104. 15060 [163]talk=$ffb4; [212][193][204][203] senden
  1105. 15070 [163]satalk=$ff96; [211]ekundaeradresse fuer [212][193][204][203][160]senden
  1106. 15080 [163]iecin=$ffa5; [218]eichen von seriellen [194]us holen
  1107. 15090 [163]status=$90; [211]tatusbyte [211][212]
  1108. 15100 ;
  1109. 15110 ;***  [198]ile eroeffnen  ***
  1110. 15120 ;
  1111. 15130 lo filename; [198]ilname uebermitteln
  1112. 15140 ;
  1113. 15150  [202]#$08; [199]eraeteadresse
  1114. 15160  [210]$ba; [218][208]-[218]eiger fuer aktuelles [199]ereaet
  1115. 15170  [202]#$60; [211]ekundaeradresse 0 + $60
  1116. 15180  [210]$b9; [218][208]-[218]eiger fuer aktuelle [211]ekundaeradresse
  1117. 15190 ;
  1118. 15200  [214]sendnm; [198]ilenamen senden
  1119. 15210 ;
  1120. 15220  [202]$ba; [199]eraeteadresse
  1121. 15230  [214]talk; [212]alk senden
  1122. 15240  [202]$b9; [211]ekundaeradresse
  1123. 15250  [214]satalk; [211]ekundaeradresse fuer [212]alk senden
  1124. 15260 ;
  1125. 15270 ;***  [208]rogrammadresse ueberlesen  ***
  1126. 15280 ;
  1127. 15290  [214]iecin; [194]yte von seriellen [194]us einlesen
  1128. 15300  [214]iecin; [194]yte von seriellen [194]us einlesen
  1129. 15310 ;
  1130. 15320 ;***  [194]itmap einlesen  ***
  1131. 15330 ;
  1132. 15340  [202]#<(bitmap); [194]itmapadresse in [218][208] schreiben
  1133. 15350  [210]adress1; lsb
  1134. 15360  [202]#>(bitmap)
  1135. 15370  [210]adress2; msb
  1136. 15380 ;
  1137. 15390  [194]#$0f; aeusseren [211]chleifenzaehler auf $0f setzen
  1138. 15400  [195]#$00; inneren [211]chleifenzaehler auf $00 setzen
  1139. 15410 load1 [214]iecin; [194]yte von seriellen [194]us einlesen
  1140. 15420  [210](adress1),y; [194]yte in [194]itmap schreiben
  1141. 15430  [202]status; [211]tatusbyte [211][212] einlesen
  1142. 15440  [246]load2; => [197][207][198] ([197]nd of [198]ile)
  1143. 15450  [237]
  1144. 15460  [246]load1; ist innere [211]chleifen schon abgeadreitet ?
  1145. 15470  [201]adress2; msb(adress) = msb(adress) + 1
  1146. 15480  [238]
  1147. 15490  [246]load1; schon alle [194]ytes eingelesen ? (-> load1, da y=0)
  1148. 15500 ;
  1149. 15510 ;***  [198]ile schliessen  ***
  1150. 15520 ;
  1151. 15530 load2 [214]clsfile; [198]ile schliessen
  1152. 15540 ;
  1153. 15550  [227]; [210]outinenende
  1154. 15560 ;
  1155. 15570 ;***  [197]nde des [211]ourcetextes  ***
  1156. 15580 ;
  1157.