Skip to content
operating system practice
C Assembly C++ Makefile Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Momo OS

A mini x86 kernel for fun.


PIT Frequency too high in Bochs Problem.

No memory management or well linking ? just place keyboard mapping in a fixed memory block which defined at keyboard.h.

Floppy reading just let cylinder 0 - 79 like a flat mode, no need to set cylinder and just let it be 0. Sector value will calculate automatically.

If using STARTUP in linker script then startup object file should not occur in argument list, otherwise redefinition error will occur.

#### Booting

  • MBR.bin loaded at 0x7C00, it just load loader.bin and kernel.bin into memory by using int 13h
  • Loader.bin loaded at 0x1000, loader collects computer infomation and stroe into somewhere, then switch to 32 bit protected mode.
  • Kernel.bin loaded at 0x2000, kennel will initialize the IDT and IRQ to handle requests. Then it should perpare the API of mm, fs, io, tasks ..

Hide Booting detail using GRUB2

Paging careless bug

mov cr0, eax

or eax, Paging bit

mov cr0, eax

first line should be

mov eax, cr0

You can’t perform that action at this time.