Hi,
Next round of serial console patches, Still not ready to merge.
Headline feature of this version is split mode (i.e. output on both vga and serial). Have a initial working implementation now, logic is simliar to the vgabios timer hook (as suggested by Kevin).
Also changed the output logic, down to a one-cell buffer (char+attr) for output. Cursor updates are simply written to BDA now, with the actual move being done lazily when printing the next character or checking for keyboard input. That is especially useful for splitmode as we can simply skip the cursor position updates and let the vgabios do them instead.
TODO list: * compile time (CONFIG_*) option. * input handling cleanups. * implement missing int10h functions. * more testing.
cheers, Gerd
Gerd Hoffmann (5): std: add cp437 to unicode map kbd: make enqueue_key public, add ascii_to_keycode paravirt: read QEMU_CFG_NOGRAPHIC, store in etc/sercon-enable romfile add serial console support [wip] sercon: initial split-output implementation
Makefile | 7 +- src/clock.c | 1 + src/fw/paravirt.c | 2 + src/kbd.c | 17 +- src/misc.c | 2 + src/optionroms.c | 9 +- src/romlayout.S | 39 ++++ src/sercon.c | 621 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/std/cp437.c | 275 ++++++++++++++++++++++++ src/std/cp437.h | 1 + src/util.h | 5 + 11 files changed, 974 insertions(+), 5 deletions(-) create mode 100644 src/sercon.c create mode 100644 src/std/cp437.c create mode 100644 src/std/cp437.h