Commit Graph

601 Commits

Author SHA1 Message Date
Bryce Denney
954862cc5b - these are changes from Peter Tattam, who says "This dramatically improves
performance of the ne2K driver in win9x."
- receive timer set to 10000 instructions instead of 1000000.
- placed if (WaitForSingleObject(lpAdapter->ReadEvent,0) == WAIT_OBJECT_0) {}
  around the read code.
2002-09-12 06:44:04 +00:00
Kevin Lawton
414e97bc32 Enhanced the repeat IO accelerations (enabled by --enable-repeat-speedups)
to request bulk IO operations to IO devices which are bulk IO aware.
Currently, I modified only harddrv.cc to be aware.  I added some
fields to the bx_devices_c class for the IO instructions to
place requests and receive responses from the IO device emulation.
Devices except the hard drive, don't monitor these fields so they
respond as normal.  The hard drive now monitors these fields for
bulk requests, and if enabled, it memcpy()'s data straight from
the disk buffer to memory.  This eliminates numerous inp/outp calling
sequences per disk sector.

I used the fields in bx_devices_c so that I would not have to
disrupt most IO device modules.  Enhancements can be made to
other devices if they use high-bandwidth IO via in/out instructions.
2002-09-09 16:56:56 +00:00
Volker Ruppert
d23d121674 - new function set_text_charmap() stores the vga charmap data in the array
vga_charmap
- the SDL gui uses the charmap data for the vga text display
  * TODO: implement this feature for other guis
- removed unused variables in sdl.cc and gui.cc
- fixed a warning in vga.cc
2002-09-08 07:56:10 +00:00
Bryce Denney
80a3900b8b - apply a patch I've been working on
- modified files: config.h.in cpu/init.cc debug/dbg_main.cc gui/control.cc
  gui/siminterface.cc gui/siminterface.h gui/wxdialog.cc gui/wxdialog.h
  gui/wxmain.cc gui/wxmain.h iodev/keyboard.cc

----------------------------------------------------------------------
Patch name: patch.wx-show-cpu2
Author: Bryce Denney
Date: Fri Sep  6 12:13:28 EDT 2002

Description:

Second try at implementing the "Debug:Show Cpu" and "Debug:Show
Keyboard" dialog with values that change as the simulation proceeds.
(Nobody gets to see the first try.)  This is the first step toward
making something resembling a wxWindows debugger.

First, variables which are going to be visible in the CI must be
registered as parameters.  For some variables, it might be acceptable
to change them from Bit32u into bx_param_num_c and access them only
with set/get methods, but for most variables it would be a horrible
pain and wreck performance.

To deal with this, I introduced the concept of a shadow parameter.  A
normal parameter has its value stored inside the struct, but a shadow
parameter has only a pointer to the value.  Shadow params allow you to
treat any variable as if it was a parameter, without having to change
its type and access it using get/set methods.  Of course, a shadow
param's value is controlled by someone else, so it can change at any
time.

To demonstrate and test the registration of shadow parameters, I
added code in cpu/init.cc to register a few CPU registers and
code in iodev/keyboard.cc to register a few keyboard state values.
Now these parameters are visible in the Debug:Show CPU and
Debug:Show Keyboard dialog boxes.

The Debug:Show* dialog boxes are created by the ParamDialog class,
which already understands how to display each type of parameter,
including the new shadow parameters (because they are just a subclass
of a normal parameter class).  I have added a ParamDialog::Refresh()
method, which rereads the value from every parameter that it is
displaying and changes the displayed value.  At the moment, in the
Debug:Show CPU dialog, changing the values has no effect.  However
this is trivial to add when it's time (just call CommitChanges!).  It
wouldn't really make sense to change the values unless you have paused
the simulation, for example when single stepping with the debugger.

The Refresh() method must be called periodically or else the dialog
will show the initial values forever.  At the moment, Refresh() is
called when the simulator sends an async event called
BX_ASYNC_EVT_REFRESH, created by a call to SIM->refresh_ci ().

Details:
- implement shadow parameter class for Bit32s, called bx_shadow_num_c.
  implement shadow parameter class for Boolean, called bx_shadow_bool_c.
  more to follow (I need one for every type!)
- now the simulator thread can request that the config interface refresh
  its display.  For now, the refresh event causes the CI to check every
  parameter it is watching and change the display value.  Later, it may
  be worth the trouble to keep track of which parameters have actually
  changed.  Code in the simulator thread calls SIM->refresh_ci(), which
  creates an async event called BX_ASYNC_EVT_REFRESH and sends it to
  the config interface.  When it arrives in the wxWindows gui thread,
  it calls RefreshDialogs(), which calls the Refresh() method on any
  dialogs that might need it.
- in the debugger, SIM->refresh_ci() is called before every prompt
  is printed.  Otherwise, the refresh would wait until the next
  SIM->periodic(), which might be thousands of cycles.  This way,
  when you're single stepping, the dialogs update with every step.
- To improve performance, the CI has a flag (MyFrame::WantRefresh())
  which tells whether it has any need for refresh events.  If no
  dialogs are showing that need refresh events, then no event is sent
  between threads.
- add a few defaults to the param classes that affect the settings of
  newly created parameters.  When declaring a lot of params with
  similar settings it's more compact to set the default for new params
  rather than to change each one separately.  default_text_format is
  the printf format string for displaying numbers.  default_base is
  the default base for displaying numbers (0, 16, 2, etc.)
- I added to ParamDialog to make it able to display modeless dialog
  boxes such as "Debug:Show CPU".  The new Refresh() method queries
  all the parameters for their current value and changes the value in
  the wxWindows control.  The ParamDialog class still needs a little
  work; for example, if it's modal it should have Cancel/Ok buttons,
  but if it's going to be modeless it should maybe have Apply (commit
  any changes) and Close.
