[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]
{
Below is TP code to do drive-Type identification. I leave it as a
research exercise For you to create code to differentiate between
a RAM drive and fixed disk, if that's needed.
}
(********************************************************************)
Program DrvCount; { coded by Greg Vigneault }
Uses Crt,Dos; { For MsDos Function }
Var Drives :Byte; { count of logical drives }
Reg :Registers; { to access CPU Registers }
ThisDrive :Byte; { loop count }
DriveType :String[16]; { Type of drive found }
DataBuffer :Array [0..127] of Byte; { buffer For Dos i/o }
begin
ClrScr; { remove screen clutter }
Reg.AH := $19; { get current disk code }
MsDos(Reg); { via Dos }
Reg.DL := Reg.AL; { returned drive code }
Reg.AH := $E; { select disk }
MsDos(Reg); { via Dos }
Drives := Reg.AL; { number of logical drives }
WriteLn('Number of logical drives: ', Drives );
Intr($11,Reg); { get system equipment flag }
if ( (Reg.AX and 1) <> 0 ) { any floppies installed? }
then WriteLn('(physical floppy drives: ',
(Reg.AX SHR 6) and 3, ')' ); { get bits 6&7 }
For ThisDrive := 1 to Drives do begin { scan all drives }
Reg.AX := $440D; { using generic I/O control }
Reg.CX := $860; { to get drive parameters }
Reg.BL := ThisDrive; { For this drive }
Reg.DX := ofs(DataBuffer); { Pointer to scratch buffer }
Reg.DS := Seg(DataBuffer); { in is DS:DX }
MsDos(Reg); { thank you, Dos }
Case ( DataBuffer[1] ) of { which Type it is... }
0 : DriveType := '360 KB 5.25" FDD';
1 : DriveType := '1.2 MB 5.25" FDD';
2 : DriveType := '720 KB 3.5" FDD';
3 : DriveType := 'SD 8"'; { a relic from CP/M roots }
4 : DriveType := 'DD 8"'; { ditto }
5 : DriveType := 'Fixed/RAM disk'; { HDD or RAM }
6 : DriveType := 'Tape drive'; { a good investment }
7 : DriveType := '1.44 MB 3.5" FDD' { or "other" drv }
else DriveType := '???'; { anything else }
end; { Case }
WriteLn(' - ', CHR(ThisDrive+64),': (', DriveType, ')' );
{ further code could ID between RAM drive & HDD }
end; { For }
end. { Program }
(********************************************************************)
[Back to DRIVES SWAG index] [Back to Main SWAG index] [Original]