Commit Graph

85 Commits

Author SHA1 Message Date
Christophe Bothamy
b64fb6aba6 - refix [ 642031 ] FATAL: Keyboard RESET error:993
With Bryce we identified that this code will successfully
  flush the keyboard input buffer as long as ips <= 15000000.
2002-12-13 16:26:17 +00:00
Bryce Denney
3c450d5262 - apply 8CPU bios patch from Zwane Mwaikambo, who writes:
> This simplifies things for operating systems which don't do
  > paranoia/sanity checks. This BIOS image has been tested on Linux-2.4.19
2002-12-09 13:23:05 +00:00
Christophe Bothamy
8d41bca5f5 - fix [ 642031 ] FATAL: Keyboard RESET error:993 again: rewrote keyboard
buffer cleanup
- add BX_DEBUG_INT1A macro
- change two "mov ax, #0000" to "xor ax, ax", so int70_handler does not overlap int08_handler
2002-11-26 11:04:41 +00:00
Christophe Bothamy
b37dc11e70 - fix [ 629810 ] int 16/ah=01 broken?
added sti at start of int16_handler
- add some notes about int09 / int15/4f
2002-11-25 21:30:51 +00:00
Christophe Bothamy
f0c3eb675a - fix [ 642031 ] FATAL: Keyboard RESET error:993
Clear the incoming keys before reseting the keyboard.
2002-11-22 14:40:09 +00:00
Bryce Denney
7fde35e253 - fix a bug reported on ML by Scott Duplichan. Unimplemented int15 calls
should return AH=0x86 and CF set.  The new AH=E8 calls did not return
  0x86 in some cases where the call was not implemented.
2002-11-21 19:09:36 +00:00
Bryce Denney
58bcf51ad8 - no longer create biosconfig.h with one line extracted from config.h.
Instead, just build all 4 bioses for 1,2,4,8 processors all the time.
  Now they should all stay in sync without any special effort.

Modified Files:
  rombios.c Makefile.in
2002-11-14 20:04:38 +00:00
Christophe Bothamy
5d7b0701df - clean up in and out keyboard buffer before self test 2002-11-07 21:57:27 +00:00
Christophe Bothamy
70b7d13763 - remove patch.keyboard-biosinit-asulmicki
- add new keyboard init code from Adam Sulmicki
- changed last cli() to #asm cli #endasm
- remove unused cli() function
- don't panic on shutdown status 0x09. just do the normal post
2002-11-04 23:56:56 +00:00
Christophe Bothamy
55fa06db79 - fix type of the counter used when waiting for signals in ata_reset. It may be > 0xff 2002-10-30 22:42:42 +00:00
Christophe Bothamy
ae220149ea - add wait states during disks reset, so the BIOS can reliably detect them.
patch from Adam Sulmicki.
2002-10-30 21:47:11 +00:00
Christophe Bothamy
d5443fcba3 - change offset of the answer to the identify device query where current disk geometry is read.
Thanks to Adam Sulmicki
2002-10-27 23:04:59 +00:00
Christophe Bothamy
bd04f51748 - remove tabs from source code
- implement "large" "r-echs" "lba" disk translations
- fix if ( (sc==0x01) && (sn=0x01) ) bug
- fix option field in int13 function 0x48 for harddisks
- fix option field in int13 function 0x48 for cdrom
- add "%u" in printf to handle unsigned values
- remove UDIV
- asm helper asm function ldivul idiv_ and idiv_u
2002-10-27 21:17:03 +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
Christophe Bothamy
17faa94c65 - add a pushad_regs_t structure, similar to pusha_regs_t
- change int 15 function to get a pushad_regs_t parameter
  instead of the registers enumeration
- change in int 15 references to 32bits,16bits and 8 bits
  registers to their pushad_regs_t counterpart
2002-10-19 17:08:17 +00:00
Christophe Bothamy
ec595a7d9b - limit the logical chs heads count for disks > 8GiB to 256
- limit the logical chs cylinders count for disks > 8GiB to 1024
- fix a missing parameter in a BX_INFO
2002-10-16 14:04:41 +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
d460ec396a - harddisk controller interrupt must be enabled after a reset and the
completion of a read or write operation
- int13_harddisk function 0x00 calls ata_reset()
2002-10-07 16:16:04 +00:00
Christophe Bothamy
7c35cfb980 - fixed size mismatch 2002-10-04 16:47:29 +00:00
Volker Ruppert
4158c1e862 - serial port detection for two ports added to the POST code
- parallel port detection fixed:
  * write the value of AX to 0x0410, not BX
  * the timeout value is a byte and now stored in CL
  * the offset of the port address list is 2 bytes
