Contributor: STUART KIRSCHENBAUM {> function GetDriveID(drive: char):byte;> begin> with regs do> begin> AH := 1ドルC;> DL := ord(Upcase(drive))-64;> Intr(21,ドルregs);> GetDriveID := Mem[ds:bx];> end;> end;>This interrupt (01Ch) is supposed to return 0F8h in case of a harddisk, and>some other value if it is a floppy. However, running OS/2, this function>returns 0F0h :(( My old Apricot (it's a computer!), running DOS 3.2, also>reports 0F0h... 0F0H is also the code for an unknown device for Service 1ドルC. I haven't tried it but have you looked at Service 44,ドル function 08ドル? My sources tell me that this function (DOS 3.0 up) will return 0 in AX if the device is removable, 1 if a fixed disk, and 0ドルF if invalid drive. Hang on... I'm trying it now. It seemed to work here. Below is the sample code I used (in TP 5.5). } PROGRAM HDTest; {Stuart Kirschenbaum 93/12/11 Donated to the Public Domain if the Public actually wants it :-) } USES DOS; VAR Is_Hard_Drive : boolean; FUNCTION TestHD(DriveNum : byte):boolean; VAR Regs: Registers; BEGIN With Regs DO BEGIN AH := 44ドル; AL := 08ドル; BL := DriveNum; Intr(21,ドル Regs); IF AX = 0 THEN TestHD := false ELSE IF AX = 0 THEN TestHD := true; {Note we really should test for invalid drive but this is just an example} END; END; BEGIN {Main for testing program} Is_Hard_Drive := TestHD(3); {3 = Drive C a Hard Drive on my system} IF Is_Hard_Drive THEN writeln('Well that seemed to work fine... Let''s try a floppy') ELSE writeln('That didn''t work right... Damn.'); Is_Hard_Drive := TestHD(1); {1 = Drive A, a floppy drive} IF Is_Hard_Drive THEN writeln('You should never see this message') ELSE writeln('Success'); END.