DIRECTORIES 2/3

 BBS: Inland Empire Archive
Date: 02-26-93 (00:11)             Number: 179
From: ROB MCKEE                    Refer#: NONE
  To: OWEN GIBBINS                  Recvd: NO  
Subj: DIRECTORIES 2/3                Conf: (2) Quik_Bas
Hello Owen!
   You wrote to All:

'>>> Continued from Previous

 SUB findfirstfile (Path$, dta$, Result%)
    DIM reg AS RegTypeX
    thePATH$ = Path$ + CHR$(0)
    reg.ax = &H2F00
    CALL INTERRUPTX(&H21, reg, reg)
    segm% = reg.es
    ofst% = reg.bx
    dta$ = SPACE$(43)
    reg.ax = SetDTAInt21h '&H1A00
    reg.ds = VARSEG(dta$)
    reg.dx = SADD(dta$)
    CALL INTERRUPTX(&H21, reg, reg)
    reg.ax = &H4E00
    reg.cx = 255
    reg.ds = VARSEG(thePATH$)
    reg.dx = SADD(thePATH$)
    CALL INTERRUPTX(&H21, reg, reg)
    Result% = reg.flag AND 1
    reg.ax = SetDTAInt21h '&H1A00
    reg.ds = segm%
    reg.dx = ofst%
    CALL INTERRUPTX(&H21, reg, reg)
 END SUB

 SUB FindNextFile (dta$, Result%) STATIC
    DIM reg AS RegTypeX
    SHARED thePATH$
    IF LEN(dta$) <> 43 THEN Result% = 2: EXIT SUB
    reg.ax = &H2F00
    CALL INTERRUPTX(&H21, reg, reg):
    segm% = reg.es:
    ofst% = reg.bx
    reg.ax = SetDTAInt21h '&H1A00
    reg.ds = VARSEG(dta$): reg.dx = SADD(dta$):
    CALL INTERRUPTX(&H21, reg, reg)
    reg.ax = &H4F00:
    reg.cx = 251:
    reg.ds = VARSEG(thePATH$):
    reg.dx = SADD(thePATH$)
    CALL INTERRUPTX(&H21, reg, reg)
    Result% = reg.flag AND 1
    reg.ax = SetDTAInt21h '&H1A00
    reg.ds = segm%: reg.dx = ofst%
    CALL INTERRUPTX(&H21, reg, reg)
 END SUB

 SUB GetDiskSize (DkSz AS DiskSizeType, UsPath$)
    DIM reg AS RegTypeX
    reg.ax = &H3600
    i% = INSTR(UsPath$, ":")
    IF i% > 0 THEN
        D$ = MID$(UsPath$, i% - 1, 1)
        IF D$ < "A" OR D$ > "Z" THEN
            DkSz.Drive = false
        ELSE
            DkSz.Drive = ASC(D$) - 64
        END IF
    ELSE
        DkSz.Drive = false
    END IF
    reg.dx = DkSz.Drive
    CALL INTERRUPTX(&H21, reg, reg)
    IF reg.ax < 0 THEN DkSz.SecCl = reg.ax + 65536 ELSE DkSz.SecCl = reg.ax
    IF reg.bx < 0 THEN DkSz.AvaCl = reg.bx + 65536 ELSE DkSz.AvaCl = reg.bx
    IF reg.cx < 0 THEN DkSz.SecSz = reg.cx + 65536 ELSE DkSz.SecSz = reg.cx
    IF reg.dx < 0 THEN DkSz.TotCl = reg.dx + 65536 ELSE DkSz.TotCl = reg.dx
    DkSz.CluSz = DkSz.SecCl * DkSz.SecSz
    DkSz.free = DkSz.AvaCl * DkSz.CluSz
    DkSz.Total = DkSz.TotCl * DkSz.CluSz
    DkSz.Used = DkSz.Total - DkSz.free
 END SUB

 SUB GetFileData (dta$, File AS FileType) STATIC
    File.attribute = ASC(MID$(dta$, 22, 1))
    File.Size = CVL(MID$(dta$, 27, 4))
    tim& = CVL(MID$(dta$, 23, 2) + STRING$(2, 0))
    File.second = tim& AND &H1F
    File.minute = (tim& \ 32) AND &H3F
    File.hour = (tim& \ 2048) AND &H1F
    File.FTime = RIGHT$(STR$(File.hour), 2) + ":" + RIGHT$("00" +_
 LTRIM$(STR$(File.minute)), 2) + ":" +_
 RIGHT$("00" + LTRIM$(STR$(File.second)),2)
    tim& = CVL(MID$(dta$, 25, 2) + STRING$(2, 0))
    File.day = tim& AND &H1F
    File.month = (tim& \ 32) AND &HF
    File.year = ((tim& \ 512) AND &H1F) + 1980
    File.FDate = RIGHT$(STR$(File.month), 2) + "-" + RIGHT$("00" + _
 LTRIM$(STR$(File.day)), 2) + "-" + RIGHT$("0000" +_
 LTRIM$(STR$(File.year - 1900)), 2)
    f$ = MID$(dta$, 31) + CHR$(0)
    File.Fname = LEFT$(f$, INSTR(f$, CHR$(0)) - 1)
 END SUB

 '<<< Continued in Next Message

     SysOp 1:125/411 PVT - Rob

--- timEd/B6
 * Origin: Flyer_Proof_Computer_Svs,Richmond_CA,MO,V32B (1:125/411)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET