home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
90xx
/
9007a.d64
/
ss-directory.src
(
.txt
)
< prev
Wrap
Commodore BASIC
|
1995-03-30
|
3KB
|
66 lines
1000 REM ******************************
1010 REM * SHORT-DIRECTORY (64 BYTES) *
1020 REM *----------------------------*
1030 REM * WRITTEN IN 1990 BY *
1040 REM * THOMAS BINDER *
1050 REM ******************************
1060 :
1070 REM *** QUELLTEXT (PROFI-ASS) ***
1080 :
1090 SYS 9*4096
1100 .OPT OO
1110 *=$C000
2000 ;
2010 ;*** BETRIEBSSYSTEM-ROUTINEN ***
2020 ;
2030 TALK = $FFB4 ; GERAET AM SERIELLEN BUS AUF SENDEN
2040 TKSA = $FF96 ; SEKUNDAERADRESSE NACH TALK
2050 BUSIN = $FFA5 ; ZEICHEN VOM BUS EINLESEN
2060 CHROUT = $FFD2 ; ZEICHEN (AUF BILDSCHIRM) AUSGEBEN
2070 OPENI = $F3D5 ; FILE FUER SERIELLEN BUS OEFFNEN
2080 CLOSEI = $F642 ; FILE FUER SERIELLEN BUS SCHLIESSEN
2090 LINPRT = $BDCD ; ZAHL IN X/A ALS DEZIMALZAHL AUSGEBEN
2100 PRTSPC = $AB3F ; SPACE AUSGEBEN
2110 CRDO = $AAD7 ; CARRIAGE RETURN AUSFUEHREN
2220 ILLERR = $B248 ; 'ILLEGAL QUANTITY ERROR' AUSGEBEN
2230 ;
2240 ;*** BENOETIGTE ADRESSEN ***
2250 ;
2260 SEKADR = 185 ; AKTUELLE SEKUNDAERADRESSE
2270 GERADR = 186 ; AKTUELLE GERAETEADRESSE
2280 ST = 144 ; STATUS DES SERIELLEN PORTS
2290 STOP = 145 ; ADRESSE FUER STOP-TASTE
2300 SHIFT = 653 ; ADRESSE FUER SHIFT/C=/CTRL
3000 ;
3010 ;*** DIRECTORY-ROUTINE ***
3020 ;*** RELOKATIBEL ***
3030 ;
3060 JSR 57812 ; FILENAMEN EINLESEN
3110 LDY #0 ; SEKUNDAERADRESSE AUF 'LESEN'
3120 STY SEKADR ; SCHALTEN
3130 JSR OPENI ; (DIRECTORY-)FILE OEFFNEN
3140 LDA GERADR ; FLOPPY
3150 JSR TALK ; AUF
3160 LDA #96 ; SENDEN
3170 JSR TKSA ; SCHALTEN
3180 LDY #5 ; 6 BYTE (BEI BEGINN, STARTADRESSE, LINKADRESSE, BLOCKS)
3190 .BYT $2C ; 'GETARNTER' BIT-BEFEHL, ZUM UEBERSPRINGEN VON 'LDY #3'
3200 L1 LDY #3 ; 4 BYTE (SPAETER, NUR LINKADRESSE UND BLOCKS)
3210 L5 TAX ; LETZTES GELESENES BYTE INS X-REGISTER
3220 JSR BUSIN ; NEUES BYTE EINLESEN
3230 DEY ; SCHON 6/4 BYTE GELESEN?
3240 BPL L5 ; WENN NICHT, DANN WIEDER NACH L5
3250 LDA ST ; STATUS NOCH OK?
3260 BNE L4 ; WENN NICHT, DANN NACH L4
3270 JSR LINPRT ; BLOCKS AUSGEBEN (BEFINDEN SICH IN X/A!)
3280 JSR PRTSPC ; LEERSCHRITT AUSGEBEN
3290 L2 JSR BUSIN ; BYTE EINLESEN
3300 BEQ L3 ; GLEICH 0 (= ENDE DES EINTRAGS)? WENN JA, DANN NACH L3
3310 LDX ST ; STATUS NOCH OK?
3320 BNE L3 ; WENN NICHT, DANN NACH L3
3330 JSR CHROUT ; ZEICHEN AUSGEBEN
3340 BNE L2 ; UND GLEICH WIEDER NACH L2, DA ZEICHEN AUF JEDEN FALL <>0
3350 L3 JSR CRDO ; CARRIAGE RETURN AUSFUEHREN
3380 BCC L1 ; WIEDER NACH L1, DA NACH CRDO CARRY-FLAG GELOESCHT
3400 L4 JMP CLOSEI ; FILE SCHLIESSEN UND ENDE