home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1990 July
/
64er_Magazin_90-07_1990_Markt__Technik_de_Side_A.d64
/
ss-directory.src
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2022-10-26
|
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