Commit Graph

534 Commits

Author SHA1 Message Date
Gregory Alexander
33fb7c544f Moved things around and cleaned up the options a bit. 2002-10-30 23:54:29 +00:00
Gregory Alexander
5bc28d6dfa Add a minimum IPS value at compile time.
This is used for calculating the minimum speed for the realtime PIT and for flagging errors with user IPS values.
2002-10-30 18:30:29 +00:00
Peter Tattam
ac49ea2418 Patch to fix DOS based packet drivers that use an odd count for the NE2000
DMA.  Should print error message but allow to continue.  (bochs log will
show DMA underrun for the last byte transferred).
2002-10-30 11:11:26 +00:00
Gregory Alexander
fc61a0522a Added support for run-time configuration of realtime PIT. 2002-10-29 22:26:32 +00:00
Bryce Denney
a6aa9afd67 - rename "control" to "textconfig". It was named when we called it
a control panel, but now we're calling it a text configuration interface.

Modified:
    .bochsrc Makefile.in bochs.h main.cc cpu/Makefile.in
    debug/Makefile.in disasm/Makefile.in fpu/Makefile.in
    gui/Makefile.in iodev/Makefile.in memory/Makefile.in
2002-10-29 20:18:32 +00:00
Bryce Denney
98e37268fc - include standard path variables in gui and iodev. We were missing
libdir, which is now used as the PLUGIN_PATH.
2002-10-28 08:42:06 +00:00
Gregory Alexander
dc46dfa784 Made PIT runtime configurable, except haven't added the bx_option line. 2002-10-28 05:55:47 +00:00
Bryce Denney
fa56678dc0 - for win32 DLL plugin build, link with $(CDROM_OBJS) instead of writing
cdrom.o explicitly.  This makes it so that cdrom.o is only linked in
  when the configure script enables it.
2002-10-28 05:26:09 +00:00
Christophe Bothamy
814d8b69ef - add "none", "lba", "rechs", "large", "auto" translation
- if translation=auto :
  . translation=none if cylinders <=1024 and heads <=16
  . translation=large if cylinders * heads <= 131072
  . transaltion=lba otherwise
- changes default translation value to "auto"
- add example in .bochsrc
2002-10-27 21:25:33 +00:00
Gregory Alexander
cc48301722 Fix for bug #628957
I accidentally left a debug define turned on.
2002-10-27 06:02:47 +00:00
Bryce Denney
441eb253f7 - remove references to obsolete hga. Now --enable-vga and --disable-vga
no longer exist.  I think configure will silently ignore them.
- modified:
    iodev/Makefile.in iodev/devices.cc iodev/iodev.h main.cc
    configure.in config.h.in configure build/batch-build.perl
2002-10-26 13:14:11 +00:00
Bryce Denney
79831381de - fix compile problem in old PIT 2002-10-26 03:57:19 +00:00
Bryce Denney
31adc410b7 - fix compile problems in iodebug 2002-10-26 03:53:22 +00:00
Bryce Denney
48acd53db4 - all #warnings are now inside #ifdef __GNUC__ ... #endif
Modified Files:
    ltdl.c main.cc plugin.cc cpu/cpu.cc cpu/debugstuff.cc
    cpu/exception.cc cpu/fetchdecode64.cc cpu/init.cc
    cpu/paging.cc gui/siminterface.cc gui/wxmain.cc
    iodev/harddrv.cc
2002-10-25 12:36:44 +00:00
Bryce Denney
eba25386fd - change some #warnings into comments 2002-10-25 12:28:34 +00:00
Bryce Denney
cec9135e9f - Apply patch.replace-Boolean rev 1.3. Every "Boolean" is now changed to a
"bx_bool" which is always defined as Bit32u on all platforms.  In Carbon
  specific code, Boolean is still used because the Carbon header files
  define it to unsigned char.
