home *** CD-ROM | disk | FTP | other *** search
- 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
-