Hi,
Finally, after a looong time being busy with other stuff, coming back to this one.
I was curious to see what the "sercon" stuff would look like in SeaVGABIOS instead of in SeaBIOS. So, I put together a quick prototype. The code is also at:
https://github.com/KevinOConnor/seabios/tree/testing
This is just a proof-of-concept thing - I didn't implement any of the useful features you have in your series. Specifically, it doesn't unclutter the serial output, doesn't implement cp437 translations, and doesn't handle multi-byte input. It does does have basic input, output, and split-output handling though.
Cool, that saves me the work trying this, to compare.
I'm not sure if this is better than a SeaBIOS implementation. I suspect it will be easier to handle vga quirks this way.
Works fine for me. Advantages of this approach are (a) vga quirks and (b) it works fine as drop-in replacement of the current sgabios.bin in qemu.
I'm not sure how important the vga quirks are though. I'd guess the use cases where the quirks are essential so the guest can do proper graphics output (such as old xorg server in the guest) and the use cases where you want serial console support for the bios (headless server) have little to no overlap.
However, handling exotic serial outputs (eg, mmio and usb based) would be better suited in SeaBIOS.
Indeed. Extending this for other hardware is alot easier when it is in seabios and can re-use the code there.
cheers, Gerd