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   
Commodore BASIC  |  2022-10-26  |  3KB  |  66 lines

  1. 1000 rem ******************************
  2. 1010 rem * short-directory (64 bytes) *
  3. 1020 rem *----------------------------*
  4. 1030 rem *     written in 1990 by     *
  5. 1040 rem *       thomas  binder       *
  6. 1050 rem ******************************
  7. 1060 :
  8. 1070 rem *** quelltext (profi-ass) ***
  9. 1080 :
  10. 1090 sys 9*4096
  11. 1100 .opt oo
  12. 1110 *=$c000
  13. 2000 ;
  14. 2010 ;*** betriebssystem-routinen ***
  15. 2020 ;
  16. 2030 talk   = $ffb4 ; geraet am seriellen bus auf senden
  17. 2040 tksa   = $ff96 ; sekundaeradresse nach talk
  18. 2050 busin  = $ffa5 ; zeichen vom bus einlesen
  19. 2060 chrout = $ffd2 ; zeichen (auf bildschirm) ausgeben
  20. 2070 openi  = $f3d5 ; file fuer seriellen bus oeffnen
  21. 2080 closei = $f642 ; file fuer seriellen bus schliessen
  22. 2090 linprt = $bdcd ; zahl in x/a als dezimalzahl ausgeben
  23. 2100 prtspc = $ab3f ; space ausgeben
  24. 2110 crdo   = $aad7 ; carriage return ausfuehren
  25. 2220 illerr = $b248 ; 'illegal quantity  error' ausgeben
  26. 2230 ;
  27. 2240 ;*** benoetigte adressen ***
  28. 2250 ;
  29. 2260 sekadr = 185   ; aktuelle sekundaeradresse
  30. 2270 geradr = 186   ; aktuelle geraeteadresse
  31. 2280 st     = 144   ; status des seriellen ports
  32. 2290 stop   = 145   ; adresse fuer stop-taste
  33. 2300 shift  = 653   ; adresse fuer shift/c=/ctrl
  34. 3000 ;
  35. 3010 ;*** directory-routine ***
  36. 3020 ;***    relokatibel    ***
  37. 3030 ;
  38. 3060 jsr 57812      ; filenamen einlesen
  39. 3110 ldy #0         ; sekundaeradresse auf 'lesen'
  40. 3120 sty sekadr     ; schalten
  41. 3130 jsr openi      ; (directory-)file oeffnen
  42. 3140 lda geradr     ; floppy
  43. 3150 jsr talk       ; auf
  44. 3160 lda #96        ; senden
  45. 3170 jsr tksa       ; schalten
  46. 3180 ldy #5         ; 6 byte (bei beginn, startadresse, linkadresse, blocks)
  47. 3190 .byt $2c       ; 'getarnter' bit-befehl, zum ueberspringen von 'ldy #3'
  48. 3200 l1 ldy #3      ; 4 byte (spaeter, nur linkadresse und blocks)
  49. 3210 l5 tax         ; letztes gelesenes byte ins x-register
  50. 3220 jsr busin      ; neues byte einlesen
  51. 3230 dey            ; schon 6/4 byte gelesen?
  52. 3240 bpl l5         ; wenn nicht, dann wieder nach l5
  53. 3250 lda st         ; status noch ok?
  54. 3260 bne l4         ; wenn nicht, dann nach l4
  55. 3270 jsr linprt     ; blocks ausgeben (befinden sich in x/a!)
  56. 3280 jsr prtspc     ; leerschritt ausgeben
  57. 3290 l2 jsr busin   ; byte einlesen
  58. 3300 beq l3         ; gleich 0 (= ende des eintrags)? wenn ja, dann nach l3
  59. 3310 ldx st         ; status noch ok?
  60. 3320 bne l3         ; wenn nicht, dann nach l3
  61. 3330 jsr chrout     ; zeichen ausgeben
  62. 3340 bne l2         ; und gleich wieder nach l2, da zeichen auf jeden fall <>0
  63. 3350 l3 jsr crdo    ; carriage return ausfuehren
  64. 3380 bcc l1         ; wieder nach l1, da nach crdo carry-flag geloescht
  65. 3400 l4 jmp closei  ; file schliessen und ende
  66.