Commit Graph

298 Commits

Author SHA1 Message Date
Volker Ruppert
ec3415a7eb - applied patch from the Qemu-devel list by Filip Navara
* added generation of SSDT ACPI table that contains definitions for available
    processors
  * added basic implementation of SMBIOS
  * Added querying of BIOS UUID using VMware backdoor I/O port (enable only if
    BX_QEMU is defined)
  * Added RTC device to ACPI DSDT table
2008-01-21 21:44:29 +00:00
Stanislav Shwartsman
abe7373657 Merged some BIOS patches from @SF tracker 2008-01-21 15:06:29 +00:00
Volker Ruppert
0a8105e95e - implemented LBA48 support (since BIOS functions are limited to 32 bit, the
max. disk size is now 2 TB)
2008-01-14 19:11:15 +00:00
Stanislav Shwartsman
3b53e234da Merge SF tracker BIOS patches 2008-01-06 21:00:18 +00:00
Stanislav Shwartsman
c796f7fffa Define IPL values patch from #SF tracker 2007-12-23 19:46:27 +00:00
Volker Ruppert
46b3ec2397 - don't abort ATA reset for not existing slave drive. The reset bit must
always be cleared to avoid blocking existing master drive.
2007-12-20 18:12:35 +00:00
Stanislav Shwartsman
216f4f2f4f Fixed my BIOS optimization 2007-12-06 16:56:32 +00:00
Volker Ruppert
147633c460 - inline asm optimizations by Stanislav
- initialize PAM register for ROM-to-RAM copy even after reboot
2007-12-01 19:27:28 +00:00
Stanislav Shwartsman
90721b75f6 Merge patch from #SF patches tracker:
1830658  Fix >32GB disk banner
2007-11-12 20:58:37 +00:00
Volker Ruppert
cd0e516962 - applied rombios patches from SF patches section by Sebastian
* save PnP Option ROM Product Name string in IPL Boot Table
  * move the #define IPL_* lines to top of the file and change
    struct ipl_entry to ipl_entry_t by using typedef
