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

  1. 1 DEFINT A-Z
  2. 100 DIM READ.DIR.CODE%(40), DIR.ENTRY%(40)  'move this line to start of pgm.
  3. 110 DEF SEG:  FOR I=0 TO 40:  DIR.ENTRY%(I)= -1:  NEXT
  4. 120 FOR I=0 TO 65:  READ J:  POKE ( VARPTR( READ.DIR.CODE%(0) ) +I ), J:  NEXT
  5. 130 READ.FIRST% = &H4E
  6. 140 READ.NEXT%  = &H4F
  7. 150 ' sample usage:
  8. 160 '   define parameters:
  9. 170 FILE.SPEC$ = "A:*.*" + CHR$(0)
  10. 180 ATTRIB% = 255
  11. 190 ERR.CODE%= 0
  12. 200 FUNCTION% = READ.FIRST%:  GOSUB 240   'change these line numbers to actual
  13. 210 FUNCTION% = READ.NEXT%:   GOSUB 240   'use same filespec & attrib.
  14. 220 IF ERR.CODE% = 0 THEN 210            'if not FILE NOT FOUND, get another
  15. 230 END
  16. 240 DEF SEG:  READ.DIR.SUBR% = VARPTR(READ.DIR.CODE%(0))
  17. 250 '    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%)
  18. 260 CALL READ.DIR.SUBR%(FUNCTION%,ATTRIB%,FILE.SPEC$, DIR.ENTRY%(0), ERR.CODE%)
  19. 270 '
  20. 280 '   read file creation date:
  21. 290 IF ERR.CODE% = 18  THEN  RETURN
  22. 300 X1 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 24 )
  23. 310 X2 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 25 )
  24. 320 YR = ( ( X2 AND 254 ) / 2 ) + 80
  25. 330 MO = ( X2 AND 1 ) * 8 + ( ( X1 AND 224 ) / 32 )
  26. 340 DY = ( X1 AND 31 )
  27. 350 DT$ = RIGHT$(STR$(MO),2) +"/"+ RIGHT$(STR$(DY),2) +"/" + RIGHT$(STR$(YR),2)
  28. 360 IF MO < 10 THEN MID$( DT$,1,1 ) = "0"
  29. 370 IF DY < 10 THEN MID$( DT$,4,1 ) = "0"
  30. 380 '  read file size:
  31. 390 FOR I = 26 TO 30:  SIZ!(I-26) = PEEK( VARPTR( DIR.ENTRY%(0) ) + I ):  NEXT
  32. 400 SIZE!= SIZ!(0) +SIZ!(1)*256 +(SIZ!(2)+(SIZ!(3)*256))*65536!
  33. 410 '   read file name:
  34. 420 FOR I = 30 TO 43
  35. 430   X = PEEK( VARPTR( DIR.ENTRY%(0) ) +I )
  36. 440   IF X <> 0 THEN PRINT CHR$(X); ELSE I=43
  37. 450 NEXT
  38. 460 PRINT , DT$ USING "###,###,###"; SIZE!
  39. 470 RETURN
  40. 480 END
  41. 490 '*                      21 BYTES - RESERVED FOR DOS USE ON SUBSEQUENT
  42. 500 '*                                 FIND NEXT CALLS
  43. 510 '*                       2 BYTES - FILES CREATE/UPDATE TIME
  44. 520 '*                       2 BYTES - FILES CREATE/UPDATE DATE
  45. 530 '*                       2 BYTES - LOW WORD OF FILE SIZE
  46. 540 '*                       2 BYTES - HIGH WORD OF FILE SIZE
  47. 550 '*                      13 BYTES - NAME AND EXTENTION OF FILE FOUND
  48. 560 '*                       1 BYTE    FOLLOWED BY A BYTE OF HEX 00.
  49. 570 '*                      43 BYTES TOTAL
  50. 580 '
  51. 590 DATA &H55
  52. 600 DATA &H89,&HE5
  53. 610 DATA &H31,&HC0
  54. 620 DATA &H31,&HC9
  55. 630 DATA &H31,&HD2
  56. 640 DATA &H8B,&H76,&H0E
  57. 650 DATA &H8A,&H24
  58. 660 DATA &H8B,&H76,&H0C
  59. 670 DATA &H8B,&H0C
  60. 680 DATA &H8B,&H76,&H0A
  61. 690 '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC COMPILER
  62. 700 DATA &H8B,&H54,&H01
  63. 710 '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
  64. 720 'DATA &H8B,&H54,&H02
  65. 730 DATA &HCD,&H21
  66. 740 DATA &H8B,&H76,&H06
  67. 750 DATA &H88,&H04
  68. 760 DATA &H8B,&H76,&H08
  69. 770 DATA &H89,&HF7
  70. 780 DATA &H06
  71. 790 DATA &H31,&HDB
  72. 800 DATA &HB4,&H2F
  73. 810 DATA &HCD,&H21
  74. 820 DATA &HFC
  75. 830 DATA &HB9,&H2C,&H00
  76. 840 DATA &H89,&HDE
  77. 850 DATA &H90,&H90,&H90
  78. 860 DATA &H1E
  79. 870 DATA &H06
  80. 880 DATA &H1F
  81. 890 DATA &H07
  82. 900 DATA &HF3
  83. 910 DATA &HA4
  84. 920 DATA &H06
  85. 930 DATA &H1F
  86. 940 DATA &H07
  87. 950 DATA &H5D
  88. 960 DATA &HCA,&H0A,&H00
  89.