posted to bochs-developers on Wed, 29 Aug 2001 00:08:45 +0100
David Haslam wrote:
> I have been looking at the keyboard problem with Minix, which for
> those that haven't tried Minix results in every key press giving the
> response: ^@
>
> I am aware of the comments in the changelog that suggest removing 2
> keyboard ACKs in iodev/keyboard.cc, but this is a bit of a hack,
> (which is presumably why it was never incorporated).
>
> The problem seems to be that the Minix keyboard driver doesn't obey
> the rules, and Bochs doesn't model the 8042 accurately. When issuing
> commands to set the LEDs, Minix polls the 8042 output data register
> waiting for an ACK even though the OBF flag isn't set.
>
> Bochs returns zero under these circumstances, which seems to
> trigger obscure behaviour that messes up the Minix internal
> keyboard queue. I don't fully understand why Minix breaks, but I
> think the fact that the ACK generates an interrupt, and Minix treats
> it as a scan code also has something to do with it.
>
> In any case, I believe, the fix is for Bochs to return the output
> buffer contents, regardless of whether the OBF flag (called outb in
> Bochs) is set.
>
> I expect the real hardware allows the register to be read at anytime,
> and with this fix we are modelling the behaviour of the hardware more
> accurately.
>
> I have tested it with Minix 2.0.0. Also DOS 6.22 still works after this fix.
> Does anyone think this will break anything else?
>
> This diff is against the latest CVS of iodev/keyboard.cc, version 1.29
> The last part of the diff is a minor fix to an unrelated debug print.
Fixed a "feature" in pc_system.cc with setting timers to small values
that can cause bochs to hang.
Significantly improved the performance of the new PIT.
It's probably ready to become the default now.
Added a preliminary implementation of the slowdown timer
that Bryce and I had talked about.
--with-amigaos is allowed and sets up the makefiles correctly. It
defines a symbol called BX_WITH_AMIGAOS, which should be used in
#if..#endif constructs that are specific to amigaos.
- if --enable-cdrom is used with --with-amigaos, the cdrom_amigaos.o
object file will be added to CDROM_OBJS in the iodev makefile.
by thomas.petazzoni@meridon.com. Bryce introduced this bug in
revision 1.9 when split the code into separate #ifdefs for single
CPU and multiple CPU. Comments on the patch are:
> The following patch addresses a bug concerning the exception 1 (debug)
> which is being raised during HALT under certain conditions. It
> appears only on recent versions (1.2.1 or last CVS), and not on
> version 2000-0104.
Also added a hack to keep the OpenBSD timer problem from filling the log.
The new PIT seems to work, but until some
enhancements are made to the way the timers
and devices.cc work, it'll be slower than
the old one.
- add bx_instr_inp2 and bx_instr_outp2 which actually report the
values that were used in the I/O operation! I made new macros
and functions instead of changing the existing ones on the slight
chance that somebody already has code that uses the old ones.
The original code for determining the capacity of a disk only worked for
ATAPI drives, leaving us poor SCSI users in the cold. The code uses the
standard Linux CD-ROM driver routines, so it should work on any supported
drive. It's basically just a copy of Keith Jones FreeBSD code.
appeared in the guest OS. Full description:
> After much grovelling through the 8390 docs, I think this is the
> correct answer to the odd-length packet problem I was having with
> the ne2k driver under Linux.
>
> According to the datasheet, the 8390 always accesses its buffer
> memory in word-size chunks if the WTS bit of the DCR is set. So
> it will always send a word to the host bus interface if WTS==1.
> It's up to the host bus interface to deliver the the number of
> requested bytes to the host. So disallowing a byte read when the
> WTS bit is set is wrong (IMO) as the bus interface may allow it,
> as the NE2000 appears to.
>
> The patch to ne2k.h bumps the receive buffer memory size to 32K.
> This fixes the "out-of-bounds chipmem read" errors I was getting.
>
> Can someone with an NE2K datasheet verify these changes? They
> jibe with the Linux ne.c driver, anyway.
for Linux!!! I tested this using host OS kernel 2.2.14, and was able
to use telnet, ftp, irc, lynx, etc. Because it is a packet filter
solution, you aren't able to talk to the host machine, only to other
machines on the network. The patch itself is in
patches/patch.ethlinux-splite.
X servers that I've seen, however on other X servers it makes all
key mappings into absolute junk. We need to continue to work on this
patch to support all X servers and all key maps.
Author: Bogdan Diaconescu <bogdand@rds.ro>
This was submitted to the plex86 mailing list June 25, 2001, and
adapted for Bochs by Bryce Denney <bryce.denney@bigfoot.com>
<dieter.mittelmaier@freenet.de> which fixes X11 keyboard mapping
on German keyboards using Keycodes instead of Keysyms.
His comments are:
> I mapped your BX_KEY-defines in gui.h to values from XFree
> ../keycodes/Xfree86. Keysyms in x.cc would now translated
> to keycodes. Now I can use german or us keyboard-layout in
> win95 and all works well.
> Note: Changing keyboard layout in win95 to en works too
> Also you must change keyboard setup in win95 to AT-Enhanced 101/102 keyboard