home *** CD-ROM | disk | FTP | other *** search
- DIM READ.DIR.CODE%(40), DIR.ENTRY%(40) 'move this line to start of pgm.
- DEF SEG: FOR I=0 TO 40: DIR.ENTRY%(I)= -1: NEXT
- FOR I=0 TO 65: READ J: POKE ( VARPTR( READ.DIR.CODE%(0) ) +I ), J: NEXT
- READ.FIRST% = &H4E
- READ.NEXT% = &H4F
- ' sample usage:
- ' define parameters:
- 'FILE.SPEC$ = "A:\*.*" + CHR$(0)
- 'ATTRIB% = 255
- 'ERR.CODE%= 0
- ' FUNCTION% = READ.FIRST%: GOSUB 200 'change these line numbers to actual
- '100 FUNCTION% = READ.NEXT%: GOSUB 200 'use same filespec & attrib.
- ' IF ERR.CODE% = 0 THEN 100 'if not FILE NOT FOUND, get another
- ' END
- '200 DEF SEG: READ.DIR.SUBR% = VARPTR(READ.DIR.CODE%(0))
- ' 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%)
- ' CALL READ.DIR.SUBR%(FUNCTION%, ATTRIB%, FILE.SPEC$, DIR.ENTRY%(0), ERR.CODE%)
- '
- ' read file creation date:
- 'IF ERR.CODE% = 18 THEN RETURN
- 'X1 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 24 ) )
- 'X2 = PEEK( VARPTR( DIR.ENTRY%(0) ) + 25 ) )
- 'YR = ( ( X2 AND 254 ) / 2 ) + 80
- 'MO = ( X2 AND 1 ) * 8 + ( ( X1 AND 224 ) / 32 )
- 'DY = ( X1 AND 31 )
- 'DT$ = RIGHT$(STR$(MO),2) + "/" + RIGHT$(STR$(DY),2) + "/" + RIGHT$(STR$(YR),2)
- 'IF MO < 10 THEN MID$( DT$,1,1 ) = "0"
- 'IF DY < 10 THEN MID$( DT$,4,1 ) = "0"
- ' read file size:
- 'FOR I = 26 TO 30: SIZ!(I-26) = PEEK( VARPTR( DIR.ENTRY%(0) ) + I ) ): NEXT
- 'SIZE!= SIZ!(0) +SIZ!(1)*256 +(SIZ!(2)+(SIZ!(3)*256))*65536!
- ' read file name:
- 'FOR I = 30 TO 43
- ' X = PEEK( VARPTR( DIR.ENTRY%(0) ) +I )
- ' IF X <> 0 THEN PRINT CHR$(X); ELSE I=43
- 'NEXT
- 'PRINT " " DT$ USING "#,###,###"; SIZE!
- 'RETURN
- 'END
- '* 21 BYTES - RESERVED FOR DOS USE ON SUBSEQUENT
- '* FIND NEXT CALLS
- '* 2 BYTES - FILES CREATE/UPDATE TIME
- '* 2 BYTES - FILES CREATE/UPDATE DATE
- '* 2 BYTES - LOW WORD OF FILE SIZE
- '* 2 BYTES - HIGH WORD OF FILE SIZE
- '* 13 BYTES - NAME AND EXTENTION OF FILE FOUND
- '* 1 BYTE FOLLOWED BY A BYTE OF HEX 00.
- '* 43 BYTES TOTAL
- '
- DATA &H55
- DATA &H89,&HE5
- DATA &H31,&HC0
- DATA &H31,&HC9
- DATA &H31,&HD2
- DATA &H8B,&H76,&H0E
- DATA &H8A,&H24
- DATA &H8B,&H76,&H0C
- DATA &H8B,&H0C
- DATA &H8B,&H76,&H0A
- '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC COMPILER
- DATA &H8B,&H54,&H01
- '********COMMENT OUT THE NEXT DATA STATEMENT IF USED WITH THE BASIC INTERPRETER
- 'DATA &H8B,&H54,&H02
- DATA &HCD,&H21
- DATA &H8B,&H76,&H06
- DATA &H88,&H04
- DATA &H8B,&H76,&H08
- DATA &H89,&HF7
- DATA &H06
- DATA &H31,&HDB
- DATA &HB4,&H2F
- DATA &HCD,&H21
- DATA &HFC
- DATA &HB9,&H2C,&H00
- DATA &H89,&HDE
- DATA &H90,&H90,&H90
- DATA &H1E
- DATA &H06
- DATA &H1F
- DATA &H07
- DATA &HF3
- DATA &HA4
- DATA &H06
- DATA &H1F
- DATA &H07
- DATA &H5D
- DATA &HCA,&H0A,&H00