[comp.sys.ibm.pc] IBM-AT BIOS ROMS

dchou@NCoast.ORG (David Chou) (09/19/89)

I have recently tried to update a hard disk in an IBM-AT with a
Miniscribe 3085 and have found that the geometry for this disk is not
in the BIOS tables (only 14 are in the tables).  I prefer not to use
a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
copy of the IBM AT Tech Reference Manual and have located the disk
geometry tables.  It is therefore possible for me to copy my BIOS ROMS
into 27128 EPROMS and alter one of the existing disk types.  Unfortunately,
I suspect that the BIOS does a checksum on the BIOS ROMS, but cannot
find where it is being done or where the checksum is being performed.
Is there anyone out there who has any information on how this is being
done?  I have already found the code where the system performs checksums
on auxiliary ROMS, but this does not seem applicable for the BIOS ROMS.
Incidentally, the system is one of the original 6MHz ATs with 128K
stacked DRAMS.

Thanks in advance.

David Chou     ncoast!dchou@hal.cwru.edu

craigb@hp-sdd.hp.com (Craig Bosworth) (09/20/89)

In article <1989Sep19.021545.8110@NCoast.ORG> dchou@NCoast.ORG (David Chou) writes:
>I suspect that the BIOS does a checksum on the BIOS ROMS, but cannot
>find where it is being done or where the checksum is being performed.
>...
>       I have already found the code where the system performs checksums
>on auxiliary ROMS, but this does not seem applicable for the BIOS ROMS.

I'm not sure what auxillary ROM checksums you are talking about, but here is
what I found:

In my AT Tech Ref (p/n 6139362, September 1985), the ROM checksum is on page
5-38.  This is in module TEST1, assembled 6-10-85, line 1051, offset 0183H.
In a coworker's AT Tech Ref (p/n 1502494, March 1984), the ROM checksum is
called on page 5-36.  This is in module TEST1, assembled 11-28-83, offset
021FH.  The actual code for the checksum is on page 5-67, module TEST3, 
assembled 9-26-83, offset 0.

In both, a byte-wise checksum is performed on 64kB starting at F000:0000.
If the resulting sum (byte) is not zero, the checksum fails, and the system
is halted.  Maybe you can modify some other byte in your new EPROM to main-
tain a zero checksum.

I don't know how many other versions of AT ROM there are, but I suspect that
the ROM checksum will happen fairly early in POST like it does in these two.

Hope this helps...

BOS

-- 
Craig Bosworth  (619) 592-8609           16399 West Bernardo Drive
Hewlett-Packard, San Diego Division      San Diego, CA  92127-1899
UUCP     : {hplabs|nosc|hpfcla|ucsd}!hp-sdd!craigb
Internet : craigb%hp-sdd@hp-sde.sde.hp.com (or @nosc.mil, @ucsd.edu)

harper@rigel.uucp (David Harper) (09/21/89)

In article <1989Sep19.021545.8110@NCoast.ORG> dchou@NCoast.ORG (David Chou) writes:
>I have recently tried to update a hard disk in an IBM-AT with a
>Miniscribe 3085 and have found that the geometry for this disk is not
>in the BIOS tables (only 14 are in the tables).  I prefer not to use
>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
>copy of the IBM AT Tech Reference Manual and have located the disk
>geometry tables.  It is therefore possible for me to copy my BIOS ROMS
>into 27128 EPROMS and alter one of the existing disk types.  Unfortunately,
>I suspect that the BIOS does a checksum on the BIOS ROMS, but cannot
>find where it is being done or where the checksum is being performed.
>Is there anyone out there who has any information on how this is being
>done?  I have already found the code where the system performs checksums
>on auxiliary ROMS, but this does not seem applicable for the BIOS ROMS.
>Incidentally, the system is one of the original 6MHz ATs with 128K
>stacked DRAMS.
>
>Thanks in advance.
>
>David Chou     ncoast!dchou@hal.cwru.edu

