This PR greatly improves the usefulness of EMU86, as it can now boot standard ELKS disk images, as well as ROM images.
Completes issue #18 and partially #11.
Adds -I option to specify disk images to be treated as BIOS disk drives on EMU86.
Will boot first -I option, and additional -I options are treated as additional floppy or hard drive devices.
Drive CHS automatically calculated based on image size.
Boots Minix and FAT floppy images, as well as Minix and FAT flat and MBR hard drive images.
Example:
will boot from 1.44M floppy and add additional hard drive as second disk. Up to 4 total floppy or hard drives supported.
Emulator fixes:
Adds RET \<imm16> opcode support
Fixes MUL and IMUL buggy opcodes
Fixes JCXZ display
Fixes INT3 display
BIOS emulation enhancements:
Adds INT 19h BIOS boot
Adds INT 13h disk services read/write/get_params functions 02h, 03h, 08h
Checks for and prohibits multi-track reads
Adds INT 10h function 12h get EGA
Adds INT 10h function 1Ah get VGA
Adds -v option for setting verbose output info level
Displays disk read/writes on verbose & 1
Displays [INT %xh AX %04X] trace on verbose & 2
Requires changes from https://github.com/jbruchon/elks/pull/880 in order to work, which include BIOS or Headless Console, HLT on idle, CONFIG_IDE_PROBE disabled, and removal of INT 13h function 15h (unused read DASD for Bootlin).
I'm still not completely happy with the trace HW and SW interrupts (#11), as INT 8 timer and BIOS kbd polling pretty much scroll continuously, but the current option helps debugging.
Tested on both targets, requires ELKS target. Almost all commands run, reboot and vi still failing for reasons yet unknown.
This PR greatly improves the usefulness of EMU86, as it can now boot standard ELKS disk images, as well as ROM images. Completes issue #18 and partially #11.
Adds -I option to specify disk images to be treated as BIOS disk drives on EMU86. Will boot first -I option, and additional -I options are treated as additional floppy or hard drive devices. Drive CHS automatically calculated based on image size. Boots Minix and FAT floppy images, as well as Minix and FAT flat and MBR hard drive images. Example:
will boot from 1.44M floppy and add additional hard drive as second disk. Up to 4 total floppy or hard drives supported.
Emulator fixes: Adds RET \<imm16> opcode support Fixes MUL and IMUL buggy opcodes Fixes JCXZ display Fixes INT3 display
BIOS emulation enhancements: Adds INT 19h BIOS boot Adds INT 13h disk services read/write/get_params functions 02h, 03h, 08h Checks for and prohibits multi-track reads Adds INT 10h function 12h get EGA Adds INT 10h function 1Ah get VGA Adds -v option for setting verbose output info level
Displays disk read/writes on verbose & 1
Displays [INT %xh AX %04X] trace on verbose & 2
Requires changes from https://github.com/jbruchon/elks/pull/880 in order to work, which include BIOS or Headless Console, HLT on idle, CONFIG_IDE_PROBE disabled, and removal of INT 13h function 15h (unused read DASD for Bootlin).
I'm still not completely happy with the trace HW and SW interrupts (#11), as INT 8 timer and BIOS kbd polling pretty much scroll continuously, but the current option helps debugging.
Tested on both targets, requires ELKS target. Almost all commands run, reboot and vi still failing for reasons yet unknown.