[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]
function DriveValid(Drive: Char): Boolean; assembler;
asm
mov ah, 19h { Select DOS function 19h }
int 21h { Call DOS for current disk drive }
mov bl, al { Save drive code in bl }
mov al, Drive { Assign requested drive to al }
sub al, 'A' { Adjust so A:=0, B:=1, etc. }
mov dl, al { Save adjusted result in dl }
mov ah, 0eh { Select DOS function 0eh }
int 21h { Call DOS to set default drive }
mov ah, 19h { Select DOS function 19h }
int 21h { Get current drive again }
mov cx, 0 { Preset result to False }
cmp al, dl { Check if drives match }
jne @@1 { Jump if not--drive not valid }
mov cx, 1 { Preset result to True }
@@1:
mov dl, bl { Restore original default drive }
mov ah, 0eh { Select DOS function 0eh }
int 21h { Call DOS to set default drive }
xchg ax, cx { Return function result in ax }
end;
[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]