FossilOrigin-Name: a98c6167c4d942aed18c9938210f7102ff7dcb178b22df80ed61fbe145d8a519
2.6 KiB
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
retro-compiler
This is a turnkey compiler. It can compile a new executable bundling a Retro VM and image.
Requirements:
- BSD or Linux
- objcopy in $PATH
To build:
make bin/retro-compiler
Example use:
-
Given a source file like "Hello.forth":
:hello 'hello_world! s:put nl ;
-
Use:
./bin/retro-compiler Hello.forth hello
The first argument is the source file, the second is the word to run on startup.
- Run the generated
a.out
Limits:
This only supports the core words ('all' interface) and the file i/o words. Support for other I/O extensions will be added in the future.
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.