My latest x86EMU build:
- Increased PC speaker sound response (at the cost of playback rendering) to allow the CPU to effectively change output as fast as it can change the timer.
- BIOS version number has been increased to fix older BIOS settings from effectively giving wrong input (changes in readonly settings becoming more compact in the saved file and memory).
- Fixed stuck emulator callbacks (these could have executed until overwritten).
- Implemented basic BIOS defaults for execution mode(Use BIOS instead of normal execution, since normal execution still has bugs), Aspect ratio, Direct plot(device dependent), B/W monitor, Sound source volume and framerate.
- Fixed emulator INT16/12.
- Fixed boot screen for emulator BIOS.
- Improved CPU prefetching to become more accurate.
- Added an CPU option to select 8-bit data bus (effectively 4-byte prefetch instead of 6-byte prefetch for 8086/8088 and 80186/80188 processor support) instead of 16/32-bit bus.
- Implemented LOCK prefix into the debugger.
- Fixed CPU REP prefixes to work with the new PIQ (and without prefetching at all).
- Improved emulator video interrupt. It's now good enough to be used instead of a VGA BIOS ROM.
- Various optimizations.
- Changed VGA ROM to use VGAROM.BIN and other option ROMs to start at OPTROM.1. If the VGAROM.BIN isn't found, the internal BIOS (based on the Dosbox interrupt 10h handler) is used instead. The OPTROM.1 is now the first BIOS to load AFTER the VGA BIOS (e.g. at C800:0000 using the emulator VGA BIOS). This makes the emulator able to be used without VGA BIOS ROM (which is copyrighted) and usable with only a BIOS ROM (Generic Turbo XT BIOS v2.5) and hard disk ROM (XTIDE Universal BIOS). Thus it's now able to run without illegal BIOS ROMs (for people without a BIOS dumped by themselves).
- Fixed various internal video BIOS errors.
- Fixed disk busy indicators (green text when reading, orange when writing, invisible when doing nothing) when there's no framerate display enabled.
- Fixed VGA crashing when rendering past the available display buffer (800x600 pixels).
- Implemented correct behaviour when the CPU is executing a MOV CS,reg instruction (invalid opcode on 80186+/80188 processors, valid instruction on 8086/8088).
- Added requested interrupt information (little endian) to the debugger bottom row. This makes it easier to view pending hardware requests during debugging.
- Fixed PIT0 still executing while the CPU is paused during debugging.
The current emulator VGA BIOS seems to work in most cases (just as the Dosbox BIOS). The only case I haven't gotten it working yet (of known cases) is when running Windows 3.0 with it's "VGA with Monochrome display" video setting. This currently causes blocky graphics using the emulator VGA BIOS (gives correct output with an actual IBM VGA BIOS).
Also, with the emulator VGA BIOS, the text from after the VGA detection until it starts the harddisk BIOS or tries to boot (it's writing to video page 4 instead of 0(register BH)) gets written to the wrong page. The BIOS still runs and eventually boots, but that part isn't visible (cause is still unknown).