[SeaBIOS] [RFC PATCH] Add support for Intel Quark UART.
Kevin O'Connor
kevin at koconnor.net
Mon May 19 19:42:13 CEST 2014
On Mon, May 19, 2014 at 05:56:02PM +0100, David Woodhouse wrote:
> On Mon, 2014-05-19 at 11:20 -0400, Kevin O'Connor wrote:
> > On Mon, May 19, 2014 at 02:27:38PM +0100, David Woodhouse wrote:
> > A couple of months back I looked through the sgabios assembler. It
> > looks mostly straight-forward. The only thing that was marginally
> > complex was its ability to keep a cache of background attributes.
> >
> > > However, I note that sgabios already talks about having support for SMM
> > > traps to talk to an EFI console, so perhaps that's the way forward.
> >
> > I wasn't aware of that. Do you have a link?
>
> https://code.google.com/p/sgabios/source/browse/trunk/design.txt#219
>
> "Optionally the serial port input/output can be replaced with
> a SMI trigger that calls into an EFI BIOS in order to tie into
> its own console input and output routines rather than directly
> hitting the serial port. In this particular case it's assumed
> that all logging is handled in the EFI module that will be called.
> BIOS int 15h, ax = 0d042h is used to trigger SMI. The parameters
> passed will need to be changed to be specific to the EFI or SMI
> handler put in place. In the example in SMBIOS, for output,
> ebx = 0xf00d0000 | (char << 8), and for input, ebx = 0xfeed0000,
> with the character, if any, returned in the eax register with ZF
> set and eax=0 if no character was available."
I don't see any reference to "int 15h, ax=0xd042" as a standard. So,
maybe the author of the above text also wrote their own EFI module
which used that magic value?
> > sgabios doesn't do anything like that today. Most apps that anyone
> > cares about (ie, modern bootloaders) are well behaving - they output
> > their vga text using the int 10h bios interrupts. Sgabios hooks these
> > interrupts to provide service.
> >
> > In my tests, the only thing I've found which does direct text writes
> > to the 0xa0000-0xc0000 framebuffer are really old dos programs. Even
> > freedos uses the standard bios interface.
>
> Hm, OK. Again I got that from sgabios's design.txt:
>
> Known Bugs
> ----------
> With some versions of DOS [...]
With that predicate, I'm sure any conclusion is true.
Simple usages of freedos and msdos 6.22 appear to use the standard
vgabios interface. (As a simple test case, I have seabios put the vga
in graphics mode and then see what breaks - see below - most things
still work.)
-Kevin
--- a/src/bootsplash.c
+++ b/src/bootsplash.c
@@ -44,7 +44,7 @@ enable_vga_console(void)
/* Enable VGA text mode */
memset(&br, 0, sizeof(br));
- br.ax = 0x0003;
+ br.ax = 0x006a;
call16_int10(&br);
// Write to screen.
More information about the SeaBIOS
mailing list