2002-09-06 16:43:26 +00:00
Bryce Denney
17624e7549 - clean up memory usage after bx_gui_c::get_clipboard_text for win32,
X windows, wxWindows.  Each platform has its own way of returning
  a variable length string, and its own rules about how you're supposed
  to dispose of the string.  Now all platforms do the same thing: they
  allocate a Bit8u buffer with C++ "new" and copy the clipboard data in,
  then release the clipboard data in the platform-specific correct way.
  The Bit8u buffer is sent to the keyboard code, which frees it with
  delete [] when finished.
- modified: gui/wx.cc gui/x.cc gui/win32.cc iodev/keyboard.cc
2002-09-05 15:57:37 +00:00
Bryce Denney
1cda50d9f2 - make all packet mover classes report their log messages using the NE2K
class's prefix, NE2K.  The real issue is that the ne2k class exists at
  configuration time, so it is possible to tell it how to respond to
  panics, errors, etc.  The packet mover is created after configuration
  depending on the setting of bx_options.ne2k.Oethmod, so I cannot
  (with major hacks) affect its settings from the configuration interface.
  Several packet movers were already set up this way anyway.
2002-09-02 16:56:24 +00:00
Bryce Denney
e7515cd933 - move decision about which ETH_ packet movers are enabled into
config.h.in (from iodev/eth.h)
2002-09-01 21:22:43 +00:00
Bryce Denney
ffc84c8be9 - add BX_SCHEDULED_DIE_TIME which causes Bochs to exit automatically after a
certain number of instructions.  I use it for performance testing, and it
  won't hurt anyone unless they are foolish enough to enable it in config.h.
  Of course it is disabled by default!
2002-09-01 15:38:29 +00:00
Christophe Bothamy
a52f2467cf - first part of fix for bug [ 601166 ] CMOS Problem @ "0x0F Index 0x05 data"
Added more allowed values for index 0x0F
2002-08-31 21:31:11 +00:00
Volker Ruppert
e1d8d30e4c - meaning of the memory type values changed (0 = ROM, 1 = Shadow RAM)
- the functions mapRead() and mapWrite() are no longer necessary
2002-08-31 15:35:51 +00:00
Volker Ruppert
38666a2cfb - PCI memory handling moved to bx_mem_c
* shadow RAM array and fetch function are now a part of the memory code
  * removed unnecessary PCI macros and functions load_ROM() and mem_read()
2002-08-31 12:24:41 +00:00
Bryce Denney
630d37269b - reset should have one arg, unsigned int type 2002-08-29 16:52:47 +00:00
Volker Ruppert
8fde5ecfaf - implementation of the DMA controller reset
- new function reset_controller() resets the specified controller
- reset code removed from init()
- "master disable" uses the new reset function
2002-08-28 19:39:00 +00:00
Bryce Denney
3f9155c050 - when the device is reset via control register, it is BX_RESET_SOFTWARE 2002-08-28 16:55:16 +00:00
Bryce Denney
2594c18521 - revert previous revision to take out reset() method. The cdrom_interface
object is an interface to the host OS, not really a hardware device, so it
  probably doesn't need a reset().
2002-08-28 16:45:18 +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
Bryce Denney
1a7dcbfe86 - update dependencies by running gcc -MM again 2002-08-27 19:50:27 +00:00
Volker Ruppert
46140ac6ce - moved the initialization of the io read/write and irq register structures
from the constructur to the init function
- moved the cmos reset from init() to the devices reset function
2002-08-27 17:25:18 +00:00
Volker Ruppert
9985b80617 - fixed hexadecimal format of BX_DEBUG, BX_INFO and BX_PANIC messages 2002-08-27 17:24:36 +00:00
Volker Ruppert
db4c7ca718 - don't try to open a serial connection when the device string is empty
- do read/write operations only when tty_id is valid
2002-08-24 19:03:43 +00:00
Volker Ruppert
eda0dc5c7e - renamed serial and parallel options "Opresent" to "Oenabled" and "*_PRESENT"
to "*_ENABLED"
- bx_serial_options for all 4 ports moved into an array com[4]
- serial port com1 is enabled by default
- detection of com2, com3 and com4 config options disabled for now
- new parameter "enabled" added to the serial bochsrc options
- error handling for serial and parallel bochsrc options changed. The unhandled
  BX_PANICs are replaced by BX_ERRORs.
- new function bx_write_serial_options() added
- serial destructor restores original terminal settings only when serial port
  is enabled and the tty_id is valid
2002-08-24 17:11:33 +00:00
Volker Ruppert
56952f9132 - parport1 enable/disable support added. Now you can control the presence of
parport1 with the new option "enabled". The old option "enable" only
  controlled the output. The parport1 is enabled with no output by default.
  Changes:
  * bochrc option "enable" replaced by "enabled"
  * parport option "Oenable" replaced by "Opresent"
  * bx_parport_options par1 and par2 replaced by an array par[2]
  * initialize parport1 resources only when enabled
  * renamed variable "parport_init_list" to "par_ser_init_list" since it
    contains parport and serial options
  * documentation and bochsrc updates
- the parport variables "output" and "initmode" now belong to the bx_par_t
  structure
- TODO: add parport2 (disabled by default), parport detection in the bios
2002-08-24 10:20:35 +00:00
Volker Ruppert
eb0e95f54d - check for bx_options.sb16.Opresent added in init() and the destructor
(SB16 was always enabled before)
- call finishmidifile() and finishvocfile() in the destructor only if the
  files are vaild
