Fashionable, but unable to tell fact from fiction (testing4l) wrote in ultimateos,
Fashionable, but unable to tell fact from fiction

Ultimate 0.0.1!

In 240 bytes, it resolves where in memory it's been loaded, queries the BIOS for the memory map, determines free addresses, and (soon) will construct a bitmap and use int 13 to load the remainder of the floppy into the earliest possible segment.

This uses the int 15, E820 extension of fairly modern bioses which requires a 32-bit processor and a BIOS that supports that function. It works on an old Pentium-120 I have and bochs, so any x86 later than 1995 might be able to boot this.

A minor tweak in the code using a different interrupt and the elimination of a couple of 32-bit instructions will make this code usable on any x86 with a BIOS.

So, without further ado, I give you Ultimate 0.0.1 with source and a usable floppy image (which is really just nasm output assembled to a 1.44mb image of zeros).

Here's my roadmap:

1) write a more generic bootloader using int 10h, AH=C7h
2) finish C code to take information from bootloader and generate a memory map
3) use int 13h to load the driver interface code I've written, load subsequent sectors into memory, and jump to the beginning of the loaded code.
  • Post a new comment


    default userpic