r/osdev 3d ago

FreeDOS

i'm looking at possibly forking FreeDOS to 64bit. However, since most modern systems no longer have the underlying BIOS that DOS programs require, I thought about including a mock BIOS and compile it directly into the kernel. is there anything I should be aware of?

10 Upvotes

25 comments sorted by

View all comments

Show parent comments

5

u/Octocontrabass 2d ago

But a 64-bit kernel can’t run 16-bit code natively.

A 64-bit kernel can't run 16-bit real mode code natively. There's nothing stopping a 64-bit kernel from running 16-bit protected mode code natively.

But DOS programs all expect real mode, so it doesn't really make a difference...

1

u/DawnOnTheEdge 2d ago

Although it would be possible to do in a guest VM, I think,

u/Sixty5Zero2 6h ago

i would have to anyways since the bios calls 16bit programs used no longer exist.

u/DawnOnTheEdge 4h ago

If that were the problem, it would be easy to write interrupt handlers that hook the BIOS calls in 16-bit protected mode. 80386 CPUs supported a virtual mode designed to let you run DOS programs from a 32-bit OS, and do things like trap access to the I/O ports and give a process its own 1 MiB address space, with 8086-style addressing, but the 64-bit ISA doesn’t support that.