- Assembly 55.7%
- C 42.3%
- Makefile 1.9%
| barebios | barebios :: Insert delay and wait - so no race ... | |
| mb2/p64starter | Starting point for mb2/p64starter | |
| realmode/realc64 | Documentation: ks_smifs usage, all formatting. Delete some comments. | |
| utl | smifs: add option -c for easy image check | |
| LICENSE | Initial commit | |
| README.md | barebios :: Insert delay and wait - so no race ... | |
kstarter
Some OsDev tool set with main goal - load OS files to memory and map them to needed addresses, using amd64 (x86_64), but also different 64-bit CPU boards in future . Mostly multiboot2 "kernel" set and image making scripts.
utl
Some programs for OS development:
- ks_smifs : makes floppy image for using as memory image for OS experiments and also as boot floppy image for QEMU;
realmode
Boot sectors and realmode OS loaders:
- realc64 : boot sector and OS loader written in C / NASM combination; enters long mode directly;
barembios - Pure64 bios variant with some changes.
In this folder Bare Metal Pure64 loader used. Floppy disk variant is used, cause bios disk variant not supported by QEMU (qemu-x86_64 version 7.2.22 (Debian 1:7.2+dfsg-7+deb12u18+b2)).
Changes in bios boot sector:
- some optimizations for code size made to do more
- second stage loader fixed size 16 sectors (3 - 18) and with no kernel (really some bytes less, but this is not matter)
- kernel have fixed size 18 sectors = 9 Kb in next 18 sectors (can be less but not assume zeroed .data)
- floppy is loaded to 0x00200000 using bios extended functions 1
Changes in second stage loader:
- fixed size kernel from fixed address
- hook to get additional cores to kernel
Also Pure64 documentation is consolidated to one file, and used only needed boot sector code.
mb2 - loaders using Grub2
p64starter - 64-bit OS loader using Pure64
Loading chain: Grub2 -> kstarter.sys -> pure64.sys -> kernel.bin
kernel.bin - the same demonstration kernel from barebios
pure64.sys - the same second stage loader from barebios
Now pure64.sys and kernel.bin are build using helper.sh: use barebios make copies files and make clean.
This sub - project key is kstarter.sys :
- using multyboot specification asks Grub2 for frame buffer and memory map;
- place p64.img loaded as module to address 0x00200000 1
- using Grub2 memory map, makes Pure64 compilant memory map 1
- use replaced p64.img to copy pure64.sys and kernel.bin to fixed addresses (same as in barebios ) 1
- jumps to pure64.sys (and after this will be replaced - kernel.bin will be place to the same place) 1
kstarter.sys sources are in folder pks.
-
Planned. ↩︎