2002-09-28 15:03:32 +00:00
Volker Ruppert
b98975c832 - parallel port detection for two ports added to the POST code 2002-09-28 12:27:56 +00:00
Christophe Bothamy
2ef503ae20 - merged rombios-new-ata.c in rombios.c. New features :
. 4 ata interfaces support
  . devices auto-detection
  . 16bits/32bits device access
  . EDD3.0 support
  . ata/atapi layer rewrite
  . added verious DEBUG_XXX to debug only parts of the bios, because we're running low on data space in debug mode
  . moved ata data at offset 0x121 in EBDA. Previously, data was being overwritten by keyboard.sys
  . added jump to [0x40:0x67] after reset if shutdown status is 0x05. Fixes bug [ 601166 ] CMOS Problem @ "0x0F Index 0x05 data"
  . DMA controller init on POST entry
2002-09-24 21:52:32 +00:00
Volker Ruppert
efbcf33bc7 - real mode PCI BIOS modifies the iret flags on stack if no error is present
- bug in the 'find PCI device' functions fixed
- register for the PCI i/o addresses is always DX
2002-09-20 19:36:05 +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
e46d56fad1 - jump to POST entry point must be a far jump (MS-DOS and Win95 reboots now)
- keyboard init: read output buffer and enable keyboard before self test
2002-07-23 18:46:17 +00:00
Volker Ruppert
54a5e86cc6 - real mode PCI BIOS functions rewritten in assembler
- new real mode PCI BIOS functions: find device, read/write byte/dword
- C code for PCI BIOS handles errors and prints messages only
- function setPCIaddr() no longer needed
- functions inw() and outw() no longer used by the PCI BIOS
- BIOS32 checksum calculation rewriten to prevent errors
- labels of protected mode PCI BIOS renamed
2002-06-22 15:23:05 +00:00
Volker Ruppert
aa57c0e171 - most important functions of the protected mode PCI BIOS added.
Linux (kernel 2.2.18) is able to use the new features.
  Here is the list of changes:

  * BIOS32 data structure added
  * BIOS32 and protected mode PCI BIOS functions added. The BIOS32 function
    returns a pointer to the PCI BIOS entry point when the service $PCI is
    requested and the PCI hardware is present.
  * Supported 32 bit functions: installation check, find pci device,
    read configuration byte/word/dword, write configuration byte/word/dword
  * real mode PCI BIOS installation check rewritten in assembler to use 32 bit
    registers for the protected mode entry point and the 'PCI ' signature.

  TODO:

  * add missing functions of the PCI BIOS (if necessary)
  * add missing features of the i440FX PCI bridge
  * implement the other parts of the i440FX chipset (PCI-to-ISA bridge,
    PCI IDE controller, USB controller)
2002-06-04 17:44:02 +00:00
Volker Ruppert
c2941ec36b - added error message: PCI BIOS can only be used with 386+ cpu
- functions inw() and outw() are required for the ATA driver too
- real mode PCI BIOS installation check returns revision level 2.10
- unsupported real mode PCI BIOS functions return the error code 0x81
2002-05-11 13:44:39 +00:00
Christophe Bothamy
45ad28ff24 - adapted rombios for floppy boot signature check flag change
- added ASM_START / ASM_END instead of #asm / #endasm.
  Now we are (tested) able to compile with both gcc2 and gcc3
  compiler (Eventually!) Aren't you happy Jeroen ? ;-)
- fixed [ 549815 ]. I included back int19_relocated at the bios
  space could not hold the new mov ex, ax
- int19 calls int18 if the boot has failed. I hope this is the
  right behavior.
