Skip to content
An operating system written in Common Lisp
Common Lisp Python
Find file
New pull request
Failed to load latest commit information.
applications Remove WITH-FONT and CLOSE-FONT.
compiler Print AST-CALL nodes nicely and unparse suppliedp arguments properly.
doc/internals Refactoring.
file-server Ignore errors when processing clients in the file-server.
file Partially implement ENOUGH-NAMESTRING and the $ FORMAT control.
gui Add width/height arguments to basic-repl:spawn.
net Replace WAIT-FOR-HEARTBEAT calls with SLEEP.
notes Delete a bunch of extremely outdated files.
runtime Remove incorrect IGNORE declaration in FLOAT.
supervisor More debug logging in the physical allocator.
system Make data flow in the MAPCAR/MAPLIST compiler macros more obvious.
tools Stream class wrapping disk access.
.gitignore Cleanup, removing a bunch of obsolete code.
BUILD Update build instructions. Network config and disk image/ram size.
LICENCE Licence header.
README The operating system formerly known as Mezzanine.
ipl.lisp Inhibit some forms of inlining when building Chipz.
lap-x86.lisp Expunge the old CSP/CFP aliases for RSP/RBP.
lap.lisp Implement new GC metadata for CMPXCHG/CMPXCHG16B.
line-edit-mixin.lisp Basic completion support in the REPL.
lispos-compiler.asd Compiler pass to simplify control flow.
lispos.asd Fix package conflicts caused when reloading lap & lap-x86.
pci-names.lisp Move BSEARCH into a file that is actually used.

README

Mezzano, an operating system written in Common Lisp.

C-<key> means to hold the control key while typing <key>.
M-<key> means to hold the alt or meta key while typing <key>.
Alphabetic keys typed with control or meta ignore case. C-A and C-a are the same key, while C-! and C-1 are different.

Use M-F12 to switch between En-GB and En-US keymaps.
Windows can be moved by holding the Alt key and dragging.

Line editing
------------
The line editor supports most standard line navigation and editing commands.
There is no command completion support yet.

C-F          Move forward (right) one character, also bound to Right-Arrow.
C-B          Move backward (left) one character, also bound to Left-Arrow.
C-A          Move to beginning of line, also bound to Home.
C-E          Move to end of line, also bound to End.
M-F          Move forward one word.
M-B          Move backward one word.
M-P          Find previous (older) matching history item, also bound to Up-Arrow.
M-N          Find next (newer) matching history item, also bound to Down-Arrow.
C-D          Delete the next character, also bound to Delete.
Backspace    Delete the previous character.
M-D          Delete the next word.
M-Backspace  Delete the previous word.
C-K          Delete from the cursor to the end of the line.
C-C          Enter the debugger using BREAK.
C-G          Invoke the most recent ABORT restart. This will usually clear any input and return you to a prompt.

Editor commands
---------------
The editor mostly follows Emacs conventions, but currently lacks a minibuffer and message pane.

C-F          Move forward (right) one character, also bound to Right-Arrow.
C-B          Move backward (left) one character, also bound to Left-Arrow.
C-N          Move to the next line (down), also bound to Down-Arrow.
C-P          Move to the previous line (up), also bound to Up-Arrow.
C-A          Move to beginning of line.
C-E          Move to end of line.
M-<          Move to the beginning of the buffer, also bound to Home.
M->          Move to the end of the buffer, also bound to End.
C-V          Move the point to the bottom of the screen and recenter, also bound to Page-Down.
M-V          Move the point to the top of the screen and recenter, also bound to Page-Up.
M-F          Move forward one word.
M-B          Move backward one word.
C-M-F        Move forward one s-expression.
C-M-F        Move backward one s-expression.
C-D          Delete the next character, also bound to Delete.
Backspace    Delete the previous character.
M-D          Kill the next word.
M-Backspace  Kill the previous word.
C-K          Kill characters from the point to the end of the line, or kill the newline if the point is at the end of the line.
C-M-K        Kill the next s-expression forward.
C-W          Kill the area between the point and the mark.
C-Y          Yank the last killed text back into the buffer at the point.
C-L          Recenter the display on the point.
M-L          Redraw the screen.
C-Q          Insert the next key typed without intepretting it as a command.
C-Space      If the point is at the mark and the mark is active, deactivate the mark. Otherwise, activate the mark and move it to the point.
C-X C-X      Swap the point and the mark.
C-X C-F      Open or create a file.
C-X C-S      Save the current buffer. If the buffer has no path, you will be prompted for a location to save it.
C-X C-W      Save the current buffer with a new path.
C-X b        Switch to a different buffer.
C-X C-B      List buffers.
C-X k        Close an open buffer.
C-G          Abort the current command.
C-C C-C      Evaluate the current top-level form.
C-C C-A      Move to the start of the current top-level form.

Blinkenlights
-------------
A number of status lights are displayed at the top left of the screen.
From left to right:
Green        Disk read in progress.
Red          Disk write in progress.
Purple       GC in progress.
Cyan         Activity, system is not idle.
Yellow       Snapshot in progress.
Brown        Page fault being serviced.

The entire top line will turn red if the system panics.

Included Libraries
------------------
ASDF 2.26
Alexandria 0c39310e
Babel a994dec2
Chipz 0.7.4
cl-jpeg 1.27
cl-vectors 0.1.5
iterate 1.4.3
png-read dfdfc9a1
zpb-ttf 1.0.2

Full copyright notices and licences are available under LOCAL:>Licences>

"Mandarin Pair" by © Francis C. Franklin / CC-BY-SA-3.0.
Licensed under CC BY-SA 3.0 via Wikimedia Commons - http://commons.wikimedia.org/wiki/File:Mandarin_Pair.jpg

Some icons from Icojam (http://www.icojam.com)



Extremely experimental whole-system transparent persistence support
-------------------------------------------------------
You will wreck your install if you try using this feature.
Take a snapshot using your virtual machine before using it, or back up your disk.

Close all running programs (optional, strongly recommended).
Run (mezzano.supervisor:snapshot) in a REPL.
Wait for the yellow light to turn off.
Reboot.

If the system does not boot properly then restore your backup and try again.
Something went wrong with that request. Please try again.