# Running Collapse OS on real hardware

Collapse OS is designed to run on ad-hoc post-collapse hardware
build from scavenged parts. These machines don't exist yet.

To make Collapse OS as likely as possible to be useful in a
post-collapse world, we try to give as many examples as possible
of deployment on hacked-up hardware.

For example, we include a recipe for running a Sega Master
System with a PS/2 keyboard plugged to a hacked up controller
cord with an AVR MCU interfacing between the PS/2 connector and
the controller port.

This setup, for which drivers are included in Collapse OS, exist
in only one copy, the copy the author of the recipe made.

However, the idea is that this recipe, which contains schematics
and precise instructions, could help a post-collapse engineer
to hack her way around and achieve something similar. She would
then have a good example of schematics and drivers that are
known to work.

# Organisation of this folder

While /doc's top folder contain documentation about software,
this folder contains instructions and schematics about ways to
get Collapse OS running on actual hardware.

Each CPU architecture has its own subfolder with recipes about
specific machines of that arch, while /doc/hw's top folder
contain instructions on broader topics, such as SD cards,
floppies, EEPROM, etc.

Most instructions have companion code in /arch that is conve-
niently wrapped in Makefiles for easy building.

# How to use

If you want to run Collape OS on real hardware, browse this
folder's contents until you find something that closely matches
your own hardware (or hardware-to-be).

If you live in a pre-collapse world and are looking for an easy
platform to try Collapse OS on, easy pickings are PC/AT (which
run on modern PCs supporting legacy BIOS), Sega Genesis w/
Everdrive and TI-84+. Those options don't require any soldering.

# Drivers

Most instructions in this subfolder tell you to add drivers to
your Collapse OS. What is meant by this is that you need to
rebuild your binary with an augmented xcomp unit. See
doc/bootstrap.txt for details, but the short version is:

When instructions tell you to declare constant XXX, then load
drivers from block BYYY and then add word ZZZ to the initial-
ization string, what is meant is that:

1. At the top of your xcomp unit, add constant XXX next to other
   declarations.
2. Between "xcomp core low" and "xcomp core high" loading,
   insert the loading of BYYY. Order may matter.
3. At the end, in the ,"" string just before EOT, insert the
   ZZZ word. Order may matter.