2007-11-04 15:40:20 +00:00
Stanislav Shwartsman
14b4f66d4e Fixed comments for bios_printf (patch from #SF tracker) 2007-10-19 10:26:49 +00:00
Volker Ruppert
834904f49b - improved HD recognition and CD boot (patches by Myles Watson)
* fixed minor error from printf patch confusion (negation based on wrong word)
  * added helper function await_ide
  * changed lba calculation to not corrupt lba (for debugging and clarity)
  * added support for partial completions of ata_cmd_packet (never happens in
    the simulator, but happens all the time in hardware)
  * update atapi_request_sense and atapi_is_ready - based on FILO
  * correct an int 15 call that should have been int 0x15
  * trivial fix when BX_PCIBIOS and BX_ROMBIOS32 not defined
- implemented %X in bios_printf (patch by Sebastian)
2007-10-14 08:11:35 +00:00
Volker Ruppert
ed3fdad74d - reverted removal of one DPTE checksum bugfix
- fixed %ld and %lu padding (now only using it for %lx)
2007-10-10 17:12:07 +00:00
Volker Ruppert
fc6693001c - rombios patches by Myles Watson <mylesgw@gmail.com>
* corrects a spelling error and removes the lba_capable comment
  * moves dpte_segment after dpte_offset (endian problem) in the struct
  * changes int13 0x15 to use the logical geometry instead of physical to
    return sectors
  * clips cylinders in Int13DPT
  * fixes bit shift problem in options (parens in the wrong place)
  * returns the correct offset for dpte.iobase2
  * fixes a pointer arithmetic error in calculating the checksum of the dpte
  * moves #if BX_SUPPORT_FLOPPY to include more floppy code
  * added support for %lx %ld and %lu for bios_printf()
2007-10-09 16:49:53 +00:00
Stanislav Shwartsman
9326aa151f Merge checksum patch from mailing list -> need to recompile BIOS 2007-10-07 21:09:15 +00:00
Volker Ruppert
471e89dc84 - INT 15h AH=86h was reading the wrong stack frame (SF patch #1791000) 2007-09-10 20:01:07 +00:00
Volker Ruppert
6ea536f95c - fixed floppy boot signature check switch
- added network boot ROM support in the main Bochs code (already present in BIOS)
2007-08-01 17:10:24 +00:00
Volker Ruppert
feb2f45a3e - added expansion-ROM boot support to the ROMBIOS (SF patch #1741153 ported from
the XenSource project)
2007-06-30 07:15:30 +00:00
Volker Ruppert
216fdf36c6 - implemented INT15h, fn 0xC2 (mouse), subfn 3, set resolution (SF patch #1734159) 2007-06-17 07:36:34 +00:00
Volker Ruppert
3dad77a4b5 - bios_printf() fix for %s format (from VirtualBox)
- removed lots of trailing spaces
2007-05-28 07:54:03 +00:00
Volker Ruppert
9478cd9164 - INT 13h: sector number 0 is invalid 2007-04-02 20:35:52 +00:00
Volker Ruppert
691465ffa6 - reset the memory after 32 bit protected mode init (patch from the Qemu project
by Fabrice Bellard)
2007-02-10 17:05:38 +00:00
Volker Ruppert
0837438f7f - the int13_harddisk() function modifies the high word of EAX in EDD read/write
functions, but it shouldn't, so it must be saved on stack
2006-12-30 17:13:44 +00:00
Volker Ruppert
18a66befd0 - PCI BIOS function 'find class code' implemented for real and protected mode 2006-11-04 18:07:24 +00:00
Volker Ruppert
b9a70fb502 - added stub for real mode PCIBIOS function 'find class code'
- improved real mode PCIBIOS error reporting
2006-10-17 16:48:41 +00:00
Volker Ruppert
4df1ef8af5 - clear registers using the XOR instruction 2006-10-04 19:00:19 +00:00
Volker Ruppert
bc9a192668 - clear upper 16 bit of the stack pointer when returning to real mode (fixes
booting of Ubuntu 6.06)
2006-10-03 21:04:44 +00:00
Volker Ruppert
6276cae023 - applied patch from the Qemu project (Fabrice Bellard)
* use 32 bit pushf/popf in 32 bit PCI bios
  * moved some useful defines in rombios
- minor cleanups
2006-10-01 16:40:30 +00:00
Volker Ruppert
fdc1b75115 - fixed number of MP table entries (caused FreeBSD 5.3 boot failure)
- moved shared defines to new file rombios.h (could be used to show features
  on the screen after detection by rombios32)
2006-09-30 11:23:49 +00:00
Volker Ruppert
5ba61b49c8 - always generate MP tables (WinXP guest needs this)
- new code is now enabled again
2006-09-29 17:37:31 +00:00
Volker Ruppert
518c64b64f - disabled rombios32 call until the critical bugs are fixed
- more accurate delay loop using the port 0x61 refresh clock bit
- fixed capabilties reported in BIOS banner
2006-09-29 12:24:05 +00:00
Volker Ruppert
aacc148f7c - initial revision of the 32-bit init code for the Bochs BIOS
* CPU, PCI, ACPI and SMM init
  * MP and ACPI table generation
- MP table generation hack in the Bochs memory code disabled (should be removed)
- don't test the checksum of large BIOS images (for now)
- existing 16-bit PCIBIOS init disabled for now
2006-09-28 19:01:04 +00:00
Volker Ruppert
ba049136a9 - INT 15 AH=88h now returns max. 63M extended memory (Ralf Brown's interrupt
list says the limit should be 15M, but real machines are reporting more)
2006-08-11 17:34:43 +00:00
Volker Ruppert
0ae9f5670e - INT 09h: fixed handling of extended keys (asciicode = 0xe0)
- left backslash key added in keycode table
2006-08-07 20:26:58 +00:00
Volker Ruppert
7a5ccec5f7 - fixed keyboard LED flag handling and added setting of LEDs (makes keyboard
indicators work in Win 3.x, Win 9x and at the boot prompt)
2006-07-30 09:38:02 +00:00
Volker Ruppert
d9be51128b - fixed ATA device detection in case of one drive only connected to controller
- applied patch from the qemu project (Fabrice Bellard)
  * improved INT 15h function AX=E820h
  * real mode PCI BIOS now returns IRQ routing information (function 0Eh)
2006-07-07 16:11:06 +00:00
Volker Ruppert
aeaff883b7 - enable interrupts before executing INT 19h and revert previous change 2006-07-06 07:28:08 +00:00
Volker Ruppert
4a5d4ad80a - enable interrupts before executing boot sector code (untested) 2006-07-05 09:20:31 +00:00
Volker Ruppert
458e128240 - PCI BIOS: improved error message for function 'find PCI device' 2006-01-25 17:53:37 +00:00
Volker Ruppert
480fbb29d1 - removed static MP tables from rombios.c and MP bios images from Makefile 2006-01-13 17:36:27 +00:00
Volker Ruppert
b2e19d7e09 - APM function 0x05 (cpu idle) implemented (tested with Win98)
- unused commented stuff removed
2005-12-26 10:36:52 +00:00
Volker Ruppert
ae37bb9815 - fixed disk size reporting > 64 GB (SF patch #1389776) 2005-12-25 09:11:59 +00:00
Volker Ruppert
c92fd65c65 - enabled support for harddisks with up to 127 GB in Bochs and bximage
- BIOS harddisk detection message is now okay if size is < 64 GB
2005-11-06 16:50:30 +00:00
Volker Ruppert
7b8ed58815 - end-of-track (EOT) condition implemented
- set valid EOT value in BIOS floppy read/write functions
- added hack to make older Bochs BIOS version work with EOT feature
2005-10-27 07:38:20 +00:00
Volker Ruppert
50a0de2746 - disable i/o and memory space access while initializing PCI base address registers 2005-09-24 08:10:10 +00:00
Volker Ruppert
8d883ec645 - fixed PCI i/o base address initialization 2005-09-19 21:09:42 +00:00
Volker Ruppert
fb5b86b11c - PCI i/o and memory base address initialization added 2005-09-18 21:45:05 +00:00
Volker Ruppert
62f28d8f79 - pause key detection implemented
- preparing PCI i/o and memory init function
2005-09-17 17:43:45 +00:00
Volker Ruppert
9121053af9 - keyboard interrupt handler fixes (patch by japheth)
* pass all keycodes received by INT 09h to keyboard intercept
  * don't wait for second keycode if an extended keycode is detected (set flag only)
2005-09-16 16:05:14 +00:00
Volker Ruppert
8851f2523a - fixed enhanced keycode flag for key releases
- modified bios startup messages
2005-09-15 18:07:32 +00:00
Volker Ruppert
f9e7aa39af - fixed flag for enhanced keycode 0xE0 (final part) 2005-09-09 18:56:42 +00:00
Volker Ruppert
08fe825e41 - fixed flag for enhanced keycode 0xE0 2005-09-09 16:34:21 +00:00
Volker Ruppert
b4269dca92 - new function floppy_prepare_controller() simplifies some floppy functions and
makes panic no longer necessary
- bios banner now shows active features
- indent mode fixed in modified sections
2005-09-04 09:38:28 +00:00
Volker Ruppert
9a282850c7 - fixed URLs for mtools on win32 and rombios documentation 2005-09-02 15:38:46 +00:00
Volker Ruppert
2e8dccf684 - fixed floppy return status if media not present (MS-DOS expects value 0x80)
- more accurate handling of the floppy recalibrate function (removed panic)
- small code cleanups and optimizations in the floppy code (e.g. do .. while loops,
  always using 0040:003e for the floppy interrupt flag)
- small updates ported from the PC BIOS project
2005-08-26 17:47:16 +00:00
Volker Ruppert
86c3c68dc4 - fixes for OS/2 in the floppy and rombios code (patch from Robin Kay)
* support for XDF images added
  * floppy controller should hang if media not present
  * rombios has to reset the floppy controller after read/write failure
2005-08-24 20:45:57 +00:00
Volker Ruppert
b6f484f606 - fixed INT 09h keyboard flags handling 2005-08-14 17:19:44 +00:00
Volker Ruppert
c688161ddf - INT 70h has destroyed the upper word of EAX; save/restore all 32-bit registers now 2005-08-13 08:53:59 +00:00
Volker Ruppert
e5b7fa1b4b - fixed segment and offset in int70h and modify the high bit only 2005-08-12 19:50:45 +00:00
Volker Ruppert
218e6b8450 - missing scancodes for F11 and F12 added to translation table
- unknown scancode info message improved
2005-06-14 18:23:03 +00:00
Volker Ruppert
57a8322ac4 - applied patches by Alex Beregszaszi
* serial debug output to COM1 for the rombios (disabled by default)
  * added missing trailing newlines in info/panic messages
- log_bios_start() must initialize serial port for the serial debug feature
- comments for the parallel and serial detection code added
2005-05-07 15:56:27 +00:00
Stanislav Shwartsman
5243bd8bf2 Update MP tables comments in rombios 2005-05-04 16:05:05 +00:00
Volker Ruppert
37f92c320a - applied patches by Alex Beregszaszi
* cross-compilation support for the bios
  * "user-settable" bios build date string
  * hexadecimal nuber cosmetics, #0x instead #$
- use real build date for the bios build date string
- simplified printer status handling
2005-04-30 11:11:16 +00:00
Volker Ruppert
c5b7f5e3ef - applied patches by Alex Beregszaszi
* function INT 15h AH=88h implemented
  * added stub for function INT 16h AX=6f02h
  * writes to debug/info/error/panic ports can be disabled now
2005-04-28 17:54:32 +00:00
Stanislav Shwartsman
e4768c94d3 added sanity checks from patch
[Bochs-developers] [PATCH] some sanity checks in bios
by Alex Beregszaszi [alex@fsn.hu]
2005-04-27 18:29:27 +00:00
Stanislav Shwartsman
19750b0324 Fixed highest_priority_int calculation function
Fixed I/O APIC ID for 8CPU configuration to match BIOS tables
Remove I/O APIC initialization when INIT IPI received
2005-04-27 18:09:27 +00:00
Volker Ruppert
b1dc8c910d - 4-cpu SMP table fixed (patch by jermar@itbs.cz) 2005-04-26 20:23:07 +00:00
Volker Ruppert
69d610c254 - APM support for 16 bit protected mode added (patch from Struan Bartlett) 2005-04-06 18:05:47 +00:00
Volker Ruppert
561e617362 - using fixed values for the diskette parameter table instead of int vector 0x1E
fixes floppy problems in Win9x guests
2005-02-13 08:48:23 +00:00
Volker Ruppert
8affb6d10b - fixed macros for debug output
- string memory now starts at 0xcc00 to have enough space for all debug messages
2005-02-05 23:10:52 +00:00
Volker Ruppert
5ec5e89575 - pcibios fixes by lukewarm (SF patch #1114826)
* pcibios: preserve esi and edi
 * pcibios: ignore high-word of edx when calling FIND_PCI_DEVICE
 * pcibios_real: set readable descriptor to ds when error (for 16bit PM)
 * bios_printf: replace immediate value 0xf000 with get_CS (for 16bit PM)
- Win98 cdrom boot fixed (patch by Magnus Damm)
2005-02-02 19:14:24 +00:00
Volker Ruppert
3f909bd46d - fixed real mode PCI BIOS error reporting 2005-01-31 18:36:54 +00:00
Volker Ruppert
0785fe48b2 - don't panic when an unsupported mouse packet size is requested 2005-01-27 18:05:09 +00:00
Volker Ruppert
5499cb0c34 - PS/2 mouse scaling functions implemented
- int15_function_mouse(): removed unused variables
2005-01-02 09:46:34 +00:00
Volker Ruppert
e0c5b9d7af - Win9x CD boot fixed (SF patch #1087537 by lukewarm) 2004-12-20 17:02:20 +00:00
Volker Ruppert
faafc6a93a - mouse type 'none' added (no mouse connected)
- added emulation of the PS/2 mouse port without a mouse connected (some OS's
  still detect a mouse)
- fixes for the mouse type 'serial_wheel' (the wheel still doesn't work in Win98)
2004-12-07 21:06:35 +00:00
Volker Ruppert
ebf9cb86ca - PS/2 mouse functions "set sample rate" and "get device id" implemented
- presence of the EBDA segment doesn't depend on the PS/2 mouse option
2004-12-05 16:41:46 +00:00
Volker Ruppert
a15de4430b - boot sequence with up to 3 boot devices inplemented. The sequence is stored
in the CMOS regs 0x3d and 0x38. TODO: change config option "boot" to use this
  feature.
2004-10-15 15:37:01 +00:00
Volker Ruppert
5d7cc42431 - extented floppy parameter table (floppy fix for NT4 from qemu written by Mike
Nordell and Derek Fawcus)
- int 13h diskette function 08h should return the pointer to the floppy parameter
  table stored in int 1Eh
2004-10-04 19:31:02 +00:00
Volker Ruppert
a6d14987cd - PCI IRQs must always be level sensitive (setup ELCR1/ELCR2 in pcibios init) 2004-10-02 12:29:54 +00:00
Volker Ruppert
0fd0fc7384 - pci irq initialisation added (TODO: initialize pci memory + i/o space) 2004-09-25 17:23:06 +00:00
Volker Ruppert
b3d0c18838 - int 15 / ah=87h should not clear cr0 when setting bit 0 (SF patch #969967
by Ben Lunt)
2004-09-13 17:54:53 +00:00
Volker Ruppert
9956e47f3e - modified the bios / vgabios panic handling. BX_PANIC messages sent by the bios
now appear correctly as the Bochs panic message. Now we can get rid of messages
  with the line number in the source file.
- updated / fixed description in biosdev.cc
2004-09-05 17:57:22 +00:00
Volker Ruppert
e5761d230c - calculate checksum of expansion rom (must be 0) 2004-09-03 19:52:24 +00:00
Volker Ruppert
b4fbbe3af1 - implement int15, ah=83 Start/Stop Wait Timer (patch.rombios.markevich from Kory Markevich)
- applied patch from sava (t.ebisawa / http://ebisa.hp.infoseek.co.jp/bochs/arcs/bochs-2.1.1-jpfix-20040214.zip)
  * int09_handler: pusha before int15, ah=4f
     (for "jis_a01" japanese keybord driver, which breaks some registers)
  * int15_function: add new functions int15_function32, int15_function_mouse
     (to avoid stack overflow ... DOS/Win9x works better)
  * int16, ah=00/01/10/11 ignore special key code (F0)
- set missing return value and flag for unimplemented EISA BIOS
2004-08-21 13:33:28 +00:00
Volker Ruppert
ca95fc885c - gate A20 control implemented (int 15h, ah = 24h)
- debug message for unsupported EISA bus features added (int 15h, ah = d8h)
- moving rom scan loop to a separate function saves space in the main post code
  (TODO: add code for rom checksum)
- interrupt vector 0x79 set to 0 (TODO: some other vectors seem to be 0, too)
2004-08-20 09:59:49 +00:00
Volker Ruppert
c6834907ad - pci irq routing fixed and initialization added (BUG: ne2k-pci only works with
irq 11 in Win95)
- bios: irq routing table fixed and updated for 5 slots
- ne2k: unnecessary reset call in init() removed
- usb: don't execute reset if disabled
2004-07-04 17:10:05 +00:00
Volker Ruppert
1f33aa72b8 - APM and system shutdown support for 16-bit real mode and 32-bit protected mode
(patch from Fabrice Bellard)
2004-06-20 18:28:40 +00:00
Volker Ruppert
c757b06db8 - int13_cdrom / 32 bit register update fix (aka FreeBSD cdrom boot) (patch from
Fabrice Bellard found in LGPL'd VGABIOS patches section)
2004-05-31 13:13:58 +00:00
Christophe Bothamy
b663c5112f - remove old commented code 2004-04-28 16:59:52 +00:00
Volker Ruppert
b66c8403f7 - turn floppy motor off 2 seconds after last read/write/recalibrate command
(patch from Ben Lunt)
2004-02-09 16:49:41 +00:00
Volker Ruppert
a0457f980e - int17_function updated for multiple parallel ports
- detection of serial port 3 + 4 added
2004-01-28 19:14:56 +00:00
Volker Ruppert
795cb05b42 - fixed int13_harddisk function 10h 2004-01-25 22:15:56 +00:00
Daniel Gimpelevich
6c26e6a65f Introduced Frank Cornelis's PCIDEV patch. 2004-01-15 02:08:37 +00:00
Christophe Bothamy
1c9de422d2 - apply patch #874517 Bugfix in int15h function 0xe820 by flashburn 2004-01-14 23:09:31 +00:00
Volker Ruppert
623ba8b00d - INT 16h function 05h implemented (grabbed from patch #707931) 2003-12-18 16:49:22 +00:00
Christophe Bothamy
89821fcd81 - remove hlt from BX_PANIC function, because the user can choose to
continue after a panic.
- add the hlt instruction in int18 handler. This should stop the
  simulation if the boot disk can not be read
2003-11-25 22:56:11 +00:00
Christophe Bothamy
e9efb9aed0 - stop execution with an 'hlt' if the bios can not read the boot disk 2003-11-25 22:46:20 +00:00
Christophe Bothamy
0276bfdef7 - add fix to get v2os to boot : preserve eax top 16bits on int1A function B101 call 2003-11-15 00:00:37 +00:00
Volker Ruppert
568cd93523 - detect_serial: detection simplified using IER and IIR
- detect_parport: save base address and timeout using push/pop
2003-11-02 12:40:51 +00:00
Volker Ruppert
5be03ffb09 - int 0x16 function 0x0A implemented (GET KEYBOARD ID)
- int 0x16 functions 0x10/0x11 fixed (don't change the ascii code to 0xE0)
2003-10-16 19:31:33 +00:00
Daniel Gimpelevich
296dbe928a Fix ATA/Serial ioport conflict 2003-10-07 00:21:10 +00:00
Christophe Bothamy
109805f5b8 - remove the comment about 8x8 font.
Volker confirmed that the whole 8x8 font should be present in the vgabios.
2003-08-17 21:48:15 +00:00
Christophe Bothamy
f75ef317e5 - add 128 first 8x8 chars at 0xfa6e (fixes bug #787138 No ROM BIOS character map) 2003-08-16 20:11:28 +00:00
Christophe Bothamy
8fba74e1d1 - fix sf bug #764473 Freesco Linux crashes on boot
Syslinux 1.48 that is used to boot freesco, did not like the latest
  int15 function e801 returning AX=0 and BX=0, although my real
  system does, and Ralph Brown list allow it.

  Interestingly enough, the symptoms were floppy accesses with a track
  number > 100. Funny.

  Now int15 function e801 returns both extended and configured memory.
2003-08-07 00:02:24 +00:00
Christophe Bothamy
d112043348 - fix int15 function e801 (get memory size) 2003-04-25 22:13:24 +00:00
Christophe Bothamy
479fbe2a25 - apply patch "[ 682539 ] Fix CapsLock and NumLock behavior" from rock at gimp.org 2003-03-08 22:59:17 +00:00
Christophe Bothamy
579f3c0539 - apply Ben Lunt's 160k, 180k, 320k floppy patch 2003-02-06 23:16:56 +00:00
Christophe Bothamy
5e509b80c9 - add int15 function 86 support 2003-01-18 19:20:52 +00:00
Christophe Bothamy
152900c758 - move the extended key check in int09, now int15/4f is empty.
I did not see any bug, but maybe some code hooking int15/4f could be
  disoriented when receiving extented E0 scancode.
2003-01-14 18:03:31 +00:00
Christophe Bothamy
e42eee68e5 - add support for ElTorito Harddisk emulation. Darwin iso boots now.
The Harddisk emulation still needs some polish though.
2003-01-14 17:59:52 +00:00
Christophe Bothamy
04809a2258 - fix NetBSD not booting from cdrom. AH was not set to 0 after a
successful read through int13/AH=2 when emulation floppy from cdrom.
2003-01-13 12:51:17 +00:00
Christophe Bothamy
fd02f4ac05 - create two new asm functions to send eoi to the master pic and to both pics
- add int75_handler, for msdos compatbility fpu exception
  This handler calls int 2 (nmi). The NMI handler should really be aware
  of this and should iret in case of FPU exception (to be implemented)
2003-01-06 02:02:46 +00:00
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