VOGONS


First post, by Kar

User metadata
Rank Newbie
Rank
Newbie

Running into a strange problem with my 486 project, I have a 486DX2V (the desktop rather than tower version) which comes with a Micronics DXLB mainboard.

After a lot of wrangling I managed to get a 512MB (485 MiB) compact flash drive to work with the onboard IDE (and an ISA multi io IDE board) and all is good.

HOWEVER, if I disable Bios Shadowing (which you must if you want to have > 16mb of RAM) the compact flash wont boot (it will detect it in the bios (Phoenix v.GLB05), but will hang when trying to boot from it).

So I have the choice between being stuck with 16MB of RAM (there's 64MB installed) or having a bootable compact flash.

As an aside, the original 350MB IDE disk will boot fine with Shadow ROM enabled OR disabled. So it seems something specific to the compact flash IDE.

Does any one have any idea or some pointers on anything to try? As a test I used a 4mb ram stick and booted with just 4mb and again it was just down to Shadow ROM if the thing will boot of the CF drive.

Thank you so much for any advice!

Reply 1 of 6, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

Both problems seem bizarre.
Could you show the screen where you set the hard drive info. Is it possible that the 350MB disk is one of the "known" types in the BIOS (1 through 46) while the 512MB disk requires user type (type 47). I remember reading something about the BIOS needing a place to store the custom hard disk parameters, and that shadowing the BIOS simplifies that since the bios can overwrite portions of the F000 segment if need be since it's being copied to RAM.
Do you see options anywhere in the BIOS about disk parameters being stored at 0:300h or DOS 1KB or other options.

Reply 2 of 6, by Kar

User metadata
Rank Newbie
Rank
Newbie

Apologies for these photos not being super clear camera seems to catch the refresh.

Basically both drives detect fine on auto and determine correct CHS settings.

Only difference is when bios shadow is disabled the compact flash will not boot (but is detected correctly in bios).

This bios is notoriously archaic (late 80s bios in a 92-93 gateway 486) so I’m sure there’s some odd bug here. There are only two screens and have posted those below.

The cf card is detected as c-487, h- 16, s-63.
The 340 hdd is 1010,12,55.

I wonder if the next step would be to dump the memory map when shadowing is enabled/disabled and compare?

Attachments

Reply 3 of 6, by jakethompson1

User metadata
Rank Oldbie
Rank
Oldbie

It isn't clear with the CF whether the bios locks up and won't boot at all or if you can still boot from floppy.
In any case you could boot from a DOS disk with debug on it (e.g. DOS 6.22 disk 1) and compare the location of the FDPT in the four combinations (CF vs. HDD & shadowed or not).
To dump the FDPT location you can go into debug and at the - prompt run
D 0:104 L 4
For example, in my QEMU vm its location is 9FC0:003D, meaning that the bios is stealing some space right below the 640K barrier.
If the FDPT points to the F000 segment, then it either has to be one of the known disk types in the BIOS, or there needs to be bios shadowing so that the BIOS can "patch itself" to reflect the actual values for the disk.

Reply 4 of 6, by Kar

User metadata
Rank Newbie
Rank
Newbie

Thanks again for your help Jake - the computer will boot from floppy, indeed if I put the compact flash on a secondary channel, or as a slave it will boot into windows.

The compact flash drive is detectable, it will show up in windows 95 and dos, however if you try and write to it, or read more than a dozen sectors from it, things start to go horribly wrong (disk gets corrupted, or the read process crashes).

Will do some debugging tonight and see what I find. Thank you again for the pointers!

*Edit* Just for the benefit of anyone hitting this thread in the future and wondering (like I did, what a FDPT is) it's a Fixed Disk Parameter Table, very good explanation here, http://www.os2museum.com/wp/the-fixed-disk-parameter-table/

Reply 5 of 6, by Kar

User metadata
Rank Newbie
Rank
Newbie

Just as an aside as I try to figure out how this works at a low level, The address I'm peeking at in memory is effectively the 4 byte value at INT 41H in the Interrupt Vector Table?

So, if I want to look at the FDPT for drive 2, I'd use INT 46H and therefore something like this in debug?

D 0:118 L 4

Have been looking at https://stanislavs.org/helppc/int_13-9.html and https://web.archive.org/web/20160619061641/ht … ntr/rb-6135.htm to get my head around what happens during the BIOS post and figuring out where the 104 in your debug came from.

Thanks again, have learned a lot this morning!

Reply 6 of 6, by Kar

User metadata
Rank Newbie
Rank
Newbie

So turns out the system *will* not boot off floppy if the compact flash is connected and bios shadowing is disabled. It just hangs after the memory test (though responds to ctrl-alt-escape, to enter bios setup).

The times I have booted this way seem to have been a case of the bios being buggy and not saving the configuration change until the system was hard rebooted. So I cannot just boot into DOS to get the FDPT for the unshadowed CF drive unfortunately.

When booting the rotational disk with both shadowed and unshadowed bios the FDPT lives at 0040:00b6, same for the compact flash when booting with shadowed BIOS.

If no disk is connected (or I set 'no disk' in the bios) then the FDPT address defaults to F000:9AF7.

I have removed all the expansion cards in an effort to see if that's got anything to do with things and sadly no change.