INT 2fH 4a11H BX=0001H: Get Dblspace Drive Mapping
Expects: AX 4a11H (mux number)
BX 0001H (DoubleSpace fn code)
DL drive number to check (0=A, 1=B, etc)
Returns: AX DoubleSpace API Error Code (0000H=success)
BH compressed drive sequence number (0-255)
BL bits 0-6: host drive number (if drive is compressed)
bit 7: compressed drive flag (1=compressed)
Info: You may use this fn as part of a system to determine whether a
particular drive ID represents a CVF▲ or a host drive.
Interpreting the return results can be a little bit tricky:
AX on return, if AX is non-zero, then DoubleSpace has not been
loaded and DL is a standard (uncompressed, unswapped) drive ID.
BH on return, BH is the sequence number; that is, the number of the
file extension of the CVF. For instance, if BH returns with 01H,
(and if BL indicates that this is a compressed drive) then the
CVF is named DBLSPACE.001 (in the root of its host).
BL on return, if the high bit is set, then drive DL is a compressed
drive and the low 7 bits of BL identify the drive ID of the host.
For instance, a return value of BL=83H means that DL was a
compressed volume whose CVF is now on drive D (0=A, 1=B, etc.).
All DOS-level fns will be able to access that host as drive D,
but its drive ID may have been swapped, so BIOS-level fns to
access the physical drive may use a different drive number.
To learn the original drive number for the drive on which the CVF
is stored, you must make a second call to this fn, this time
setting DL to the value returned in the low 7 bits of BL. If
BL=DL upon return from that second call, then that drive is host
to itself (the drive IDs have been swapped); therefore BIOS
access is via the BL value returned in the first call.
Notes: This seems far too complicated; I hope I made it clearer than the
See Also: DoubleSpace Overview
INT 2fH: Multiplex Interrupt