I moved all of the executable loading and memory
dump stuff into a plugin, plugins/bios/plugin-bios.so, as
that is more realistic and will give us less problems
transferring to a "real" BIOS later on.
I also moved the vga_io.log stuff into the "real"
BIOS, and converted the IO using a perl script into
plugins/bios/vga.S. Trying to run this uncovered a whole
stack of bugs in the way the plugin system currently handles
IO, which I fixed. A patch is attached with all of this.
However, (you heard it coming) I appear to have broken
something. Running the user program, I get the output
pasted below. After this, the program does nothing (just
a black window with nothing in it). I've checked thuroughly
that the plugin gets all of the correct I/O, in the right
order, (except that when Xlib gives its weird message, the
I/O stops) from vga.S, so that cannot possibly be the problem.
The only thing I can conclude is that there is a bug somewhere
in the BOCHS vga/gui code, but I don't have enough experience
with X to find it. Kevin, as you're the BOCHS expert here ;),
could you have a look at this ?
PS note, I changed configure.in, so rerun autoconf !
ttys,
-- Ramon
-----------------------------------------------------------
[ramon@milo user]$ ./plex86
Processing command-line options
Processing configuration script plex86.conf
Opening VM
Allocating 4MB of physical memory in VM
Mapping virtualized physical memory into monitor
Zeroing virtualized physical memory
Initializing plugins
bios: loading guest code: ../guest/preemptive/kernel (0x46f8 bytes)
(ELF)
bochs: ips = 1000000
bochs: font_width = 8
bochs: font_height = 16
bochs: default_depth = 24
bochs: waiting for MapNotify
bochs: MapNotify found.
bochs: vga: interval=10000
Running VM
bochs: vga: io write: 3cf: reg 05: value = 10h
bochs: vga: io write: 3da: ignoring: feature ctrl & vert sync
bochs: *** io read 3c5 case 1: sequencer clocking mode
bochs: vga: io write 3c0: address mode reg=16
bochs: vga: io write 3c0: address mode reg=17
bochs: vga: io write 3c0: address mode reg=18
bochs: vga: io write 3c0: address mode reg=19
bochs: vga: io write 3c0: address mode reg=20
Xlib: unexpected async reply (sequence 0x67)!
plx-io-bios.patch.gz