Commit Graph

49 Commits

Author SHA1 Message Date
Volker Ruppert
795d07e90f - hard drive id now reports UDMA supported and ATA version 6
- setting transfer mode to UDMA now supported (no effect on the emulation speed)
- drive id arrays now initialized with memset()
2006-12-29 11:57:04 +00:00
Volker Ruppert
ee6bd95cfc - ATA/ATAPI identify device methods must now be called only one time per device in
a Bochs session unless the configuration (transfer mode) changes. Then the
  "drive id" data is simply copied to the output buffer.
- removed unused "drive id" example (Conner CFA540A)
- added stubs for the ATA flush cache commands
- converted some tabs to spaces
2006-12-26 17:08:12 +00:00
Volker Ruppert
fa43431365 - LBA48 support implemented (tested with Linux - TODO: readback of hob* values) 2006-12-25 09:34:32 +00:00
Volker Ruppert
0a174516ff - fixed type conflicts in hdimage lseek() methods. Now using always Bit64s for
the lseek() methods and off_t is only used for the lowlevel lseek() function.
- fixed indent mode and removed unnecessary spaces
2006-11-18 11:51:07 +00:00
Volker Ruppert
647b0e3e6c - removed exit() method from the devmodel object, since all that stuff can be
done by the object destructor (changes in cmos, hard drive and keyboard)
- bx_unload_plugins() now deletes the devmodel object in non-plugin mode
- CMOS device now prints the time on exit in human-readable format
2006-09-16 14:47:40 +00:00
Volker Ruppert
3ef9b08908 - using a unique name for ATAPI 'inquiry' makes Win98 report two cdroms on one
controller correctly in the device manager
- ATAPI 'identify' now also uses the 'inquiry' device number for the serial number
2006-08-05 07:49:31 +00:00
Volker Ruppert
8f8c4db97d - report selected multiword DMA mode in the 'identify device' block
- set initial and reset value of multiple sector count to 0
- abort multi sector read/write commands if multiple sector count is not valid
2006-07-19 19:18:42 +00:00
Volker Ruppert
92412a3fee - multi sector read/write commands implemented
- ATA command 'set multiple mode' fixed (missing interrupt and value check)
- hard disk sector read/write rewritten and simplified
- hard disk now reporting ATA-3 supported
- updated drive buffer size for save/restore
2006-07-17 18:40:26 +00:00
Volker Ruppert
10a49f6d1c - fixed implementation of the ATA command "set multiple mode" (TODO: multi sector
read/write commands)
- prepared i/o buffer for multi sector transfers
- power management commands "standby now" and "idle immediate" now returning success
2006-07-13 17:34:44 +00:00
Stanislav Shwartsman
8b0df8e99b Merge SAVE_RESTORE branch to CVS 2006-05-27 15:54:49 +00:00
Stanislav Shwartsman
242c2fa51c Style and indent changes 2006-03-07 18:16:41 +00:00
Volker Ruppert
e69a129d01 - fixed IDE register behaviour in case of a channel with one drive connected
* ports for error register, sector count and sector number are shared between
    both drives
  * status register always returns the values of the selected drive (0x00 if
    not present
  * set correct signature for both drives in case of reset
2006-02-06 21:27:34 +00:00
Volker Ruppert
3c4b32f9a4 - splitted image headers from hard drive header (TODO: split emulation and image
code for non-IDE interfaces)
- fixed bximage error messages
2005-11-06 11:07:01 +00:00
Volker Ruppert
9e57072f28 - ATAPI command "read subchannel format 2" now returns "UPC not recorded"
- changed bool types to bx_bool, false and true to 0 and 1
- some indent mode fixes
2005-11-06 08:21:38 +00:00
Volker Ruppert
6d1e5d6d05 - SET FEATURES subcommands now returning success
- read raw toc for image files and platforms other than Windows XP implemented (ported from qemu)
- several cdrom capacity fixes / report capacity only on Bochs init and cdrom change
- flag 'using_file' must be set to 0 for WIN32 ASPI or direct access
- multisession format handling removed from harddrv.cc (now handled in cdrom code)
- ATAPI error messages improved
- prepared ATAPI buffer for block size 2352
2005-11-01 19:10:24 +00:00
Volker Ruppert
13bfb46cdc - IDE busmaster DMA for cdroms (packet DMA) prepared, but not enabled yet 2005-10-30 14:14:03 +00:00
Volker Ruppert
0cacb9af0c - deprecated option 'newharddrivesupport' removed from hard drive code
- sense code ASC_ILLEGAL_OPCODE added for unimplemented/unknown ATAPI commands
- some panics changed to errors
- unsupported bits message in drive and head register changed to BX_DEBUG
- improved info about not existing drive
- indent mode fixed in ATAPI packet command section
2005-10-02 10:16:54 +00:00
Volker Ruppert
fec5b4e135 - added new function set_signature() for several ATA/ATAPI commands
- ATA command 0x90 (execute drive diagnostics) now supports cdrom (Plan 9 boots now)
- indent mode in modified sections fixed
2005-08-21 17:40:45 +00:00
Volker Ruppert
ea18b29e12 - geometry autodetection for 'flat' hard disk images added. It works with all
images created with bximage (heads = 16, sectors per track = 63)
- size check for 'flat' hard disk images added. The image size is now compared
  with the size calculated from the geometry.
2005-08-06 18:29:36 +00:00
Volker Ruppert
8380541a8f - replacing uint* types by Bit*u types since they are identical (BeOS code untouched) 2005-06-26 10:54:49 +00:00
Volker Ruppert
4a7d435ba7 - now using GetDiskFreeSpaceEx() and valid arguments to determine the media size
- report the cdrom capacity in megabytes instead of bytes
- don't flood the logfile with error messages when the guest OS checks the cdrom
  unit periodicly for media presence
2005-05-04 18:19:49 +00:00
Volker Ruppert
2b196e5c61 - removed useless VLB-IDE support (ISA and PCI IDE are working okay)
- removed dangerous options from the harddrive code
2005-02-15 20:48:14 +00:00
Volker Ruppert
a57464cb54 - Busmaster DMA fuction implemented, but disabled for now. BM-DMA works in Linux,
but failes in Win98 with this code, so I decided to disable it.
- BM-DMA register read messages changed to BX_DEBUG
2005-02-08 18:32:27 +00:00
Volker Ruppert
8d585dc813 - removed lowlevel includes from iodev.h and device headers to reduce dependencies
- fixed some warnings
2004-09-05 10:30:19 +00:00
Volker Ruppert
e7b558894c - harddisk/cdrom i/o light implemented. The light is turned off 0.5 seconds after
the last read/write operation.
2004-02-09 18:59:50 +00:00
Volker Ruppert
d78f3da836 - win32 statusbar now shows active items with light green background
- harddisk/cdrom status light feature prepared
2004-02-08 18:38:26 +00:00
Daniel Gimpelevich
126971af49 Made to compile on MacOS9 2004-02-06 22:28:00 +00:00
Christophe Bothamy
27b8d78e2d - add parameter to set the redolog name for 'volatile' and 'undoable' disks 2003-09-22 23:32:24 +00:00
Christophe Bothamy
974d3538a1 - change disk image mode name "growable" to the more accurate "growing" 2003-08-01 01:20:00 +00:00
Christophe Bothamy
f43d2fe3e9 - backport of the BRANCH_HARDDISK_MODES to the main branch.
You can now choose for each disk on the ata interfaces the
  disk mode, between :
    - flat : one file flat layout
    - concat : multiple files layout
    - external : developer's specific, through a C++ class
    - dll : developer's specific, through a DLL
    - sparse : stackable, commitable, rollbackable
    - vmware3 : vmware3 disk support
    - undoable : flat file with commitable redolog
    - growable : growing file
    - volatile : flat file with volatile redolog
    - z-undoable : gziped flat file with commitable redolog
    - z-volatile : gziped flat file with volatile redolog
  A new "bxcommit" utility can merge commitable redologs to
  flat images.
2003-05-03 16:37:18 +00:00
Christophe Bothamy
50efc3b8c7 - apply Conn Clark's patch.perf-regparm-cclark :
- it works only on x86 with gcc2.95+
  - uses the GCC function atribute "regparm(n)" to declare that certain
    functions use the register calling convention
  - performance improvement is about 6%
2003-03-02 23:59:12 +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
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
Kevin Lawton
c3a74d4da0 Integrated patches/patch.promise-dc2300-vlbide from Christophe Bothamy.
From his patch file text:

  > This patch adds Promise DC2300 VLB IDE Support.
  > You may find msdos and win95 drivers on the net. Look for
  > P2300W95.ZIP and DC2300VLBIDEver260b.ZIP.
  >
  > The good news is that now win95 natively sees my cdrom,
  > and that the disks are not in msdos compatibility mode any more.
  >
  > The bad news is that it works only for the first ata interface.
  >
  > I tested that patch on msdos and win95 only.
  >
  > Some info on VLB IDE can be found at http://ryston.cz/petr/vlb/

I got Win95 running with 32-bit paging/filesystem using the
  recommended driver and these patches.  Since the patches did
  such a good job bracketing code modifications with a #define,
  they might as well become part of the current CVS code.
2002-09-24 20:02:00 +00:00
Christophe Bothamy
440dffc803 - applied patch.4ata-channels and patch.4ata-channels.bbd
- Features :
 . number of active channels defined at boot-time config
 . new options in bochsrc
 . up to 8 devices support (disks or cdroms)
 . up to 4 cdrom devices can be changed at runtime config
 . wxwindows config interface
2002-09-22 20:56:12 +00:00
Bryce Denney
d6cd93b462 - add support for Peter Tattam's external disk simulator 2002-09-12 06:49:04 +00:00
Bryce Denney
7fdc7303c2 - add "void reset(unsigned type)" method to every I/O device.
Some devices already had one.  Some I had to add an empty one.
  I did a little cleaning of init() methods to make them more uniform
  but generally I left them alone.
- I also put these exact diffs into a patch "patch.iodev-add-reset"
  in case I want to revert these changes for some reason, for example
  if they break an old patch.  It should be deleted after a while.
2002-08-27 19:54:46 +00:00
Christophe Bothamy
87bb0f37a4 - fixed problem with multiple drq atapi data transfers 2002-08-05 15:51:06 +00:00
Jeroen Janssen
c67a497100 - adding default constructor after code addition 2002-04-09 16:53:15 +00:00
Volker Ruppert
2d5a9bd459 - new sense key SENSE_UNIT_ATTENTION for media change
- set sense key and raise an interrupt after inserting cdrom media
- atapi command 'eject disk' implemented
2002-02-03 20:49:44 +00:00
Volker Ruppert
84b649831e - new cdrom button in the headerbar
- changing cdrom media in a Bochs session now possible
- don't eject cdrom when the guest OS has locked the drive
2002-02-01 16:46:27 +00:00
Bryce Denney
a9204c53f0 - make hard disk code return error codes when data is not available instead
of just panicing.  In particular, if the logical sector is out of bounds
  or the disk image cannot be read/written at the desired offset, we now
  abort the ATA command and return an error code.  Many of the old BX_PANIC
  messages are turned to BX_ERROR, so they will still appear in the
  log, but now the device model will try to communicate this fact to
  the OS instead of simply giving up.
2001-10-06 09:04:39 +00:00
Bryce Denney
daf2a9fb55 - add RCS Id to header of every file. This makes it easier to know what's
going on when someone sends in a modified file.
2001-10-03 13:10:38 +00:00
Bryce Denney
1540695f17 - for big endian machines I reversed the bit fields in interrupt_reason.
This was pointed out by Nicholai Benalal.
2001-08-13 15:48:13 +00:00
Todd T.Fries
bdb89cd364 merge in BRANCH-io-cleanup.
To see the commit logs for this use either cvsweb or
cvs update -r BRANCH-io-cleanup and then 'cvs log' the various files.

In general this provides a generic interface for logging.

logfunctions:: is a class that is inherited by some classes, and also
.   allocated as a standalone global called 'genlog'.  All logging uses
.   one of the ::info(), ::error(), ::ldebug(), ::panic() methods of this
.   class through 'BX_INFO(), BX_ERROR(), BX_DEBUG(), BX_PANIC()' macros
.   respectively.
.
.   An example usage:
.     BX_INFO(("Hello, World!\n"));

iofunctions:: is a class that is allocated once by default, and assigned
as the iofunction of each logfunctions instance.  It is this class that
maintains the file descriptor and other output related code, at this
point using vfprintf().  At some future point, someone may choose to
write a gui 'console' for bochs to which messages would be redirected
simply by assigning a different iofunction class to the various logfunctions
objects.

More cleanup is coming, but this works for now.  If you want to see alot
of debugging output, in main.cc, change onoff[LOGLEV_DEBUG]=0 to =1.

Comments, bugs, flames, to me: todd@fries.net
2001-05-15 14:49:57 +00:00
Bryce Denney
a7b7563e3c - add support for split hard disk image, so that it is possible to store
different partitions in separate files.
2001-05-07 05:47:59 +00:00
Bryce Denney
a6fef54678 - update copyright dates to 2001 for all mandrake headers
- for bochs files with other header, replaced with current mandrake header
2001-04-10 02:20:02 +00:00
cvs
beff63eb32 - entered original Bochs snapshot bochs-2000_0325a.tar.gz from
ftp.bochs.com
2001-04-10 01:04:59 +00:00