Date : Thu, 10 May 1984 13:16:01-PDT (Thu)
From : hplabs!sdcrdcf!sdcsvax!sdccsu3!loral!simard@Ucb-Vax.ARPA
Subject: Re: BIOS Techniques, a question.
The disk parameter block (DPB) whose address is returned ih
the HL pair when SELDSK is called contains a pointer to the
disk parameter header which defines the characteristics
of the current drive which are to apply to all further calls to
SECTRAN, SETSEC (indirectly), READ and WRITE,
until SELDSK is called again. As long as the
DPH/DPB data agree with the disk currently accessed, CP/M will
be happy. The only error indications that the BIOS returns
to the BDOS (main body of CPM) is success (A=0) or failure
(A<>0) from READ or WRITE, or that SELDSK was asked to select
an invalid logical drive (HL returned = 0). If you can determine
what kind of disk is installed in a physical drive dynamically,
the check should be placed in SELDSK. The pointer in the
DPB to the appropriate DPH would then be set by SELDSK
to reflect the outcome of the
check as well as set up the driver for the disk controller
as appropriate. If that is not possible,
then you might want to implement multiple
logical drives for each physical drive (for example, if your system
has two physical drives, A: and B: could be SS/SD, C: and D: could
be the same drives, but SS/DD, etc.). The operator would select
the drive according to the type of disk installed.
Note: I am referring to DPB's and DPH's from memory. I
may have them reversed. What I refer to as DPB is the
16-byte block unique to each logical drive, containing
pointers to the applicable DPH, sector translation table,
allocation and check vectors, and whose address is returned by
SELDSK. The DPH in the above is the
data set defining the size, reserved tracks, block size,
etc., and which may be shared by numerous logical drives.
Ray Simard
Loral Instrumentation, San Diego, CA.