Machine is an AT 80286, drive A is 3.5' 1.44 Mb, drive B is 5.25' 1.2 Mb.
Vector for int 1Eh is a far pointer to address of active DPT (diskette parameter table):
-d 0000:0078
0000:0070 22 05 00 00 BC 49 00 C0 "....I..
-d 0000:0522
0000:0520 DF 02 25 02 3F 1B-FF 54 F6 0F 08 00 00 00 ..%.?..T......
From DPT's address (0000:0522) it is obvious that MS-DOS has created a distinct DPT and set 1Eh to point there. But where is active DPT for drive B, the 5 1/4 one, stored?
Calling int 13h,AH=08h points to the default DPTs set by the BIOS, which are indeed different for drives A & B :
For DL=0 (drive A, 1.44) it points to F000:B392
F000:B390 AF 02 25 02 12 1B-FF 6C F6 0F 08 4F 00 DF ..%....l...O..
For DL=1 (drive B, 1.2) it points to F000:B378
F000:B370 DF 02 25 02 0F 1B FF 54 ..%....T
F000:B380 F6 0F 08 4F 00 DF 02 25-02 09 2A FF 50 F6 0F 08 ...O...%..*.P...
What troubles me is that offset 04h for DPT at 0000:0522 is 3F, this means 63 sectors per track. This is not any of my floppies, this is my hard disk!
Whereas F000:B396 is 12h=18 sectors per track for drive A, and F000:B37C is fh=15 sectors per track for drive B. Proper values for 1.44 and 1.2 formats, respectively.
My questions are:
- DPT pointed to by vector of int 1Eh, residing in this case at 0000:0522, belongs to which drive?
- Since vector of int 1Eh points to one DPT only, how can I set / view active settings for different drives?
- Since int 08h,AH=08h populates ES:DI only for floppies (source: Ralph Brown's interrupt list ), how can I set / view said settings in the case of hard drives? I am especially interested in block size.
Edit/Update:
When booting from C: with both drives without a floppy: DPT+04 offset is 3Fh, that is 63 sectors per track
-d 0000:0522
0000:0520 DF 02 25 02 3F 1B-FF 54 F6 0F 08 00 00 00 ..%.?..T......
When accessing drive A and executing DEBUG.EXE from it: DPT+04 offset becomes 12h=18 sectors per track, typical for 1.44
-d 0000:0522
0000:0520 DF 02 25 02 12 1B-FF 54 F6 0F 08 00 00 00 ..%....T......
From there on, no matter from which drive (A,B,C) I execute DEBUG.EXE and dump the contents of 0000:0522, its contents do not change.