Sync, but easier to develop.
Go to file
Curle b3e3f153b5
Add support for C++
This was a doozy. I had to recompile gcc with a custom target to get it to output the CRT{BEGIN/END}.o files with proper 64 bit relocations.

The CMakeLists.txt file was also edited to allow these files to be linked (thereby actually adding the support) as well as to automatically create the boot image upon build.
2020-11-26 04:03:40 +00:00
chroma Add support for C++ 2020-11-26 04:03:40 +00:00
global Add support for C++ 2020-11-26 04:03:40 +00:00
img/boot Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
iso/boot fix compilier warnings 2020-11-26 04:03:29 +00:00
.gitignore Add Windows version of mkbootimg for platform agnosticity 2020-11-26 04:03:38 +00:00
boot_hybrid.img Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
buildImage.ps1 Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
chroma.img Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
chroma.json Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
CMakeLists.txt Add support for C++ 2020-11-26 04:03:40 +00:00
font.psf Attempts at fixing paging. 2020-04-11 23:02:54 +01:00
init.sh Add shebang lines to scripts 2020-11-26 04:03:29 +00:00
linker.ld Add support for C++ 2020-11-26 04:03:40 +00:00
makeiso.sh Add shebang lines to scripts 2020-11-26 04:03:29 +00:00
mkbootimg Move from CD-ROM images to Hard Disk images. 2020-11-26 04:03:38 +00:00
mkbootimg.exe Add Windows version of mkbootimg for platform agnosticity 2020-11-26 04:03:38 +00:00
README.md Create README.md 2020-11-26 04:03:29 +00:00
setup.bat Added Windows build script 2020-11-26 04:03:28 +00: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, and run setup.bat.
You will need to use WSL to generate the iso; copy the created kernel.elf file to iso/boot/ as initrd, and run grub-mkrescue -o chroma.iso iso/.
A new system is in the works for creating this ISO natively on Windows.

The generated ISO works in QEMU, or on a physical test device (unlike a lot of other hobby OSes!)

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 kernel.elf file.
Same thing applies as Windows now - copy the kernel.elf file to iso/boot/ as initrd and run grub-mkrescue -o chroma.iso iso/.