Viewing Issue Advanced Details
ID Category [?] Severity [?] Reproducibility Date Submitted Last Update
06561 Misc. Minor Always Apr 30, 2017, 14:48 May 3, 2017, 09:28
Tester Robbbert View Status Public Platform MAME (Self-compiled)
Assigned To Resolution Bugs That Aren't Bugs OS Windows Vista/7/8 (64-bit)
Status [?] Resolved Driver
Version 0.185 Fixed in Version Build 64-bit
Fixed in Git Commit Github Pull Request #
Summary 06561: chdman: chdman gives incorrect info about chds
Description I have a few chds for ibm-type computers (at486 for example). In order to setup the hard disk in the bios, I used chdman info to provide the cylinders, heads and sectors.

In the at486 bios, I select type 47 and enter the info, save and reboot. The system usually hangs, but sometimes will crash or say "Missing operating system".

So, for example, I have a disk called "hdd_type17.chd". chdman info -i hdd_type17.chd gives us 391 cylinders, 4 heads and 54 sectors. However, the bios states that a type 17 HD has 977 cylinders, 5 heads and 17 sectors. If I choose type 17 the system boots up fine. Choosing type 47 and entering the info provided by chdman does not work.

I do not know the regression version or if it ever worked.
Steps To Reproduce
Additional Information I decided to create a brand new type 17 hard drive on the at586 (auto-detect bios). chdman created a blank disk. Then dos 6.2 setup was used to turn the disk into a bootable one. This all worked, so far so good.

Then I tried using this new hard drive on older machines that needs to be manually set up (at486, ct486, at386, ct386sx). They said "missing operating system". I finally found a combination that works as type 47, that being 167 cylinders, 8 heads and 63 sectors, which bears no relationship at all with what we started with.
Github Commit
Flags
Regression Version
Affected Sets / Systems chdman
Attached Files
 
Relationships
There are no relationship linked to this issue.
Notes
3
User avatar
No.13808
crazyc
Developer
Apr 30, 2017, 19:44
This happens when the drive physical geometry doesn't match the formatted geometry. DOS checks that the geometry in the bios matches the formatted geometry and ignores the physical geometry. It can happen on real machines too.
User avatar
No.13809
Robbbert
Senior Tester
May 1, 2017, 00:37
If this is so, how is one supposed to find out the parameters to enter into the bios on a non-auto-detect computer?
User avatar
No.13812
crazyc
Developer
May 1, 2017, 02:55
edited on: May 1, 2017, 13:14
You're really testing the edges of what pc bioses were capable of at the time. When you did autodetect on the pentium, it defaults to LBA mode and a fake geometry of chs 41,32,63. You can see this in the setup "IDE HDD AUTO DETECTION" option. This then becomes the formatted geometry when you format it. When you take it back to the 486, it doesn't support LBA and supports only a max of 8 heads, any more than that won't work and when you try access the 9th head, it'll access the 1st instead. You found that it worked with chs 167,8,63 but it'll really work with any geometry with 63 spt as long as all the data is on the first cyl and on a head <= 8.