home *** CD-ROM | disk | FTP | other *** search
/ 64'er 1988 April / 64er_Magazin_88-04_1988_Markt__Technik_de_Side_A.d64 / quickjump.quell (.txt) < prev    next >
Commodore BASIC  |  2022-10-26  |  3KB  |  99 lines

  1. 10 open4,4,7
  2. 20 sys9*4096
  3. 30 .opt oo,p4
  4. 40 vektor = $22
  5. 50 *= $c000
  6. 60 start  jmp copy       ; sprung zur initialisierung
  7. 70 flag   .byt 0         ; flag fuer tabelleneintragung
  8. 80 tabend .byt $00,$d0   ; tabellenende
  9. 90 ; *******************
  10. 100 ; **initialisierung**
  11. 110 ; *******************
  12. 120 ; *** betriebssystem kopieren
  13. 130 copy ldy #0 : sty vektor : lda #$a0 : sta vektor+1
  14. 140 loop1 lda (vektor),y : sta (vektor),y
  15. 150 iny : bne loop1
  16. 160 inc vektor+1 : lda #$c0 : cmp vektor+1 : bne loop1
  17. 170 ; *** sprung in eigene zeilensuchroutine einbinden
  18. 180 lda #<tab : sta $a8c1
  19. 190 lda #>tab : sta $a8c2
  20. 200 ; *** tabelle loeschen bei 'run' einbinden
  21. 210 lda #<beg : sta $a020
  22. 220 lda #>beg : sta $a021
  23. 230 ; *** basic-rom ausblenden
  24. 240 lda $1 : and #254 : sta $1
  25. 250 ; *** tabelle loeschen
  26. 260 init  lda #<tabanf : sta tabptr
  27. 270 lda #>tabanf : sta tabptr+1
  28. 280 rts
  29. 290 ; ****************************
  30. 300 ; **eigene zeilensuchroutine**
  31. 310 ; ****************************
  32. 320 tab   sta $5f : stx $60             ; zn ab der zu suchen ist
  33. 330 ; ****************************
  34. 340 ; *** test ob tabelle leer ***
  35. 350 ; ****************************
  36. 360 lda #>tabanf : cmp tabptr+1 : bne noemp
  37. 370 lda #<tabanf : cmp tabptr   : bne noemp
  38. 380 beq srch
  39. 390 ; ***************************
  40. 400 ; *** tabelle durchsuchen ***
  41. 410 ; ***************************
  42. 420 ; zeiger an tabellenanfang
  43. 430 noemp lda #<tabanf : sta vektor
  44. 440 lda #>tabanf : sta vektor+1
  45. 450 ; *** mit gesuchter nummer vergleichen
  46. 460 l01   ldy #0 : lda (vektor),y : cmp $14 : bne c01
  47. 470 iny    : lda (vektor),y : cmp $15:  beq found
  48. 480 ; *** zeiger auf naechsten eintrag
  49. 490 c01   lda vektor : clc : adc #4 : sta vektor
  50. 500 lda vektor+1     : adc #0 : sta vektor+1
  51. 510 ; *** wenn tabellenende noch nicht erreicht weitersuchen
  52. 520 cmp tabptr+1 : bne l01
  53. 530 lda vektor : cmp tabptr : bne l01
  54. 540 ; *** gesuchte nummer nicht in tabelle
  55. 550 :     beq srch
  56. 560 ; *** zeilennummer gefunden - uebergeben
  57. 570 found iny : lda (vektor),y : sta $5f
  58. 580 iny : lda (vektor),y : sta $60
  59. 590 sec : rts
  60. 600 ; ****************************
  61. 610 ; *** programm durchsuchen ***
  62. 620 ; ****************************
  63. 630 srch  ldy #1 : jsr $a61d : bcs fnd
  64. 640 ; *****************************
  65. 650 ; *** zeile existiert nicht ***
  66. 660 ; *****************************
  67. 670 nfnd  clc : rts
  68. 680 ; **********************
  69. 690 ; *** zeile gefunden ***
  70. 700 ; **********************
  71. 710 ; *** eintragung nicht gewuenscht
  72. 720 fnd   lda flag : bne c02
  73. 730 ; *** tabelle schon voll
  74. 740 lda tabptr+1 : cmp tabend+1 : bne apnd
  75. 750 lda tabptr   : cmp tabend   : bne apnd : sec : rts
  76. 760 ; ***********************************
  77. 770 ; *** nummer in tabelle eintragen ***
  78. 780 ; ***********************************
  79. 790 ; *** tabellenende-zeiger erhoehen
  80. 800 apnd  ldy #0 : lda tabptr   : sta vektor : clc : adc #4 : sta tabptr
  81. 810 lda tabptr+1 : sta vektor+1     : adc #0 : sta tabptr+1
  82. 820 ; *** adresse in tabelle eintragen
  83. 830 lda $14 : sta (vektor),y : iny
  84. 840 lda $15 : sta (vektor),y : iny
  85. 850 lda $5f : sta (vektor),y : iny
  86. 860 lda $60 : sta (vektor),y
  87. 870 c02   sec : rts
  88. 880 ; ******************************
  89. 890 ; **modifizierter 'run'-befehl**
  90. 900 ; ******************************
  91. 910 beg   .byt 0
  92. 920 php : jsr init : jmp $a872
  93. 930 ; *************************************
  94. 940 ; **tabellenzeiger und tabellenanfang**
  95. 950 ; *************************************
  96. 960 tabptr .byt 0,0
  97. 970 tabanf .byt 0
  98. 980 .end
  99.