home *** CD-ROM | disk | FTP | other *** search
/ Set of Apple II Hard Drive Images / hard.hdv / HARD / PROJECT / SOURCE / DIR.SC1 < prev    next >
Encoding:
Text File  |  1992-11-05  |  3.7 KB  |  119 lines  |  [04] ASCII Text (0x0000)

  1. ;=======================================
  2. ;DIRECTORY NAVIGATOR
  3. ;
  4. ;=================================================
  5. ;
  6. ;GETFILES: TRAVERSE THE BUFFER AND STORE THE FILENAMES
  7. ;
  8. NUMFILES DFB       $00       ;NUMBER OF FILES IN DIRECTORY
  9. NTRYLEN  DFB       $00       ;LENGTH OF EACH FILE ENTRY
  10. FPERBLK  DFB       $00       ;NUMBER OF FILES PER BLOCK
  11. BLKPAGE  DFB       $00       ;PAGE WE ARE ON NOW
  12. FILSREAD DFB       $00       ;NUMBER OF FILES WE READ IN CURRENT BLOCK
  13. FILEEND  DW        $00       ;LAST BYTE OF OUR FILE BUFFER
  14. ;
  15. GETFILES LDA       #<DIRBUFR      ;SET PAGE=$20
  16.          STA       BLKPAGE
  17.          LDA       #$00      ;SET UP ZP POINTER INTO THAT PAGE
  18.          STA       TEMP
  19.          LDA       BLKPAGE
  20.          STA       TEMP+1
  21.          LDA       #>FILBUFR ;SET UP ZP POINTER INTO OUR FILE AREA
  22.          STA       FPTR
  23.          LDA       #<FILBUFR
  24.          STA       FPTR+1
  25. ;
  26.          LDY       #$23      ;GET BYTE WITH OFFSET $23 INTO NTRYLEN
  27.          LDA       (TEMP),Y
  28.          STA       NTRYLEN
  29.          LDY       #$24      ;ETC WITH OTHER VALUES
  30.          LDA       (TEMP),Y
  31.          STA       FPERBLK
  32.          STA       FILSREAD
  33.          LDA       #$00      ;WE WILL COUNT NUMBER OF FILES
  34.          STA       NUMFILES
  35.          DEC       FILSREAD  ;ONE FILE READ SO FAR (FOR DIR ENTRY)
  36. ;
  37.          CLC
  38.          LDA       TEMP
  39.          ADC       NTRYLEN       ;GO TO NEXT FILE ENTRY (+27 BYTES)
  40.          STA       TEMP
  41.          LDA       TEMP+1
  42.          ADC       #$00
  43.          STA       TEMP+1
  44. ;
  45. DOBLOCK  INC       TEMP      ;ADJUST BY 4 BYTES FOR POINTERS AT BEGIN OF BLK
  46.          INC       TEMP
  47.          INC       TEMP
  48.          INC       TEMP
  49. ;
  50. NEXTFIL  LDY       #$00      ;GET THE STORAGE TYPE
  51.          LDA       (TEMP),Y       
  52.          AND       #$F0
  53.          BEQ       DONTSTOR  ;IF FILE IS DELETED, DON'T STORE IT
  54. ;
  55.          LDA       LOCKFILT
  56.          BEQ       STORFILE  ;IF WE AREN'T FILTERING LOCKED FILES, CONTINUE
  57. ;
  58.          LDY       #$1E
  59.          LDA       (TEMP),Y
  60.          AND       #$C2      ;LOOK FOR WRITE, DESTROY, RENAME ACCESS
  61.          BNE       DONTSTOR  ;IF FILTERING AND UNLOCKED, DONT STORE IT
  62. ;
  63. STORFILE INC       NUMFILES
  64.          JSR       FORMDATA  ;SEE SUBROUTINE IN NEXT SEGMENT TO FORMAT DATA
  65. ;
  66. DONTSTOR DEC       FILSREAD  ;ONE MORE FILE WAS READ
  67.          LDA       FILSREAD
  68.          BEQ       DONEBLK
  69. ;
  70.          CLC
  71.          LDA       TEMP
  72.          ADC       NTRYLEN       ;GO TO NEXT FILE ENTRY (+27 BYTES)
  73.          STA       TEMP
  74.          LDA       TEMP+1
  75.          ADC       #$00
  76.          STA       TEMP+1
  77.          CLV
  78.          BVC       NEXTFIL
  79. ;=========================
  80. DONEBLK  LDA       FPERBLK   ;RESET COUNT OF FILES IN BLOCK
  81.          STA       FILSREAD                
  82.          LDA       #$00      ;SET UP ZP POINTER INTO BLOCK PAGE
  83.          STA       TEMP
  84.          LDA       BLKPAGE
  85.          STA       TEMP+1
  86.          LDY       #$02      ;IF FWD POINTER NON-ZERO, DO NEXT BLOCK
  87.          LDA       (TEMP),Y
  88.          BNE       NEXTBLK
  89.          INY
  90.          LDA       (TEMP),Y
  91.          BNE       NEXTBLK
  92.          LDA       #$00      ;PUT FINAL ZERO ON OUR PARM AREA
  93.          JSR       STORBYTE
  94.          LDA       FPTR      ;SAVE END OF FILE AREA
  95.          STA       FILEEND
  96.          LDA       FPTR+1
  97.          STA       FILEEND+1
  98.          RTS                 ;DONE WITH DIRECTORY
  99. ;
  100. NEXTBLK  INC       BLKPAGE
  101.          INC       BLKPAGE
  102.          LDA       BLKPAGE
  103.          STA       TEMP+1    ;GO TO NEXT DIR PAGE
  104.          LDA       #$00
  105.          STA       TEMP
  106.          JMP       DOBLOCK
  107. ;
  108. ; SUBROUTINE TO STORE ONE BYTE IN FILE AREA AND INC PTR TO NEXT BYTE
  109. STORBYTE STY       YSAVE
  110.          LDY       #$00
  111.          STA       (FPTR),Y
  112.          INC       FPTR
  113.          BNE       STORBYT0
  114.          INC       FPTR+1
  115. STORBYT0 LDY       YSAVE
  116.          RTS
  117. ;
  118.          CHN       DIR.SC2
  119.