2002-05-04 16:09:38 +00:00
Christophe Bothamy
a5442def86 - fixed bug [ 547603 ]
- added int16 functions AX=09h and AX=0Ah
2002-04-24 13:49:26 +00:00
Christophe Bothamy
6566116a01 - added BX_DEBUG, BX_INFO, BX_PANIC macros
- BX_DEBUG outputs to the INFO port till we can easily choose debug output on a per-device basis
- BX_DEBUG are only generated if DEBUG_ROMBIOS is defined to 1
- do not panic on unsupported function in int13, only output info message
- fixed a bug on boot signature check never done on floppy/harddisk and always on floppy images on cd
- the boot signature check on harddisks is always done
- the boot signature check on cdroms (either direct boot or floppy images) is never done
- the boot signature check on floppies is conditionnal to CMOS reg 0x38 (configuration floppy_bootsig_check)
- moved PIC initialization before calling optional rombios init functions (feature request [ 541908 ])
2002-04-24 07:52:07 +00:00
Jeroen Janssen
b3e6bcb3a9 - reverting ##asm/##endasm patch for preprocessing with gcc3 2002-04-21 13:04:47 +00:00
Jeroen Janssen
cfa340ca76 - make sure the rombios can be preprocessed with latest gcc (from Mandrake 8.2) 2002-04-20 16:46:07 +00:00
Jeroen Janssen
1abec8c874 - moving DEBUG_ROMBIOS more to the top of the file (since it's sort of a configuration option and was 'well hidden' atm) 2002-04-11 20:17:03 +00:00
Christophe Bothamy
c7c233f9ce - fixed Win2k boot from cd
- included provisional code for two ATA interfaced
2002-04-10 23:25:49 +00:00
instinc
c9e242cab0 Fixed the bug 433003 related to function 87h of int 15h 2002-04-10 23:23:00 +00:00
Bryce Denney
45b49fe35f - this patch from William Lee Irwin III <wli@holomorphy.com> makes it easy to
configure and compile a BIOS for 8 CPUs.
2002-04-08 01:41:59 +00:00
instinc
cd4fdfe9f3 Fixes bug report 466292 2002-04-08 01:19:35 +00:00
Christophe Bothamy
f02ef5cd7a - fixed keyboard not working with DOS6.2 keyb.com :
. int16 function 92 :  keyboard capability check for keyb.com (enhanced keyboard) : supported
  . int16 function A2 :  keyboard capability check for keyb.com (122keys keyboard) : not supported
2002-04-06 15:59:29 +00:00
Christophe Bothamy
f9304212e9 - redo the freebsd fix.
I should know better the 16bits segmentation model.
2002-04-05 21:08:22 +00:00
Christophe Bothamy
2ba7527c2a - real fix for freeBSD boot 2002-04-04 16:57:45 +00:00
instinc
c2fcfad89b Khorev Sergey's patch allowing FreeBSD to boot 2002-04-04 03:50:11 +00:00
Bryce Denney
8ceca1a4c5 - change a few keyboard panics into printfs (warnings). I got a bug report
about this, #535432: Emu panics when pressing ">"-key.  The user did not
  report exactly what the exact message was, but these sound like the
  correct ones.  BIOS panics are permanent fatal errors, so I don't
  want them to show up accidently, especially for something as trivial
  as bumping the wrong key.
2002-03-28 07:10:18 +00:00
Bryce Denney
8ef7c284fd - apply Christophe's patch.rombios-no-gpl
- update binary bioses
- remove the patch from patches
2002-03-26 13:17:44 +00:00
Christophe Bothamy
c81c05a9cd - included Peter Tattam's fix for read error when installing win95 2002-03-24 23:04:58 +00:00
Christophe Bothamy
11b6de2502 - fix from gnutchar@hotmail.com. cmp ax, 0x0000 sould be cmp ax, #0x0000 2002-03-20 21:06:12 +00:00
Volker Ruppert
6c4a3581c7 - removed unnecessary delay loop after keyboard reset in POST 2002-03-12 18:44:07 +00:00
Christophe Bothamy
f25dc70678 - fixed a unnecessary check on the bootsegment
- renamed int13_function to int13 harddisk
- the default is now to have the ATA driver and ElTorito boot
2002-03-11 00:17:31 +00:00
Christophe Bothamy
2cedd2d79f - fixed OAK driver problem in win98
- CDs can boot at segment != 0x7c0
- reworked int19 in a C function
- "no emulation" CDs can be booted (Win2k, XP).
  No more 000E failure code. Win2k fails though
- started to implement int13 for cdrom
- started to mutualize string constants
- changed a little bit the Bios Config Table address
  so the new int19 handler fits whithout relocation
2002-03-09 01:50:52 +00:00