home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 67 / 64er_Magazin_Sonderheft_67_19xx_Markt__Technik_de_Side_A.d64 / erweiterung.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  7KB  |  436 lines

  1. 100 ;erweiterung.src
  2. 110 ;
  3. 120 *=49152
  4. 130 &=*
  5. 140 ;
  6. 150 zp1=$fb      ;pointer zeropage
  7. 160 zp2=$fd      ;von 252 bis 255
  8. 170 ;
  9. 180 bsch   =$0400
  10. 190 buffer =$c400; bild
  11. 200 chrout =$ffd2; ausgabe 1 zeichen
  12. 210 ;
  13. 220 pa=56576     ; userport a
  14. 230 pb=56577     ; userport b
  15. 240 d1=56578     ; datenricht. port a
  16. 250 d2=56579     ; datenricht. port b
  17. 260 ;
  18. 270 dap1=830     ; 8255 port a
  19. 280 dap2=831     ; 8255 port b
  20. 290 dap3=832     ; 8255 port c
  21. 300 ;
  22. 310 ;
  23. 320 jmp demo     ; testprogramm
  24. 330 jmp resetout ; reset fuer ausgabe
  25. 340 jmp ausgabe  ; ausgabe dap1-dap3
  26. 350 jmp resetin  ; reset fuer eingabe
  27. 360 jmp eingabe  ; 8255 in dap1-dap3
  28. 370 jmp farbe    ; ausgabe muster
  29. 380 jmp bschload ; bildschirm aufbauen
  30. 390 ;
  31. 400 reset         ;reset allgemein
  32. 410 sei           ;irq verhindern
  33. 420 lda d1        ;porta, pa2=ausgabe
  34. 430 ora #4
  35. 440 sta d1
  36. 450 ;
  37. 460 lda #255      ;portb=ausgabe
  38. 470 sta d2
  39. 480 ;
  40. 490 lda pa
  41. 500 pha           ;porta merken
  42. 510 ora #%00000100
  43. 520 sta pa        ;waehlt4042
  44. 530 lda #%00001110;next data fuer 8255
  45. 540 sta pb        ;ist steuerbefehl
  46. 550 lda pa
  47. 560 and #%11111011
  48. 570 sta pa        ;waehlt 8255
  49. 580 ;
  50. 590 ;
  51. 600 lda btr       ;steuerbefehl fuer
  52. 610 ora #%10000000;   8255
  53. 620 sta pb
  54. 630 ;
  55. 640 lda #0        ;portb=eingabe
  56. 650 sta d2
  57. 660 pla           ;porta
  58. 670 sta pa        ;alter wert
  59. 680 cli
  60. 690 rts
  61. 700 ;
  62. 710 flag. 0
  63. 720 btr .%00000000;steuerbefehl
  64. 730 logiko        ;ausgabebefehle
  65. 740 .%00000010,%00000110,%00001010
  66. 750 ;
  67. 760 out           ;ausgabe
  68. 770 sei
  69. 780 ;
  70. 790 ldx #0        ;schleife =0
  71. 800 lda #255      ;portb = ausgabe
  72. 810 sta d2
  73. 820 lda pa
  74. 830 pha           ;port a merken
  75. 840 lout1         ;beginn schleife
  76. 850 lda pa
  77. 860 ora #%00000100
  78. 870 sta pa        ;waehlt 4042
  79. 880 lda logiko,x  ;daten sind ausgaben
  80. 890 sta pb        ; fuer 8255
  81. 900 lda pa
  82. 910 and #%11111011
  83. 920 sta pa        ;waehlt 8255
  84. 930 lda dap1,x    ;daten an 8255
  85. 940 sta pb
  86. 950 inx
  87. 960 cpx #3
  88. 970 bne lout1     ;schleifenende
  89. 980 lda #0
  90. 990 sta d2        ;pb = eingabe
  91. 1000 pla
  92. 1010 sta pa        ;pa = alter wert
  93. 1020 cli
  94. 1030 rts          ;ende out
  95. 1040 ;
  96. 1050 bschload     ;holt bildschirm
  97. 1060 lda #11
  98. 1070 sta 53280
  99. 1080 sta 53281
  100. 1090 lda #"[144]"
  101. 1100 jsr chrout
  102. 1110 lda #"[147]"
  103. 1120 jsr chrout
  104. 1130 ;
  105. 1140 lda #<bsch
  106. 1150 ldx #>bsch
  107. 1160 sta zp1
  108. 1170 stx zp1+1
  109. 1180 lda #<buffer
  110. 1190 ldx #>buffer
  111. 1200 sta zp2
  112. 1210 stx zp2+1
  113. 1220 ;
  114. 1230 ldx #3
  115. 1240 ldy #0
  116. 1250 bslo1
  117. 1260 lda (zp2),y
  118. 1270 sta (zp1),y
  119. 1280 iny
  120. 1290 bne bslo1
  121. 1300 inc zp1+1
  122. 1310 inc zp2+1
  123. 1320 dex
  124. 1330 bne bslo1
  125. 1340 rts
  126. 1350 ;
  127. 1360 tbs ."qwertyuiop@*asdfghjkl:;="
  128. 1370 tbr ./qwertyuiop@*asdfghjkl:;=/
  129. 1380 tbz .'qwertyuiop@*asdfghjkl:;='
  130. 1390 tposl.<321,<324,<327,<330,<333
  131. 1400 .<336,<339,<342,<348,<351,<354
  132. 1410 .<357,<522,<525,<528,<531,<534
  133. 1420 .<537,<540,<543,<546,<549,<552
  134. 1430 .<555
  135. 1440 ;
  136. 1450 tposh.>321,>324,>327,>330,>333
  137. 1460 .>336,>339,>342,>348,>351,>354
  138. 1470 .>357,>522,>525,>528,>531,>534
  139. 1480 .>537,>540,>543,>546,>549,>552
  140. 1490 .>555
  141. 1500 ;
  142. 1510 tbyte .1,1,1,1,1,2,2,2,0,0,0,0
  143. 1520 .1,1,1,2,2,2,2,2,0,0,0,0
  144. 1530 tbit .8,16,32,64,128,2,16,64
  145. 1540 .1,2,4,16,4,2,1,8,4,1,32,128
  146. 1550 .128,64,32,8
  147. 1560 zeichen .0,0
  148. 1570 te1. /     daten lesen              (c)m&t/
  149. 1580 te2. /     daten ausgeben           (c)m&t    /
  150. 1590 tea. /fehler ! port ist eingabe/
  151. 1600 ;
  152. 1610 demo          ;einsprung testprg
  153. 1620 lda #1
  154. 1630 sta flag
  155. 1640 lda #87
  156. 1650 sta zeichen
  157. 1660 lda #81
  158. 1670 sta zeichen+1
  159. 1680 lda #0
  160. 1690 sta btr
  161. 1700 jsr reset
  162. 1710 jsr bschload
  163. 1720 ldx #0
  164. 1730 tel2
  165. 1740 lda te2,x
  166. 1750 sta bsch,x
  167. 1760 inx
  168. 1770 cpx #40
  169. 1780 bne tel2
  170. 1790 ;
  171. 1800 lda #0
  172. 1810 bset0
  173. 1820 sta dap1
  174. 1830 sta dap2
  175. 1840 sta dap3
  176. 1850 change
  177. 1860 jsr farbe
  178. 1870 bset2
  179. 1880 jsr out
  180. 1890 bset1
  181. 1900 lda #0
  182. 1910 sta 198
  183. 1920 tal
  184. 1930 lda 198
  185. 1940 beq tal
  186. 1950 ;
  187. 1960 lda #0
  188. 1970 sta 198
  189. 1980 lda 631
  190. 1990 sec
  191. 2000 cmp #3
  192. 2010 bne skip1
  193. 2020 lda #"[147]"
  194. 2030 jmp chrout
  195. 2040 rts
  196. 2050 skip1
  197. 2060 sec
  198. 2070 cmp #""
  199. 2080 bne skip2
  200. 2090 lda #0
  201. 2100 jmp bset0
  202. 2110 skip2
  203. 2120 sec
  204. 2130 cmp #32
  205. 2140 bne skip3
  206. 2150 ldx #0
  207. 2160 chal1
  208. 2170 lda dap1,x
  209. 2180 eor #255
  210. 2190 sta dap1,x
  211. 2200 inx
  212. 2210 cpx #3
  213. 2220 bne chal1
  214. 2230 jmp change
  215. 2240 skip3
  216. 2250 sec
  217. 2260 cmp #"[133]"
  218. 2270 bne skip4
  219. 2280 jmp eintest
  220. 2290 ;
  221. 2300 skip4
  222. 2310 ;
  223. 2320 ldx #0
  224. 2330 bswert
  225. 2340 sec
  226. 2350 cmp tbs,x
  227. 2360 beq bsetout
  228. 2370 inx
  229. 2380 cpx #24
  230. 2390 bne bswert
  231. 2400 beq bset1
  232. 2410 ;
  233. 2420 bsetout
  234. 2430 lda tbyte,x
  235. 2440 tay
  236. 2450 lda dap1,y
  237. 2460 eor tbit,x
  238. 2470 sta dap1,y
  239. 2480 jsr farbset
  240. 2490 jmp bset2
  241. 2500 ;
  242. 2510 farbset
  243. 2520 lda #<bsch
  244. 2530 sta zp1
  245. 2540 lda #>bsch
  246. 2550 sta zp1+1
  247. 2560 lda tposl,x
  248. 2570 clc
  249. 2580 adc zp1
  250. 2590 sta zp1
  251. 2600 bcc bsl1
  252. 2610 inc zp1+1
  253. 2620 bsl1
  254. 2630 lda tposh,x
  255. 2640 clc
  256. 2650 adc zp1+1
  257. 2660 sta zp1+1
  258. 2670 ;
  259. 2680 lda zp1
  260. 2690 sta zp2
  261. 2700 lda zp1+1
  262. 2710 clc
  263. 2720 adc #$d4
  264. 2730 sta zp2+1
  265. 2740 ;
  266. 2750 lda tbyte,x
  267. 2760 tay
  268. 2770 lda dap1,y
  269. 2780 and tbit,x
  270. 2790 bne gesetzt
  271. 2800 ldy #0
  272. 2810 lda zeichen
  273. 2820 sta (zp1),y
  274. 2830 lda #5
  275. 2840 sta (zp2),y
  276. 2850 lda flag
  277. 2860 beq quit1
  278. 2870 iny
  279. 2880 lda tbz,x
  280. 2890 sta (zp1),y
  281. 2900 lda #13
  282. 2910 sta (zp2),y
  283. 2920 quit1
  284. 2930 rts
  285. 2940 ;
  286. 2950 gesetzt
  287. 2960 ldy #0
  288. 2970 lda zeichen+1
  289. 2980 sta (zp1),y
  290. 2990 lda #26
  291. 3000 sta (zp2),y
  292. 3010 lda flag
  293. 3020 beq quit1
  294. 3030 iny
  295. 3040 lda tbr,x
  296. 3050 sta (zp1),y
  297. 3060 lda #1
  298. 3070 sta (zp2),y
  299. 3080 rts
  300. 3090 ;
  301. 3100 farbe          ;einsprung belegung
  302. 3110 ldx #0
  303. 3120 fal1
  304. 3130 jsr farbset
  305. 3140 inx
  306. 3150 cpx #24
  307. 3160 bne fal1
  308. 3170 rts
  309. 3180 ;
  310. 3190 logiki         ;eingabebefehle
  311. 3200 .%00000001,%00000101,%00001001
  312. 3210 ;
  313. 3220 in             ;einsprung eingabe
  314. 3230 sei
  315. 3240 ;
  316. 3250 ldx #0
  317. 3260 lda pa
  318. 3270 pha            ;pa merken
  319. 3280 lin1           ;beginn schleife
  320. 3290 lda pa
  321. 3300 ora #%00000100 ;schaltet auf 4042
  322. 3310 sta pa
  323. 3320 lda #255
  324. 3330 sta d2         ;pb=ausgabe
  325. 3340 lda logiki,x   ;data ist eingabe
  326. 3350 sta pb         ;fuer 8255
  327. 3360 lda pa
  328. 3370 and #%11111011
  329. 3380 sta pa         ;schaltet auf 8255
  330. 3390 lda #0
  331. 3400 sta d2         ;pb = eingabe
  332. 3410 lda pb         ;wert von pb
  333. 3420 sta dap1,x     ;auf dap1-dap3
  334. 3430 inx
  335. 3440 cpx #3
  336. 3450 bne lin1       ;ende schleife
  337. 3460 pla
  338. 3470 sta pa         ;pa = alter wert
  339. 3480 cli
  340. 3490 rts
  341. 3500 ;
  342. 3510 eintest        ; einsprung
  343. 3520 jsr bschload   ;eingabetest
  344. 3530 ldx #0
  345. 3540 tel1
  346. 3550 lda te1,x
  347. 3560 sta bsch,x
  348. 3570 inx
  349. 3580 cpx #40
  350. 3590 bne tel1
  351. 3600 ;
  352. 3610 lda #%00011011 ;steuerbefehl 8255
  353. 3620 sta btr        ;alle ports eingabe
  354. 3630 jsr reset
  355. 3640 lda #100
  356. 3650 sta zeichen
  357. 3660 lda #234
  358. 3670 sta zeichen+1
  359. 3680 ;
  360. 3690 lda #0
  361. 3700 sta 198
  362. 3710 ;
  363. 3720 tal1
  364. 3730 lda 198
  365. 3740 beq tal2
  366. 3750 ;
  367. 3760 lda #0
  368. 3770 sta 198
  369. 3780 lda 631
  370. 3790 sec
  371. 3800 cmp #3
  372. 3810 bne tal3
  373. 3820 lda #"[147]"
  374. 3830 jmp chrout
  375. 3840 rts
  376. 3850 ;
  377. 3860 tal3
  378. 3870 sec
  379. 3880 cmp #"[133]"
  380. 3890 bne tal1
  381. 3900 ;
  382. 3910 jmp demo
  383. 3920 ;
  384. 3930 tal2
  385. 3940 jsr in
  386. 3950 jsr farbe
  387. 3960 jmp tal1
  388. 3970 ;
  389. 3980 ;
  390. 3990 resetout      ;einsprung reset
  391. 4000 lda #0        ;fuer ausgabe
  392. 4010 sta flag
  393. 4020 lda #87
  394. 4030 sta zeichen
  395. 4040 lda #81
  396. 4050 sta zeichen+1
  397. 4060 lda #0        ;steuerbefehl 8255
  398. 4070 sta btr       ;alle ports=ausgabe
  399. 4080 sta dap1      ;hilfsregister 1=0
  400. 4090 sta dap2      ;              2=0
  401. 4100 sta dap3      ;              3=0
  402. 4110 jmp reset
  403. 4120 ;
  404. 4130 resetin       ;einspr.reset eing.
  405. 4140 lda #0
  406. 4150 sta flag
  407. 4160 lda #%00011011;8255 alle ports
  408. 4170 sta btr       ;eingabe
  409. 4180 jsr reset
  410. 4190 lda #100
  411. 4200 sta zeichen
  412. 4210 lda #234
  413. 4220 sta zeichen+1
  414. 4230 jsr reset
  415. 4240 jmp in
  416. 4250 ;
  417. 4260 ausg1
  418. 4270 jmp out
  419. 4280 ;
  420. 4290 ausgabe   ;einsprung ausgabe
  421. 4300 lda btr   ;falls btr <>0
  422. 4310 beq ausg1
  423. 4320 ;
  424. 4330 ldx #22   ;type mismatch error
  425. 4340 jmp $a43a ;ausgeben
  426. 4350 ;
  427. 4360 eing1
  428. 4370 jmp in
  429. 4380 ;
  430. 4390 eingabe   ;einsprung eingabe
  431. 4400 lda btr   ;falls btr <>0
  432. 4410 bne eing1
  433. 4420 ;
  434. 4430 ldx #22   ;type mismatch error
  435. 4440 jmp $a43a ;ausgeben
  436.