View Source Document

Notes.md

Concepts

This is probably out of date now.

Funiculars, Platforms, Architectures, EmulatorModes, Emulators

Each Funicular is defined by a Funicularfile in a particular directory dedicated to that Funicular (in analogy with Makefile, Vagrantfile, etc.)

A Funicular defines a development environment; is generally based around a particular Platform. The Platform defines a default Architecture, which in turn defines a default EmulatorMode (which is provided by an Emulator.)

In truth, it is more complicated than that. Platforms have a many-to-many relationship with Architectures, which themselves have a many-to-many relationship with EmulatorModes, which themselves have a many-to-one relationship with Emulators.

Examples:

Worse, Platforms and Architectures are hierarchical, but not in any clean way. Amiga Kickstart sits on top of a 680x0 core, and AmigaDOS sits on top of Kickstart. The Java platform sits on top of, potentially, many different platforms. And so forth.

So, there are lots of possibilities. But, we can stick to certain "defaults" for now; not only because they are "opinionated" (I'd rather use QEMU than Bochs) but also because it makes it a lot simpler. Hopefully we'll come up with a sane way to customize all the relationships at some point.

It is useful to remember that a Funicular defines an environment (usually a development environment, with compilers, text editors, and whatever else might help you develop software.) So, there can be multiple Funiculars with the exact same Platform and Architecture, but outfit differently and providing different development environments.

Images

An Image represents contents of a storage medium. It is usually implemented on the host system as a file (e.g. a disk image or a ROM image) or as a directory of files (e.g. a "virtual disk".) An Image has one of several roles:

Usage

To create a Funicular, you generally follow this series of steps:

After install and setup, or at any time thereafter, you may wish to run funicular backup to create a compressed backup copy of the system image at that point. Restoring from such a backup will generally be faster and easier than installing or setting up again.

Certain funiculars may support creating a distribution image. To create a distribution image, you generally follow these steps: