1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-12-25 17:18:06 +11:00
collapseos/README.md
2019-06-07 20:08:41 -04:00

51 lines
1.9 KiB
Markdown

# Collapse OS
*Bootstrap post-collapse technology*
Collapse OS is a z80 kernel and a collection of programs, tools and
documentation that allows you to assemble an OS that, when completed, will be
able to:
1. Run on an extremely minimal and improvised architecture.
2. Communicate through a improvised serial interface linked to some kind of
improvised terminal.
3. Edit text files.
4. Compile assembler source files for a wide range of MCUs and CPUs.
5. Write files to a wide range of flash ICs and MCUs.
6. Access data storage from improvised systems.
7. Replicate itself.
Additionally, the goal of this project is to be as self-contained as possible.
With a copy of this project, a capable and creative person should be able to
manage to build and install Collapse OS without external resources (i.e.
internet) on a machine of her design, built from scavenged parts with low-tech
tools.
## Status
The project unfinished but is progressing well! Highlights:
* Self replicates: Can assemble itself from within itself, given enough RAM and
storage.
* Has a shell that can poke memory, I/O, call arbitrary code from memory.
* Can "upload" code from serial link into memory and execute it.
* Can manage multiple "block devices".
* Can read and write to SD cards.
* A z80 assembler, written in z80 that is self-assembling and can assemble the
whole project.
* Compact:
* Kernel: 3K binary, 1800 SLOC.
* ZASM: 4K binary, 2300 SLOC, 16K RAM usage to assemble kernel or itself.
* Extremely flexible: Kernel parts are written as loosely knit modules that
are bound through glue code. This makes the kernel adaptable to many unforseen
situations.
* From a GNU environment, can be built with minimal tooling: only
[libz80][libz80], make and a C compiler are needed.
## More information
Go to [Collapse OS' website](https://collapseos.org) for more information on the
project.
[libz80]: https://github.com/ggambetta/libz80