DMA functions defined. Most of the changes are based on the "bochs sync"
version of plex86. Here is the list of changes:
* register/unregister functions for DMA channels added. The DMA controller
can use the DMA read/write handlers of registered devices directly.
* "hardwired" code in dma.cc removed
* all DMA related code in devices.cc and iodev.h removed
* DMA related code in pc_system.* removed except HRQ handling
* macros for DMA functions defined in bochs.h
* floppy and SB16 code modified to use the changes described above
The new function register_pci_handlers() is similar to the register functions
for i/o addresses. A PCI device can register the read/write handlers for it's
private PCI configuration space. The i/o mapped registers of the host bridge
control the access to the configuration registers of each PCI device. You can
select the bus, device, function and register address with the confAddr
register. The confData register is a window to the configuration space of the
selected device.
- reset sets the values of the i/o mapped registers to 0
- changed some BX_INFO messages to BX_DEBUG
This means that the REALTIME_PIT now only works on machines
that are capable of sustaining 150000 IPS, in aggregate. This
seems a reasonable requirement, as even my 200Mhz PPC with 16MB
of memory can sustain that.
This is now probably ready for primetime, so I need to get it
added to the configure options.
This seems to work, but I don't think it works on slow machines (like mine.)
At least, I'm getting fails with the dlxlinux image, but they're pretty
sporadic. This code shouldn't cause any fails.
floppy_bootsig_check: disabled=[0|1]. It is not disabled by default.
Sorry for any inconvenience it could cause
- changed the default (if cmos reg is 0) behavior for the floppy boot signature
check, so the new bios is compatible with older bochs binaries (useful if we
want to use the new bios when we release 1.4.1) :
1 : disabled
0 : enabled
- added info at launch time about the boot device and the floppy boot signature
check
- added a "LBA capable" flag in the ata controller
- fixed opened netdevice name (/dev/net/tun...)
- fixed test on iface name (tun instead of tap)
- cosmetic changes
- added example in .bochsrc
Much of these fixes have been contributed by Frederic Bothamy
- The emulated vga card issues a dimension_update() using the real
screen dimensions and the real font height.
- The gui selects a font with the requested height or it recalculates
the screen height if the font height is not available.
- The text_update() function uses a new variable 'ncols' instead of the
fixed value of 80 for the number of text columns.
I have tested the changes with X11/Linux, SDL, wxGTK and win32. The changes
in the other guis are not tested yet.
cursor size issue a screen update request
- reading an invalid CRTC register returns 0 / writing is ignored
- bit 7 of CRTC address register is always 0
- debug messages for CRTC registers updated / panics removed
- use the number of visible columns in text mode when calculating the screen
width and the cursor position
. ports 0x0400 0x0401 and 0xfff0 : rombios
. ports 0x0500 0x0501 and 0x0502 : vgabios
The rombios log output was previously handled by the unmmapped device
- fixed handling of rotate_on_autoeoi for master PIC in in IAC()
- removed old IRQ handling functions (trigger_irq / untrigger_irq)
- replaced BX_INFO in case of bx_dbg.pic by BX_DEBUG calls
the SMP interrupt handling is to blame. So I'm putting the 1.46 changes
back into the code. Now keyboard.cc is exactly the same as revision 1.51
again. A copy of the changes is now in patches/patch.eks-port64 so that
they can be easily examined by SMP debugging people.
boot of linux 2.2.17 to freeze forever. I don't understand what's being
done in this rev, so I'll ask Dave to check over it and see he can find
anything suspicious.
called <linux/netlink.h> the ethertap module will be defined. If other
OSes turn up that also have ethertap, we can change the test.
- in eth_tap.cc, I replaced the calls to GPL code from maconlinux with
my own stuff.
There is a problem with the existing function rx_timer_handler. It can
retrieve multiple packets from winpcap but returns when it finds one with
the source mac address address instead of ignoring it and processing any
remaining packets.
Replacing the function with the one in the attached file rectifies this.
With this I can browse the network fairly well from the guest NT4 and indeed
see the guest NT4 from other machines on the network.
Mike Lerwill <Mike@ml-solutions.co.uk>
- at the moment we only use hFile so the other pieces of the ADAPTER struct
don't affect how this code turns out. However, it would be safer to include
the winpcap header file instead of hardcoding the structures, which are bound
to change over time.
We should really be using #defines or enums to give these constants
a proper name! Thanks to Peter Tattam <peter@jazz-1.trumpet.com.au>
for the bug report.
Here are the patches (without the serial name fix). Let me know if you want
me to change that. Oh, FYI, my changes also open up the com1 terminal in raw
mode, which makes the emulation much more accurate. You'll also notice that
I added infrastructure for com2->4 in the option parsing. I didn't add it to
the serial code, as I think a bunch of things need to be untangled before
that can work.