I’ve also recorded a video on YouTube where can you see a demonstration of the Ringo R-470 emulation on the EightyOne emulator:
The Jupiter ACE was an obscure machine, partly for the fact that the primary programming environment was the Forth programming language. I found out after my Jupiter ACE post that it enjoys a small but faithful following. You can also find them for purchase on eBay if you’re willing to spend $1,000+ on a unique and obscure ZX-81 clone.
The Ringo R-470
I really only stumbled upon Ringo R-470 because there’s a ROM for it packaged with the EightyOne Sinclair Emulator. There are various copies of its original manual floating around (also available on Scribd) and a very brief wikipedia page. The emulation in the emulator mostly works, but virtual peripheral support (including the tape loader) seems shaky at best. You’re not likely to find one available for sale online, either.

The above image which is also on the Wikipedia page is pretty standard in terms of being able to see the features of the computer clearly. This Sinclair Clones page has a few better photos, but you still can’t completely see the keyboard layout. (You can find a clearer picture of the layout on page 12 of the original manual linked above.)
Using with the EightyOne emulator
The functionality of the R-470 is mostly similar to the ZX-81, but the placement of the keywords and symbols (which still use English) is completely different from the ZX-81 layout. For example, L in keyword mode is LIST on the R-470 and LET on the ZX-81 (and K is LET on the R-470 and LIST on the ZX-81). However, the two layers of command mode keys and function mode keys and the graphics mode are similar, and the displayed listing has a [>] cursor for highlighting which key will get picked up if you select edit mode.
If this is your first try with a Sinclair clone (that speaks BASIC), you’ll need to keep in mind that the keywords are whole symbols on their own as opposed to being parsed from strings like Microsoft-derived BASICs. It’s actually kind of nice for editing and I’m sure it greatly simplifies the parsing, but even “TO” cannot be specified with the letters T and O and must instead be typed with the [left shift + T] (or [left shift + 4] on the ZX-81).
Another shock to the system for those unacquainted with the Sinclair way is that you get an error code + line number that it happened on at the end of execution (0 is no error/OK):

An alphabetical guide to the keyboard mapping of keywords and symbols:
I’ve compiled an alphabetical listing of the symbols/commands below (also available in markdown here) if you want to try your hand at typing a BASIC program into the the R-470 inside the EightyOne emulator. I’m sure that typing on a modern keyboard is more functional than typing on rubber chiclet keys, but the layout is pretty challenging:
symbol | key | cursor mode | modifier |
---|---|---|---|
“ | P | [K]eyword/command mode | left shift |
“” | 2 | [K]eyword/command mode | left shift |
$ | O | [K]eyword/command mode | left shift |
( | X | [K]eyword/command mode | left shift |
(edit mode) | 1 | [K]eyword/command mode | left shift |
(graphics mode) | 9 | [K]eyword/command mode | left shift |
) | C | [K]eyword/command mode | left shift |
* | G | [K]eyword/command mode | left shift |
** | F | [K]eyword/command mode | left shift |
+ | K | [K]eyword/command mode | left shift |
– | J | [K]eyword/command mode | left shift |
/ | H | [K]eyword/command mode | left shift |
: | N | [K]eyword/command mode | left shift |
; | M | [K]eyword/command mode | left shift |
< | V | [K]eyword/command mode | left shift |
<= | Y | [K]eyword/command mode | left shift |
<> | U | [K]eyword/command mode | left shift |
= | L | [K]eyword/command mode | left shift |
> | B | [K]eyword/command mode | left shift |
>= | I | [K]eyword/command mode | left shift |
? | Z | [K]eyword/command mode | left shift |
ABS | G | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
ACS | R | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
AND | A | [K]eyword/command mode | left shift |
ARCTAN | Y | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
ASN | W | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
AT | M | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
CHR$ | D | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
CLEAR | Z | [K]eyword/command mode | default |
CLS | X | [K]eyword/command mode | default |
CODE | C | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
CONT | C | [K]eyword/command mode | default |
COPY | Q | [K]eyword/command mode | default |
COS | E | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
DIM | D | [K]eyword/command mode | default |
EXP | K | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
FAST | R | [K]eyword/command mode | left shift |
FOR | F | [K]eyword/command mode | default |
GOSUB | H | [K]eyword/command mode | default |
GOTO | G | [K]eyword/command mode | default |
IF | W | [K]eyword/command mode | default |
INKEY$ | I | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
INPUT | I | [K]eyword/command mode | default |
INT | H | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
LEN | X | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
LET | K | [K]eyword/command mode | default |
LIST | L | [K]eyword/command mode | default |
LLIST | 4 | [K]eyword/command mode | left shift |
LN | L | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
LOAD | A | [K]eyword/command mode | default |
LPRINT | 3 | [K]eyword/command mode | left shift |
NEW | M | [K]eyword/command mode | default |
NEXT | N | [K]eyword/command mode | default |
NOT | N | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
OR | Q | [K]eyword/command mode | left shift |
PAUSE | E | [K]eyword/command mode | default |
PEEK | B | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
PLOT | Y | [K]eyword/command mode | default |
POKE | B | [K]eyword/command mode | default |
P | [K]eyword/command mode | default | |
RAND | O | [K]eyword/command mode | default |
REM | T | [K]eyword/command mode | default |
RETURN | J | [K]eyword/command mode | default |
RND | O | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
RUN | R | [K]eyword/command mode | default |
SAVE | S | [K]eyword/command mode | default |
SCROLL | V | [K]eyword/command mode | default |
SGN | J | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
SIN | Q | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
SLOW | E | [K]eyword/command mode | left shift |
SQR | F | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
STEP | D | [K]eyword/command mode | left shift |
STOP | S | [K]eyword/command mode | left shift |
STR$ | S | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
TAB | , | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
TAN | T | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
THEN | W | [K]eyword/command mode | left shift |
TO | T | [K]eyword/command mode | left shift |
UNPLOT | U | [K]eyword/command mode | default |
USR | U | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
VAL | V | [F] function mode | left CTRL (and release) from [K]eyword/command mode |
π | P | [F] function mode | left CTRL (and release) from [K]eyword/command mode |