ZeaxOS is a small operating system I'm making to see how much of a computer I can build myself.
It has its own bootloader and a 64-bit kernel written mostly in C and assembly, with a graphical console, keyboard and mouse, IDE/SATA storage, an in-memory filesystem, user accounts and a shell.
It also comes with ZAP, a small scripting language that can build real graphical apps, and a few bundled programs like a text editor, games and a paint tool.
There are some example ZAP apps on the zap page — a calculator and a file browser.
There's a bit of networking now too: it can ping, resolve names and download files over HTTP.
It's still being worked on, so things will probably break from time to time.
More ZAP and shell tools
ZAP gained higher-order functions — map, filter, each and reduce take one of your functions — plus sum, min_of, max_of, count, pad_left/pad_right and gcd/lcm.
ZAP's memory arena grew from 64 KiB to 256 KiB, which fixes the out of memory the file browser hit after enough navigation.
New shell text tools: wc, head, tail and grep.
The files.zap example app was recoded to allocate far less on every directory change.
Shell, ZAP and downloads
The terminal now wraps long command lines properly — editing, the cursor and Up/Down history all work across wrapped rows, where before they only handled a single line.
New zff <url> [name] command fetches an http:// file (up to 1 MiB) into the current directory, replacing zx -i. The ramfs now keeps file data in a shared arena, so files can grow past the old 4 KiB cap.
ZAP can draw the OS mouse cursor with cursor_show(), cursor_move(x, y) and cursor_hide(), and sleep() now refreshes the execution budget so interactive scripts can run indefinitely.
Added two example ZAP apps on the zap page: a calculator and a file browser.
The version is now reported as v1.5 everywhere (the kernel banner and zeatch used to say v0.4).
Networking
Added network drivers for the Intel e1000 and the AMD PCnet, so ZeaxOS is online in both QEMU and VirtualBox.
ARP and IPv4 with gateway routing, so addresses outside the local network work too.
ICMP ping, and you can ping names as well as addresses (there's now a small DNS client).
A basic TCP client and an HTTP client on top of it.
New commands: ping <ip|host> and zx -i http://host/file, which downloads a file straight onto the OS.
Only plain http:// for now - no HTTPS yet.
zeatch
zeatch - a fastfetch-style summary of the machine with the ZeaxOS logo. It prints at boot and you can run it any time.
Small fixes to the status bar and the console so coloured text keeps its colour after a full-screen app.
More scripting
The scripting language got a lot bigger: booleans, nil, arrays and dictionaries.
Functions with parameters, return values and recursion, plus anonymous functions and closures.
More control flow: while, do-while, for, for-in, switch, break/continue and ternary expressions.
Error handling with try / catch / throw.
A graphics and GUI toolkit (windows, buttons, labels, text boxes, menus), so ZAP can build real apps instead of just terminal programs.
Filesystem access, a small standard library (strings, maths, random, time) and import for splitting code into modules.
Zap Coding
ZAP - a small scripting language for ZeaxOS: variables, arithmetic, strings, if/else and comments. Run scripts with run file.zap.
Editor: zoom in and out, horizontal scrolling, Ctrl+Backspace to delete a word, and Ctrl+Esc to exit.
Paint: a 40-colour palette and undo/redo.
Shell: move the cursor around a command with the arrow keys while typing.
First release
A bootloader written from scratch, booting from CD or disk on a BIOS PC.
A 64-bit kernel with a framebuffer console, keyboard and mouse support and a status bar.
Storage support (IDE and SATA) with a small in-memory filesystem.
User accounts with hashed passwords and persisted settings.
A shell with a pile of commands, and a few apps: text editor, snake, tetris, clock and paint.