-
0.0.9 Pre-release
released this
2026-10-04 19:50:42 +00:00 | 0 commits to main since this releaseThis 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 withdd
- You can now build raw bootable FAT32 disk images (
- Implemented full read and write support for FAT32 filesystems:
- Supports long file names (VFAT LFN), nested subdirectories, file creation, editing, and deletion
- Introduced
mountandumountcommands 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
diskscommand: view connected drives, partitions, sizes, and mount points (similar tolsblk) - Implemented preemptive multitasking and process management:
- Introduced
psto view running processes andkillto terminate them - Initial support for loading and executing 32-bit ELF binaries
- Introduced
- Introduced job control and background execution:
- Commands can now be suspended in the background with
Ctrl+Z - Added
jobsto list active jobs, andfg/bgto resume them in the foreground or background - Shell commands can be launched directly in the background by appending
&
- Commands can now be suspended in the background with
- Introduced a dynamic driver system and the
modulescommand to inspect, load, and unload drivers at runtime - Introduced the
ddcommand for raw block and file copying (supportingbs,count,skip,seek, and conversions) - Introduced the
statcommand 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+Zto suspend the editor to the shell
acpi pcidevice 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.0.8 Pre-release
released this
2026-09-03 15:55:51 +00:00 | 2 commits to main since this releaseThis 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
poweroffnow works on real hardware too
- This means
- Implemented an
acpicommand for dumping ACPI tables and inventory - A lot more however I forgot to document as I was working on it
- S3-S5 sleep states are now supported on real hardware
- 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 rebootandpoweroffnow 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
drawlayer was only visible in the top-left quadrant (512x384) of the screen, and not the entire screen (real hardware bug)
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
0.0.7 Pre-release
released this
2026-08-31 22:58:22 +00:00 | 5 commits to main since this releaseThis 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
drawcommand 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
kblcommand. 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
drawcommand.- 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)
drawaccepts variables as arguments too
hexcommand has been added: convert integers to hexadecimal and vice versa.- Usage:
hex <number>orhex "<string>" - Examples:
hex 32->"20"hex "2C"->44hex "ff00ff"->16711935hex 15790320->"F0F0F0"
- Strings that contain non-hexadecimal characters will be treated as converting the string to its hexadecimal representation, e.g.
hex "hello"->"68656C6C6F". hexwill 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. ifmyvaris set to42, thenhex myvarwill return"2A".
- Usage:
%command%substitutions now include all commands instead of predefined ones- In functions,
returncan now return the output of commands (a laecho) 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
defaultto 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
ramcommand 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- The current keyboard layout can now be changed at runtime using the
-
0.0.6 Pre-release
released this
2026-08-30 21:06:27 +00:00 | 12 commits to main since this releaseThis 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.psfis 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)
- The original font
- 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"}
- lists:
- Support for piping and redirection ("|", ">", ">>", "<")
- The following commands are supported:
catgrepheadtailsedjq
- The following commands are supported:
jqcommand has been introduced: parse JSON filessedcommand has been introduced: parse data streamshelpcommand 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
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads