VOGONS


First post, by superfury

User metadata
Rank l33t++
Rank
l33t++

I know that F000:0000 to F000:FFFF contain the BIOS. Anyone knows if software expects something to be at F000:0000 to execute? Is there a reserved start of a certain handler there?

The same about F800:0000, is there something reserved there?

Can this area safely be filled at my own whim with BIOS routine handlers in my emulator? Or are certain parts restricted due to use by software (calls to direct BIOS addresses, like the ones already mentioned)?

Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io

Reply 1 of 3, by Harekiet

User metadata
Rank DOSBox Author
Rank
DOSBox Author

This always seems to contain a decent list of "fixed" entry points.

http://bochs.sourceforge.net/cgi-bin/lxr/sour … /bios/rombios.c

The startup and font tables I'd assume are most important.
Don't think you really need a 64k bios, older systems could make do with smaller.
I should one day finish my custom bios as well for a new emu but it's just to easy to just use a premade one 😀

Reply 2 of 3, by idspispopd

User metadata
Rank Oldbie
Rank
Oldbie

You probably know that the reset vector FFFF:0000 is hard wired.
Regarding the list Harekiet wrote about: I suppose new and/or cleanly written software shouldn't rely on these addresses, but the documentation on the IBM PC was open and very extensive, so many programmers relied on some addresses to be fixed to gain some performance not going through the interrupt handler. It really depends on how compatible you want to be. Early PC clone manufacturers had to consider this. IIRC one important test was to be able to run MS Flight Simulator.

Reply 3 of 3, by Great Hierophant

User metadata
Rank l33t
Rank
l33t
superfury wrote:

I know that F000:0000 to F000:FFFF contain the BIOS. Anyone knows if software expects something to be at F000:0000 to execute? Is there a reserved start of a certain handler there?

The same about F800:0000, is there something reserved there?

Can this area safely be filled at my own whim with BIOS routine handlers in my emulator? Or are certain parts restricted due to use by software (calls to direct BIOS addresses, like the ones already mentioned)?

There is nothing at F000:0000 in a true IBM PC. Cassette BASIC occupies the address range between F000:6000 and F000:DFFF. The BIOS ROM occupies the remainder of the segment. In fact, on a real IBM PC, there was an unused socket for the 8 kilobytes of space between F000:4000 and F000:5FFF. You could conceivably have an expansion card with a ROM that uses address space between F000:0000 and F000:3FFF, but it would conflict with just about any PC released after the original.

http://nerdlypleasures.blogspot.com/ - Nerdly Pleasures - My Retro Gaming, Computing & Tech Blog