Ready64 Forum
Commodore 64 => Programmazione, Grafica e Musica => Topic aperto da: iAN CooG - 11 Agosto 2004, 01:48:00
-
Prefazione: riporto questo articolo, postato giorni fa da me fa su it.fan.studio.vit, dove stavano degenerando dicendo immani cazzate. Dopo questo stranamente si sono ammutoliti :P
Caricare la directory sul c64 si fa come molti sanno:
LOAD"$",8
"$" e' un file inesistente ma i drive interpretano la richiesta di lettura del file speciale "$" e mandano l'elenco dei files contenuti nella directory come se fosse un listato basic all'indirizzo $0401, per retro-compatibilita' col vecchio CBM/PET.
Con il ",8" forziamo il caricamento all'inizio della ram basic, quindi a $0801, altrimenti con ",8,1" lo vedremmo apparire a video come tanti caratteri "confusi"
Caricando quindi un nuovo prg basic, anche se finto, cancelleremo cio' che c'era prima.
La maggior parte delle cartucce velocizzatrici e chip di espansione
(SpeedDos/JiffyDos) hanno gia' una routine di "dir", nello specifico @$,
che e' cmq una routinetta, meno di 80 bytes, non distruttiva come la
LOAD"$",8, e lo fa utilizzando le routine del Kernal.
La routine l'ho ottenuta disassemblando un compattatore.
*=$0334 ; tape buffer
JSR $E544 ; clear screen
LDA #$01
LDX #<dirname
LDY #>dirname
JSR $FFBD ; set filename "$"
LDA #$08
STA $BA ; device #8
LDA #$60
STA $B9 ; secondary chn
JSR $F3D5 ; open for serial bus devices
JSR $F219 ; set input device
LDY #$04
labl1
JSR $EE13 ; input byte on serial bus
DEY
BNE labl1 ; get rid of Y bytes
LDA $C6 ; key pressed?
ORA $90 ; or EOF?
BNE labl2 ; if yes exit
JSR $EE13 ; now get in AX the dimension
TAX ; of the file
JSR $EE13
JSR $BDCD ; print number from AX
labl3
JSR $EE13 ; now the filename
JSR $E716 ; put a character to screen
BNE labl3 ; while not 0 encountered
JSR $AAD7 ; put a CR , end line
LDY #$02 ; set 2 bytes to skip
BNE labl1 ; repeat
labl2
JSR $F642 ; close serial bus device
JSR $F6F3 ; restore I/O devices to default
labl4
JSR $F142 ; w8 a key
BEQ labl4
RTS
dirname .byte "$"
ora con un semplice sys 820 otterremo la nostra directory, senza perdere nulla in memoria.
-
Per chi interessato, c'è una spiegazione dettagliata della lettura della directory non distruttiva su C= Hacking, rivista n. 3.
Potete reperire le riviste su: http://www.ffd2.com/fridge/chacking/ (http://www.ffd2.com/fridge/chacking/)
Ciao!