Sync, but easier to develop.
Go to file
2020-12-02 02:37:17 +00:00
.github/ISSUE_TEMPLATE Fix formatting in templates 2020-11-29 21:24:00 +00:00
chroma Separate out ELF header parsing to another file 2020-12-02 02:37:17 +00:00
global Adjust the crt0 file to insert a null stack frame before calling the kernel. Provides a solid base for the stack unwinding. 2020-11-09 18:44:42 +00:00
img Adjust structure of the image folder 2020-11-28 16:52:34 +00:00
.gitignore Remove large image file, add extra stuff to the gitignore 2020-09-29 01:58:29 +01:00
chroma.bxrc Add BXRC file for Bochs support. 2020-08-31 21:47:12 +01:00
chroma.json Adjust structure of the image folder 2020-11-28 16:52:34 +00:00
CMakeLists.txt Separate out ELF header parsing to another file 2020-12-02 02:37:17 +00:00
font.psf Attempts at fixing paging. 2020-04-11 22:59:39 +01:00
LICENSE Create LICENSE 2020-11-29 21:12:49 +00:00
linker.ld Add a memstart symbol to the linkerscript 2020-11-09 18:48:47 +00:00
mkbootimg Move from CD-ROM images to Hard Disk images. 2020-08-19 22:57:06 +01:00
mkbootimg.exe Add Windows version of mkbootimg for platform agnosticity 2020-08-19 23:39:30 +01:00
post.sh Fix typo in post-build script 2020-09-29 02:03:48 +01:00
pre.sh Fix building on Windows by dpeter99 2020-10-18 18:27:07 +02:00
README.md We have virtual memory management! 2020-09-07 20:56:49 +01:00
run.bat Move toolchain to VirtualBox. qemu is too restrictive :/ 2020-09-29 01:36:05 +01:00

Chroma Logo

Chroma

The Chromatic OS

About

Chroma is an x86_64 kernel, soon to be Operating System.
It uses the bootboot bootloader.

Features

It can currently:

  • read keyboard input
  • draw to the screen, including text and basic images.
  • output audio over the PC Speaker
  • manage physical memory
  • manage virtual memory
  • switch to ring 3
  • switch tasks
  • schedule tasks
  • handle processes and threads
  • handle mouse input
  • display a basic 3D object
  • display a basic 3D world
  • display a basic 3D world in VR

Once we reach this point... well, the world is our oyster.

Building

Chroma can be built on Windows or Linux.

Windows

I (Curle) use Windows for developing Chroma.
Simply have an x86_64-elf-gcc and ld (included!) in your PATH, run cmake in the source directory, then make. It will compile the kernel, and create an OS image with mkbootimg.

Linux

The system for linux is a lot easier, but you do need an x86_64-elf-gcc cross compiler. You can get one from the AUR on Arch-based distros (like Manjaro), or make one yourself using the OSDev Wiki guide
Simply run the init.sh to generate a makefile, then make to create the image file.

The generated IMG works in QEMU, or on a physical test device (unlike a lot of other hobby OSes!) This means you can use any emulator or hypervisor to run it.