Trying Out the Ringo R-470, a Brazilian ZX-81 Clone

I’ve also recorded a video on YouTube where can you see a demonstration of the Ringo R-470 emulation on the EightyOne emulator:

Demonstrating the Ringo R-470 emulation in EightyOne

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.

R-470 Ringo - Frente

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

Edit cursor [>] and [K]eyword/command mode at the bottom

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):

B (Integer out of range) on line 120 (because I tried to plot on row 44, and y coordinates only go up to 43)

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:

symbolkeycursor modemodifier
P[K]eyword/command modeleft shift
“”2[K]eyword/command modeleft shift
$O[K]eyword/command modeleft shift
(X[K]eyword/command modeleft shift
(edit mode)1[K]eyword/command modeleft shift
(graphics mode)9[K]eyword/command modeleft shift
)C[K]eyword/command modeleft shift
*G[K]eyword/command modeleft shift
**F[K]eyword/command modeleft shift
+K[K]eyword/command modeleft shift
J[K]eyword/command modeleft shift
/H[K]eyword/command modeleft shift
:N[K]eyword/command modeleft shift
;M[K]eyword/command modeleft shift
<V[K]eyword/command modeleft shift
<=Y[K]eyword/command modeleft shift
<>U[K]eyword/command modeleft shift
=L[K]eyword/command modeleft shift
>B[K]eyword/command modeleft shift
>=I[K]eyword/command modeleft shift
?Z[K]eyword/command modeleft shift
ABSG[F] function modeleft CTRL (and release) from [K]eyword/command mode
ACSR[F] function modeleft CTRL (and release) from [K]eyword/command mode
ANDA[K]eyword/command modeleft shift
ARCTANY[F] function modeleft CTRL (and release) from [K]eyword/command mode
ASNW[F] function modeleft CTRL (and release) from [K]eyword/command mode
ATM[F] function modeleft CTRL (and release) from [K]eyword/command mode
CHR$D[F] function modeleft CTRL (and release) from [K]eyword/command mode
CLEARZ[K]eyword/command modedefault
CLSX[K]eyword/command modedefault
CODEC[F] function modeleft CTRL (and release) from [K]eyword/command mode
CONTC[K]eyword/command modedefault
COPYQ[K]eyword/command modedefault
COSE[F] function modeleft CTRL (and release) from [K]eyword/command mode
DIMD[K]eyword/command modedefault
EXPK[F] function modeleft CTRL (and release) from [K]eyword/command mode
FASTR[K]eyword/command modeleft shift
FORF[K]eyword/command modedefault
GOSUBH[K]eyword/command modedefault
GOTOG[K]eyword/command modedefault
IFW[K]eyword/command modedefault
INKEY$I[F] function modeleft CTRL (and release) from [K]eyword/command mode
INPUTI[K]eyword/command modedefault
INTH[F] function modeleft CTRL (and release) from [K]eyword/command mode
LENX[F] function modeleft CTRL (and release) from [K]eyword/command mode
LETK[K]eyword/command modedefault
LISTL[K]eyword/command modedefault
LLIST4[K]eyword/command modeleft shift
LNL[F] function modeleft CTRL (and release) from [K]eyword/command mode
LOADA[K]eyword/command modedefault
LPRINT3[K]eyword/command modeleft shift
NEWM[K]eyword/command modedefault
NEXTN[K]eyword/command modedefault
NOTN[F] function modeleft CTRL (and release) from [K]eyword/command mode
ORQ[K]eyword/command modeleft shift
PAUSEE[K]eyword/command modedefault
PEEKB[F] function modeleft CTRL (and release) from [K]eyword/command mode
PLOTY[K]eyword/command modedefault
POKEB[K]eyword/command modedefault
PRINTP[K]eyword/command modedefault
RANDO[K]eyword/command modedefault
REMT[K]eyword/command modedefault
RETURNJ[K]eyword/command modedefault
RNDO[F] function modeleft CTRL (and release) from [K]eyword/command mode
RUNR[K]eyword/command modedefault
SAVES[K]eyword/command modedefault
SCROLLV[K]eyword/command modedefault
SGNJ[F] function modeleft CTRL (and release) from [K]eyword/command mode
SINQ[F] function modeleft CTRL (and release) from [K]eyword/command mode
SLOWE[K]eyword/command modeleft shift
SQRF[F] function modeleft CTRL (and release) from [K]eyword/command mode
STEPD[K]eyword/command modeleft shift
STOPS[K]eyword/command modeleft shift
STR$S[F] function modeleft CTRL (and release) from [K]eyword/command mode
TAB,[F] function modeleft CTRL (and release) from [K]eyword/command mode
TANT[F] function modeleft CTRL (and release) from [K]eyword/command mode
THENW[K]eyword/command modeleft shift
TOT[K]eyword/command modeleft shift
UNPLOTU[K]eyword/command modedefault
USRU[F] function modeleft CTRL (and release) from [K]eyword/command mode
VALV[F] function modeleft CTRL (and release) from [K]eyword/command mode
πP[F] function modeleft CTRL (and release) from [K]eyword/command mode