* 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 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.
- 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.
- 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
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.
a read-only disk image. For systems such as DOS that actually use the
BIOS services, it was also necessary to add code in int13_diskette_function
to recognize a write-protected error and return the correct error
status code (AH=3, Carry Set).
[ #430472 ] DOS HIMEM "A20 line" error
All I've done is moved the call to print_bios_banner later in the
boot process, and the A20 problem goes away. I wanted it early so
that it would get printed before any panic or halt could happen.
Oh well.