- 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)
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)
- 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
- 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
* 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
- 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
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)
- 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
- 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 ])
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.
Cliff added to bios_printf the ability to print onto the console. Bryce made
some further changes. Now when a panic occurs, the message is reported both
to the Bochs log file and to the screen, and then it goes into an infinite
busy loop. Why an inf loop? If I do a HLT in BIOS code, current bochs
versions will panic immediately and the user will never see the real panic
message. I have mostly tested the new panic behavior by booting nonbootable
and nonreadable disks.