Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!uunet!convex!rigel!harper From: harper@rigel.uucp (David Harper) Newsgroups: comp.sys.ibm.pc Subject: Re: IBM-AT BIOS ROMS Message-ID: <1817@convex.UUCP> Date: 20 Sep 89 17:45:24 GMT References: <1989Sep19.021545.8110@NCoast.ORG> Sender: usenet@convex.UUCP Reply-To: harper@rigel.UUCP (David Harper) Organization: Convex Computer Corporation, Richardson, Tx. Lines: 52 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)