home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / INFO / BASIC / BAS_SUB.ZIP / READ_DIR.SUB < prev    next >
Encoding:
Text File  |  1985-04-19  |  3.0 KB  |  88 lines

  1. DIM READ.DIR.CODE%(40), DIR.ENTRY%(40)  'move this line to start of pgm.
  2. DEF SEG:  FOR I=0 TO 40:  DIR.ENTRY%(I)= -1:  NEXT
  3. FOR I=0 TO 65:  READ J:  POKE ( VARPTR( READ.DIR.CODE%(0) ) +I ), J:  NEXT
  4. READ.FIRST% = &H4E
  5. READ.NEXT%  = &H4F
  6. ' sample usage:
  7. '   define parameters:
  8. 'FILE.SPEC$ = "A:\*.*" + CHR$(0)
  9. 'ATTRIB% = 255
  10. 'ERR.CODE%= 0
  11. '    FUNCTION% = READ.FIRST%:  GOSUB 200   'change these line numbers to actual
  12. '100 FUNCTION% = READ.NEXT%:   GOSUB 200   'use same filespec & attrib.
  13. '    IF ERR.CODE% = 0 THEN 100            'if not FILE NOT FOUND, get another
  14. '    END
  15. '200 DEF SEG:  READ.DIR.SUBR% = VARPTR(READ.DIR.CODE%(0))
  16. '    IF COMPILED(1) THEN CALL ABSOLUTE(FUNCTION%, ATTRIB%, FILE.SPEC$, DIR.ENTRY%(0), ERR.CODE%, READ.DIR.SUBR%) ELSE CALL READ.DIR.SUBR%(FUNCTION%, ATTRIB%, FILE.SPEC$, DIR.ENTRY%(0), ERR.CODE%)
  17. '    CALL READ.DIR.SUBR%(FUNCTION%, ATTRIB%, FILE.SPEC$, DIR.ENTRY%(0), ERR.CODE%)
  18. '
  19. '   read file creation date:
  20. 'IF ERR.CODE% = 18  THEN  RETURN
  21. 'X1 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 24 ) )
  22. 'X2 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 25 ) )
  23. 'YR = ( ( X2 AND 254 ) / 2 ) + 80
  24. 'MO = ( X2 AND 1 ) * 8 + ( ( X1 AND 224 ) / 32 )
  25. 'DY = ( X1 AND 31 )
  26. 'DT$ = RIGHT$(STR$(MO),2) + "/" + RIGHT$(STR$(DY),2) + "/" + RIGHT$(STR$(YR),2)
  27. 'IF MO < 10 THEN MID$( DT$,1,1 ) = "0"
  28. 'IF DY < 10 THEN MID$( DT$,4,1 ) = "0"
  29. '   read file size:
  30. 'FOR I = 26 TO 30:  SIZ!(I-26) = PEEK( VARPTR( DIR.ENTRY%(0) ) + I ) ):  NEXT
  31. 'SIZE!= SIZ!(0) +SIZ!(1)*256 +(SIZ!(2)+(SIZ!(3)*256))*65536!
  32. '   read file name:
  33. 'FOR I = 30 TO 43
  34. '  X =  PEEK( VARPTR( DIR.ENTRY%(0) ) +I )
  35. '  IF X <> 0 THEN PRINT CHR$(X); ELSE I=43
  36. 'NEXT
  37. 'PRINT " " DT$ USING "#,###,###"; SIZE!
  38. 'RETURN
  39. 'END
  40. '*                      21 BYTES - RESERVED FOR DOS USE ON SUBSEQUENT
  41. '*                                 FIND NEXT CALLS
  42. '*                       2 BYTES - FILES CREATE/UPDATE TIME
  43. '*                       2 BYTES - FILES CREATE/UPDATE DATE
  44. '*                       2 BYTES - LOW WORD OF FILE SIZE
  45. '*                       2 BYTES - HIGH WORD OF FILE SIZE
  46. '*                      13 BYTES - NAME AND EXTENTION OF FILE FOUND
  47. '*                       1 BYTE    FOLLOWED BY A BYTE OF HEX 00.
  48. '*                      43 BYTES TOTAL
  49. '
  50. DATA &H55
  51. DATA &H89,&HE5
  52. DATA &H31,&HC0
  53. DATA &H31,&HC9
  54. DATA &H31,&HD2
  55. DATA &H8B,&H76,&H0E
  56. DATA &H8A,&H24
  57. DATA &H8B,&H76,&H0C
  58. DATA &H8B,&H0C
  59. DATA &H8B,&H76,&H0A
  60. '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC COMPILER
  61. DATA &H8B,&H54,&H01
  62. '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  63. 'DATA &H8B,&H54,&H02
  64. DATA &HCD,&H21
  65. DATA &H8B,&H76,&H06
  66. DATA &H88,&H04
  67. DATA &H8B,&H76,&H08
  68. DATA &H89,&HF7
  69. DATA &H06
  70. DATA &H31,&HDB
  71. DATA &HB4,&H2F
  72. DATA &HCD,&H21
  73. DATA &HFC
  74. DATA &HB9,&H2C,&H00
  75. DATA &H89,&HDE
  76. DATA &H90,&H90,&H90
  77. DATA &H1E
  78. DATA &H06
  79. DATA &H1F
  80. DATA &H07
  81. DATA &HF3
  82. DATA &HA4
  83. DATA &H06
  84. DATA &H1F
  85. DATA &H07
  86. DATA &H5D
  87. DATA &HCA,&H0A,&H00
  88.