10 OPEN4,4,7 20 SYS9*4096 30 .OPT OO,P4 40 VEKTOR = $22 50 *= $C000 60 START JMP COPY ; SPRUNG ZUR INITIALISIERUNG 70 FLAG .BYT 0 ; FLAG FUER TABELLENEINTRAGUNG 80 TABEND .BYT $00,$D0 ; TABELLENENDE 90 ; ******************* 100 ; **INITIALISIERUNG** 110 ; ******************* 120 ; *** BETRIEBSSYSTEM KOPIEREN 130 COPY LDY #0 : STY VEKTOR : LDA #$A0 : STA VEKTOR+1 140 LOOP1 LDA (VEKTOR),Y : STA (VEKTOR),Y 150 INY : BNE LOOP1 160 INC VEKTOR+1 : LDA #$C0 : CMP VEKTOR+1 : BNE LOOP1 170 ; *** SPRUNG IN EIGENE ZEILENSUCHROUTINE EINBINDEN 180 LDA #TAB : STA $A8C2 200 ; *** TABELLE LOESCHEN BEI 'RUN' EINBINDEN 210 LDA #BEG : STA $A021 230 ; *** BASIC-ROM AUSBLENDEN 240 LDA $1 : AND #254 : STA $1 250 ; *** TABELLE LOESCHEN 260 INIT LDA #TABANF : STA TABPTR+1 280 RTS 290 ; **************************** 300 ; **EIGENE ZEILENSUCHROUTINE** 310 ; **************************** 320 TAB STA $5F : STX $60 ; ZN AB DER ZU SUCHEN IST 330 ; **************************** 340 ; *** TEST OB TABELLE LEER *** 350 ; **************************** 360 LDA #>TABANF : CMP TABPTR+1 : BNE NOEMP 370 LDA #TABANF : STA VEKTOR+1 450 ; *** MIT GESUCHTER NUMMER VERGLEICHEN 460 L01 LDY #0 : LDA (VEKTOR),Y : CMP $14 : BNE C01 470 INY : LDA (VEKTOR),Y : CMP $15: BEQ FOUND 480 ; *** ZEIGER AUF NAECHSTEN EINTRAG 490 C01 LDA VEKTOR : CLC : ADC #4 : STA VEKTOR 500 LDA VEKTOR+1 : ADC #0 : STA VEKTOR+1 510 ; *** WENN TABELLENENDE NOCH NICHT ERREICHT WEITERSUCHEN 520 CMP TABPTR+1 : BNE L01 530 LDA VEKTOR : CMP TABPTR : BNE L01 540 ; *** GESUCHTE NUMMER NICHT IN TABELLE 550 : BEQ SRCH 560 ; *** ZEILENNUMMER GEFUNDEN - UEBERGEBEN 570 FOUND INY : LDA (VEKTOR),Y : STA $5F 580 INY : LDA (VEKTOR),Y : STA $60 590 SEC : RTS 600 ; **************************** 610 ; *** PROGRAMM DURCHSUCHEN *** 620 ; **************************** 630 SRCH LDY #1 : JSR $A61D : BCS FND 640 ; ***************************** 650 ; *** ZEILE EXISTIERT NICHT *** 660 ; ***************************** 670 NFND CLC : RTS 680 ; ********************** 690 ; *** ZEILE GEFUNDEN *** 700 ; ********************** 710 ; *** EINTRAGUNG NICHT GEWUENSCHT 720 FND LDA FLAG : BNE C02 730 ; *** TABELLE SCHON VOLL 740 LDA TABPTR+1 : CMP TABEND+1 : BNE APND 750 LDA TABPTR : CMP TABEND : BNE APND : SEC : RTS 760 ; *********************************** 770 ; *** NUMMER IN TABELLE EINTRAGEN *** 780 ; *********************************** 790 ; *** TABELLENENDE-ZEIGER ERHOEHEN 800 APND LDY #0 : LDA TABPTR : STA VEKTOR : CLC : ADC #4 : STA TABPTR 810 LDA TABPTR+1 : STA VEKTOR+1 : ADC #0 : STA TABPTR+1 820 ; *** ADRESSE IN TABELLE EINTRAGEN 830 LDA $14 : STA (VEKTOR),Y : INY 840 LDA $15 : STA (VEKTOR),Y : INY 850 LDA $5F : STA (VEKTOR),Y : INY 860 LDA $60 : STA (VEKTOR),Y 870 C02 SEC : RTS 880 ; ****************************** 890 ; **MODIFIZIERTER 'RUN'-BEFEHL** 900 ; ****************************** 910 BEG .BYT 0 920 PHP : JSR INIT : JMP $A872 930 ; ************************************* 940 ; **TABELLENZEIGER UND TABELLENANFANG** 950 ; ************************************* 960 TABPTR .BYT 0,0 970 TABANF .BYT 0 980 .END