diff --git a/Makefile b/Makefile index a81a450..ac71900 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ LIBCURSES ?= -lcurses all: build -build: bin/retro-embedimage bin/retro-extend bin/retro-injectimage-js bin/retro-muri bin/RETRO12.html bin/retro-ri bin/retro-rre bin/retro-repl bin/retro-unu +build: bin/retro-embedimage bin/retro-extend bin/retro-injectimage-js bin/retro-muri bin/RETRO12.html bin/retro-ri bin/retro bin/retro-repl bin/retro-unu clean: rm -f bin/retro-embedimage @@ -17,7 +17,7 @@ clean: rm -f bin/RETRO12.html rm -f bin/retro-repl rm -f bin/retro-ri - rm -f bin/retro-rre + rm -f bin/retro rm -f bin/retro-unu install: build install-data install-docs install-examples @@ -29,7 +29,7 @@ install: build install-data install-docs install-examples install -c -m 755 bin/retro-muri $(DESTDIR)$(PREFIX)/bin/retro-muri install -c -m 755 bin/retro-repl $(DESTDIR)$(PREFIX)/bin/retro-repl install -c -m 755 bin/retro-ri $(DESTDIR)$(PREFIX)/bin/retro-ri - install -c -m 755 bin/retro-rre $(DESTDIR)$(PREFIX)/bin/retro-rre + install -c -m 755 bin/retro $(DESTDIR)$(PREFIX)/bin/retro install -c -m 755 bin/retro-unu $(DESTDIR)$(PREFIX)/bin/retro-unu install-strip: build install-data install-docs install-examples @@ -41,7 +41,7 @@ install-strip: build install-data install-docs install-examples install -c -m 755 -s bin/retro-muri $(DESTDIR)$(PREFIX)/bin/retro-muri install -c -m 755 -s bin/retro-repl $(DESTDIR)$(PREFIX)/bin/retro-repl install -c -m 755 -s bin/retro-ri $(DESTDIR)$(PREFIX)/bin/retro-ri - install -c -m 755 -s bin/retro-rre $(DESTDIR)$(PREFIX)/bin/retro-rre + install -c -m 755 -s bin/retro $(DESTDIR)$(PREFIX)/bin/retro install -c -m 755 -s bin/retro-unu $(DESTDIR)$(PREFIX)/bin/retro-unu install-data: bin/RETRO12.html @@ -63,8 +63,8 @@ install-examples: install -m 755 -d -- $(DESTDIR)$(EXAMPLESDIR) cp -fpR example $(DESTDIR)$(EXAMPLESDIR) -test: bin/retro-rre - ./bin/retro-rre tests/test-core.forth +test: bin/retro + ./bin/retro tests/test-core.forth # Targets for development/interactive usage @@ -105,12 +105,12 @@ bin/retro-repl: interfaces/repl.c interfaces/image.c bin/retro-ri: interfaces/ri.c interfaces/image.c cd interfaces && $(CC) $(CFLAGS) $(LDFLAGS) -o ../bin/retro-ri $(LIBCURSES) ri.c -bin/retro-rre: bin/retro-embedimage bin/retro-extend interfaces/image.c interfaces/rre.c interfaces/rre.forth +bin/retro: bin/retro-embedimage bin/retro-extend interfaces/image.c interfaces/rre.c interfaces/rre.forth cp ngaImage cleanImage ./bin/retro-extend interfaces/rre.forth ./bin/retro-embedimage >interfaces/rre_image_unix.c mv cleanImage ngaImage - cd interfaces && $(CC) $(CFLAGS) $(LDFLAGS) -o ../bin/retro-rre $(LIBM) rre.c + cd interfaces && $(CC) $(CFLAGS) $(LDFLAGS) -o ../bin/retro $(LIBM) rre.c bin/retro-barebones: bin/retro-embedimage bin/retro-extend interfaces/image.c interfaces/barebones.c interfaces/barebones.forth cp ngaImage cleanImage @@ -122,10 +122,10 @@ bin/retro-barebones: bin/retro-embedimage bin/retro-extend interfaces/image.c in bin/retro-unu: tools/unu.c $(CC) $(CFLAGS) $(LDFLAGS) -o bin/retro-unu tools/unu.c -doc/Glossary.txt: bin/retro-rre words.tsv +doc/Glossary.txt: bin/retro words.tsv LC_ALL=C sort -o sorted.tsv words.tsv mv sorted.tsv words.tsv - ./bin/retro-rre glossary.forth export glossary >doc/Glossary.txt + ./bin/retro glossary.forth export glossary >doc/Glossary.txt interfaces/image.c: bin/retro-embedimage bin/retro-extend bin/retro-muri literate/RetroForth.md literate/Rx.md ./bin/retro-muri literate/Rx.md diff --git a/README.md b/README.md index ceef4e8..dd7bf1a 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ into problems, try using the `build.sh` script: sh build.sh -Or the alternate `Makefile.linux': +Or the alternate `Makefile.linux`: make -f Makefile.linux @@ -37,33 +37,36 @@ Or the alternate `Makefile.linux': Binaries will be placed in the `bin` directory. -### rre +### retro -Short for `run retro and exit`, this is the primary interface -for RETRO. The `rre` interface is used to run the examples and -Atua Gopher and HTTP servers that power forthworks.com. +The primary executable is `retro`. This is used for running the +examples and the Atua (gopher) & Casket (http) servers that +power forthworks.com. -`rre` embeds the RETRO image into the binary, making it trivial +`retro` embeds the image into the binary, making it trivial to copy and deploy. -The `rre` interface also extends the language with many new +The `retro` interface also extends the language with many new words and vocabularies, adding scripting, file i/o, gopher, and floating point math support. -### repl +When run without any command line arguments, this will start +the *listener*, a basic REPL for interactive use. + +### retro-repl This is a basic `read-evaluate-print-loop` for interactive use. It's intended for quick tests and as an easy starting point for new interfaces. -The `repl` interface looks for the RETRO image (`ngaImage`) in -the current working. If not found, this will use an embedded -copy. +The `retro-repl` interface looks for the RETRO image (normally +`ngaImage`) in the current working directory. If not found, +this will use an embedded copy. -### ri +### retro-ri -`ri` is an interactive, (n)curses based interface inspired by -the interface used around 2001 with RETRO4. It provides an +`retro-ri` is an interactive, curses based interface inspired +by the interface used around 2001 with RETRO4. It provides an output area and then an input area at the bottom. Input is processed as it is entered, and the top stack items appear to the right of the input. @@ -76,7 +79,7 @@ the stack works. 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 -same image and virtual machine as `rre`, `repl`, etc. +same image and virtual machine as `retro`, `retro-repl`, etc. iOS: https://itunes.apple.com/us/app/retro-forth-12/id1170943580?ls=1&mt=8 @@ -86,8 +89,8 @@ The macOS application is also availble for free, though the source is not published. Proceeds from these are used to pay for various project related -expenses (vps, domains, hardware upgrades, and an occasional -cup of tea). +expenses (servers, domains, hardware upgrades, and an +occasional cup of tea). ## Alternative Implementations diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 6b41a7d..1471dd3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,9 +1,24 @@ -# RETRO 12 - 2018.9 +# RETRO 12 - 2018.12 + +In this release, the executables have been renamed to avoid +naming conflicts with other applications and packages. + + old name new name + ========== ================ + rre retro + embedimage retro-embedimage + extend retro-extend + muri retro-muri + repl retro-repl + ri retro-ri + unu retro-unu ## Bug fixes: ## Build +- add `Makefile.linux` to help with building on some Linux systems + ## Core Language - add `c:to-number` @@ -12,9 +27,10 @@ ## Interfaces -### rre +### retro (formerly rre) - moved Windows implementation to `interfaces/windows` +- now starts the listener when run w/o any arguments Other: diff --git a/interfaces/image.c b/interfaces/image.c index 549bb39..afde247 100644 --- a/interfaces/image.c +++ b/interfaces/image.c @@ -1,6 +1,6 @@ #include int32_t ngaImageCells = 8898; -int32_t ngaImage[] = { 1793,-1,8880,8897,201810,0,10,1,10,2,10,3,10,4,10,5,10,6,10, +int32_t ngaImage[] = { 1793,-1,8880,8897,201812,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,26,10, 68223234,1,2575,85000450,1,656912,354,339,268505089,66,65,135205121,66,10,101384453,0,9,10,2049,59, diff --git a/interfaces/rre_image_unix.c b/interfaces/rre_image_unix.c index 1c5c400..81e0ea2 100644 --- a/interfaces/rre_image_unix.c +++ b/interfaces/rre_image_unix.c @@ -1,6 +1,6 @@ #include int32_t ngaImageCells = 11317; -int32_t ngaImage[] = { 1793,-1,11280,11316,201810,0,10,1,10,2,10,3,10,4,10,5,10,6,10, +int32_t ngaImage[] = { 1793,-1,11280,11316,201812,0,10,1,10,2,10,3,10,4,10,5,10,6,10, 7,10,8,10,9,10,10,10,11,10,12,10,13,10,14,10,15,10,16,10, 17,10,18,10,19,10,20,10,21,10,22,10,23,10,24,10,25,10,26,10, 68223234,1,2575,85000450,1,656912,354,339,268505089,66,65,135205121,66,10,101384453,0,9,10,2049,59, diff --git a/literate/Rx.md b/literate/Rx.md index 824b7a4..1450c3a 100644 --- a/literate/Rx.md +++ b/literate/Rx.md @@ -1,7 +1,7 @@ ____ _ _ || \\ \\ // ||_// )x( - || \\ // \\ 2018.10 + || \\ // \\ 2018.12 a minimalist forth for nga *Rx* (*retro experimental*) is a minimal Forth implementation @@ -137,7 +137,7 @@ r 9999 d 1536 : Version -d 201810 +d 201812 ~~~ Both of these are pointers. `Dictionary` points to the most @@ -145,8 +145,8 @@ recent dictionary entry. (See the *Dictionary* section at the end of this file.) `Heap` points to the next free address. This is hard coded to an address beyond the end of the Rx kernel. I adjust this as needed if the kernel grows or shinks -significantly. See the *Interpreter & Compiler* section -for more on this. +significantly. See the *Interpreter & Compiler* section for +more on this. ## Nga Instruction Set @@ -340,8 +340,8 @@ fields, and use the flag as the index. Defaults to the *false* entry, since a *true* flag is -1. Note that this requires that the flags be -1 (for TRUE) and 0 -(for FALSE). It's possible to make this more flexible, but at -a significant performance hit, so I'm leaving it this way. +(for FALSE). It's possible to make this more flexible, but at a +significant performance hit, so I'm leaving it this way. ~~~ : choice:true @@ -567,7 +567,7 @@ i ju...... : class:word:compile i lilica.. -d 2049 packed li/ca/../.. +d 2049 packed li/ca/../.. r comma i liju.... r comma @@ -953,7 +953,7 @@ r Compiler d -1 r Compiler i stlilica -d 1793 packed li/ju/../.. +d 1793 packed li/ju/../.. r comma i lifelili r Heap diff --git a/ngaImage b/ngaImage index 43b67b6..88d4882 100644 Binary files a/ngaImage and b/ngaImage differ