home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
sh4x
/
sh43b.d64
/
quickjump.quell
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
3KB
|
99 lines
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 $A8C1
190 LDA #>TAB : STA $A8C2
200 ; *** TABELLE LOESCHEN BEI 'RUN' EINBINDEN
210 LDA #<BEG : STA $A020
220 LDA #>BEG : STA $A021
230 ; *** BASIC-ROM AUSBLENDEN
240 LDA $1 : AND #254 : STA $1
250 ; *** TABELLE LOESCHEN
260 INIT LDA #<TABANF : STA TABPTR
270 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 : CMP TABPTR : BNE NOEMP
380 BEQ SRCH
390 ; ***************************
400 ; *** TABELLE DURCHSUCHEN ***
410 ; ***************************
420 ; ZEIGER AN TABELLENANFANG
430 NOEMP LDA #<TABANF : STA VEKTOR
440 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