home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1985 December / 64er_Magazin_85-12_1985_Markt__Technik_de.d64 / quicksort.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  9KB  |  402 lines

  1. 10 sys36864:.opt p,oo:*= 52000
  2. 20 laenge1 = $b2
  3. 30 laenge2 = $b5
  4. 40 str1    = $b3
  5. 50 str2    = $b6
  6. 55 umult1  = $28
  7. 56 umult2  = $71
  8. 57 umult   = $b357
  9. 58 aarray  = $2f
  10. 59 vektor1 = $fb
  11. 60 vektor2 = $fd
  12. 100            jsr regset
  13. 101            ldx #0
  14. 102 marke1     lda laenge1,x
  15. 103            sta 700,x
  16. 104            inx
  17. 105            cpx #6
  18. 106            bne marke1
  19. 110            jsr hauptschl
  20. 111            ldx #0
  21. 112 marke2     lda 700,x
  22. 113            sta laenge1,x
  23. 114            inx
  24. 115            cpx #6
  25. 116            bne marke2
  26. 117            rts
  27. 130 ;
  28. 140 hauptschl  jsr hochz
  29. 145            jsr hollr
  30. 150            jsr lrvergl
  31. 160            cmp #0
  32. 170            beq z350
  33. 180            cmp #2
  34. 190            beq z350
  35. 195            jsr holxy
  36. 210            jsr evindi
  37. 220 z270       jsr xyvergl
  38. 230            cmp #2
  39. 240            beq z330
  40. 250 z280       jsr exindi
  41. 260            jsr einspr
  42. 270            cmp #2
  43. 280            beq z290
  44. 285            cmp #0
  45. 286            beq z290
  46. 290            jsr hochx
  47. 300            jmp z280
  48. 310 z290       jsr eyindi
  49. 320            jsr einspr
  50. 330            cmp #1
  51. 340            beq z300
  52. 345            cmp #0
  53. 346            beq z300
  54. 350            jsr runtery
  55. 360            jmp z290
  56. 370 z300       jsr xyvergl
  57. 380            cmp #2
  58. 390            beq z330
  59. 400            jsr swap
  60. 410            jsr hochx
  61. 420            jsr runtery
  62. 430            jmp z270
  63. 435 ;
  64. 440 z330       jsr pushly
  65. 460            jsr hauptschl
  66. 470 ;
  67. 480            jsr pushxr
  68. 500            jsr hauptschl
  69. 510 ;
  70. 940 z350       jmp runterz
  71. 1005 ;
  72. 1010 ;    vergleich str1 mit vergl$
  73. 1011 ;1) str1<vergl  2) str1>vergl
  74. 1015 ;
  75. 1020 einspr    ldy #$ff
  76. 1030 schl1     iny
  77. 1040           cpy laenge1
  78. 1050           bne weiter1
  79. 1060           lda #1
  80. 1070           jmp raus
  81. 1080 weiter1   cpy laenge2
  82. 1090           bne weiter2
  83. 1100           lda #2
  84. 1110           jmp raus
  85. 1120 weiter2   lda (str1),y
  86. 1130           cmp (str2),y
  87. 1140 beq schl1
  88. 1150           bcc weiter3+1
  89. 1160           lda #2
  90. 1170 weiter3   bit $1a9 ;maskierung fuer lda #1
  91. 1200           rts
  92. 1210 raus      ldx laenge1
  93. 1220           cpx laenge2
  94. 1230           bne fertig
  95. 1240           lda #0
  96. 1250 fertig    rts
  97. 1260 ;
  98. 1270 ;    vergleichen von x und y
  99. 1275 ;x>y lda #2  x<y lda #1  x=y lda #0
  100. 1280 ;
  101. 1290 xyvergl   lda xreg+1
  102. 1300           cmp yreg+1
  103. 1310           bne weiter4
  104. 1320           lda xreg
  105. 1330           cmp yreg
  106. 1340           beq gleich+1
  107. 1350 weiter4   bcs groesser+1
  108. 1360           lda #1
  109. 1370 gleich   .byt $2c,$a9,0 ;bit $00a9
  110. 1380 groesser  bit $2a9
  111. 1390           rts
  112. 1400 ;
  113. 1410 ;    vergleichen von l und r
  114. 1415 ;l>r lda #2  l<r lda #1  l=r lda #0
  115. 1420 ;
  116. 1430 lrvergl   lda lreg+1
  117. 1440           cmp rreg+1
  118. 1450           bne weiter5
  119. 1460           lda lreg
  120. 1470           cmp rreg
  121. 1480           beq gleich+1
  122. 1490 weiter5   bcs groesser+1
  123. 1500           lda #1
  124. 1510           rts
  125. 1985 ;
  126. 1990 ; register hoch- ung runterzaehlen
  127. 1995 ;
  128. 2000 hochz     clc
  129. 2020           lda zreg
  130. 2030 adc #4
  131. 2040           sta zreg
  132. 2050           lda zreg+1
  133. 2060           adc #0
  134. 2070           sta zreg+1
  135. 2090           rts
  136. 2100 runterz   sec
  137. 2120           lda zreg
  138. 2130           sbc #4
  139. 2140           sta zreg
  140. 2150           lda zreg+1
  141. 2160           sbc #0
  142. 2170           sta zreg+1
  143. 2190           rts
  144. 2200 hochx     clc
  145. 2220           lda xreg
  146. 2230           adc #1
  147. 2240           sta xreg
  148. 2250           lda xreg+1
  149. 2260           adc #0
  150. 2270           sta xreg+1
  151. 2290           rts
  152. 2300 runtery   sec
  153. 2320           lda yreg
  154. 2330           sbc #1
  155. 2340           sta yreg
  156. 2350           lda yreg+1
  157. 2360           sbc #0
  158. 2370           sta yreg+1
  159. 2390           rts
  160. 2985 ;
  161. 2990 ; die mit x/y indizierte variable
  162. 2991 ; wird gesucht z.b. ( a$(x) )
  163. 2995 ;
  164. 3000 xsuch     lda xreg
  165. 3010           asl
  166. 3015           tax
  167. 3020           lda xreg+1
  168. 3030           jsr prg1
  169. 3040           adc xreg
  170. 3050           tax
  171. 3060           tya
  172. 3070           adc xreg+1
  173. 3080           jmp prg2
  174. 3100 ysuch     lda yreg
  175. 3110           asl
  176. 3115           tax
  177. 3120           lda yreg+1
  178. 3130           jsr prg1
  179. 3131           adc yreg
  180. 3132           tax
  181. 3133           tya
  182. 3134           adc yreg+1
  183. 3135           jmp prg2
  184. 3140 vsuch     lda vergl
  185. 3150           asl
  186. 3155           tax
  187. 3160           lda vergl+1
  188. 3170           jsr prg1
  189. 3171           adc vergl
  190. 3172           tax
  191. 3173           tya
  192. 3174           adc vergl+1
  193. 3175           jmp prg2
  194. 3200 prg1      rol
  195. 3210           tay
  196. 3220           txa
  197. 3230           clc
  198. 3240           rts
  199. 3250 prg2      tay
  200. 3260           clc
  201. 3270           txa
  202. 3280           adc #7
  203. 3281           tax
  204. 3282           tya
  205. 3283           adc #0
  206. 3284           tay
  207. 3285           clc
  208. 3286           txa
  209. 3290           adc aarray
  210. 3300           sta vektor1
  211. 3310           tya
  212. 3320           adc aarray+1
  213. 3330           sta vektor1+1
  214. 3340           rts
  215. 3985 ;
  216. 3990 ;swap - vertauschen zweier strings
  217. 3995 ;
  218. 4000 swap      jsr xsuch
  219. 4010           lda vektor1
  220. 4020           sta vektor2
  221. 4030           lda vektor1+1
  222. 4040           sta vektor2+1
  223. 4050           jsr ysuch
  224. 4060           ldy #0
  225. 4070 schl2     lda (vektor1),y
  226. 4080           tax
  227. 4090           lda (vektor2),y
  228. 4100           sta (vektor1),y
  229. 4110           txa
  230. 4120           sta (vektor2),y
  231. 4130           iny
  232. 4140           cpy #3
  233. 4150           bne schl2
  234. 4160           rts
  235. 4985 ;
  236. 4990 ;     vergl = (xreg+yreg)/2
  237. 4995 ;
  238. 5000 rechnung  clc
  239. 5010           lda xreg
  240. 5020           adc yreg
  241. 5030           sta vergl
  242. 5040           lda xreg+1
  243. 5050           adc yreg+1
  244. 5060           lsr
  245. 5070           sta vergl+1
  246. 5080           ror vergl
  247. 5090           rts
  248. 5100 ;
  249. 5110 ;register auf ausgangswerte setzen
  250. 5120 ;
  251. 5200 regset    lda #0
  252. 5210           sta xreg
  253. 5215           sta xreg+1
  254. 5220           lda #<stack
  255. 5225           sta zreg
  256. 5230           lda #>stack
  257. 5235           sta zreg+1
  258. 5240           jsr xsuch
  259. 5245           inc xreg
  260. 5250           sec
  261. 5260           lda vektor1
  262. 5270           sbc #2
  263. 5280           sta vektor1
  264. 5290           lda vektor1+1
  265. 5300           sbc #0
  266. 5310           sta vektor1+1
  267. 5320           ldy #1
  268. 5325           sec
  269. 5330           lda (vektor1),y
  270. 5335           sbc #1
  271. 5340           sta yreg
  272. 5350           dey
  273. 5360           lda (vektor1),y
  274. 5365           sbc #0
  275. 5370           sta yreg+1
  276. 5380           jmp pushxy
  277. 5985 ;
  278. 5990 ;discriptoren in der zp einrichten
  279. 5995 ;
  280. 6000 exindi    jsr xsuch
  281. 6010           jmp discrip1
  282. 6020 ;
  283. 6030 eyindi    jsr ysuch
  284. 6040 ;
  285. 6050 discrip1  ldy #0
  286. 6060 schl3     lda (vektor1),y
  287. 6070           sta laenge1,y
  288. 6080           iny
  289. 6090           cpy #3
  290. 6100           bne schl3
  291. 6110           rts
  292. 6120 ;
  293. 6130 evindi    jsr rechnung
  294. 6135           jsr vsuch
  295. 6140           ldy #0
  296. 6150 schl4     lda (vektor1),y
  297. 6160           sta laenge2,y
  298. 6170           iny
  299. 6180           cpy #3
  300. 6190           bne schl4
  301. 6200           lda laenge2
  302. 6205           beq kzeichen
  303. 6210           cmp #21
  304. 6220           bcc kleiner
  305. 6230           lda #20
  306. 6240           sta laenge2
  307. 6250 kleiner   ldy #0
  308. 6260 nzeichen  lda (str2),y
  309. 6270           sta vstr,y
  310. 6280           iny
  311. 6290           cpy laenge2
  312. 6300           bne nzeichen
  313. 6310           lda #<vstr
  314. 6320           sta str2
  315. 6330           lda #>vstr
  316. 6340           sta str2+1
  317. 6350 kzeichen  rts
  318. 7000 stckvek   lda zreg
  319. 7010           sta vektor2
  320. 7020           lda zreg+1
  321. 7030           sta vektor2+1
  322. 7040           rts
  323. 7045 ;
  324. 7100 pushxr    jsr hollr
  325. 7105           jsr vektor4
  326. 7110           ldy #0
  327. 7120 schl5     lda xreg,y
  328. 7130           sta (vektor2),y
  329. 7150           iny
  330. 7160           cpy #2
  331. 7170           bne schl5
  332. 7172 schl6     lda rreg-2,y
  333. 7173           sta (vektor2),y
  334. 7174           iny
  335. 7175           cpy #4
  336. 7176           bne schl6
  337. 7177           rts
  338. 7178 ;
  339. 7180 pushly    jsr hollr
  340. 7185           jsr vektor4
  341. 7190           ldy #0
  342. 7200 schl7     lda lreg,y
  343. 7210           sta (vektor2),y
  344. 7230           iny
  345. 7240           cpy #2
  346. 7250           bne schl7
  347. 7261 schl8     lda yreg-2,y
  348. 7262           sta (vektor2),y
  349. 7263           iny
  350. 7264           cpy #4
  351. 7265           bne schl8
  352. 7266           rts
  353. 7270 ;
  354. 7280 holxy     ldy #0
  355. 7310 schl9     lda lreg,y
  356. 7320           sta xreg,y
  357. 7330           iny
  358. 7340           cpy #4
  359. 7350           bne schl9
  360. 7360           rts
  361. 7370 ;
  362. 7380 hollr     jsr stckvek
  363. 7400           ldy #0
  364. 7410 schl10    lda (vektor2),y
  365. 7420           sta lreg,y
  366. 7430           iny
  367. 7440           cpy #4
  368. 7450           bne schl10
  369. 7460           rts
  370. 7465 ;
  371. 7645 ;
  372. 7650 vektor4   jsr stckvek
  373. 7660           clc
  374. 7670           lda vektor2
  375. 7680           adc #4
  376. 7690           sta vektor2
  377. 7700           lda vektor2+1
  378. 7710           adc #0
  379. 7720           sta vektor2+1
  380. 7730           rts
  381. 7735 ;
  382. 7740 pushxy    jsr vektor4
  383. 7750           ldy #0
  384. 7760 schl11    lda xreg,y
  385. 7770           sta (vektor2),y
  386. 7780           iny
  387. 7790           cpy #4
  388. 7800           bne schl11
  389. 7810           rts
  390. 9985 ;
  391. 9990 ; register & ein simulierter stack
  392. 9995 ;
  393. 10000 zreg    .byt 0,0
  394. 10010 xreg    .byt 0,0
  395. 10020 yreg    .byt 0,0
  396. 10050 vergl   .byt 0,0
  397. 10060 lreg    .byt 0,0
  398. 10070 rreg    .byt 0,0
  399. 10080 vstr    .byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0  ; 20 * 0
  400. 10100 stack   .byt 0
  401. 20000 .end
  402.