runtime BIOS: 128kb

  • Follow


Hello

Im writing a system BIOS for a virtual machine. Unfortunately the
"runtime BIOS", the part which gets accessed/executed after operating
system loading, must be compatible with v86-mode. So proteced mode
can't be used in the 0xe000 - 0xf000 segment. So the runtime BIOS can
just hold 128kb of code in total.

Anyone ever solved that problem ? - Maybe with ...
- code compression
- using protected mode anyway (maybe not all code must be
v86-compatible)

thanks
josef

0
Reply spamtrap2 (1628) 8/15/2005 4:29:18 PM

"sijoange" <spamtrap@crayne.org> wrote in message
news:1124108906.920295.155180@f14g2000cwb.googlegroups.com...
> Im writing a system BIOS for a virtual machine. Unfortunately the
> "runtime BIOS", the part which gets accessed/executed after operating
> system loading, must be compatible with v86-mode. So proteced mode
> can't be used in the 0xe000 - 0xf000 segment. So the runtime BIOS can
> just hold 128kb of code in total.
>
> Anyone ever solved that problem ? - Maybe with ...
> - code compression
> - using protected mode anyway (maybe not all code must be
> v86-compatible)

On the machines we make, the DOS apparent BIOS resides at 0xE0000 to 0xFFFFF, as
per normal.  But the ENTIRE BIOS (512K on some machines, 1M on others) also
appears in the protected mode memory space, usually as far up as we can get the
hardware to cooperate with putting it.

The machines boot and run DOS and various flavors of Windows fine.

    - Bill


0
Reply Bill 8/15/2005 10:49:21 PM


Yes, thats the usual case, same here. My problem is, that only 128kb
(0xE0000 - 0xFFFFF) can be used for implementing the BIOS service
routines for DOS (and other realtime OSes) and the far up part can just
be used to implement BIOS initialization and protected mode stuff. - Is
that correct ?

I thought about switching to  protected mode in the realmode functions
apparent to DOS (0xE0000 -....) to break the 128kb limit, but then i've
read, that must not be done, because the DOS apparent BIOS part must be
v86 compatible. Is that correct ?

thanks alot
josef

0
Reply sijoange 8/16/2005 6:32:03 PM

"sijoange" <spamtrap@crayne.org> wrote in message
news:1124181105.891347.279890@f14g2000cwb.googlegroups.com...
> Yes, thats the usual case, same here. My problem is, that only 128kb
> (0xE0000 - 0xFFFFF) can be used for implementing the BIOS service
> routines for DOS (and other realtime OSes) and the far up part can just
> be used to implement BIOS initialization and protected mode stuff. - Is
> that correct ?

For initialization and so forth before the boot INT is executed, the last one I
worked on used mapping (in the chipset, as I recall) to cause various sections
of the 512K BIOS ROM to appear in the 128K DOS BIOS space.  One of it's very
last steps was to map in the 128K it wanted to leave for DOS.

> I thought about switching to  protected mode in the realmode functions
> apparent to DOS (0xE0000 -....) to break the 128kb limit, but then i've
> read, that must not be done, because the DOS apparent BIOS part must be
> v86 compatible. Is that correct ?

If you're going to use real MS-DOS, and NOT use Big Real mode or DOS extenders
of any kind, you can do whatever you want.  But if you want to be fully
compatible with variations, you have to end up in plain real mode.  I've read
that you can leave it in big-real mode, if you program all the registers
correctly, but I've never seen it done, and I seem to recall thinking (though I
can't remember why now, offhand) that there would be problems with this.  I
think I remembered that the 128K has to be stable for V86, at least as used
under Windows, but I'm by no means sure of that.  Sorry, but I haven't worked
close up on a BIOS in several years.  The details fade over time.

    - Bill


0
Reply Bill 8/17/2005 3:54:39 AM

3 Replies
172 Views

(page loaded in 0.139 seconds)


Reply: