home *** CD-ROM | disk | FTP | other *** search
- 10 ' *** FSPACE.BAS *** 9-1-86
- 20 ' Determine free space on on path pth$
- 30 '
- 40 'Written by Burks A. Smith
- 50 ' Datasmith, Inc.
- 60 ' Box 8036
- 70 ' Shawnee Mission KS 66208
- 80 '
- 90 '
- 100 ' < This is a test program
- 110 '
- 120 GOSUB 500 'initialize
- 130 PTH$ = ""
- 140 GOSUB 1000
- 150 PRINT FSPACE;" bytes free"
- 160 END
- 170 '
- 500 ' < Initialize Free Space Subroutine
- 510 '
- 520 DEF SEG
- 530 A=PEEK(&H2E)+256*PEEK(&H2F): CMPL%=NOT(A=530) 'compare A = this line
- 540 RESTORE 610: FS$=""
- 550 READ A$
- 560 WHILE A$<>"/*": FS$=FS$+CHR$(VAL(A$)): READ A$: WEND
- 570 RETURN
- 600 ' 8086 instructions for DOS call to get disk free space
- 610 DATA &H55,&H8B,&HEC,&HB4,&H30,&HCD,&H21,&H3C,0,&H75,&H9,&HB8,0
- 620 DATA &H80,&H33,&HD2,&H8A,&HCC,&HEB,&H26,&H8B,&H76,&H8,&H8B,&H14
- 630 DATA &HB4,&H36,&HCD,&H21,&HF7,&HE1,&HF7,&HE3,&H33,&HC9,&H50,&H0B
- 640 DATA &HC2,&H58,&H74,&H11,&H92,&HFE,&HC5,&HD1,&HE2,&HD1,&HD0,&H73
- 650 DATA &HF8,&HB1,&HA1,&H2A,&HCD,&HD1,&HE8,&HD1,&HDA,&H8B,&H7E,&H6
- 660 DATA &H88,&H35,&H47,&HAB,&H88,&H0D,&H5D,&HCA,&H4,0,/*
- 670 '
- 1000 ' < Find Disk Free Space
- 1010 ' expects pth$=path; returns dr%=drive #, fspace=free space
- 1020 DEF SEG
- 1030 IF CMPL% THEN SPO=2 ELSE SPO=1
- 1040 FS=PEEK(VARPTR(FS$)+SPO)+256*PEEK(VARPTR(FS$)+SPO+1) 'addr of FS$
- 1050 IF FS>32767 THEN FS%=FS-65536! ELSE FS%=FS
- 1060 X%=INSTR(PTH$,":"): IF X%<2 THEN DR%=0: GOTO 1080
- 1070 DR%=(ASC(MID$(PTH$,X%-1,1)) AND &HDF)-64
- 1080 FSPACE=0
- 1090 IF NOT CMPL% THEN CALL FS(DR%,FSPACE): RETURN '<- interpreted
- 1100 CALL ABSOLUTE (DR%,FSPACE,FS%) '<- compiled
- 1110 RETURN