2019-03-06 14:28:56 -05:00
|
|
|
# Collapse OS
|
|
|
|
|
|
|
|
*Bootstrap post-collapse technology*
|
|
|
|
|
2019-05-20 12:11:45 -04:00
|
|
|
Collapse OS is a z80 kernel and a collection of programs, tools and
|
2019-06-07 20:08:41 -04:00
|
|
|
documentation that allows you to assemble an OS that, when completed, will be
|
|
|
|
able to:
|
2019-03-06 14:28:56 -05:00
|
|
|
|
|
|
|
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.
|
|
|
|
|
2019-05-20 12:11:45 -04:00
|
|
|
## Status
|
|
|
|
|
2019-06-07 20:08:41 -04:00
|
|
|
The project unfinished but is progressing well! Highlights:
|
2019-05-20 12:11:45 -04:00
|
|
|
|
2019-06-07 20:08:41 -04:00
|
|
|
* Self replicates: Can assemble itself from within itself, given enough RAM and
|
|
|
|
storage.
|
2019-05-20 12:11:45 -04:00
|
|
|
* 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.
|
2019-06-07 20:08:41 -04:00
|
|
|
* Can manage multiple "block devices".
|
|
|
|
* Can read and write to SD cards.
|
2019-05-20 12:11:45 -04:00
|
|
|
* A z80 assembler, written in z80 that is self-assembling and can assemble the
|
2019-06-07 20:08:41 -04:00
|
|
|
whole project.
|
|
|
|
* Compact:
|
|
|
|
* Kernel: 3K binary, 1800 SLOC.
|
|
|
|
* ZASM: 4K binary, 2300 SLOC, 16K RAM usage to assemble kernel or itself.
|
2019-05-20 12:11:45 -04:00
|
|
|
* 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.
|
2019-06-07 20:08:41 -04:00
|
|
|
* From a GNU environment, can be built with minimal tooling: only
|
|
|
|
[libz80][libz80], make and a C compiler are needed.
|
2019-03-06 14:28:56 -05:00
|
|
|
|
2019-06-19 19:10:58 -04:00
|
|
|
## Organisation of this repository
|
|
|
|
|
|
|
|
* `kernel`: Pieces of code to be assembled by the user into a kernel.
|
|
|
|
* `apps`: Pieces of code to be assembled into "userspace" application.
|
|
|
|
* `recipes`: collection of recipes that assemble parts together on a specific
|
|
|
|
machine.
|
|
|
|
* `doc`: User guide for when you've successfully installed Collapse OS.
|
|
|
|
* `tools`: Tools for working with Collapse OS from "modern" environments. Mostly
|
|
|
|
development tools, but also contains emulated zasm, which is
|
|
|
|
necessary to build Collapse OS from a non-Collapse OS machine.
|
|
|
|
|
|
|
|
Each folder has a README with more details.
|
|
|
|
|
2019-06-07 20:08:41 -04:00
|
|
|
## More information
|
2019-03-06 14:28:56 -05:00
|
|
|
|
2019-06-07 20:08:41 -04:00
|
|
|
Go to [Collapse OS' website](https://collapseos.org) for more information on the
|
|
|
|
project.
|
2019-03-06 14:28:56 -05:00
|
|
|
|
2019-05-20 12:11:45 -04:00
|
|
|
[libz80]: https://github.com/ggambetta/libz80
|