2018-05-10 02:54:05 +02:00
|
|
|
## RETRO FORTH
|
2017-10-16 18:09:39 +02:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
RETRO is a modern, pragmatic Forth drawing influences from many
|
|
|
|
sources. It's clean, elegant, tiny, and easy to grasp and adapt
|
|
|
|
to various uses.
|
2017-10-16 18:09:39 +02:00
|
|
|
|
2017-10-20 03:54:31 +02:00
|
|
|
Features:
|
2017-10-16 18:09:39 +02:00
|
|
|
|
2017-10-20 03:54:31 +02:00
|
|
|
- Open Source (ISC License)
|
|
|
|
- Portable (runs on a MISC-style virtual machine)
|
|
|
|
- Small source & binaries
|
|
|
|
- Builds into a single, self contained binary for easy deployment
|
|
|
|
- Sources in literate format, using a Markdown variant
|
|
|
|
|
2017-10-16 18:09:39 +02:00
|
|
|
## Quick Start
|
|
|
|
|
2019-01-03 15:06:15 +01:00
|
|
|
For most systems (FreeBSD, NetBSD, OpenBSD, macOS, Linux):
|
2017-10-16 18:09:39 +02:00
|
|
|
|
2018-04-18 17:42:23 +02:00
|
|
|
make
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2018-11-09 04:22:51 +01:00
|
|
|
You will need a standard C compiler and `make`. The `retro-ri`
|
|
|
|
binary requires (n)curses, but you can ignore any build/link
|
|
|
|
errors by doing:
|
2018-05-10 02:54:05 +02:00
|
|
|
|
|
|
|
make -kis
|
|
|
|
|
2019-02-07 05:10:34 +01:00
|
|
|
If you are building on an older Linux system and are running
|
2019-01-10 19:18:27 +01:00
|
|
|
into problems, try using the alternative Makefile:
|
2018-10-08 19:29:51 +02:00
|
|
|
|
|
|
|
make -f Makefile.linux
|
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
## Executables
|
|
|
|
|
|
|
|
Binaries will be placed in the `bin` directory.
|
|
|
|
|
2018-11-04 22:34:56 +01:00
|
|
|
The primary executable is `retro`. This is used for running the
|
|
|
|
examples and the Atua (gopher) & Casket (http) servers that
|
|
|
|
power forthworks.com.
|
2018-05-10 02:54:05 +02:00
|
|
|
|
2018-11-09 04:11:58 +01:00
|
|
|
The `retro` executable embeds the image into the binary, making
|
|
|
|
it trivial to copy and deploy.
|
2018-05-10 02:54:05 +02:00
|
|
|
|
2018-11-09 04:11:58 +01:00
|
|
|
This interface layer also extends the language with many new
|
|
|
|
words and vocabularies, adds scripting, file i/o, gopher, and
|
2018-05-10 02:54:05 +02:00
|
|
|
floating point math support.
|
|
|
|
|
2018-11-09 04:11:58 +01:00
|
|
|
The `retro` executable can handle a variety of command line
|
|
|
|
arguments:
|
|
|
|
|
|
|
|
retro -i
|
|
|
|
|
|
|
|
Starts the *listener*, a basic REPL for interactive use.
|
|
|
|
|
|
|
|
retro filename
|
|
|
|
|
|
|
|
This will run the code in the specified file, then exit. This
|
|
|
|
is also used to run programs as shell-type scripts using a
|
|
|
|
header line like `#!/usr/bin/env retro`.
|
|
|
|
|
|
|
|
retro -i -f filename
|
|
|
|
|
|
|
|
This will run the code in the specified file, then start the
|
|
|
|
listener.
|
|
|
|
|
|
|
|
retro -h
|
|
|
|
|
|
|
|
Displays a summary of the command line arguments.
|
|
|
|
|
|
|
|
Source files for use with `retro` are written with code in
|
|
|
|
fenced blocks:
|
|
|
|
|
|
|
|
commentary here
|
|
|
|
|
|
|
|
~~~
|
|
|
|
code here
|
|
|
|
~~~
|
|
|
|
|
|
|
|
Anything outside the fenced blocks will be ignored.
|
2018-11-04 22:34:56 +01:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
## Commercial Versions
|
|
|
|
|
|
|
|
I provide proprietary versions of RETRO for iOS and macOS.
|
|
|
|
These use a custom, dual pane editor-based environment and
|
|
|
|
some platform specific words and extensions. They do use the
|
2018-11-04 22:34:56 +01:00
|
|
|
same image and virtual machine as `retro`, `retro-repl`, etc.
|
2018-05-10 02:54:05 +02:00
|
|
|
|
|
|
|
iOS: https://itunes.apple.com/us/app/retro-forth-12/id1170943580?ls=1&mt=8
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
macOS: https://itunes.apple.com/us/app/retro-forth/id1317494014?ls=1&mt=12
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
The macOS application is also availble for free, though the
|
|
|
|
source is not published.
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
Proceeds from these are used to pay for various project related
|
2018-11-04 22:34:56 +01:00
|
|
|
expenses (servers, domains, hardware upgrades, and an
|
|
|
|
occasional cup of tea).
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2018-05-10 02:54:05 +02:00
|
|
|
## Alternative Implementations
|
2017-10-20 03:54:31 +02:00
|
|
|
|
2019-02-06 22:52:04 +01:00
|
|
|
This source tree includes additional implementations in C#,
|
|
|
|
JavaScript, Pascal, and Python. These are not officially
|
|
|
|
supported, but are provided for your use if the C
|
|
|
|
implementations will not suffice.
|