## Dusk OS Compatibility layer

It is likely that the copy of Collapse OS you have is inside
the Dusk OS distribution.

Dusk OS has a compatibility layer at /cos/cos.fs allowing itself
to "drop" into Collapse OS mode, that is, to be able to
interpret *some* of its code and have the same results as if we
were actually running Collapse OS.

Because Dusk OS can run on any POSIX host, this gives the
Collapse OS the ability to build itself from any POSIX host.

The primary goals of this layer is to:

1. Build Collapse OS for any supported target.
2. Run the Visual Editor to edit blocks.

Collapse OS and Dusk OS are already pretty close, Forth-wise, so
code written for Collapse OS is already almost Dusk-compatible.
That compatibility layer allows us to bridge the little gap
(because there's a gap) and make assemblers, cross-compilter and
the text editor Dusk compatible.

## Working on Collapse OS from POSIX

If you're on a POSIX platform, you don't need to use VE to work
on Collapse OS' blocks. All you need is to edit /cos/core.fs,
which is an "unpacked" list of blocks that can be edited in a
regular text editor.

The Makefile then takes care of packing that file into a block
series at fs/data/cos.blk before Dusk is ran.

## Cleaning up afterwards

While most of the Collapse OS compatibility layer applies
cleanly, some words share Dusk's names but change semantics,
which breaks any "Dusk-style" definition being done afterwards.

While you can avoid this problems by loading the compat layer in
a different context, sometimes you can't. In these cases, you
can load /cos/uncos.fs to delete (from /mem/dict.fs) problematic
words from the dictionary. This should obviously only be done
once you're finished loading any Collapse OS code.

There is also /cos/unxcomp.fs which is the same thing but for
xcompc (B300-305), which is much much more disruptive. Don't
load this unless you've loaded "xcompc" or else you'll delete
Dusk system words and break your system.
