[comp.sys.ibm.pc] INT 33, fn 14

ins_agwa@jhunix.UUCP (Gunther Wil Anderson) (05/03/87)

Help.
Interrupt 33, service 14 (Select current drive) is not returning a valid
count of drives. I have 3, it keeps saying I have five.
I'm using PCDOS 3.0. Does anyone out there know what's going on, or at
least another way to get a count of drives?

							Gunther Anderson
					ins_agwa%jhunix.bitnet@wiscvm.wisc.edu
					ins_agwa@jhunix.bitnet
"And your wise men don't know how it feels."

cmaag@csd4.milw.wisc.edu (Christopher N Maag) (05/03/87)

Distribution:all


In article <4810@jhunix.UUCP> ins_agwa@jhunix.UUCP (Gunther Wil Anderson) writes:
>Help.
>Interrupt 33, service 14 (Select current drive) is not returning a valid
>count of drives. I have 3, it keeps saying I have five.
>I'm using PCDOS 3.0. Does anyone out there know what's going on, or at
>least another way to get a count of drives?
>
>							Gunther Anderson
>					ins_agwa%jhunix.bitnet@wiscvm.wisc.edu
>					ins_agwa@jhunix.bitnet
>"And your wise men don't know how it feels."

Check your 'config.sys' file for a statement that says:

lastdrive=c:

(This assumes you have drives A, B, and C)
If I recall correctly, with DOS 3.n, you need to include that statement
in the config.sys file in order for the computer to know how many drives
you actually have.  You may want to check this out in your DOS manual to
double check my syntax.  (I don't have any manuals at hand right now.)

maartenj@cs.vu.nl (Maarten Jan Huisjes) (05/04/87)

In article <4810@jhunix.UUCP> ins_agwa@jhunix.UUCP (Gunther Wil Anderson) writes:
>Help.
>Interrupt 33, service 14 (Select current drive) is not returning a valid
>count of drives. I have 3, it keeps saying I have five.
>I'm using PCDOS 3.0. Does anyone out there know what's going on, or at
>least another way to get a count of drives?

The technical reference manual (3.10) says:
	"For Dos 3.00, the minimum value returned in AL is 5."
Also if you have 1 diskette drive it will still be counted as two.

To determine the real number of (diskette) drives you have to use interrupt 11H.
Syntax:	int 11H
  On return in AX:
	bit(s)
	14-15		number of printers
	  13		reserved (PCjr: serial printer installed)
	  12		game adapter attached
	 9-11		number of RS232 cards
	   8		reserved
	 6- 7		number of diskette drives installed (if bit 0 = 1)
			00 = 1, 01 = 2, 10 = 3, 11 = 4
	 4- 5		initial video mode
			01 = 40x25 color, 10 = 80x25 color, 11 = 80x25 B/W
	 2- 3		system board ram size
			00 = 16K, 01 = 32K, 10 = 48K, 11 = 64K
	   1		8087 installed
	   0		diskette installed
-- 

			Maarten Jan  Huisjes.  (maartenj@cs.vu.nl)
			{seismo|decvax|philabs}!mcvax!vu44!maartenj

alab@ur-tut.UUCP (Daniel F. Luna) (05/05/87)

    
  According to DOS ver 3.00 Tech reference, Function 0E , Int 21 claims that
 the minimum number of drives (for ver 3.00 and later) is five.  This is consistant with the "lastdrive"=E by default.  This function will return total drives, that is fixed disk and floppy, or 5, whichever is greater.

   A way to determine actual number of floppy's is to use BIOS int11.
   Look in BIOS listing for output (stored in AX register after function call).

-- 
Daniel F. Luna 
PC-Person.
uucp: ...rochester!ur-tut!alab
arpa: ur-tut!alab@rochester