I have been faced with similar problems in the past.  On one BIOS which came  
out of an American Research Corp PC/AT I was able to track down the routine
which does the checksum and modify it so that it would never fail.  I think
this involved changing a 'jump equal' instruction to a 'jump always' instruction.
Later, I wanted to perform the same trick on a Phoenix BIOS but never was able
to locate the checksum routine.  Also, I was unable to find the checksum itself;
I had throught that I might simply be able to change that to the new value.  
Eventually, I sold the drive I was trying to integrate so the problem went away.  
About two days after that ( 8-( ) I thought of a way that should work, but I 
must stress that it has not been tried yet.  Briefly, the steps to be performed 
are as follows:
     1) Determine the checksum of each EPROM.  This can generally be
	done by simply reading the chip in an EPROM programmer.  Usually
	they return the checksum read in when the operation completes.
     2) Find the table entry that you want to use and modify it for the
	correct parameters.  I can't remember the table format off the
	top of my head (I'm at work and my copy of the AT Tech Ref manual
	is at home) but the book clearly shows what goes where.
     3) Pick one or more table entries that you think you will never use and
	adjust their values so that the net result is the same checksum that
	you originally started with.  This must be done with each EPROM
	individually.
I don't know if all EPROM checksums work the same but the one that I defeated
worked by adding up the individual byte values from each successive location
into a 16 bit value, starting over at zero again on overflow.  If this is the
case with your EPROMs the above should work.  As I say, I never had a chance 
to try this approach and I would be interested to hear if it works.


Dave Harper    -     Convex Computer Corp.            E-mail address:
3000 Waterview Pky.  Richardson, TX 75081             harper@convex.COM
(214) 497-4525 (W)   (214) 727-4206 (H)

wek@point.UUCP (Bill Kuykendall) (09/21/89)

>in the BIOS tables (only 14 are in the tables).  I prefer not to use
>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a

Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
anyway.

>geometry tables.  It is therefore possible for me to copy my BIOS ROMS
>into 27128 EPROMS and alter one of the existing disk types.  Unfortunately,
>I suspect that the BIOS does a checksum on the BIOS ROMS, but cannot
>find where it is being done or where the checksum is being performed.
>Is there anyone out there who has any information on how this is being
>done?  I have already found the code where the system performs checksums

Any prom burner worth it's salt will do the checksum for you.  I wouldn't
waste the time fooling with it though.  You can buy a Phoenix bios with all
the bells & whistles including in-rom setup for $14 from a dozen different
mail order houses advertised in almost any PC publication.  

keithe@tekgvs.LABS.TEK.COM (Keith Ericson) (09/21/89)

In article <1817@convex.UUCP> harper@rigel.UUCP (David Harper) writes:
 [about finding/modifying BIOS ROM checksums:]
->...I thought of a way that should work, but I 
->must stress that it has not been tried yet.  Briefly, the steps to be
->performed are as follows:
->     1) Determine the checksum of each EPROM.  This can generally be
->	done by simply reading the chip in an EPROM programmer.  Usually
->	they return the checksum read in when the operation completes.
->     2) Find the table entry that you want to use and modify it for the
->	correct parameters.  I can't remember the table format off the
->	top of my head (I'm at work and my copy of the AT Tech Ref manual
->	is at home) but the book clearly shows what goes where.
->     3) Pick one or more table entries that you think you will never use and
->	adjust their values so that the net result is the same checksum that
->	you originally started with.  This must be done with each EPROM
                                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
->	individually.
        ^^^^^^^^^^^^

NO...

(This works with the Phoenix BIOS ROMs I've played with:)

The word at the end of the BIOS ROMs contains one "system ID" byte
and one "checksum" byte.  After performing any modifications to the
BIOS ROM contents it is necessary _only_ to fix up that checksum
byte.  As I recall, the AT (Clones) I was playing with haf $FE as
the ID byte.

I've modified a few BIOS ROM sets to accommodate new drives.  (I've
also changed a power-on copyright to read "Keith Ericson's 286 AT"
just for the fun of it. ;-)

kEITHe

wcf@psuhcx.psu.edu (Bill Fenner) (09/21/89)

In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall) writes:
|>in the BIOS tables (only 14 are in the tables).  I prefer not to use
|>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
|
|Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
|anyway.
Sure it does.  Just get the miniscribe version.  Anyone know of any versions
of DM other than Seagate, Miniscribe, and CDC (in which case it's called
PC-WREN Manager, and there's a batch file on the disk called something
like PCWREN.BAT, which says
DM %1 %2 %3
really customized software there... :-)

  Bill
-- 
   Bitnet: wcf@psuhcx.bitnet     Bill Fenner       | aaaaaaaaa
  Internet: wcf@hcx.psu.edu                        |            r
 UUCP: {gatech,rutgers}!psuvax1!psuhcx!wcf         |              g
Fido: Sysop at 1:129/87 (814/238 9633) \hogbbs!wcf |               h

