retroforth/BUILDING.md
crc 27350b987c add a document on building, with details on the non-default interfaces and alternate implementations
FossilOrigin-Name: c84a4065016c4079351bf118e5004dc45b1408427031a3a368804c09ff051fde
2019-02-06 21:52:04 +00:00

108 lines
2 KiB
Markdown

# Building RETRO
## Requirements
- c compiler (tested: clang, tcc, gcc)
- make
- standard unix shell
## Process
Run `make`.
This will build the toolchain and then the main `retro`
executable.
## Executables
In the `bin/` directory:
retro
retro-unu
retro-muri
retro-extend
retro-embedimage
# Alternate Interfaces
The main interface, rre, is built as the `retro`
executable. But there are other options:
## retro-repl
A basic interactive system can be built by using:
make bin/retro-repl
This requires a copy of `ngaImage` to be in the current
directory.
## retro-ri
`ri` is a full screen, curses based interface to RETRO.
It provides a display like:
+-------------------------------+
| ... output ... |
| |
| |
| |
+-------------------------------+
| status |
+-------------------------------+
| input |
+-------------------------------+
Input is processed as it is being entered with output
displayed above. `ri` is different from the other user
interfaces as it provides a means of switching between
five separate images.
Additional Dependencies:
- curses
To build this:
make bin/retro-ri
## Barebones
This is a minimal version of the `retro-repl`. It keeps
the C portion as short as possible, making it a useful
starting point for new interfaces.
To build:
make bin/retro-barebones
## RETRO12.html
There is a JavaScript and HTML based interface. To
build this:
make bin/RETRO12.html
It is tested on Chrome and Safari. The interface is
based on the UI used on the iOS and macOS versions,
presenting a dual-pane model with an editor to the
left, an output area to the right, and a listener
at the bottom.
## Pascal
There is a Pascal version of `retro-repl`.
Dependencies:
- freepascal
Building:
cd interfaces/pascal
fpc listener.lpr
This will require a copy of the `ngaImage` in the
current directory.