I must have screwed up an put this out on the list. I thought I had
modified the destination address . . . <sigh> another "senior moment."
It
might not be bad to kick this around among those who know.
Please see embedded remarks below.
Dick
----- Original Message -----
From: ajp166 <ajp166(a)bellatlantic.net>
To: <classiccmp(a)classiccmp.org>
Sent: Wednesday, October 04, 2000 8:54 PM
Subject: Re: CP/M BIOS setup
From: Richard Erlacher <richard(a)idcomm.com>
For some time, I've pondered what it might
take to divine the various
format
features from a CP/M boot disk. It seems to me
that if one has a
bootable
disk, it has to have sufficient information on the
boot tracks to allow
one
to find a copy of the BDOS, which, so long as
it's the right version of
CP/M, should disclose the details of what formatting has been used for
those
The bdos can't tell you much other than it's version.
I wasn't thinking so much about ASKING the BDOS as much as I was looking to
examine the thing in order to get the sector interleaving and skew data.
(skew being the relative position of the sector sequence from one track to
the adjacent ones. The BDOS doesn't change, generally, though there may be
changes in the BIOS. By finding each sector of the BDOS, one learns about
the format of the boot tracks. My CCS system, for example, requires, at
least for the distributed boot EPROM, that the boot tracks be SSSD. That
said, the write-up accompanying the controller suggests that one could make
a DD boot disk by formatting the boot tracks SD. The rest of the diskette
could be formatted DD, whether single- or double-sided. Consequently, it's
necessary to reexamine the disk to see what the interleave (which DRI and
some people call skew), skew, sector size, modulation, and other parameters
for the remainder of the diskette are. For that reason, it's necessary to
find a known file e.g.
PIP.COM, or some other standard facility, which can
also be subjected to byte-by-byte comparison in order verify that the
parameters extracted from the diskette are valid.
>tracks. What's more, given that one can find the BDOS, byte for byte,
one
>should also be able to find enough of a BIOS to
make it possible to
extract
>the necessary disk parameters used to boot the
system. If a second-tier
>system is loade, one should be able to find that by examining the
autocmd.
>That should then yield the data necessary to read
the diskette in its
entirety.
the key parameters are the DPH, DPB and SKEW... also you need to know
how big the sector is and if there is embedded skew within the sector.
Then you need to know the disk layout, things like what side/sector
numbering was used. For example I've seen two sided media where
sector one occured on both sides and where identically formatted, also
I've seen side one as 1 thru 9 and side two as 10 through 17...
These parameters are all there on a boot diskette. It's just necessary to
find them.
It is possible to devine all that from a bootable disk (I have a few that
would never give you that as the core bios is not on the disk at all)
but it's a lot of processing and at last count there were some 80 formats
for 5.25media alone.
Have you ever run into a utility that handles
this? I'd think someone
would
have done this by now.
Yes, Media Master, Uniform, Multidisk, Eset are a few I use and they all
work from tables and have expectations of a bios having a standard
configureation so they can "drive" the bios.
The Multidisk and Eset that I have are not for this purpose. They want to
be passed the information that I'm suggesting could be extracted.
I also use a modular bios that runs on a slave cpu for the S100 crate
and dropping in different drive parameters is straightforward. I tend to
treat devices as interchangeable peices by using a abstraction layer.
To me the BDOS calls the BIOS and the BIOS if it needs to calls a
device driver. One common misconception is the BDOS calls a FDC
(simplification). It doesnt and that why the BDOS called the jump table
at the start of the BIOS.
That's exactly the problem I'm trying to circumvent. The interleave,
skew,
sector size, etc, are all accurately represented on the boot diskette. The
BDOS is the BDOS, i.e. shouldn't be different on different boot diskettes,
so long as the CP/M version is the same. Consequently, it should be
possible, having once determined the sector size, to extract, automatically,
the relative locations of sequential sectors of this known file. Since we
KNOW and RECOGNIZE the BDOS, shouldn't it be possible to find its beginning,
end, and intervening parts on the diskette? It may not be an instantaneous
operation, but one should be able to conjure up a program to determine the
sector size, map physical to logica sector layout, and determine the
difference in sector numbering from one track to the next. It is certainly
possible to compare what lies where the BDOS should lie with a valid copy of
the BDOS. Likewise, having found the BDOS, extracting the various disk
paramters from the system BIOS and verifying them against another known file
e.g.
PIP.COM, should provide the necessary information about the directory
and data areas of the diskette. Isn't that so?
>Another item I've wanted for some time to automate is the setup of a hard
>disk BIOS. Since it's dependent not so much on CP/M quirks but often
more
on decisions
made on the basis of folklore, I thought it might be
interesting to examine the process as a candidate for automation.
The answer is yes it;s doable and it's not worth it from where I sit.
One reason, I have the tools needed and there are plenty of freeware
out there if I dont.
Me, I use my kaypro and my s100 crate (3.5, 5.25 and 8") for this and a
copy of multidisk (table driven) and a version of Eset, used to hand
feed parameters to the parameters for oddballs. In the general scale
of things these do the job well and are more than enough. Some things
deserve a simple solution.
Well, I don't see hand-feeding a set of parameters that one has to determine
by guessing on the basis of lots of conflicting folklore as particularly
easy. Authors who wrote about the process e.g. Laird and Cortesi seemed to
equivocate considerably about this, and, while it's straightforward to come
up with a set of parameters that work, it's not easy to come up with the
optimal ones, at least where the HD is concerned. Both of the authors I
mention published utilities that extract parameters from the existing BIOS
once it's running, but neither discusses the whys and wherefores
sufficiently to imply a rigorous method of establishing a single, optimal,
layout for a HD. Likewise, they don't provide a rigorous method for finding
the parameters in use on a system disk from a foreign system. Once the data
is in hand, it's easy, certainly, but what should one do, given a known
bootable but otherwise undefined boot diskette? The reality of the data
present on a boot diskette defines all the parameters necessary to recreate
it, doesn't it?
I get emails from people all the time, asking about how to build a boot
diskette for a system they can't boot because they don't have a BIOS on the
diskette for the I/O ports they use. Likewise, I get frequent questions
about how to formulate an optimal configuration for a hard disk. While it
may not be a terrible thing, it is something many people, including myself,
though I've done it several times, find daunting. In the absence of a
rigorous method it's hard to find peace at the end of the task because so
many less-than optimal solutions will work quite well. How's a person to
determine what's best?
Allison