mvolo@uncecs.edu (Michael R. Volow) (09/22/89)

[deleted stuff about matching old IBM AT with new or modified ROMs]

Regarding the comment that Disk Manager isn't for Miniscribes, although
I haven't needed to use it, the copy of Disk Manager that came with
my Miniscribe 3053 is plainly marked "version 3.6, Manufactured for
Miniscribe"

M Volow, VA Medical Center, Durham, NC 27705
mvolo@ecsvax.UUCP           919 286 0411

bruce@tolerant.UUCP (Bruce Hochuli) (09/22/89)

In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall) writes:
>>in the BIOS tables (only 14 are in the tables).  I prefer not to use
>>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
>
>Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
>anyway.

I have a version of DM from Miniscribe that is (gasp) configured for
Miniscribe drives. I also have a copy with the Seagate stuff on it.

I thought that part of DM was a driver, don't remember the name of it
right now(dmdrive.sys ?). Pretty close to a TSR.

jb@aablue.UUCP (John B Scalia) (09/22/89)

In article <1658@psuhcx.psu.edu> wcf@psuhcx.psu.edu (Bill Fenner) writes:
>In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall) writes:
>|>in the BIOS tables (only 14 are in the tables).  I prefer not to use
>|>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
>|
>|Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
>|anyway.
>Sure it does.  Just get the miniscribe version.  Anyone know of any versions
> [deletions...]

As someone who's had to go through this with a very unhelpful OnTrack techie,
just make sure you've got DM Version 3.6 or higher. One of my glorious 
distributors sent me a 3085 (which I should mention is what the original
poster is using) enclosed with DM Version 3.3. It appeared to format the
drive perfectly, but after logical format and software loading, it wouldn't
do anything on reboot. We even tried it 3 times before we called. Anyway,
OnTrack just claimed the drive was probably defective, until I prodded them
about "What's your current version numbers up to?"

PS. I don't normally even bother with 3rd party stuff like DM. Sneer as I
might at some of Everex's botched attempts, their Disk Utility package is
pretty robust. It permits using the CMOS numbers or defining on-the-fly.
Of course, we only discovered this AFTER our first 3085 :-) :-)

jb@aablue
-- 
A A Blueprint Co., Inc. - Akron, Ohio +1 216 794-8803 voice
UUCP:	   {uunet!}aablue!jb	

Sometimes they do let me speak for the company, not today though.

karl@ddsw1.MCS.COM (Karl Denninger) (09/22/89)

>-----
>Response 4 of 4 (5625) by wcf at psuhcx.psu.edu on Fri 22 Sep 89 04:34
>[Bill Fenner]
>
>In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall)
>writes:
>|Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
>|anyway.
>Sure it does.  Just get the miniscribe version.  Anyone know of any versions
>of DM other than Seagate, Miniscribe, and CDC (in which case it's called
>PC-WREN Manager, and there's a batch file on the disk called something
>like PCWREN.BAT, which says
>DM %1 %2 %3

Sure.  Get the GENERIC version of DM, which will do anything.

You have to pay for it however.  I think it runs about the same cost as
Speedstor, or roughly $100.

We purchased the generic Speedstor utility instead.  In addition to having
some 150-200 different drive types in there (and a "roll your own" setting)
it also has a set of excellent diagnostics and -- most importantly -- a NON-
DESTRUCTIVE reformatter.  The last feature alone was worth the money.  Makes
it real easy to refresh formats and change interleave.

--
Karl Denninger (karl@ddsw1.MCS.COM, <well-connected>!ddsw1!karl)
Public Access Data Line: [+1 312 566-8911], Voice: [+1 312 566-8910]
Macro Computer Solutions, Inc.  "Quality Solutions at a Fair Price"

mlord@bmers58.UUCP (Mark Lord) (09/22/89)

In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall) writes:
>>in the BIOS tables (only 14 are in the tables).  I prefer not to use
>>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
>
>Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
>anyway.

Hmm.. DM actually does include a TSR.. DMDRVR.BIN is used to access multiple
"DOS" partitions under any recent version of xx-DOS.  Also, DM is distributed
in different versions for different brands of drives, including Miniscribe.
My Miniscribe 3650 came with a version, and my Seagate 251-1 also came with
a Seagate-specific version.  Works great!

-Mark

keithe@tekgvs.LABS.TEK.COM (Keith Ericson) (09/22/89)