2002-08-23 18:12:02 +00:00
Volker Ruppert
46093f8a88 - i440fx structure is now a private member of bx_pci_c
- PCI configuration space of the host bridge renamed from array[] to pci_conf[]
- new functions load_ROM() and mem_read() for ROM access
- macros for PCI functions defined in bochs.h
2002-08-17 09:23:42 +00:00
Volker Ruppert
e33b16701f - the status of the 'disk changed' line depends on the selected drive.
The digital input register is now an array (DIR[4]).
2002-08-13 12:02:37 +00:00
Christophe Bothamy
6bbd601c83 - fixed offset in vbe. See patch [ 592081 ] Bug: typo in VBE code 2002-08-12 16:16:53 +00:00
Christophe Bothamy
1a7d18743f - added subcommand 0x66 (Disable reverting to power-on default)
and 0xCC (Enable reverting to power-on default) to list of unsupported
"Set Feature" subcommands.
2002-08-09 13:16:22 +00:00
Volker Ruppert
f81909361d - panic at MODE SENSE (chg) and a few audio cd functions replaced by a
BX_ERROR. The harddisk controller returns an error code until we are able to
  implement this features.
2002-08-07 08:53:01 +00:00
Christophe Bothamy
1a454f196e - fixed lockup during mouse movements during win98 install. (patch from Wilfried Weissmann in sf forum) 2002-08-06 14:11:03 +00:00
Volker Ruppert
806e32e984 - initialize the shadow ram array with the value 0xff (used by rom images)
- initialization of read only registers not necessary when PCI is disabled
2002-08-05 17:43:25 +00:00
Christophe Bothamy
87bb0f37a4 - fixed problem with multiple drq atapi data transfers 2002-08-05 15:51:06 +00:00
Christophe Bothamy
6c62d72398 - added a check on odd byte count for atapi command
- fixed problem with multiple drq atapi data transfers
2002-08-05 15:47:40 +00:00
Volker Ruppert
c3cda0a919 - separation of floppy device type and media type started. This feature needs
more work in the floppy and bios code.
- floppy and cdrom entries in the runtime config menu can be disabled if the
  drive wasn't defined in bochsrc or start menu
- floppy variable "initial_status" and cdrom variable "inserted" renamed to
  "status"
- unused variable *ips in function build_runtime_options_prompt() disabled
2002-08-04 08:42:34 +00:00
Volker Ruppert
16dfd66163 - floppy read/write commands: return value of status register 1 is 0x85 when
the requested sector doesn't exist.
- BX_PANIC message for requested cylinder > tracks on media fixed
2002-08-03 06:58:56 +00:00
Volker Ruppert
cb567008bd - new function reset() for bx_devices added (currently for PCI and floppy only,
we have to add more devices)
- device reset function is called on startup and after pressing the reset
  button in the headerbar
2002-08-01 12:19:01 +00:00
Volker Ruppert
a6d07ad166 - added support for 360k floppy images
* new floppy type 360k can be used in .bochsrc and the config interface
  * media type and geometry can be set for the floppy type
  * BIOS changes to make 360k floppy drives work
  * bximage can create 360k images now
2002-08-01 07:37:56 +00:00
Volker Ruppert
e3f378505d - the win32 version now uses the READ TOC function for files. This is a hack
and works okay with one rom track only. We still have to implement reading
  the real TOC on win32.
- in function GetCDCapacity(): type of variable 'buf[8]' must be 'unsigned char'
- in function capacity(): win32 version returned the number of bytes, but it
  should return the number of blocks (ASPI blocksize is 2352)
- description of the function capacity() fixed (it always returns blocks)
2002-07-31 05:21:46 +00:00
Volker Ruppert
2b2369a049 - panic at 'Read sub-channel with SubQ' replaced by a BX_ERROR. The harddisk
controller returns an error code until we are able to implement this feature.
- init_send_atapi_command(): don't panic if alloc_length is 0, use byte_count
  to set alloc_length instead
- fixed a BX_PANIC message in the io write handler for port 0x1f0
2002-07-30 09:54:26 +00:00
Christophe Bothamy
1956be72db - I forgot to initialize the new variable 2002-07-30 08:48:03 +00:00
Volker Ruppert
92f54faa01 - implementation of the function READ TOC for cdrom image files 2002-07-30 06:25:57 +00:00
Volker Ruppert
f4fdaa7e54 - function read_toc() works with the requested start track 0xaa (lead out) too
- commented include statement removed
2002-07-29 16:42:01 +00:00
Christophe Bothamy
5e15db2dcd - added port 0x8900 to enable bochs programmatic shutdown 2002-07-29 12:44:47 +00:00
Volker Ruppert
4dbd597456 - panic at READ CD replaced by a BX_ERROR. The harddisk controller
returns an error code until we are able to implement this feature.
2002-07-27 18:42:31 +00:00
Volker Ruppert
68d3969bc4 - floppy read and write function do not set the 'seek end' bit in status
register 0
2002-07-26 16:39:18 +00:00
Volker Ruppert
c9420428f1 - calculation of the screen size for some graphics modes fixed
- use the start address when calculating the byte offset for standard EGA/VGA
  modes
2002-07-24 19:36:39 +00:00
Jeroen Janssen
42bb859bff fix 800x600 tile problem as pointed out by Peter Tattam 2002-07-21 14:50:11 +00:00
Volker Ruppert
e5f8fc20f5 - byte offset for modeX fixed (use value of CRT register 0x13) 2002-07-21 11:03:43 +00:00
Volker Ruppert
88f0e1b73f - init(): initialize media type for all 4 drives
- init(): set the initial status to BX_EJECTED if evaluate_media() fails
- don't modify the DOR when a drive > 1 is selected
- floppy command 'get status' now recognizes the head field
- floppy command 'recalibrate': don't set cylinder to 0 before completion
- floppy command 'sense interupt status' does not clear status register 0
- floppy command 'configure': more detailed BX_DEBUG messages
- floppy command 'read ID' does not modify status register 0
- floppy read/write commands: set the error bit in status register 0 if media
  is not present
