Skip to content

Releases: oculometric/novos

v0.04 Interrupts and Basic Keyboard Chitchat

07 May 00:05
Compare
Choose a tag to compare

this update contains:

  • numerous fixes to small things, including fixing allocation and array bugs
  • implementation of interrupts, IDT, and configurable ISRs from C++
  • PIC configuration and remapping
  • simple (incomplete) keyboard IO, driven by interrupts
  • GUI text rendering, text in panel names and a dedicated text panel
  • increased the stack size from 0x200 to 0x800 bytes, due to stack overflows causing problems during interrupts
  • bitmap image encoding/packing into the kernel binary

i also updated the naming scheme in the code to reflect a more modern-feeling style.

the star of the show is the fact that for the first time, with the help of interrupts, keyboard input is now supported! yaaaay! give it a try with qemu.

v0.03 3D wireframe rendering, streams, and strings

14 Mar 18:37
Compare
Choose a tag to compare

this update contains:

  • several demo UI panels, including a star renderer, and memory manager visualiser
  • 3D wireframe rendering of arbitrary 3D models
  • loading of 3D models from .binmesh files, and pre-compilation conversion into binmesh format from obj
  • 4D vector maths, and 2/3/4D matrix maths
  • internal mesh format
  • nov_strings, dynamic string functionality, built on nov_array
  • much larger upper limit for things loaded from disk by the bootloader
  • nov_streams, making it easy to pass data onto other objects with the C++-style target << data format
  • serial output now uses streams so you can easily do com_1 << "Hello" << stream::endl
  • stream support for conversion to char*s for text output: uintX_t (as hex, dec, bin), intX_t, float, nov_vector2, nov_vector3, nov_vector4, nov_matrix2_2, nov_matrix3_3, nov_matrix4_4, and any more that i feel like implementing a << operator for
  • improved project structure
  • assembly implementation of sinf, cosf, tanf, sqrt, etc.
  • lots and lots of small bugfixes, including with memory management nov_array, nov_gui_manager

if you have qemu-system-x86_64 or qemu-system-i386 installed, i highly recommend giving this one a try! 3D and 2D graphics demo. i have again, yet to start properly documenting stuff beyond reasonably comprehensive commenting.

v0.02 GUI/layout demo

15 Feb 03:32
4e8ad6b
Compare
Choose a tag to compare
v0.02 GUI/layout demo Pre-release
Pre-release

this release contains, among other things:

  • memory management, malloc() and free()
  • dynamic arrays with nov_array<>, similar to std::vector<>
  • some graphics utils, box drawing etc
  • a shiny GUI system of containers and panels for graphical layouting. a demo of this runs when you launch the binary with qemu
  • random number generation using xoroshiro128+ (was this in the last release? i don't know)

i'll start fully documenting (diagrams and all) this stuff soon.

https://github.com/oculometric/novos/assets/32058792/0d4dee0c-b82b-4709-a05a-0933e0d81dd9
https://github.com/oculometric/novos/assets/32058792/a6f2bfb6-7fda-421d-9dc8-112b775ba4bf

v0.01

30 Jan 08:40
Compare
Choose a tag to compare
v0.01 Pre-release
Pre-release

This is a demo/preview release. At this stage, we boot, jump into 32-bit protected mode, learn about memory, set the video mode and draw some pretty colours.