Top level design

It is a good idea to have high level design of what is going to be build and to give all parts their proper name.

The following diagram show this design for the FPRcade game system.

The server

The game system will run a game called Picomoeba which will be some kind of shoot-them-up game. The game is written in the Forth language and is is executed by a Forth system. For this there are I/O devices, memory and a CPU. These hardware components are implemented using the FPGA. The CPU, Memory and I/O devices are implemented using the FPGA. For this the FPGA needs to be fed the hardware design.

Inside the Forth system we have a dictionary, and outer interpreter and inner interpreter. The dictionary is a bit similar to the C standard library. It contains word definitions, that is a name and a bunch of instructions to be executed. The outer interpreter reads strings of words. It will either look up each word in the dictionary and execute it, or to combine them into new words that are added in the dictionary. The instructions for a word are executed by the inner interpreter. The outer interpreter is one of the words in the dictionary and is composed of more primitive words.

The strings of words (names) that the outer interpreter reads can either come from the user, or from blocks of text.

Next: instruction set and an assembler