- better detection of not existing drives in some commands: check the media type
  of the selected drive instead of the drive select value
- behaviour of floppy commands 'recalibrate' and 'seek' changed:
  * drive is busy in the execution phase, but not the controller
  * replaced the panic by setting the error status if drive is not existing
- evaluate_media(): set the media type even if device/file is not present
2002-07-20 19:53:50 +00:00
Volker Ruppert
397043b5e9 - odd byte count error in init_send_atapi_command() fixed: a byte count of
0xffff must be decremeted to 0xfffe
- ATAPI command code added to odd byte count error message
2002-07-19 13:32:49 +00:00
Volker Ruppert
a51a7840e5 - floppy command 'read ID' now recognizes the head number bit
- always return the current head number in status register 0
2002-07-16 19:36:40 +00:00
Volker Ruppert
43f9f8287b - the skip flag (SK) in command 'read sector' is ignored now. The floppy
command codes 0x46 and 0xc6 are using the normal read function.
2002-07-15 20:11:33 +00:00
Christophe Bothamy
43f7efce45 - 32bits access flag for atapi devices (word 48 of identify packet device)
- fixed io_len check on port != 0x1f0 : must be 1 byte
2002-07-11 07:44:32 +00:00
Volker Ruppert
6aa5eed1ec - panic at MODE SENSE (curr) replaced by a BX_ERROR. The harddisk controller
returns an error code until we are able to implement this features.
2002-07-07 18:51:49 +00:00
Volker Ruppert
9b6f0f6b3e - in function mouse_motion(): added parentheses to fix compilation problems
with MSVC (SF bug #575301)
- fixed a warning in function periodic(): type of variable 'count_before_paste'
  is now 'unsigned'
2002-06-30 18:08:02 +00:00
Volker Ruppert
afca461cf3 - reading port 0x01f0 with drq==0 causes a BX_ERROR, not a BX_PANIC. The return
value after the error is set to 0. This fixes the problem with the netbsd 1.5
  rescue disk (SF bug #419415)
2002-06-29 08:54:11 +00:00
Christophe Bothamy
17fe31ad4d - reverted to before patch.blkdevsize inclusion, because compilation fails on WIN32.
It will be included back when we know which platforms handle the GETBLKSIZE ioctl right
2002-06-28 21:34:30 +00:00
Christophe Bothamy
fcc5bd67cb - added patch for block device size detection from Ph. Marek
- included it in the main branch as it is only active with block devices
2002-06-26 16:45:27 +00:00
Volker Ruppert
76a5271232 - in function floppy_command(): added parentheses at the head number check
(fixes SF bug #572177)
2002-06-23 18:04:07 +00:00
Volker Ruppert
109007dd82 - in function init(): declaration of variables i and j moved to the start of
the function (fixes SF bug #572177)
2002-06-23 18:03:37 +00:00
Bryce Denney
5744357ffe - I should not have used BX_CPU_THIS_PTR to address the kill_bochs_request
field in the cpu object; it should only be used within cpu methods.
  Instead, use BX_CPU(0)->kill_bochs_request.
2002-06-23 00:01:01 +00:00
Volker Ruppert
c7c9cc2430 - DMA register and unregister functions for DMA channels added and macros for
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
2002-06-16 15:02:28 +00:00
Volker Ruppert
e2772fa94b - destructor restores original terminal settings only when serial port is enabled 2002-06-04 21:35:08 +00:00
Volker Ruppert
058fceb3be - keyboard and mouse definitions removed (still present in keyboard.h) 2002-06-02 11:53:49 +00:00
Volker Ruppert
43daf31782 - initialize DMA controller before floppy and SB16 2002-06-02 11:53:19 +00:00
Volker Ruppert
5a9dcef1e4 - include statement <linux/fs.h> seems to be unnecessary, cdrom support should
compile now on mips and m68k (untested)
- added cdrom support on GNU (untested)
- fixed a warning
2002-05-31 09:56:58 +00:00
Volker Ruppert
52bf2216ca - enable serial port for GNU and GNU/Linux
- use the same port name as in the configuration for BX_INFO ("com1")
2002-05-31 06:54:34 +00:00
Volker Ruppert
1bd3646867 - implementation of the PCI device register mechanism
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
2002-05-30 07:33:48 +00:00
Volker Ruppert
6e4e751bfb - fixed the function argument of insert_cdrom() for Amiga OS and MacOSX
(added function argument "char *dev", but the cdrom change support for
  these platforms is still to do)
2002-05-28 15:39:05 +00:00
Gregory Alexander
b30fdb2487 Fix problem with PIT when the machine is being really slow.
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.
2002-05-21 15:07:45 +00:00
Gregory Alexander
e92fb8deff Updated realtime PIT code.
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.
2002-05-20 21:53:26 +00:00
Volker Ruppert
61bd767b8c - access to unsupported extra page register issues a debug message, not an error
- read access to unsupported or not readable registers issues an error message,
  not a panic
2002-05-11 13:42:52 +00:00
Volker Ruppert
74faab3bff - ConfAddr register is readable (32 bit)
- header type register is readonly
- debug message fixed
2002-05-10 10:56:04 +00:00
Christophe Bothamy
b84c82e80c - changed the floppy_bootsig_check syntax to be more logical. the syntax is now :
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
2002-05-04 16:00:40 +00:00
Christophe Bothamy
117b099b54 - fix to have Bochs not panic when Win95 tries to detect devices 2002-05-03 13:52:53 +00:00
Christophe Bothamy
a2fc610355 - included "patch.harddrv-sco-osr5" from Carl Sopchak 2002-05-03 08:17:18 +00:00
Christophe Bothamy
980364868d - added a script directive in ne2k options of .bochsrc
- added the script directive management for ne2k options
- added the execution of the script (if defined and not 'none') after init of the tun device
2002-05-02 07:54:22 +00:00
Christophe Bothamy
f331d20e55 - fixed compile problem
- 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
2002-04-30 13:33:30 +00:00
Jeroen Janssen
42e40dd38a - applying hw scroll/multibuffering VBE patch (this func requires latest vgabios to work, but old bioses should still work due to backwards compatible interface) 2002-04-29 13:06:06 +00:00
Christophe Bothamy
719a6919fe - i forgot to keep the 0xfff0 port management for older bioses. fixed 2002-04-24 11:52:13 +00:00
Christophe Bothamy
2f37ec16ea - added a DEBUG port for rombios (0x0403) and vgabios (0x0503)
- added a INFO port for rombios (0x0402). Kept the legacy INFO port at 0xfff0 for now
2002-04-24 07:39:47 +00:00
Christophe Bothamy
cd50268e2f - added a floppy_bootsig_check option to .bochsrc that will be used to enable/disable the 0xaa55 signature check ONLY for floppy-boot
- stored the boot signature check flag in cmos reg 0x38
- the rombios that is able to handle that flag will be uploaded later
2002-04-23 07:44:34 +00:00
instinc
9520492a7c fixed the comment associated with the master IMR initialization 2002-04-20 16:21:51 +00:00
instinc
976ea3f67f as per the 82c59a datasheet from intel, the irq mask is now cleared on initialization 2002-04-20 16:19:42 +00:00
Volker Ruppert
462871fd3a - Improvements for dimension_update() in text mode and text_update()
- 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.
2002-04-20 07:19:35 +00:00
Bryce Denney
6cc9369426 - netbsd patch for raw cdrom, from Christian <bloodjerk@gmx.net> 2002-04-18 18:17:45 +00:00
Bryce Denney
4a35f70850 - add tuntap interface 2002-04-18 00:59:58 +00:00
Bryce Denney
2f69a74616 - commit TUN/TAP patch, though I can't really test it. I can verify that if
you don't have if_tun.h the configure script does not enable TUN/TAP.
2002-04-18 00:59:20 +00:00
Bryce Denney
2bac9a8f0e - remove dependency on /usr/include/math.h which is platform dependent.
This keeps sneaking back in somehow.
2002-04-18 00:46:38 +00:00
Bryce Denney
d85b0c113f - apply Peter Tattam's patch to fix a DMA bug. 2002-04-18 00:37:09 +00:00
Bryce Denney
91cc6590b2 - apply Peter Tattam's patch that makes win32 pad packets up to 60 bytes 2002-04-18 00:33:58 +00:00
Bryce Denney
30aaf4088e - commit patch.wxwindows.gz in the main branch. Now you can try out
the wxwindows interface by just "configure --with-wx; make"

  Modified Files:
    Makefile.in bochs.h config.h.in configure configure.in
    load32bitOShack.cc logio.cc main.cc cpu/cpu.cc cpu/cpu.h
    debug/dbg_main.cc gui/Makefile.in gui/control.cc gui/gui.cc
    gui/siminterface.cc gui/siminterface.h gui/x.cc iodev/cdrom.cc
    iodev/keyboard.cc memory/misc_mem.cc
  Added Files:
    README-wxWindows wxbochs.rc gui/wx.cc gui/wxmain.cc
    gui/wxmain.h gui/bitmaps/cdromd.xpm
    gui/bitmaps/configbutton.xpm gui/bitmaps/copy.xpm
    gui/bitmaps/floppya.xpm gui/bitmaps/floppyb.xpm
    gui/bitmaps/mouse.xpm gui/bitmaps/paste.xpm
    gui/bitmaps/power.xpm gui/bitmaps/reset.xpm
    gui/bitmaps/snapshot.xpm
  Removed Files:
    patches/patch.wxwindows.gz
2002-04-18 00:22:20 +00:00
Volker Ruppert
ebe5f626f4 - CRTC write: only the changes of the start address, the cursor position or
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
2002-04-14 08:57:24 +00:00
instinc
a6320ce597 Implemented register 3F3, see comments 2002-04-11 02:21:59 +00:00
instinc
24ac18f04d temporary drive_select handling for >1 panics 2002-04-11 01:07:34 +00:00
instinc
86ed327ec9 added keyboard command 0xd2 as well as 0xdd and 0xdf 2002-04-11 00:28:55 +00:00
Bryce Denney
f56b1c7335 - move declaration of stat_buf to avoid some warning 2002-04-10 05:38:34 +00:00
Bryce Denney
dcc6df2f1e - fixed several instances where we had "delete array" but we needed
"delete [] array".  This led to memory leaks.  Thanks, valgrind.
2002-04-09 20:12:39 +00:00
Jeroen Janssen
c67a497100 - adding default constructor after code addition 2002-04-09 16:53:15 +00:00
Bryce Denney
7306746f0b - fd was never initialized, then the close() method read it. Thanks
valgrind.
2002-04-09 15:52:02 +00:00
Jeroen Janssen
d2ef229050 - VBE fixing out of memory read (now redhat6 image can use fbcon vga=771) 2002-04-07 21:32:42 +00:00
Jeroen Janssen
8cfa8a3bba - applying patches/patch.vbe-lfb to bochs cvs tree 2002-04-03 16:48:15 +00:00
Bryce Denney
da684a72fb - check in something similar to Stefan Görling's patch #536844.
I went ahead and made all the register/unregister functions in iodev.h
  return a boolean.
2002-04-03 01:56:26 +00:00
Christophe Bothamy
24e2d109da - changed copyright strings 2002-04-01 22:43:01 +00:00
Christophe Bothamy
60c930a782 - Removed the unnecessary BX_BIOS_MESSAGE_SIZE 2002-04-01 21:57:51 +00:00
Christophe Bothamy
d1ef29dc6e - Added a biosdev "pseudo device" to handle the log output of the rombios and vgabios :
. ports 0x0400 0x0401 and 0xfff0 : rombios
  . ports 0x0500 0x0501 and 0x0502 : vgabios
  The rombios log output was previously handled by the unmmapped device
2002-04-01 21:53:23 +00:00
Volker Ruppert
d47cdb919a - fixed detection of single mode and level senistive mode in ICW1
- 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
2002-03-29 09:13:02 +00:00
Bryce Denney
aff6e60d76 - I now believe that Dave's changes in 1.46 are correct and something in
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.
2002-03-27 16:42:54 +00:00
Bryce Denney
ae64b4ccdc - revert changes from revision 1.46 of iodev/keyboard.cc which is causing SMP
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.
2002-03-27 05:58:25 +00:00
Bryce Denney
b394a44157 - made keyboard_paste_delay a runtime configurable option
- clean up comments & debug msgs in paste code
2002-03-26 14:46:03 +00:00
Bryce Denney
d71c73ed88 - rename TIMER_DELTA to to BX_IODEV_HANDLER_PERIOD. Now that it's a global
define, I wanted it to be a little more descriptive.
2002-03-26 13:59:35 +00:00
Bryce Denney
34e02290eb - apply Christophe's patch.paste-for-dos. I will make minor tweaks as
separate revisions.
2002-03-26 13:51:48 +00:00
Christophe Bothamy
fcd6f99391 - fixed cmos info on 2nd disk landing zone. 2002-03-25 01:47:13 +00:00
Bryce Denney
18833a885b - commit patch.pic-priorities. William Irwin needs this patch to get
SMP Linux 2.4.x to boot, since it requires polled mode.  I can't
  say I understand all the pieces of it, but it looks good so far.
2002-03-25 01:31:59 +00:00
Bryce Denney
58330d27e9 - use BX_DEBUG instead of if (condition) BX_INFO 2002-03-20 02:41:19 +00:00
Bryce Denney
ade5adf6b9 - bug fix: win32 could not read a cdrom image file. See bug
[ 531069 ] win32: can't read cdrom disk image (ISO)
  (This is the same as the change from 1.13.2.1 to 1.13.2.2
  in the BRANCH-cpanel branch.)
2002-03-20 01:24:15 +00:00
Volker Ruppert
8263d15e76 - renamed update_floppy_status_buttons() to update_drive_status_buttons() since
it handles the cdrom status too
2002-03-17 20:57:54 +00:00
Volker Ruppert
e42539f2de - bugfix in set_media_status(): set the status in bx_options for floppya
or floppyb, not always for floppya
2002-03-17 20:55:27 +00:00
Jeroen Janssen
6ce05d42cc - VBE fixed set bank bug introduced by my bounds check rewrite 2002-03-16 11:37:43 +00:00
Jeroen Janssen
17ce9b8a34 - VBE screen update only when in visable screensize 2002-03-16 10:22:57 +00:00
Jeroen Janssen
bb3deba7d3 - vbe set mode defaults to clearscreen atm 2002-03-13 19:01:39 +00:00
Jeroen Janssen
fa04cb9d5b - fixing VBE support for whatvga (see [ 529309 ] meta feature for VBE app list)
- added VBE checks for valid data/parameters
2002-03-13 18:33:00 +00:00
Bryce Denney
12a812296d - add comment about BYTES being freed when we're done with it. 2002-03-11 16:25:52 +00:00
Bryce Denney
8125bee908 - commit patch.paste 2002-03-11 15:04:58 +00:00
Bryce Denney
fe239c3fd4 - clarify an err msg 2002-03-11 13:59:38 +00:00
Jeroen Janssen
0e58d8a083 - VBE adding missing set bpp (caused a panic with current vgabios) 2002-03-10 20:59:11 +00:00
Bryce Denney
8c0256840c - apply patch.vbe-janssen by Jeroen Janssen <japj@darius.demon.nl>,
to add VBE support to Bochs.  The changes in this checkin correspond
  to Jeroen's 5th version of the patch on sourceforge patch #526595.
2002-03-10 04:51:24 +00:00
Bryce Denney
03bb688612 - must use #if HAVE_ETHERTAP 2002-03-09 04:18:08 +00:00
Bryce Denney
aac59e68ae - add more detail on the ping problems I'm seeing 2002-03-09 01:33:46 +00:00
Bryce Denney
b1835f1dc3 - add instructions for setting it TAP 2002-03-09 01:23:21 +00:00
Bryce Denney
6eea8f1bea - panic if the ethernet module cannot be found. If they continue, use
null module instead.
2002-03-09 01:05:41 +00:00
Bryce Denney
9a177ba518 - add configure test for ethertap. On systems which have a header file
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.
2002-03-09 01:04:49 +00:00
Bryce Denney
612a155e18 - add ethertap interface for Linux 2002-03-09 00:38:53 +00:00
Bryce Denney
3a01642790 - add debug warning when you throw out small packets 2002-03-09 00:28:07 +00:00
Bryce Denney
1e42e99914 - apply patch from Mike Lerwill:
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.
2002-03-08 18:46:54 +00:00
Bryce Denney
3a20b2bdde - clean up comments slightly 2002-03-08 18:41:33 +00:00
Bryce Denney
4ec5b4a967 - add UINT ReadTimeOut to the ADAPTER struct, reported by
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.
2002-03-08 16:37:01 +00:00
Bryce Denney
6b11183d70 - the check for "auto transmit disable" was checking the wrong bit.
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.
2002-03-08 08:33:37 +00:00
Bryce Denney
a62ec06005 - check in revision that Psyon mailed to me March 6 2002-03-07 02:23:54 +00:00
Bryce Denney
4a976dcb0a - add null check on devices->ioapic->untrigger_irq, suggested by
William Lee Irwin III <wli@holomorphy.com>
2002-03-06 21:52:16 +00:00
Bryce Denney
7a5921fe56 - remove extra \n 2002-03-06 15:56:27 +00:00
Christophe Bothamy
11ed519a07 - Deleted a "debug" include <X11/...>
- BX_KEY_PRINT_SCREEN and BX_KEY_SCROLL_LOCK were defined twice
2002-03-06 14:04:42 +00:00
Christophe Bothamy
1c0a1360bf - cosmetic change 2002-03-06 09:19:36 +00:00
instinc
32c40d0b55 commented out the diagnostic code, no use using 10 jumps for nothing, and it will take less time to re-enable it in the future than using those if(0) 2002-03-06 01:19:50 +00:00
Bryce Denney
d653699cd3 - add "return BX_SOUND_OUTPUT_OK;" to avoid compile error in VC++5
"not all control paths return a value".  This was suggested in bug #523697.
2002-03-05 17:22:59 +00:00
Stu Grossman
3f73e3f33e Fix receiver poll frequency to really be 100ms. This actually gives about an
11% speedup to the emulator when serial I/O is enabled.
2002-03-05 15:40:23 +00:00
Bryce Denney
e50a1be21b - commit serial port patch from Stu Grossman <grossman@juniper.net>
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.
2002-03-03 06:03:29 +00:00
Volker Ruppert
8e3e768922 - 'eject cd' support for linux (patch from Petr Stehlik <pstehlik@sophics.cz>)
- ReadCDSector() (for win32 ASPI) returns 1 if target status is okay
- win32 ASPI version of insert_cdrom() checks media status using ReadCDSector()
2002-03-02 11:31:18 +00:00
Volker Ruppert
ad4808cbda - checked in floppy timer 'idle' patch from Jeroen Janssen <japj@darius.demon.nl>
- just return without a panic when no floppy command is pending
2002-02-27 18:16:30 +00:00
Volker Ruppert
6aafdccd5e - applied patch from Dave Poirier <eks@void-core.2y.net>
- call lower_irq() after reading port 0x60, not port 0x64
  - RETURN() macro removed
2002-02-23 09:32:49 +00:00
Gregory Alexander
055d8fa719 Fix a warning. 2002-02-21 21:16:06 +00:00
Gregory Alexander
2e632a4294 BIG fix for initial counts of zero. 2002-02-21 20:56:18 +00:00
Bryce Denney
fa29b378b4 - commit patch from Dave Poirier to fix
Bug #490570: OUTB set and command 0xaa encountered
2002-02-21 20:26:48 +00:00
Gregory Alexander
eca4aa0720 Fixed the PIT gate and improved the PIT printing options. 2002-02-21 19:22:42 +00:00
Christophe Bothamy
7b6f19f1d2 - small bug fix in ATAPI command 0x42 (read sub-channel). 2002-02-12 16:03:00 +00:00
Volker Ruppert
e321b7bc9b - old IRQ handling functions are disabled now 2002-02-11 08:50:28 +00:00
Volker Ruppert
30ea11e08d - reset function clears DMA and IRQ line 2002-02-09 13:22:43 +00:00
Gregory Alexander
cfab846fe1 More #define changes. 2002-02-08 22:27:51 +00:00
Gregory Alexander
49e715178d More updates to the realtime PIT code. 2002-02-08 05:18:14 +00:00
Gregory Alexander
6b0dca1508 Fix using 1/4 speed. 2002-02-08 02:57:27 +00:00
Gregory Alexander
57273620e6 Added an experimental realtime PIT to the mix.
This is basically the opposite of the slowdown timer.  Instead
of trying to keep the PIT ticks in sync with bochs time, we
keep them in sync with REAL time.  This is bad because it creates
unreproducible fails, but it's good if you want to run bochs at
maximum speed on your machine.  However, bochs will take all of
the available resources from the machine also.

DO NOT use this with the slowdown timer.  Results would be
unpredictable.
2002-02-07 21:22:55 +00:00
Volker Ruppert
ba58065da8 - call dimension_update() only after a dimension change
(patch from Dave Poirier <eks@void-core.2y.net>)
2002-02-07 19:04:30 +00:00
Christophe Bothamy
716e461c9d - enabled dword IO. Tiny performance increase 2002-02-07 17:43:06 +00:00
Bryce Denney
db0a934ae3 - move include cdrom_beos.h to top of file where it belongs 2002-02-07 17:38:33 +00:00
Bryce Denney
8fe590fb2b - removed a dependency on /usr/include/math.h. System headers should never
be in the list!  Oops.
2002-02-07 17:18:44 +00:00
Volker Ruppert
ca5a805aff - behaviour of floppy command 'sense interrupt status' after reset fixed
(DLX linux boots again)
- new function raise_interrupt() sets variables and calls raise_irq()
2002-02-06 18:51:48 +00:00
Volker Ruppert
1d9861fc59 - implementation of the text mode snapshot function 2002-02-04 20:31:35 +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
Gregory Alexander
dcdc5b2624 Minor fix to raise/lower irq code. 2002-01-31 17:26:26 +00:00
Gregory Alexander
05983c7a48 Changes to the pit wrapper code that should help synchronization some. 2002-01-31 17:18:38 +00:00
Gregory Alexander
26e6452142 Preparing for another pit time sync upgrade. 2002-01-31 16:52:00 +00:00
Volker Ruppert
0b6ab60780 - IOAPIC calls added in functions raise_irq() and lower_irq() (untested) 2002-01-30 18:33:41 +00:00
Christophe Bothamy
ac91aa0d3c . changes to enable El-Torito boot. It is disabled by default in rombios.c 2002-01-30 10:30:52 +00:00
Volker Ruppert
ad072e2bc6 - implementation of the edge triggered IRQ mode
- new functions raise_irq() and lower_irq()
- all trigger_irq() / untrigger_irq() calls are replaced by the new functions
- REMARK: timer IRQ handling is not correct but it works
- TODO: IOAPIC IRQ handling needs to be changed
2002-01-29 17:20:12 +00:00
Volker Ruppert
2933948216 - set the media status for the siminterface to 'ejected' if cdrom is not present 2002-01-27 21:58:41 +00:00
Volker Ruppert
e472507616 - set_media_status() sets the media state for the simulation interface too 2002-01-27 21:56:53 +00:00
Volker Ruppert
4ed537308c - read access to the status registers clears the IRQs 2002-01-27 00:41:38 +00:00
Volker Ruppert
4d4be62283 - specific EOI doesn't clear the IRR bit
- service_master_pic() / service_slave_pic() do clear the IRR bit
- new IRQ signal handling prepared
2002-01-26 12:03:55 +00:00
Volker Ruppert
6461cb2ab9 - new IRQ signal handling prepared 2002-01-26 12:03:10 +00:00
Volker Ruppert
7aac4bfb3d - reading status register C clears the IRQ
- use BX_CMOS_THIS instead of class_ptr-> (the way other devices do)
2002-01-26 10:00:08 +00:00
Volker Ruppert
81bbbd27b2 - clear DSP.irqpending only if the value of mixer register 0x82 is 0
- use conversion type %d for logfile (Cygwin doesn't know %i)
2002-01-25 20:31:42 +00:00
Volker Ruppert
70ac9ca440 - clear IRQ if no unmasked interrupts are pending 2002-01-25 20:31:00 +00:00
Volker Ruppert
dde7bd3a61 - CGA mode 320x200 implemented - thanks to Sebastien Béchet
<bechets@ifsic.univ-rennes1.fr>
2002-01-24 20:30:45 +00:00
Volker Ruppert
a373e8dc12 - software reset doesn't clear selected data rate
- IRQ is cleared when the result phase is complete
2002-01-23 20:23:07 +00:00
Volker Ruppert
d22d280571 - interrupt handling improved (only loopback works for now)
- interrupt reasons modem status change and receiver line status change added
- number of data bits is considered now
- REMARK: Windows 95 driver still makes trouble
- TODO: real serial communication, FIFO, second serial port
2002-01-20 16:35:32 +00:00
Volker Ruppert
a9c1b785f0 - when checking the presence if diskd, check the presence of diskc, too
- clear IRQ after reading status register 0x1f7
- unused variable 'alloc_length' removed
- some messages fixed
2002-01-20 12:38:35 +00:00
Volker Ruppert
2d48b07d80 - unnecessary BX_PANICs removed, some others changed to BX_ERROR 2002-01-20 00:28:09 +00:00
Volker Ruppert
d07f5a13ad - new function control_HRQ() changes the state of HRQ / cascade DRQ if necessary
- calling control_HRQ() in function DRQ() and after a write access to DMA mask
  or request register
2002-01-18 16:33:47 +00:00
Volker Ruppert
1073eaf524 - sending data to printer causes a BX_ERROR when offline
- untrigger_irq() seems to be necessary, so I add it again
2002-01-18 16:33:07 +00:00
Volker Ruppert
2892dbdb08 - track0 bit added to the result of the 'get status' command
- length of 'configure' floppy command fixed
- busy flag is set until the result of a read/write command is complete
- read/write access to unsupported address causes a BX_ERROR, not a BX_PANIC
- commented BX_INFO statements removed
2002-01-17 21:20:12 +00:00
Volker Ruppert
aa4b1dd80f - service_slave_pic() checks the special mask of slave not master 2002-01-15 20:42:51 +00:00
Volker Ruppert
b061db9cd7 - mixer reset does not reset the IRQ/DMA settings
(Linux OSS driver resets the mixer after configuring IRQ/DMA)
- write timer ticks into logfile, not the localtime
2002-01-13 17:07:14 +00:00
Volker Ruppert
6d0adac941 - address decrement feature added
- set TC in autoinit mode too
- set mask bit on TC if not in autoinit mode
2002-01-13 17:06:33 +00:00
Volker Ruppert
26a2731a19 - return value of MCR fixed
- unnecessary untrigger_irq() calls removed
2002-01-08 20:31:14 +00:00
Volker Ruppert
395ef2f5c7 - obsolete variable 'alt_pressed' removed 2002-01-08 19:00:06 +00:00
Volker Ruppert
f9fdee7ed5 - 16-bit DMA mode fixed (VOC file output works) 2002-01-05 10:30:24 +00:00
Volker Ruppert
4b759265e9 - deassert HRQ if no DRQ is pending
- fixed boundary check for 16-bit DMA
- removed unnecessary comments
2002-01-05 10:28:49 +00:00
Volker Ruppert
45f11e30b2 - implementation of cascade mode (channel 4) 2002-01-02 10:00:54 +00:00
Volker Ruppert
df10d56fe4 - recognize edge/level bit in ICW1, messages updated 2001-12-31 08:38:08 +00:00
Volker Ruppert
d6a1ec5fd9 - removed unnecessary untrigger_irq() call 2001-12-31 08:36:48 +00:00