- this fixes bug [ 623152 ] MacOSX: Triple Exception Booting win95.
  The bug was that some code in Bochs depends on Boolean to be a
  32 bit value.  (This should be fixed, but I don't know all the places
  where it needs to be fixed yet.)  Because Carbon defined Boolean as
  an unsigned char, Bochs just followed along and used the unsigned char
  definition to avoid compile problems.  This exposed the dependency
  on 32 bit Boolean on MacOS X only and led to major simulation problems,
  that could only be reproduced and debugged on that platform.
- On the mailing list we debated whether to make all Booleans into "bool" or
  our own type.  I chose bx_bool for several reasons.
  1. Unlike C++'s bool, we can guarantee that bx_bool is the same size on all
     platforms, which makes it much less likely to have more platform-specific
     simulation differences in the future.  (I spent hours on a borrowed
     MacOSX machine chasing bug 618388 before discovering that different sized
     Booleans were the problem, and I don't want to repeat that.)
  2. We still have at least one dependency on 32 bit Booleans which must be
     fixed some time, but I don't want to risk introducing new bugs into the
     simulation just before the 2.0 release.

Modified Files:
    bochs.h config.h.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h plugin.cc plugin.h bios/rombios.c cpu/apic.cc
    cpu/arith16.cc cpu/arith32.cc cpu/arith64.cc cpu/arith8.cc
    cpu/cpu.cc cpu/cpu.h cpu/ctrl_xfer16.cc cpu/ctrl_xfer32.cc
    cpu/ctrl_xfer64.cc cpu/data_xfer16.cc cpu/data_xfer32.cc
    cpu/data_xfer64.cc cpu/debugstuff.cc cpu/exception.cc
    cpu/fetchdecode.cc cpu/flag_ctrl_pro.cc cpu/init.cc
    cpu/io_pro.cc cpu/lazy_flags.cc cpu/lazy_flags.h cpu/mult16.cc
    cpu/mult32.cc cpu/mult64.cc cpu/mult8.cc cpu/paging.cc
    cpu/proc_ctrl.cc cpu/segment_ctrl_pro.cc cpu/stack_pro.cc
    cpu/tasking.cc debug/dbg_main.cc debug/debug.h debug/sim2.cc
    disasm/dis_decode.cc disasm/disasm.h doc/docbook/Makefile
    docs-html/cosimulation.html fpu/wmFPUemu_glue.cc
    gui/amigaos.cc gui/beos.cc gui/carbon.cc gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/siminterface.cc gui/siminterface.h
    gui/term.cc gui/win32.cc gui/wx.cc gui/wxmain.cc gui/wxmain.h
    gui/x.cc instrument/example0/instrument.cc
    instrument/example0/instrument.h
    instrument/example1/instrument.cc
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/cdrom.cc iodev/cdrom.h iodev/cdrom_osx.cc iodev/cmos.cc
    iodev/devices.cc iodev/dma.cc iodev/dma.h iodev/eth_arpback.cc
    iodev/eth_packetmaker.cc iodev/eth_packetmaker.h
    iodev/floppy.cc iodev/floppy.h iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/ioapic.cc
    iodev/ioapic.h iodev/iodebug.cc iodev/iodev.h
    iodev/keyboard.cc iodev/keyboard.h iodev/ne2k.h
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pic.h
    iodev/pit.cc iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h
    iodev/sb16.cc iodev/sb16.h iodev/serial.cc iodev/serial.h
    iodev/vga.cc iodev/vga.h memory/memory.h memory/misc_mem.cc
2002-10-25 11:44:41 +00:00
Bryce Denney
5e520261db Add plugin support to Bochs by merging all the changes from the
BRANCH_PLUGINS branch!

Authors:
  Bryce Denney
  Christophe Bothamy
  Kevin Lawton (we grabbed a lot of plugin code from plex86)
Testing help from:
  Volker Ruppert
  Don Becker (Psyon)
  Jeremy Parsons (Br'fin)

The change log is too long to paste in here.  To read the change log, do
  cvs log patches/patch.final-from-BRANCH_PLUGINS.gz

All the changes and a detailed description are contained in a patch
called patch.final-from-BRANCH_PLUGINS.gz.  To look at the complete
patch, do
  cvs upd -r1.1 patches/patch.final-from-BRANCH_PLUGINS.gz

Then you will have a local copy of the patch, which you can gunzip and
play with however you want.

Modified Files:
    .bochsrc Makefile.in aclocal.m4 bochs.h config.h.in configure
    configure.in gdbstub.cc logio.cc main.cc pc_system.cc
    pc_system.h state_file.h bios/Makefile.in bios/rombios.c
    cpu/Makefile.in cpu/access.cc cpu/apic.cc cpu/arith16.cc
    cpu/arith32.cc cpu/arith8.cc cpu/cpu.cc cpu/cpu.h
    cpu/ctrl_xfer32.cc cpu/exception.cc cpu/fetchdecode.cc
    cpu/fetchdecode64.cc cpu/flag_ctrl.cc cpu/flag_ctrl_pro.cc
    cpu/init.cc cpu/io.cc cpu/logical16.cc cpu/logical32.cc
    cpu/logical8.cc cpu/paging.cc cpu/proc_ctrl.cc
    cpu/protect_ctrl.cc cpu/segment_ctrl_pro.cc cpu/shift16.cc
    cpu/shift32.cc cpu/stack64.cc cpu/string.cc cpu/tasking.cc
    debug/Makefile.in debug/dbg_main.cc disasm/Makefile.in
    doc/docbook/user/user.dbk dynamic/Makefile.in fpu/Makefile.in
    gui/Makefile.in gui/amigaos.cc gui/beos.cc gui/carbon.cc
    gui/control.cc gui/control.h gui/gui.cc gui/gui.h
    gui/keymap.cc gui/keymap.h gui/macintosh.cc gui/nogui.cc
    gui/rfb.cc gui/sdl.cc gui/sdlkeys.h gui/siminterface.cc
    gui/siminterface.h gui/term.cc gui/win32.cc gui/wx.cc
    gui/wxdialog.cc gui/wxdialog.h gui/wxmain.cc gui/wxmain.h
    gui/x.cc gui/keymaps/sdl-pc-de.map gui/keymaps/sdl-pc-us.map
    gui/keymaps/x11-pc-de.map instrument/example0/instrument.h
    instrument/example1/instrument.h
    instrument/stubs/instrument.cc instrument/stubs/instrument.h
    iodev/Makefile.in iodev/biosdev.cc iodev/biosdev.h
    iodev/cdrom.cc iodev/cmos.cc iodev/cmos.h iodev/devices.cc
    iodev/dma.cc iodev/dma.h iodev/eth_fbsd.cc iodev/eth_linux.cc
    iodev/eth_null.cc iodev/eth_tap.cc iodev/floppy.cc
    iodev/floppy.h iodev/guest2host.cc iodev/guest2host.h
    iodev/harddrv.cc iodev/harddrv.h iodev/iodebug.cc
    iodev/iodebug.h iodev/iodev.h iodev/keyboard.cc
    iodev/keyboard.h iodev/ne2k.cc iodev/ne2k.h iodev/parallel.cc
    iodev/parallel.h iodev/pci.cc iodev/pci.h iodev/pci2isa.cc
    iodev/pci2isa.h iodev/pic.cc iodev/pic.h iodev/pit.cc
    iodev/pit.h iodev/pit_wrap.cc iodev/pit_wrap.h iodev/sb16.cc
    iodev/sb16.h iodev/scancodes.cc iodev/scancodes.h
    iodev/serial.cc iodev/serial.h iodev/slowdown_timer.cc
    iodev/slowdown_timer.h iodev/unmapped.cc iodev/unmapped.h
    iodev/vga.cc iodev/vga.h memory/Makefile.in memory/memory.cc
    memory/memory.h memory/misc_mem.cc misc/bximage.c
    misc/niclist.c
Added Files:
    README-plugins extplugin.h ltdl.c ltdl.h ltdlconf.h.in
    ltmain.sh plugin.cc plugin.h
2002-10-24 21:07:56 +00:00
Bryce Denney
491b05d4bc - add missing BX_CMOS_THIS to fix the previous rev 2002-10-23 19:37:36 +00:00
Bryce Denney
279901987c - extra {}'s no longer needed now that Volker cleaned up the char* mess
in rev 1.29
2002-10-23 18:59:25 +00:00
Bryce Denney
ab70c14ec6 - print time value that was used for this simulation, in case you want to
set time0 later to duplicate it
2002-10-23 15:50:59 +00:00
Christophe Bothamy
957e1b5abe - fix bug [ 625676 ] VC++ do not support S_ISBLK. Block devices are not supported on win32 anyway. 2002-10-21 23:51:49 +00:00
Bryce Denney
b43ca82b5e - in debug message, mention WHICH reserved register was written 2002-10-21 16:57:35 +00:00
Bryce Denney
9297b17797 - in main.cc make the bochsrc parser a little more lenient about
empty pathnames, zero cylinders, etc.  It doesn't seem fair to allow
  people to write out bochsrcs that they cannot read back in without
  patching them up by hand!
- in harddrv.cc add the equivalent checks with BX_PANICs so that at least
  we don't start simulating with incomplete device configuration.
- make a few error messages more clear
- modified: main.cc iodev/harddrv.cc
2002-10-21 11:22:26 +00:00
Bryce Denney
984905c73a - revert previous rev. There is nothing dangerous about it, but I
decided to make bx_param_num_c::get() return 32bit integers again
  instead of trying to find every single case that was broken when
  I changed bx_param_num_c::get() to return a 64bit integer.
- as soon as get() returns 32 bit values again, the changes in the previous
  rev is are unnecessary.
2002-10-21 00:59:17 +00:00
Bryce Denney
78f4f9a1e5 - add int typecast to fix segfault, which was caused when I turned all
integer parameters into 64 bit values.
2002-10-21 00:34:04 +00:00
Volker Ruppert
f88e594dc2 - do a dimension update in text mode when the maximum scan line register has
changed. This changes the font height of the gui.
2002-10-20 13:18:21 +00:00
Bryce Denney
8263030457 - remove call to "put()" which is no longer accessible now that eth_pktmover_c
doesn't descend from logfunctions anymore.
2002-10-19 19:14:57 +00:00
Volker Ruppert
3b75ad3200 - function reset() clears the IRQ line 2002-10-19 08:21:24 +00:00
Christophe Bothamy
9be41f5f55 - add check forbiding block devices if --enable-split-hd 2002-10-17 07:04:45 +00:00
Bryce Denney
f6c637aa8a - upgrade bx_param_num to use 64 bit values, so that I could make
bx_shadow_num_c able to handle pointers to 64 bit values.  This
  allows x86-64 and wxWindows to coexist.
- I had a number of duplicate constructors for bx_shadow_num_c,
  with an without the description arg.  I eliminated the ones
  that had no description, and also removed the min/max arg from
  all.  I still need a bunch of constructors though, for
  Bit64u*, Bit64s*, Bit32u*, Bit32s*, Bit16u*, Bit16s*, Bit8u*, Bit8s*.
  Having all these constructors allows us to write
    new bx_shadow_num (bxid, name, description, &value)
  for basically any integer variable.  They are all handled by the same class.
- these changes led to minor touchups in cpu/init.cc and iodev/keyboard.cc
- modified:
    configure main.cc cpu/init.cc iodev/keyboard.cc
    gui/siminterface.cc gui/siminterface.h
2002-10-16 19:39:27 +00:00
Christophe Bothamy
fcc1cd5195 - add int15 function 0xe820 (from osmaker)
- add int15 function 0xe801 (from Hartmut Birr)
- add amount of extended memory in 64KiB block to cmos regs 0x34 and 0x35
2002-10-16 07:38:37 +00:00
Volker Ruppert
df6512abd5 - check for the platform WIN32 instead of the gui
- FIXME: the symbols 'BX_WITH_MACOS' and 'macintosh' both appear in the floppy
  code. I don't know what's okay there.
2002-10-13 09:40:05 +00:00
Volker Ruppert
0a89fc3352 - sequencer reset bits renamed to 'reset1' and 'reset2'
- default value of the sequencer reset bits is 1 (no reset)
- sequencer reset flag 1 resets the charmap select register when cleared
- skip the screen update when the sequencer is in reset mode (h/v sync and
  video ram refresh are disabled in that case)
- don't clear the memory update flag before the update is done
- skip the text screen update when the character height is set to 1 (MSL = 0)
- sequencer debug messages updated
2002-10-13 08:14:31 +00:00
Volker Ruppert
8eafe97e14 - check for the platform __BEOS__ instead of the gui
- fixed a warning
2002-10-12 13:09:32 +00:00
Bryce Denney
c74b8c55fc - add key mapping for SDL gui, to demonstrate/verify that key mapping is not
specific to X windows.  I changed a few names of variables and methods to
  sound less X windows specific, for example in the BXKeyEntry struct
  the "xwinKey" field is now called "hostKey".
- remove the hacks in bx_keymap_c::loadKeymap that checked that every
  keysym started with "XK_".  Now I can still make that check, but it
  is done in x.cc's convertStringToXKeysym() instead.
- in sdl.cc, load the keymap in specific_init function.  I had to
  create a conversion function from SDL key names to SDLkey values.
  I created a table of key names and associated values, and I just
  do a strcmp on each name.  It's not a fast algorithm obviously but this
  conversion only has to be done for maybe 200 keys at startup time.
- added a key map file for SDL called sdl-pc-us.map.  Since this has
  basically all the SDLK_* symbols defined, it is a good starting point
  if you need to make any other keymaps.
- modified: gui/keymap.cc gui/keymap.h gui/sdl.cc gui/x.cc iodev/keyboard.cc
- added: gui/sdlkeys.h gui/keymaps/sdl-pc-us.map
2002-10-08 06:14:53 +00:00
Volker Ruppert
3c769207e2 - fixed some warnings at BX_INFO, BX_PANIC, BX_ERROR and BX_DEBUG 2002-10-06 20:19:03 +00:00
Volker Ruppert
75ba36cb15 - fixed some warnings at BX_INFO, BX_PANIC, BX_ERROR and BX_DEBUG 2002-10-06 19:38:54 +00:00
Bryce Denney
c818baa0c9 - modified every I/O device so that it will not re-register its timers
if init() is called a second time.  This allows me to restart a
  simulation (wxwindows interface only) without restarting the whole
  application.
- modified: iodev/*.cc
2002-10-06 19:04:47 +00:00
Bryce Denney
6dff398915 - remove tabs 2002-10-06 17:49:11 +00:00
Volker Ruppert
d2c286797e - missing conditions for lower_irq() added:
* hardware reset
  * setting software reset bit to 1
  * writing to command register
2002-10-05 19:40:51 +00:00
Volker Ruppert
7158dd8a11 - result data of the ATAPI command 'inquiry' fixed. The strings are padded with
spaces now.
- BX_PANIC at 'read multiple sectors' changed to BX_ERROR
2002-10-05 16:49:03 +00:00
Volker Ruppert
4bdd5acaeb - calculation of the number vertical tiles added for all graphics modes.
- screen height of the graphics mode 640x350 fixed
2002-10-05 08:04:28 +00:00
Bryce Denney
f54551717e - include <windows.h> in bochs.h whenever WIN32 is defined. This is required
so that windows types can be used in fields, for example in cdrom.h:
    #ifdef WIN32
      HANDLE cdrom_interface::hFile;
    #endif
- since every file includes bochs.h, I removed includes of <windows.h>
  everywhere else
- modified: bochs.h cpu/extdb.cc gui/win32.cc gui/wx.cc iodev/cdrom.cc
  iodev/eth_win32.cc iodev/floppy.cc
2002-10-03 21:07:04 +00:00
Kevin Lawton
ee47fabac0 Committed new bochs internal timers (in pc_system.{cc,h}.
These seem to be working better, are a more simple design,
  easier to understand, and AFAIK don't have race conditions
  in them like the old ones do.

Re-coded the apic timer, to return cycle accurate values
  which vary with each iteration of a read from a guest OS.
  The previous implementation had very poor resolution.  It
  also didn't check the mask bit to see if an apic timer
  interrupt should occur on countdown to 0.  The apic timer
  now calls its own bochs timer, rather than tag on the
  one in iodev/devices.cc.

I needed to use one new function which is an inline in
  pc_sytem.h.  That would have to be added to the old pc_system.h if
  we have to back-out to it.

Linux/x86-64 now boots until it hits two undefined opcodes:

  FXRSTOR (0f ae).  This restores FPU, MMX, XMM and MXCSR registers
    from a 512-byte region of memory.  We don't implement this yet.

  MOVNTDQ (66 0f e7).  This is a move involving an XMM register.
    The 0x66 prefix is used so it's a double quadword, rather than
    MOVNTQ (0f e7) which operates on a single quadword.

  The Linux kernel panic is on the MOVNTQD opcodes.  Perhaps that's
  because that opcode is used in exception handling of the 1st?

  Looks like we need to implement some new instructions.
2002-10-03 15:47:13 +00:00
Volker Ruppert
f3b7378307 - added multiple cdrom support for win32 (NT/2000 version untested). The ASPI
version uses the cdrom drives in the system's order. Drive letters are not
  used by ASPI.
- wrong BX_INFO message for ASPI disabled. The version number is never checked.
2002-10-03 11:59:37 +00:00
Kevin Lawton
83c9d266d0 Added a field on register_timer() so that a name identifying the
requesting source can be registered as well.  Otherwise, there
  is no way to know which source modules are requesting
  suspect frequencies which are too high.
2002-10-02 05:16:01 +00:00
Bryce Denney
4c9776fb96 - add -lwinmm to the link lines anytime you use --enable-sb16=win. Now
instead of winmm being a part of GUI_LINK_OPTS_WIN32 only, it is
  placed in @DEVICE_LINE_OPTS@ so that it will be used for sdl, rfb, wx,
  etc.
- solve compile problems when building bximage, niclist, and any other
  console based program.  The compile flags returned by wx-config and
  sdl-config did strange things to these console programs, for example
  redefining main to SDL_main.  Because I wanted to use the
  configure-generated CFLAGS to compile the programs, but I wanted to
  avoid including GUI specific compile options, I split up the configure's
  @CFLAGS@ variable into @CFLAGS@ and @GUI_CFLAGS@, and split
  @CXXFLAGS@ into @CXXFLAGS@ and @GUI_CXXFLAGS@.  All programs in the
  Bochs binary will use both, but the console programs will just use
  @CFLAGS@ or @CXXFLAGS@.
- gui/Makefile.in, I no longer use the gui specific CFLAGS variables,
  SDL_CFLAGS and WX_CXXFLAGS.  These values are included in CFLAGS and
  CXXFLAGS now.
- modified: configure.in, configure, all Makefile.in's
2002-10-01 23:37:50 +00:00
Bryce Denney
ef77eb0ad3 - only register the parameters the first time init is called, to fix bug
[ 613975 ] wxWindows: params redefined on restart
2002-09-30 22:23:57 +00:00
Bryce Denney
d92ccf70ae - apply patch from Stu Grossman <grossman@juniper.net> that changes
harddrv code to use off_t for file offsets.  If off_t is going to
  require a configure test, I'll add it later.
2002-09-30 14:19:46 +00:00
Volker Ruppert
06bbbba109 - register description "master disable" renamed to "master clear". This is the
register name in the Intel docs
2002-09-28 13:36:32 +00:00