The
picture shows the Simultac Fonton simulator display during calculation of the
Lisp programme to calculate Fibonacci(9).
The
source Lisp is shown in the top left hand text area.
Each
Fonton is shown connected to its four nearest neighbours. The appearance of the
Fonton indicates whether it is inactive, has tagged data stored in its
registers (Orange register), is performing a calculation in the ALU (green ALU)
or is writing to or reading from its registers (red register).
The
Simultac can be configured as an NxM array of Fontons (in this example 8x8).
The
source Lisp programme is first parsed for correctness, before being sent to be
simulated.
The
programme initially is sent to an off-screen “socket” Fonton, whose function is
to simply create a Burton that carries the programme (as data) into the
Simultac.
The
programme-carrying Burton arrives at a Fonton, which parses it and creates new
Burtons for non-atomic tokens that cannot be immediately calculated in the ALU.
These new “Request” Burtons are sent to adjacent Fontons.
The
algorithm used to decide which of the four adjacent Fonton neighbours to send
each Burton to is configured by the user: either a round-robin, or random
selection mechanism may be chosen.
The
selection mechanism makes a striking difference to the Fonton activity patterns
generated in the Simultac!
When
Request Burtons are created by the Fonton, they are tagged, and the Fonton
itself keeps a set of tagged data items that are used when a Result Burton
arrives back.
Result
Burtons, when arriving at a Fonton, match themselves against the unresolved
token list in the deposited Lisp expression. If, after replacing the unresolved
token that matches with the value carried, a new Result Burton is created which
carries the value of the resolved Lisp expression back to its source in turn.
Final
results eventually percolate back to the socket Fonton as they must. They then
appear in the text box in the top right hand corner. (The result of a previous
calculation can be seen in the pricure above: Result=[55]).