home *** CD-ROM | disk | FTP | other *** search
/ 64'er Special 12 / 64er_Magazin_Sonderheft_12_86-12_1986_Markt__Technik_de_Side_A.d64 / flash-sort.src (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  15KB  |  765 lines

  1. 100 sys 9*4096
  2. 101 .opt p,oo
  3. 102 *= $cb20 ;sys 52000
  4. 103 ;
  5. 104 ;---------------------------------------
  6. 105 ;--------- quelltext flashsort ---------
  7. 106 ;---------------------------------------
  8. 107 ;
  9. 108 term = $ad9e
  10. 109 stest = $a3fb
  11. 110 komma = $aefd
  12. 111 chr(NULL)t = $0079
  13. 112 type = $6d
  14. 113 rund = $6e
  15. 114 numfl = $6f
  16. 115 ;
  17. 116 ;------ speicherstellen zeropage -------
  18. 117 ;------ nur eindimensional/string ------
  19. 118 ;
  20. 119 ;-------------- hauptarray -------------
  21. 120 ;
  22. 121 ;$fb/$fc = hauptarray anfang
  23. 122 ;$fd/$fe = hauptarray ende+1
  24. 123 ;$22/$23 = a-element hauptarray
  25. 124 ;$71/$72 = b-element
  26. 125 ;$24/$25 = b-element(einsortieren)
  27. 126 ;$26/$27 = teilfeld anfang
  28. 127 ;$55/$56 = ende+1 des teilfeldes
  29. 128 ;$5b-$5d = deskriptor a-element
  30. 129 ;$5e-$60 = deskriptor b-element
  31. 130 ;$69/$6a = schrittweite
  32. 131 ;  $6d   = platzbedarf(2,3 oder 5)
  33. 132 ;  $6e   = rundungsbyte beim
  34. 133 ;          halbieren der schritt-
  35. 134 ;          weite;integer benoetigt
  36. 135 ;          sonderbehandlung
  37. 136 ;  $6f   = flag num./stringarray
  38. 137 ;          num.=0 string=$ff
  39. 138 ;
  40. 139 ;-------------- nebenarray -------------
  41. 140 ;
  42. 141 ;$57/$58 = anfang
  43. 142 ;$59/$5a = ende+1
  44. 143 ;$61/$62 = a-element
  45. 144 ;$4b/$4c = b-element
  46. 145 ;$63/$64 = b-element(einsortieren)
  47. 146 ;$28/$29 = teilfeldbeginn
  48. 147 ;          (teilfeldende unnoetig)
  49. 148 ;$6b/$6c = schrittweite
  50. 149 ;  $14   = platzbedarf(2,3 oder 5)
  51. 150 ;  $15   = rundungsbyte
  52. 151 ;          wie $6d/$6e hauptarray
  53. 152 ;---------------- start ----------------
  54. 153 ;
  55. 154 lda #3;stack auf
  56. 155 jsr stest;6 byte testen
  57. 156 jsr array;1.array holen
  58. 157 txa
  59. 158 pha;typ merken
  60. 159 ldx #3
  61. 160 setar lda $57,x;arraygrenzen
  62. 161 sta $fb,x;hauptarray
  63. 162 dex
  64. 163 bpl setar
  65. 164 inx
  66. 165 lda flag1;2 dim.array
  67. 166 beq setar1;nein
  68. 167 lda flag;ja,test auf teil-
  69. 168 php;bereich;wenn ja
  70. 169 beq normal;ende und anzahl
  71. 170 stx flag1;elemente 2.dim.
  72. 171 jsr arr3;holen
  73. 172 normal jsr platz
  74. 173 sta $62;ges.platz divid.
  75. 174 stx $63;durch anzahl
  76. 175 ldx #$90;elemente 2.dim.
  77. 176 sec; = offset auf
  78. 177 jsr $bc49;das 1.element
  79. 178 jsr $bc0c;der 2.dimension
  80. 179 ldy flag1
  81. 180 beq fehlf
  82. 181 jsr $b3a2
  83. 182 lda $61
  84. 183 jsr $bb12
  85. 184 jsr $b7f7
  86. 185 sty ol;offset low
  87. 186 sta oh;offset high
  88. 187 tax
  89. 188 tya
  90. 189 clc
  91. 190 adc $57
  92. 191 tay
  93. 192 txa
  94. 193 adc $58
  95. 194 plp;nur teilarray
  96. 195 beq setara;nein
  97. 196 cmp $fe;test,ob angabe
  98. 197 bcc fehlf;1.element der
  99. 198 bne setar0;2.dimens. =0!
  100. 199 cpy $fd;wenn nein,fehler
  101. 200 bcs setar0
  102. 201 fehlf jmp fehler
  103. 202 setara sta $fe;ganzes array
  104. 203 sty $fd;ende neu setzen
  105. 204 ;---------------------------------------
  106. 205 setar0 ldx #0;default fuer
  107. 206 setar1 stx $14;kein 2.array
  108. 207 jsr chr(NULL)t
  109. 208 beq del
  110. 209 jsr arr1;2.array holen
  111. 210 txa;platzbedarf nach
  112. 211 sta $14;$14 und
  113. 212 lsr;rundungsbyte
  114. 213 bcs setr;berechnen
  115. 214 lda #$ff;-integer-
  116. 215 setr sta $15;nebenarray
  117. 216 txa;startschrittweite
  118. 217 asl;auf 511 elemente
  119. 218 tax;high=platz*2-1
  120. 219 dex
  121. 220 stx $6c
  122. 221 lda #0;low=256-platz
  123. 222 sec
  124. 223 sbc $14
  125. 224 sta $6b
  126. 225 jsr gplatz
  127. 226 pla;test auf gleiche
  128. 227 pha;anzahl von
  129. 228 jsr test;elementen
  130. 229 ;---------------------------------------
  131. 230 del ldy #0;defaultwert
  132. 231 sty $2a;numer.array
  133. 232 pla;fuer mitsortieren
  134. 233 sta type
  135. 234 cmp #3;numer.array
  136. 235 beq del0;nein
  137. 236 ldx flag1;ja,test auf
  138. 237 bne fehlf;eindimensional
  139. 238 beq start0
  140. 239 ;---------------------------------------
  141. 240 del0 lda $fd;leerstrings
  142. 241 ldx $fe;am ende des
  143. 242 del1 sec;arrays entfernen
  144. 243 sbc #3;nur wenn haupt-
  145. 244 bcs del2;array string
  146. 245 dex
  147. 246 del2 sta $55
  148. 247 stx $56
  149. 248 lda ($55),y
  150. 249 bne start;kein leerstring
  151. 250 lda $59;nebenarray
  152. 251 sec;verkleinern
  153. 252 sbc $14
  154. 253 sta $59
  155. 254 bcs del3
  156. 255 dec $5a
  157. 256 del3 stx $fe;hauptarray
  158. 257 lda $55;verkleinern
  159. 258 sta $fd
  160. 259 cmp $fb;test ob array-
  161. 260 bne del1;anfang schon
  162. 261 cpx $fc;erreicht ist
  163. 262 bne del1;nein,weitermachen
  164. 263 ;
  165. 264 rts;****** ende ******
  166. 265 ;                     *nur leerstrings *
  167. 266 ;------------ sortierbeginn ------------
  168. 267 ;
  169. 268 start lda type;
  170. 269 dey;string=$ff
  171. 270 start0 sty numfl;num.=0
  172. 271 lsr;rundungsbyte
  173. 272 bcs start1;berechnen
  174. 273 lda #$ff;--integer
  175. 274 start1 sta rund
  176. 275 lda type
  177. 276 asl;startschritt-
  178. 277 tax;weite auf 511
  179. 278 dex;elemente setzen
  180. 279 lda #0;(wie oben)
  181. 280 sec
  182. 281 sbc type
  183. 282 sta $69
  184. 283 stx $6a
  185. 284 lda 53280;rahmenfarbe
  186. 285 pha;merken
  187. 286 ;---------------------------------------
  188. 287 big lsr $6a;schrittweite
  189. 288 lda $69;halbieren
  190. 289 ror;start mit 255 elem.
  191. 290 bit rund;test auf integer
  192. 291 bvc biga;nein
  193. 292 and #$fe;ja,bit 0 loeschen
  194. 293 clc;und kein uebertrag
  195. 294 biga bcc bigb
  196. 295 sbc rund
  197. 296 bigb tax
  198. 297 bne big1
  199. 298 pla
  200. 299 sta 53280
  201. 300 rts;****** ende ******
  202. 301 big1 sta $69
  203. 302 inc 53280;blinken
  204. 303 clc
  205. 304 lda $fb;teilfeldstart
  206. 305 tax;=arrayanfang
  207. 306 adc $69;low in x-reg
  208. 307 sta $55;high in y-reg
  209. 308 lda $fc;+schrittw.
  210. 309 tay;=teilfeldende
  211. 310 adc $6a
  212. 311 sta $56
  213. 312 lda $14
  214. 313 beq set3
  215. 314 lsr $6c;schrittweite
  216. 315 lda $6b;nebenarray
  217. 316 ror;halbieren
  218. 317 bit $15;test auf integer
  219. 318 bvc big2;nein
  220. 319 and #$fe;ja,bit 0 loeschen
  221. 320 clc;und kein uebertrag
  222. 321 big2 bcc big3
  223. 322 sbc $15
  224. 323 big3 sta $6b
  225. 324 lda $57
  226. 325 sta $4b
  227. 326 sta $28
  228. 327 lda $58
  229. 328 bne set2a;unbedingter sprung
  230. 329 ;---------------------------------------
  231. 330 set lda $26;naechstes teilfeld
  232. 331 ldy $27;bearbeiten
  233. 332 clc
  234. 333 adc type
  235. 334 tax
  236. 335 bcc set1
  237. 336 iny
  238. 337 set1 cmp $55;wenn alle teil-
  239. 338 bne set2;felder sortiert,
  240. 339 cpy $56;dann schrittweite
  241. 340 beq big;halbieren
  242. 341 set2 lda $14
  243. 342 beq set3
  244. 343 clc
  245. 344 adc $28
  246. 345 sta $28
  247. 346 sta $4b
  248. 347 lda $29
  249. 348 adc #0
  250. 349 set2a sta $29
  251. 350 sta $4c
  252. 351 set3 txa
  253. 352 sta $26
  254. 353 sty $27
  255. 354 clc
  256. 355 bit numfl;numer.array
  257. 356 bvs w1;nein
  258. 357 jsr zahl;ja
  259. 358 bcs set
  260. 359 ;---------------------------------------
  261. 360 work clc;sortieren bis zum
  262. 361 lda $71;ersten tausch
  263. 362 ldy $72;b-element($71/$72)
  264. 363 w1 sta $22;wird zu a-element
  265. 364 adc $69;+schrittweite
  266. 365 tax;= b-element
  267. 366 tya
  268. 367 adc $6a
  269. 368 cmp $fe;test,ob b-element
  270. 369 bcc next;>arrayende,
  271. 370 bne set;wenn ja,dann
  272. 371 cpx $fd
  273. 372 bcs set;naechstes teilfeld
  274. 373 next sta $25
  275. 374 sty $23
  276. 375 stx $24
  277. 376 sta $72
  278. 377 stx $71
  279. 378 ldy $14
  280. 379 beq vergl
  281. 380 lda $4b
  282. 381 sta $61
  283. 382 adc $6b
  284. 383 sta $63
  285. 384 sta $4b
  286. 385 lda $4c
  287. 386 sta $62
  288. 387 adc $6c
  289. 388 sta $64
  290. 389 sta $4c
  291. 390 ;---------------------------------------
  292. 391 ldy #0
  293. 392 vergl lda ($24),y;deskriptor
  294. 393 b0 beq work;b-element nach
  295. 394 sta $5e;$5e-$60;wenn
  296. 395 iny;laenge=0,dann
  297. 396 lda ($24),y;naechstes element
  298. 397 sta $5f
  299. 398 iny
  300. 399 lda ($24),y
  301. 400 sta $60
  302. 401 ;--- einsprung einsortieren (ldy #2) ---
  303. 402 vers lda ($22),y;deskriptor
  304. 403 sta $5d;a-element nach
  305. 404 dey;$5b-$5d;wenn
  306. 405 lda ($22),y;laenge=0,dann
  307. 406 sta $5c;tauschen
  308. 407 dey;y-reg. = 0
  309. 408 lda ($22),y
  310. 409 sta $5b
  311. 410 beq swap
  312. 411 cmp $5e;vergleichslaenge
  313. 412 beq ver1;nach x-reg.
  314. 413 bcc ver1;holen
  315. 414 lda $5e
  316. 415 ver1 tax
  317. 416 ;---------------------------------------
  318. 417 loop lda ($5c),y;stringvergleich
  319. 418 cmp ($5f),y;fuer 1.dimension
  320. 419 b1 bcc work+1
  321. 420 bne swap
  322. 421 iny
  323. 422 dex
  324. 423 bne loop
  325. 424 ldy $5b
  326. 425 cpy $5e
  327. 426 bcc work+1;wenn gleich,dann
  328. 427 bne swap
  329. 428 ldx flag1;test auf 2.dim.
  330. 429 beq b0;nein,nach "work"
  331. 430 ;---------------------------------------
  332. 431 stx $2a;deskriptoren der
  333. 432 jsr d2set;2.dimension
  334. 433 zl dec $2a;setzen und
  335. 434 b2 beq b0;vergleich nach
  336. 435 jsr dset;den elementen
  337. 436 ldy #2;routine ist
  338. 437 z1 lda ($47),y;selbstmodi-
  339. 438 sta v1,y;fizierend
  340. 439 lda ($49),y
  341. 440 sta v2,y
  342. 441 dey
  343. 442 bne z1
  344. 443 lda ($49),y
  345. 444 b4 beq b0
  346. 445 sta $46
  347. 446 lda ($47),y
  348. 447 beq swap
  349. 448 sta $45
  350. 449 cmp $46
  351. 450 bcc v0
  352. 451 lda $46
  353. 452 v0 tax
  354. 453 v1 lda $4711,y;dummy-wert
  355. 454 v2 cmp $0815,y;    "
  356. 455 bcc b1
  357. 456 bne swap
  358. 457 iny
  359. 458 dex
  360. 459 bne v1
  361. 460 ldy $45
  362. 461 cpy $46
  363. 462 bcc b1
  364. 463 beq zl
  365. 464 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  366. 465 swap ldy flag1;test 2[171][134]ensi[145]al
  367. 466 beq swap1;nein
  368. 467 jsr swapd2;ja,tauschen
  369. 468 swap1 ldy $14;test nebenarray
  370. 469 beq swap3;nein
  371. 470 dey;ja,tauschen
  372. 471 swap2 lda ($61),y
  373. 472 tax
  374. 473 lda ($63),y
  375. 474 sta ($61),y
  376. 475 txa
  377. 476 sta ($63),y
  378. 477 dey
  379. 478 bpl swap2
  380. 479 iny;y[171]reg.[178]0
  381. 480 sec
  382. 481 lda $61;nebenarray
  383. 482 sta $63;zur eins[176][171]
  384. 483 sbc $6b;tie[138]g
  385. 484 sta $61;v[176]bereiten
  386. 485 lda $62;siehe prg.[171]
  387. 486 sta $64;teil s[176]t
  388. 487 sbc $6c
  389. 488 sta $62
  390. 489 swap3 lda $5b;hauptarray
  391. 490 sta ($24),y;deskrip[164]ren
  392. 491 lda $5e;tauschen
  393. 492 sta ($22),y;
  394. 493 iny
  395. 494 lda $5c
  396. 495 sta ($24),y
  397. 496 lda $5f
  398. 497 sta ($22),y
  399. 498 iny;y[171]reg.[178]2
  400. 499 lda $5d
  401. 500 sta ($24),y
  402. 501 lda $60
  403. 502 sta ($22),y
  404. 503 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  405. 504 s[176]t lda $22;nach links eins[176][171]
  406. 505 ldx $23;tieren,bis kein
  407. 506 cpx $27;tausch erfolgt bzw
  408. 507 bne so1;die linke teilfeld
  409. 508 cmp $26;grenze erreicht
  410. 509 beq b4;ist.deskrip[164]r des
  411. 510 so1 sta $24;einzus[176]tier[128]en
  412. 511 stx $25;elements bleibt in
  413. 512 sbc $69;$5e[171]$60.b[171]element
  414. 513 sta $22;wird durch zeiger
  415. 514 txa;$24[173]$25 gesetzt.
  416. 515 sbc $6a;zeiger $71[173]$72
  417. 516 sta $23;wird nicht
  418. 517 jmp vers;gea[128]ert !
  419. 518 ;
  420. 519 ;[171][171][171][171][171][171][171][171][171][171][171][171] unterprogramme [171][171][171][171][171][171][171][171][171][171][171]
  421. 520 ;
  422. 521 array lda #0;[150]aultwert fuer
  423. 522 sta flag;ganzes array
  424. 523 sta flag1;[150]ault 1.[134].
  425. 524 jsr chr[203]t;[136]ztes zeichen
  426. 525 cmp #"#";nur teilarray
  427. 526 bne arr1;nein
  428. 527 jsr $b79b;1 oder 2 [134].
  429. 528 dex
  430. 529 stx flag1;flagge 1[173]2 [134].
  431. 530 dec flag;flagge teils[176]t.
  432. 531 arr1 jsr komma
  433. 532 arr2 jsr term;nicht $b08b !!!!
  434. 533 ldy flag
  435. 534 bne teil1
  436. 535 ;[171][171][171][171][171][171][171][171] ganzes array s[176]tieren [171][171][171][171][171][171][171]
  437. 536 arr3 lda $2f;ab anfang der
  438. 537 ldx $30;arrays mit der
  439. 538 ganz sta $57;suche beginnen
  440. 539 stx $58
  441. 540 cmp $31;wenn [128]e der
  442. 541 bne ganz0;arrays erreicht,
  443. 542 cpx $32;dann nicht
  444. 543 beq fehler;gefunden,fehler !
  445. 544 ganz0 ldy #0
  446. 545 lda ($57),y
  447. 546 iny
  448. 547 cmp $45;variab[195]name
  449. 548 bne ganz1
  450. 549 lda ($57),y
  451. 550 cmp $46
  452. 551 ganz1 php;wenn gefunden,dann
  453. 552 iny;zeroflag gesetzt
  454. 553 lda ($57),y;[128]e nach $59[173]$5a
  455. 554 clc
  456. 555 adc $57
  457. 556 sta $59
  458. 557 iny
  459. 558 lda ($57),y
  460. 559 adc $58
  461. 560 sta $5a
  462. 561 tax
  463. 562 lda $59
  464. 563 plp;test,ob gefunden
  465. 564 bne ganz;naechstes array
  466. 565 iny;[171][171]array gefunden
  467. 566 lda ($57),y;test,ob array
  468. 567 cmp #1;ein[134]ensi[145]al
  469. 568 beq ganz4;ja,dann ok
  470. 569 cmp #2
  471. 570 bne fehler
  472. 571 lda flag1
  473. 572 beq ganz3
  474. 573 fehler ldx #$19;[129]mula [164]o
  475. 574 jmp ($300);komplex ausgeben
  476. 575 ganz3 iny
  477. 576 lda ($57),y
  478. 577 bne fehler
  479. 578 iny
  480. 579 lda ($57),y
  481. 580 sta flag1
  482. 581 lda #9;9
  483. 582 .byte $2c;bzw
  484. 583 ganz4 lda #7;7 byte zu
  485. 584 clc;anfang addieren
  486. 585 adc $57;um auf 1.deskr.
  487. 586 sta $57;zu zeigen
  488. 587 bcc name
  489. 588 inc $58
  490. 589 ;
  491. 590 name ldx #5;spez.platzbedarf
  492. 591 lda $46;aus variab[195]name
  493. 592 bpl name1;berechnen und ins
  494. 593 dex;x[171]register
  495. 594 dex;[181]eger [178] 2
  496. 595 name1 lda $45;string [178] 3
  497. 596 bpl name2;real  [178] 5
  498. 597 dex
  499. 598 name2 rts
  500. 599 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  501. 600 ;[171][171] bereich fuer teils[176]tie[138]g ho[195] [171][171]
  502. 601 ;
  503. 602 teil1 ldy #3
  504. 603 teil2 lda $45,y
  505. 604 pha;name und anfang
  506. 605 dey;auf stack
  507. 606 bpl teil2
  508. 607 jsr komma;[128]e ho[195]
  509. 608 jsr term
  510. 609 jsr name;angegebenes
  511. 610 txa;element auch noch
  512. 611 clc;mits[176]tieren
  513. 612 adc $47
  514. 613 sta $59
  515. 614 ldy $48
  516. 615 bcc teil3
  517. 616 iny
  518. 617 teil3 sty $5a
  519. 618 pla;test auf
  520. 619 cmp $45;gleichen namen
  521. 620 bne fehler
  522. 621 pla
  523. 622 cmp $46
  524. 623 fehla bne fehler
  525. 624 pla;low[171]byte anfang
  526. 625 tay
  527. 626 pla ;high[171]byte anfang
  528. 627 cmp $30;test,ob im
  529. 628 bcc fehler;bereich der
  530. 629 bne teil4;arrays
  531. 630 cpy $2f
  532. 631 bcc fehler
  533. 632 teil4 sta $58
  534. 633 sty $57
  535. 634 cmp $5a;test,ob
  536. 635 bcc name2;anfang [179] [128]e
  537. 636 bne fehler
  538. 637 cpy $59
  539. 638 fehlb bcs fehler
  540. 639 rts
  541. 640 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  542. 641 ltest lsr;ges.platz
  543. 642 [175] #2;hauptarray
  544. 643 php;[172]spez.platz
  545. 644 lda $22;nebenarray
  546. 645 asl;    [178]
  547. 646 tax;ges.platz
  548. 647 lda $23;nebenarray
  549. 648 rol;[172]spez.platz
  550. 649 bcs fehlb;hauptarray
  551. 650 tay;s[145]st fehler !
  552. 651 plp;[171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  553. 652 bcc lt2;[181]eger
  554. 653 beq lt1;string
  555. 654 txa;real
  556. 655 asl
  557. 656 tax
  558. 657 tya
  559. 658 rol
  560. 659 tay
  561. 660 fehlc bcs fehlb
  562. 661 lt1 clc
  563. 662 txa
  564. 663 adc $22
  565. 664 tax
  566. 665 tya
  567. 666 adc $23
  568. 667 tay
  569. 668 lt2 rts
  570. 669 ;
  571. 670 test jsr ltest;einsp[138]g
  572. 671 stx $24;test auf gleiche
  573. 672 sty $25;elementzahl
  574. 673 lda $69;s."ltest"
  575. 674 sta $22
  576. 675 lda $6a
  577. 676 sta $23
  578. 677 lda $14
  579. 678 jsr ltest
  580. 679 cpy $25
  581. 680 bne fehla
  582. 681 cpx $24
  583. 682 fehld bne fehla
  584. 683 lda $fb;test ob beide
  585. 684 cmp $57;arrays gleich [191]d
  586. 685 bne ok1;[178][158]52000,a$,a$
  587. 686 lda $fc;wenn ja,fehler
  588. 687 cmp $58
  589. 688 beq fehlb
  590. 689 ok1 rts
  591. 690 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  592. 691 swapd2 dey;alle elemente
  593. 692 sty $2a;der 2.[134].
  594. 693 jsr d2set;tauschen
  595. 694 d1 jsr dset
  596. 695 ldy #2
  597. 696 d2 lda ($47),y
  598. 697 tax
  599. 698 lda ($49),y
  600. 699 sta ($47),y
  601. 700 txa
  602. 701 sta ($49),y
  603. 702 d4 dey;einsp[138]g num.
  604. 703 bpl d2;nebenarray
  605. 704 dec $2a;tauschen
  606. 705 bne d1
  607. 706 rts
  608. 707 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  609. 708 dset lda $47;deskrip[164]ren
  610. 709 clc;fuer elemente
  611. 710 adc ol;der 2.[134].
  612. 711 sta $47;berechnen
  613. 712 lda $48
  614. 713 adc oh
  615. 714 sta $48
  616. 715 clc
  617. 716 lda $49
  618. 717 adc ol
  619. 718 sta $49
  620. 719 lda $4a
  621. 720 adc oh
  622. 721 sta $4a
  623. 722 rts
  624. 723 ;
  625. 724 d2set ldy #3;v[176]bereitung
  626. 725 d3 lda $22,y;auf 1.element
  627. 726 sta $47,y;der 2.[134]ensi[145]
  628. 727 dey
  629. 728 bpl d3
  630. 729 rts
  631. 730 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  632. 731 gplatz lda $fd;gesamtplatz[171]
  633. 732 sec;bedarf fuer
  634. 733 sbc $fb;hauptarray
  635. 734 sta $69;berechnen
  636. 735 lda $fe
  637. 736 sbc $fc
  638. 737 sta $6a
  639. 738 platz lda $59;wie oben fuer
  640. 739 sec;nebenarray
  641. 740 sbc $57
  642. 741 sta $22
  643. 742 tax
  644. 743 lda $5a
  645. 744 sbc $58
  646. 745 sta $23
  647. 746 ble rts
  648. 747 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  649. 748 flag nop;flagge teilarray
  650. 749 flag1 nop;flagge 2 [134].
  651. 750 ol nop;offset auf 1.
  652. 751 oh nop;element 2.[134].
  653. 752 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  654. 753 ;[171][171][171][171][171][171][171][171] numer.array s[176]tieren [171][171][171][171][171][171][171][171]
  655. 754 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  656. 755 bl lda $71;vergl routinen
  657. 756 ldy $72;"work" bis "sort"
  658. 757 clc
  659. 758 zahl sta $5b;a[171]element
  660. 759 sty $5c
  661. 760 adc $69
  662. 761 tax
  663. 762 tya
  664. 763 adc $6a
  665. 764 cmp $fe
  666. 765 bcc bl1
  667. 766 bne ble
  668. 767 cpx $fd
  669. 768 bcs ble
  670. 769 bl1 tay
  671. 770 sta $72;b[171]element
  672. 771 stx $71;grosse schle[139]e
  673. 772 sta $5e;b[171]element
  674. 773 stx $5d;eins[176]tieren
  675. 774 lda $14
  676. 775 beq zver
  677. 776 lda $4b
  678. 777 sta $47
  679. 778 adc $6b
  680. 779 sta $4b
  681. 780 sta $49
  682. 781 lda $4c
  683. 782 sta $48
  684. 783 adc $6c
  685. 784 sta $4c
  686. 785 sta $4a
  687. 786 ;
  688. 787 zver txa
  689. 788 bit [138]d;wenn [138]d[178]$ff
  690. 789 bvs [181];dann [181]eger !
  691. 790 jsr $bba2;b[171]elem.in fac
  692. 791 lda $5b;vergl.mit
  693. 792 ldy $5c;a[171]element
  694. 793 zv1 jsr $bc5b
  695. 794 tax
  696. 795 beq bl
  697. 796 cmp flag2
  698. 797 zvb1 beq bl
  699. 798 ztau ldy type
  700. 799 dey
  701. 800 sz1 lda ($5b),y
  702. 801 tax
  703. 802 lda ($5d),y
  704. 803 sta ($5b),y
  705. 804 txa
  706. 805 sta ($5d),y
  707. 806 dey
  708. 807 bpl sz1
  709. 808 ldy $14
  710. 809 beq zv2
  711. 810 inc $2a
  712. 811 jsr d4
  713. 812 ;[171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171][171]
  714. 813 zv2 lda $5b;entspr."sort"
  715. 814 ldy $5c;b[171]element bleibt
  716. 815 cpy $27;im fac
  717. 816 bne zv3
  718. 817 cmp $26
  719. 818 beq bl
  720. 819 zv3 sta $5d
  721. 820 sty $5e
  722. 821 sbc $69
  723. 822 tax
  724. 823 tya
  725. 824 sbc $6a
  726. 825 tay
  727. 826 zv3a stx $5b
  728. 827 sty $5c
  729. 828 lda $14
  730. 829 beq zv4
  731. 830 lda $47
  732. 831 sec
  733. 832 sta $49
  734. 833 sbc $6b
  735. 834 sta $47
  736. 835 lda $48
  737. 836 sta $4a
  738. 837 sbc $6c
  739. 838 sta $48
  740. 839 zv4 txa
  741. 840 bit [138]d
  742. 841 bvc zv1
  743. 842 ;
  744. 843 [181] ldx flag2
  745. 844 ldy #0
  746. 845 i1 lda ($5b),y;vergleich
  747. 846 cmp ($5d),y;[181]eger
  748. 847 bcc kl;kleiner
  749. 848 bne gr;groesser
  750. 849 iny
  751. 850 cpy #2
  752. 851 bne i1
  753. 852 beq zvb1
  754. 853 gr txa;ergebnis
  755. 854 e[176] #$ff;herumdrehen
  756. 855 tax;wieder nach x[171]reg.
  757. 856 kl txa
  758. 857 bmi ztau
  759. 858 jmp bl
  760. 859 ;
  761. 860 flag2 .byte 1; 1 [178]kleinstes
  762. 861 ;                     255[178]groesstes
  763. 862 ;                     element an
  764. 863 ;                     arrayanfang
  765.