Note
DXB supports the 8088 processor in theory, but has not been tested. Use at your own discretion.
DXB is a tiny bootable program to dump (protected mode) BIOS ROM onto either
- The VGA text mode (with similar formatting to the
hexdump
UNIX utility) - A storage medium, i.e. a hard drive or a floppy disk.
It should be noted that, despite various sources,
the BIOS ROM is NOT located at 0xF000:0xFFF0
, this is what is being
run, not the actual compiled ROM. Instead, it's located just under the
1 GB line.
You can use INT 0x15/AH=0x87
to swap into 32-bit mode, read the byte
data and then return back. There is a program written for DOS that does this.
Instead DXB just boots into 32-bit mode to simplify everything:
- Reading BIOS ROM is as simple as
*(uint8_t*)(bios_rom_loc + off)
. - More leeway (memory, and register size)
- Easily write drivers
- Don't rely on the BIOS for everything (not standardized, and some things may not work on some BIOSes while others will work on others)
I don't have an EEPROM programmer/reader and I'm curious on the implementation of various BIOS ROMs that are, for obvious reasons, are proprietary. So, DXB was born -- it dumps BIOS ROM.
If you are in the same boat, DXB is for you.
If you want the most stable version, then use the .iso/.img in the releases tab. Some features may be present in the most recent git commit but not in the release. However, the most git commit may also be broken. Make sure you know what you're doing before you run bleeding edge!
Dependencies are:
i386-elf-*
(GCC crosscompiler). This is likely in your package manager.nasm
(assembler).
Then you just run make
. Output is dxb.iso
.
On NixOS, you (unfortunately), you can't install the cross-compiler system-wide, and specifically 'i386-elf' isn't avaialable either. Sure, you could compile from source, but you'd also have to compile MPFR, GMP, and those dependencies aswell. If you would like to compile DXB on NixOS, run
nix-shell nix-compiler.nix
It will install i686-elf-*
and put you in a shell with it. You will also need to compile with
make CC=i686-elf-gcc
TODO
Disk Type | Version Implemented | Planned? |
---|---|---|
ATA/IDE | pre-v0.1 | Yes |
SATA | unimplemented | Yes |
NVMe | unimplemented | No |
Floppy | unimplemented | Yes |
ATAPI | unimplemented | No |
USB | unimplemented | No |
- Successfully dump SeaBIOS ROM (QEMU) as a test.
- Implement user interface for either dumping to hard disk or dumping to VGA output
- Implement more hard-drive / storage drivers
- Floppy
- SATA
- Remove GRUB as bootloader, write custom one
- Test on more CPUs
Open a pull request! If you find a bug or issue, open an issue.