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

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.
Subscribe
  • Post a new comment

    Error

    default userpic
  • 6 comments
Doesn't seem to be working for me, but it might be a weirdness with Parallels. Unfortunately, I don't have any x86 boxen with FDs.
you scare me mate. remember me when you're huge.
You are a rocker. You rock out!
hmm..
I'll boot it as soon as I get home. Any plan to port it to x86_64? I mean it'll work, sure, in 32-bit mode, but how about some native 64-bit processing? Something to take advantage of the large memory mapping stuff or whatever it is?

Also, any reason this shouldn't boot from a cd? especially since that El Torito thing allows burning a floppy image as the boot sector...
No particular reason it couldn't be booted by El Torito. As long as there's a way to get those bytes into memory, it'll do its thing. It's completely position independent code.

No particular plan to port it to 64 bit at the moment. I'm more interested in supporting smaller systems which can't run that code than bigger systems which can run it.
Oh poo... :p

okay.

wonder if I could make the tablet thing boot it!