* 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)
* 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()
* 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
- 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)
- 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
* support for XDF images added
* floppy controller should hang if media not present
* rombios has to reset the floppy controller after read/write failure
* 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
* 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
* 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)
- 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)
- 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)
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
- 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
- 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)
- 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)
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.
- 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)
is important because many people don't have the tools to rebuild them.
They will only be removed if you type "make bios-clean", which people
are unlikely to do by accident.
- since rombios.c also supports 8 processors, go ahead and build an 8 cpu
bios as well.
Modified Files:
BIOS-bochs-2-processors BIOS-bochs-4-processors
BIOS-bochs-latest
Added Files:
BIOS-bochs-8-processors
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
- 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
- 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
"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
- 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
instead of winmm being a part of GUI_LINK_OPTS_WIN32 only, it is
placed in @DEVICE_LINE_OPTS@ so that it will be used for sdl, rfb, wx,
etc.
- solve compile problems when building bximage, niclist, and any other
console based program. The compile flags returned by wx-config and
sdl-config did strange things to these console programs, for example
redefining main to SDL_main. Because I wanted to use the
configure-generated CFLAGS to compile the programs, but I wanted to
avoid including GUI specific compile options, I split up the configure's
@CFLAGS@ variable into @CFLAGS@ and @GUI_CFLAGS@, and split
@CXXFLAGS@ into @CXXFLAGS@ and @GUI_CXXFLAGS@. All programs in the
Bochs binary will use both, but the console programs will just use
@CFLAGS@ or @CXXFLAGS@.
- gui/Makefile.in, I no longer use the gui specific CFLAGS variables,
SDL_CFLAGS and WX_CXXFLAGS. These values are included in CFLAGS and
CXXFLAGS now.
- modified: configure.in, configure, all Makefile.in's
- 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