TYPE RegTypeX AX AS INTEGER BX AS INTEGER CX AS INTEGER DX AS INTEGER BP AS INTEGER SI AS INTEGER DI AS INTEGER FLAGS AS INTEGER DS AS INTEGER ES AS INTEGER END TYPE DECLARE SUB InterruptX (IntNum AS INTEGER, InReg AS RegTypeX, OutReg AS RegTypeX) DECLARE FUNCTION LastValidDrive$ () FOR I% = 1 TO LEN(COMMAND$) IF MID$(COMMAND$, I%, 1) <> CHR$(32) THEN Short$ = Short$ + MID$(COMMAND$, I%, 1) NEXT IF COMMAND$ = "" OR COMMAND$ = SPACE$(LEN(COMMAND$)) THEN Short$ = LEFT$(CURDIR$, 2) IF LEN(Short$) <> 2 THEN GOTO Bye IF RIGHT$(Short$, 1) <> ":" THEN GOTO Bye IF ASC(Short$) < 65 THEN GOTO Bye IF ASC(Short$) > ASC(LastValidDrive$) THEN PRINT "Last valid drive is "; LastValidDrive$; ":": END DIM Reg AS RegTypeX Reg.DX = ASC(COMMAND$ + "@") - 64 Reg.AX = &H3600 InterruptX &H21, Reg, Reg DiskFree& = (Reg.BX AND &HFFFF&) * Reg.AX * Reg.CX PRINT MID$(STR$(DiskFree&), 2); " bytes available on "; Short$ END Bye: PRINT "Usage: FREESPC " FUNCTION LastValidDrive$ DIM Reg AS RegTypeX, index% FOR index% = 26 TO 1 STEP -1 Reg.DX = index% Reg.AX = &H3600 InterruptX &H21, Reg, Reg IF Reg.AX <> -1 THEN LastValidDrive$ = CHR$(index% + 64) EXIT FUNCTION END IF NEXT END FUNCTION