Skelix is written in C with very specific small pieces written in assembly, and complied with GCC under Linux.

gcc and linux version


Source code and floppy disk images are provided in each tutorial, you can use those files directly. For those people who want to build from source, please make sure you have correct compliers and correct compiler options.

Source code may not be able to be built by compilers other than GCC, because unsigned long long (C99) and some GCC extended features like __asm__, __attribute__, __extention__ and GCC inline assembly are used in source code. Therefore, other compliers might not work or you have to find substitutions of those keywords and modify the source code by yourself. The compiler must be 32-bit, because I made some assumptions about bit-length to make the code simpler and clearer, 16-bit compilers like TC will never work.

For windows users you may need Cygwin which provides a posix environment for Windows, but I cannot guarantee that Cygwin will give you the correct result. Or there is an alternative way, install a virtual machine on you Windows, and have a Linux distro installed on it, then you can compile all source code on that virtual machine (you will need a virtual machine anyway).


To follow this tutorial step by step, a PC emulation software is needed unless you are crazy enough to mess up your own system. Vmware workstation is used in this tutorial, you can use any other applications that are available to you.

vmware version

Things Are Good To Know

Some knowledge about Makefile will be good. If you are familiar with memory addressing, interrupts, exceptions, GDT, IDT, LDT, paging, accessing ports etc will be great helpful, maybe you can help me out of some sh*t actually. Three volumes Intel Architecture Software Developer's Manual and Intel 80386 Programmer's Reference Manual should be on your hand, you can download them at Intel website or look for their HTML version on Internet.

Anyway, I will try my best to explain those scary stuff through this tutorial, but some knowledge about C languages is essential and I presume you know how to use assembly in 16-bit real mode. you should be familiar with stack changes during a far call or interrupt return etc.

There are tons of books about C, but books about assembly programming under protected mode is sort of like Halley Comet, only can be seen every 76 years...

It will be better if you have some feeling about *nix-like system, like what is inode, super block etc, it will be helpful, but not essential.

Feel free to use my code. Please contact me if you have any questions.