• Please review our updated Terms and Rules here

Looking for resources for Vesta OEM-188 / "RE Robot Brain" FORTH single-board computer

smbaker

Experienced Member
Joined
Oct 21, 2016
Messages
437
Location
Oregon, USA
I've recently come into possession of a Vesta OEM-188. This is an interesting little single-board computer, with a write-up included in a few Radio Electronics Magazines back from 1987. The computer boots Forth natively and playing around in Forth is somewhat self-explanatory. However, there are a bunch of customer words that are not obvious. There's also mention of a BIOS Formatter, and the ability to load and save words to disk.

If anyone has documentations on these extensions to Forth-83 for the OEM-188, or any documentation (other than the previously-mentioned Radio Electronics articles) on the OEM-188 at all, it would be much appreciated.

There's also a BASIC ROM that can be used (instead of the FORTH ROM). Someone here had it back in 2006, but that fellow hasn't logged in since 2007. If anyone has any additional ROMs, that would also be useful.

Finally, I've found several mentions of running either DOS or DOS applications on the OEM-188. This is a surprise, given the BIOS appears to be fairly small, but I can't discount the possibility.

Thanks, Scott
 
If I remember correctly, @Dwight Elvey has posted his Forth code on VCFED to dump out the Forth dictionary.

This doesn't tell you what the words actually 'do', but it does tell you what words exist.

Dave
 
It actually has a 'WORDS' command built in so you can see the dictionary. There's some interesting ones in there like "WBIOS" and "RBIOS". Doing "20 WBIOS" for example will make the disk spin for a while. It's one of those things that's probably easily explained in the documentation, but hard to figure out manually. It's possible it's pulling some things off the stack and doing and int 10h. I'm sure one could disassemble the ROM and figure out more if I wanted to spend enough time at it. The thing has a built-in EPROM programmer (a "PROGRAM" word for that). The actual FORTH disk support appears to use screens which was the historical way of loading and saving Forth programs. You can load/save screens to disk, to EPROM, or to a separate RAM bank. Haven't tried to load or save screens from disk though.

I did manage to get the board to boot DOS 2.11, but only successfully a couple of times. Most boot attempts result in various failures, including the typical DOS loader "Insert System Disk" message. I did film one of the semi-successful DOS boot attempts where it made it as far as asking for the date, time, and issuing the "A>" prompt, but then failed shortly thereafter. Something is amiss with my disk setup -- I'm not sure if it's my disks, drive, or the floppy controller on the board, but given that I had three boot attempts of varying success (including one where I could get a successful "DIR"), I would say the support is certainly there in the BIOS.

There was a site, https://vestatech.com/, that is now gone but is in the wayback machine. Eventually there was an acquisition in 2009, but they did seem to continue making and supporting SBCs. The OEM188 predates anything I was able to find in the wayback machine though.
 
Sorry, I should have said that I think Dwight's code output much more information than the standard Forth WORDS command.

It would be interesting to see what words are in the dictionary if you are able to post them.

Dave
 
Here's the list of words:

Code:
words
>FORTH   >ASM   LABEL   WORDS   B   L   N   INDEX   TRIAD   LIST   ?CR   
?LINE   RMARGIN   LMARGIN   ENDCASE   ENDOF   OF   CASE   DUMP   EDUMP   
TERMINAL   (WHERE)   EDIT   EDITOR   DARK   AT   REPLACE   INSERT   
DELETE   SEARCH   .ID   .S   DEPTH   DISK   RAM   BYE   COLD   WARM   
QUIT   USER   #USER   BACKGROUND:   ACTIVATE   SET-TASK   TASK:   STOP   
WAKE   SLEEP   LOCAL   SINGLE   PAUSE   ROOT   IS   CODE   2VARIABLE   
2CONSTANT   DEFINITIONS   VOCABULARY   DEFER   VARIABLE   CONSTANT   
RECURSIVE   ;   :   ]   [   DOES>   ;CODE   ;USES   ASSEMBLER   REVEAL   
HIDE   ?CSP   !CSP   CREATE   WHILE   ELSE   IF   REPEAT   AGAIN   
UNTIL   +LOOP   LOOP   ?DO   DO   THEN   BEGIN   ?LEAVE   LEAVE   
?<RESOLVE   ?<MARK   ?>RESOLVE   ?>MARK   <RESOLVE   <MARK   >RESOLVE   
>MARK   ?CONDITION   ABORT   ABORT"   (?ERROR)   ?ERROR   WHERE   
FORGET   FENCE   "   ."   [COMPILE]   [']   '   CONTROL   ASCII   
DLITERAL   LITERAL   IMMEDIATE   COMPILE   C,   ,   ALLOT   INTERPRET   
STATUS   ?UPPERCASE   FIND   >NAME   >BODY   NAME>   FORTH-83   
TRAVERSE   \S   (S   (   .(   WORD   PARSE   PARSE-WORD   SOURCE   
(SOURCE)   PLACE   /STRING   SCAN   SKIP   D.R   D.   UD.R   UD.   .R   
.   U.R   U.   DECIMAL   HEX   #S   #   SIGN   #>   <#   HOLD   NUMBER   
(NUMBER)   NUMBER?   (NUMBER?)   CONVERT   DOUBLE?   DIGIT   WBIOS   
RBIOS   TO   CONVEY   COPY   FLUSH   SAVE-BUFFERS   EMPTY-BUFFERS   
BLOCK   BUFFER   UPDATE   PROGRAM   EPROM   -->   THRU   ?ENOUGH   \   
WRITE-BLOCK   READ-BLOCK   BUFFER#   >BUFFERS   FIRST   LIMIT   
DISK-ERROR   B/BUF   QUERY   TIB   EXPECT   CC   DEL-IN   CHAR   
(CHAR)   BACKSPACES   SPACES   SPACE   TYPE   CRLF   (EMIT)   (PRINT)   
CR   KEY   KEY?   (CONSOLE)   (KEY)   (KEY?)   PC!   PC@   LOAD   
(LOAD)   COMPARE   -TRAILING   PAD   HERE   UPPER   UPC   MOVE   COUNT   
BLANK   ERASE   FILL   CAPS   BL   #TIB   SPAN   >IN   BLK   VOC-LINK   
WIDTH   'TIB   (CON)   CONTEXT   (CUR)   CURRENT   CSP   LAST   R#   
DPL   WARNING   STATE   SCR   RP0   SP0   EMIT   PRINTING   HLD   BASE   
OFFSET   #LINE   #OUT   DP   TOS   LINK   ENTRY   */   */MOD   MOD   /   
/MOD   *   MU/MOD   M/MOD   DMAX   DMIN   D>   D<   DU<   D=   D0=   
?DNEGATE   D-   D2/   D2*   DABS   S>D   DNEGATE   D+   2ROT   2OVER   
2SWAP   2DUP   2DROP   2!   2@   WITHIN   BETWEEN   >=   <=   U>=   
U<=   MAX   MIN   ?NEGATE   <>   >   <   U>   U<   =   0<>   0>   0<   
0=   UM/MOD   *D   UM*   2-   1-   2+   1+   U2/   2/   2*   +!   ABS   
-   NEGATE   +   OFF   ON   FALSE   TRUE   NOT   XOR   OR   AND   ROLL   
PICK   R@   >R   R>   ?DUP   -ROT   ROT   NIP   TUCK   OVER   SWAP   
DUP   DROP   RP!   RP@   SP!   SP@   CMOVE>   CMOVE   E!   EC!   E@   
EC@   C!   C@   !   @   J   I   MCALL   NOOP   PERFORM   EXECUTE   
BOUNDS   ?BRANCH   BRANCH   UP   EXIT   FORTH    ok
 
It looks to be a version of FORTH-83.That should be similar to FPC forth.
It shouldn't be too hard to write a decompiler, once you determine the threading method used.
I don't see a simple memory DUMP word. Once you have that you can play a little with the
words like >NAME, >BODY and NAME>.
Dwight
 
I can also just dump the contents of the ROM, if that's useful.

I implemented a Jonesforth port for the 8008 a while back, so the basics of what a Forth definition looks like is relatively clear to me.

One thing that surprised me a little (perhaps I was being a bit naïve) is how much work there is in getting some random chunk of Forth code to run on some random Forth distribution.

In case anyone wants to watch the video and see the board in action:
 
Back
Top