• 0.0.9 f800334e2a

    0.0.9 Pre-release

    kooper released this 2026-10-04 19:50:42 +00:00 | 0 commits to main since this release

    This is the fourth public release of SystemK!

    This is also the last public release of SystemK to come with VGA builds. I have made the decision to deprecate it

    • in order to focus on just one build only rather than two
    • because I do not see any major benefit or use-case of VGA builds over framebuffer builds

    If Bochs can run SystemK with a Pentium I and every other setting default (and your system isn't older than Windows 98), you should be just fine.


    Changelog:

    • SystemK can now be booted from hard drives, SSDs, and USB flash drives:
      • You can now build raw bootable FAT32 disk images (make disk) to flash directly to a drive with dd
    • Implemented full read and write support for FAT32 filesystems:
      • Supports long file names (VFAT LFN), nested subdirectories, file creation, editing, and deletion
      • Introduced mount and umount commands for mounting storage devices and partitions
    • Added hard drive and SSD support (IDE/ATA and SATA AHCI):
      • Automatically detects and reads both MBR and GPT partition tables
    • Added USB Mass Storage support (UHCI, OHCI, and EHCI):
      • USB flash drives can now be plugged in, mounted, and safely unplugged/replugged at runtime
    • Introduced the disks command: view connected drives, partitions, sizes, and mount points (similar to lsblk)
    • Implemented preemptive multitasking and process management:
      • Introduced ps to view running processes and kill to terminate them
      • Initial support for loading and executing 32-bit ELF binaries
    • Introduced job control and background execution:
      • Commands can now be suspended in the background with Ctrl+Z
      • Added jobs to list active jobs, and fg / bg to resume them in the foreground or background
      • Shell commands can be launched directly in the background by appending &
    • Introduced a dynamic driver system and the modules command to inspect, load, and unload drivers at runtime
    • Introduced the dd command for raw block and file copying (supporting bs, count, skip, seek, and conversions)
    • Introduced the stat command for checking file size and attributes
    • All shell file commands (ls, cat, md, rm, cp, mv, etc.) and output redirection (>, >>) now work across any mounted drive
    • Overhauled the text editor (edit):
      • Can now open and save files on mounted FAT32 filesystems
      • Removed the fixed buffer size limit in favor of dynamic memory allocation
      • Added native Tab key support with 8-column visual indentation and syntax highlighting
      • Supports Ctrl+Z to suspend the editor to the shell
    • acpi pci device dumps now show human-readable vendor, device, and class names via an integrated PCI database
    • Framebuffer builds now display a graphical splash screen during boot

    Due to a considerable increase in how many times I would have to build the system, the only resolutions available here are 1024x768 and 1280x720 (widescreen).

    Note

    This Forgejo instance has (as of this release) not been updated to allow for more than 5 file uploads. As a result, the artefacts have been compressed into archives:

    • systemk-staging-fb.tar is for Fullscreen (4:3, 1024x768) framebuffer images
    • systemk-staging-fb-720p.tar is for Widescreen (16:9, 1280x720) framebuffer images
    • systemk-staging-vga.tar is for VGA-only images
    Downloads
  • 0.0.8 be03a33cb0

    0.0.8 Pre-release

    kooper released this 2026-09-03 15:55:51 +00:00 | 2 commits to main since this release

    This is the third public release of SystemK!

    Note

    This Forgejo instance has (as of this release) not been updated to allow for more than 5 file uploads. As a result, the framebuffer ISOs have been compressed into archives:

    • systemk-fb-fullscreen.tar is for Fullscreen (4:3)
    • systemk-fb-widescreen.tar is for Widescreen (16:9)

    Despite my best efforts, I have been unable to get SystemK to run on 4MB of RAM anymore.

    From my analysis, the GRUB2 bootloader seems to be at fault. I may or may not ditch GRUB for a lighter alternative in the future.

    Changelog:

    • Implement ACPI support for power management and device enumeration
      • S3-S5 sleep states are now supported on real hardware
        • This means poweroff now works on real hardware too
      • Implemented an acpi command for dumping ACPI tables and inventory
      • A lot more however I forgot to document as I was working on it
    • Initial support for screen resolutions outside of 1024x768x32
      • At the moment, SystemK has to be manually built with the specific resolution, this will be changed in the future.
      • SystemK supports any resolution that is a multiple of 8x16 that is at least 640x480
        • Resolutions provided (that are not multiples of 8x16) will be rounded down to the nearest multiple of 8x16 and a border will be drawn around the screen to fill the remaining space.
      • SystemK supports 256-color, High Color (15-bit/"16-bit"), and True Color (24-bit/"32-bit") modes
    • RAM usage has slightly increased (compared to the previous release) however this is normal
    • Removed the following commands: draw tree, draw reset, draw blank.
    • Introduced the command less: navigate through the contents of files and buffers
      • Navigate with up/down arrow keys, page up/down, (q)uit, (f)ind, (h)elp
    • Introduced the command sleep: halt the shell for a number of milliseconds
    • reboot and poweroff now wait for a second first before executing
    • Serial output now actually prints debugging information on boot
      • This helps with troubleshooting why SystemK is not booting on certain hardware
      • Verbose debugging output after boot may be introduced later
    • SystemK can now be built in debug mode (make DEBUG=1 ...) which prints debugging information to the screen.
    • SystemK in general now prints messages while booting, instead of just a blank screen.
      • As you can guess, debug builds are much more verbose.
    • Fixed an issue where text scrolling was very slow on real hardware, but not in QEMU.
    • Fixed a graphical issue where the draw layer was only visible in the top-left quadrant (512x384) of the screen, and not the entire screen (real hardware bug)
    Downloads
  • 0.0.7 981a854591

    0.0.7 Pre-release

    kooper released this 2026-08-31 22:58:22 +00:00 | 5 commits to main since this release

    This is the second public release of SystemK!

    RAM usage has been dropped to around 1900-2000KB on boot which should mean that SystemK on 4096KB of RAM is now viable again.

    HOWEVER, this will probably rise again as I implement more and more stuff, so don't get your hopes up.

    Warning

    The draw command appears to be very rarely unstable and cause weird color palette issues with the shell. Currently not sure of the cause and/or a fix.

    It seems to be stable 99.9% of the time though so I'm not sure what to do.

    Full changelog (turns out I missed some stuff I forgot to mention in the actual 0.0.7 commit):

    • The current keyboard layout can now be changed at runtime using the kbl command. The following layouts are currently supported:
      • en-US (ANSI)
      • en-GB (ISO)
      • fr-FR (AZERTY)
      • de-DE (QWERTZ)
      • en-US-DV (Dvorak)
    • The user can now draw shapes and lines on the screen using the draw command.
      • Drawings are drawn on a separate layer above the console output, so they will not interfere with the text output.
      • The following commands are currently supported:
        • draw line <sx>,<sy> <ex>,<ey> <hex color> [thickness]
          • Draws a line.
          • , refers to the first coordinate to start drawing from
          • , refers to the last coordinate to stop drawing at
          • [thickness] is the thickness of the line in px, default 1px
        • draw rshape <x>,<y> <sides> <size> <rotation> <color> (border <bordersize> (<bordercolor>))
          • Draws a regular shape.
          • , is the middle point of the regular shape
          • is the number of sides
          • is the size of the shape in px
          • is a rotation in any direction (positive for clockwise, negative for anticlockwise)
            • specify d for degrees, r for radians
          • if border is specified at the end but not anything else, by default 2px border of color white
            • is the thickness of the border in px, default 2px
            • is the color of the border, default white
        • draw star (small yellow star in the center of the screen)
        • draw tree (small coloured tree in the center of the screen)
        • draw demo (SystemK text demo in the center of the screen)
        • draw reset (reset the drawing layer to a blank state)
        • draw blank <color> (set the drawing layer to one colour)
      • draw accepts variables as arguments too
    • hex command has been added: convert integers to hexadecimal and vice versa.
      • Usage: hex <number> or hex "<string>"
      • Examples:
        • hex 32 -> "20"
        • hex "2C" -> 44
        • hex "ff00ff" -> 16711935
        • hex 15790320 -> "F0F0F0"
      • Strings that contain non-hexadecimal characters will be treated as converting the string to its hexadecimal representation, e.g. hex "hello" -> "68656C6C6F".
      • hex will interpret every input given to it as a number or string UNLESS the input happens to be the name of a variable, in which case it will convert the value of that variable to hexadecimal instead, e.g. if myvar is set to 42, then hex myvar will return "2A".
    • %command% substitutions now include all commands instead of predefined ones
    • In functions, return can now return the output of commands (a la echo) using the same %command% substitution.
    • Fixed a weird issue where the default palette was stored differently in two different places, causing the palette on boot and the palette defined as default to be different.
    • Fixed a regression where changing the color palette would not update the entire screen but only cells updated after the command was run.
    • Fixed an issue where the ram command would not recompute how much RAM the system was actually using.
    • RAM usage has been optimised (boot usage dropped from ~9MB during testing to 1.9MB).
    Downloads
  • 0.0.6 c530a5df95

    0.0.6 Pre-release

    kooper released this 2026-08-30 21:06:27 +00:00 | 12 commits to main since this release

    This is the first public release of SystemK (outside of my private Discord server).

    RAM usage is currently around 3.3MB on boot, this was actually not intended and is likely due to me being careless during development.

    I will try to reduce the usage as much as I can, however don't expect 4MB RAM support to stick around soon...


    Changelog:

    • SystemK is now open source! The source code will always be available here: https://git.thesillysociety.net/kooper/systemk.git
    • Default font has been changed to zap-ext-light16.psf (extended lighter version of the ZAP Group Australia console font)
      • The original font bizcat.psf is still included in the repo, but it is no longer used by default.
      • The new font has double the amount of characters (512 vs 256)
    • Multiple data can now be stored in one variable via lists, tuples, arrays or dictionaries
      • lists: set list [1, 2, "apple", 4, "banana"]: mutable, dynamic size, relaxed typing
      • arrays: set array (2, 4, 5, 9): mutable, fixed size, strict typing
      • tuples: set tuple <3, "carrot", 4.5, <3.142, 2.718>>: immutable, fixed size, relaxed typing
      • dictionaries: set dict {"name": "SystemK", "version": "0.0.6"}
    • Support for piping and redirection ("|", ">", ">>", "<")
      • The following commands are supported: cat grep head tail sed jq
    • jq command has been introduced: parse JSON files
    • sed command has been introduced: parse data streams
    • help command has been improved to notify users of the other help pages (scripting, system, etc.)
    • Ctrl+C now properly interrupts any command or script that is being run and sends the user back to the shell
    • Limits of variables and commands have been increased to 256 and 128 characters respectively
    • SystemK now has its own color codes for printing colored text to the screen
      • \ca30-37 and \ca40-47 for the generic ANSI color codes
      • \ch000000-\chFFFFFF for hex colors
      • \cr to reset
    • \n and \t are now supported for newline and tab respectively
      • Tab characters are rendered as a single random character at the moment, this will be fixed later
    Downloads