In article <1989Sep21.214045.22139@uncecs.edu> mvolo@uncecs.edu (Michael R. Volow) writes:

>Regarding the comment that Disk Manager isn't for Miniscribes, although
>I haven't needed to use it, the copy of Disk Manager that came with
>my Miniscribe 3053 is plainly marked "version 3.6, Manufactured for
>Miniscribe"

And the only reason it's for Miniscribes is because that's the extent
of the preconfigured setups it contains.  But you can use it, by
editing the configurations, with any ol' drive (well, within reason,
I 'spose) you want to.  Simply modify the table - it's one of the
configuration options.

kEITHe

P.S. Michael - my condolences about the 3053 :-)

wcf@psuhcx.psu.edu (Bill Fenner) (09/24/89)

In article <263@bmers58.UUCP> mlord@bmers58.UUCP (Mark Lord) writes:
|In article <[2058.1]comp.ibmpc;1@point.UUCP> wek@point.UUCP (Bill Kuykendall) writes:
|>>in the BIOS tables (only 14 are in the tables).  I prefer not to use
|>>a TSR such as Disk Manager.  Fortunately (or unfortunately) I have a
|>
|>Huh?  DM isn't a TSR, but it doesn't cover miniscribes so it won't help
|>anyway.
|
|Hmm.. DM actually does include a TSR.. DMDRVR.BIN is used to access multiple
|"DOS" partitions under any recent version of xx-DOS.

One of us is confused... I was under the impression that there's a big
difference between drivers and TSR's.  How does loading drivers in config.sys
work?  Does it jump to part of the code, then the code TSR's, or returns,
or what?

  Bill
-- 
   Bitnet: wcf@psuhcx.bitnet     Bill Fenner       | aaaaaaaaa
  Internet: wcf@hcx.psu.edu                        |            r
 UUCP: {gatech,rutgers}!psuvax1!psuhcx!wcf         |              g
Fido: Sysop at 1:129/87 (814/238 9633) \hogbbs!wcf |               h

dchou@NCoast.ORG (David Chou) (09/24/89)

I would like to thank more than a dozen respondees regarding the
updating of the original IBM-AT BIOS ROMS.  Most of the respondees
pointed that the last location of the romset contained the byte
which serves as the checksum value (location FFFFF).  The next to
the last byte contains the PC ID byte (FC for the AT).  It is a
rather simple matter to reprogram locations in the various ROMs and
then adjust the last byte.  Several pointed out the the ROMs are
paired odd/even bytes.  Several also mentioned that there are BIOS
sold by third parties which work in the AT.  However, I specifically
called Phoenix who cautioned me against buying a BIOS not tailored
for my machine.

Well anyway, I took the easy way out.  I located several IBM-ATs and
using the program posted to the net, found a machine with the appro-
priate disk type which I needed (1024 cylinders, 7 heads, 26 sectors -
I know this is not quite right for the 3085 which has 1170, but it
is close).  The first machine had ROMs which for one reason or another
I could not copy.  The second machine had EPROMs (27256's) which
copied nicely.  Incidentally, these old motherboards have a jumper
dip at location U131 which when reversed supports either 27128 or
27256 EPROMS.   I am still having trouble with my Miniscribe 3085
but that is another story not related to this subject.

David Chou    ncoast!dchou@hal.cwru.edu   dchou@ncoast.org

mwilcox@pcocd2.intel.com (Mike Wilcox ~) (09/27/89)

In article <5912@tolerant.UUCP> bruce@handel.Tolerant.COM.UUCP (Bruce Hochuli) writes:
>
>I have a version of DM from Miniscribe that is (gasp) configured for
>Miniscribe drives. I also have a copy with the Seagate stuff on it.
>
>I thought that part of DM was a driver, don't remember the name of it
>right now(dmdrive.sys ?). Pretty close to a TSR.

The version of DM I have has what is called a manual or standard mode or
something like that. I believe in this mode you can enter the cyl/head
information rather than use the configurations that are built in.

Does this mean that any version of DM would work with any drive? The
Seagate version would be less convenient with a Maxtor disk but will it
still work. Reason I ask is that i might be getting a Maxtor 140 meg
disk and I already have a st251 with Seagate version of DM.

Will itthe Seagate version of DM work with a Maxtor disk? Can use DM to
partition two physical disks (st251 and the Maxtor)?

thanks for your help.,

Mike Wilcox                                 mwilcox@pcocd2.intel.com
Intel Corp.
Folsom CA