Wanted – State Machine Games

(This post was written as a general call for designs of state machine-based puzzles and games – some of the descriptive information is redundant with information available elsewhere on this site.)

I am developing an electronic educational device with the following purposes;

  1. teach digital (Boolean) logic through visual-tactile experience
  2. impart necessary metaphors to enable the learning of software
  3. give learners the ability to conceptualize and build functioning state machines.

I have built a few rough prototypes and use them at student hackathons to experience how students learn. The original design was more dense than those prototypes and will have important features that I can only describe in the absence of the ability to show.

My goal is to raise enough interest among potential users to crowd-fund the initial production run of devices, as well as to start others working on designing the remote mentoring capability that will be able to function through the product.

My model is the development of the personal computer – a development in which I was heavily involved. Perhaps it is because of that personal involvement that I find that I had, until recently, missed a very important aspect – the marketing element, which I define as “selling of the idea”.

In the case of personal computers this started ten years before the first “Altair” personal computer kit was introduced to the market in 1975. Kemeny and Kurtz introduced the Interpretive BASIC language enabling people to program computers in real time in the most nearly conversational language available. When it ported to early timesharing computers and made available on line it offered the experience of direct hands-on, interactive use of a computer without intermediation.

Timesharing provided the body of experience upon which rested the popular understanding of personal computing. This was proven when the general response to the introduction of Altair BASIC as an extra-cost after-market item was to copy the software and to pass it around.

This was denounced as an act of piracy at the time but when one looks at it from the users’ perspective one can see that their understanding of a personal computer was that it included a language like BASIC. Interestingly, the resulting proliferation of free Microsoft BASIC, while it killed its retail market, foreclosed any competitor’s chances in the software market, retail or wholesale, and assured its dominance.

When I contemplate applying the analogy of personal computer development I see that the “marketing handle” for my device does not yet exist. Looking at the earliest users of those time-shared “personal computers” we can see that much of what they did was to play games – a natural human tendency. Books were written of computer games written in BASIC and sold well among the users of that generation of computers.

What is missing for AndOrBit is an equivalent opportunity for people to play with this new device and systems that can be built with it. The device provides a way to design hardware state machines, which are the smallest, simplest computers imaginable. How can we offer the opportunity for learners to play puzzles and games with this hardware?

I am therefore appealing to those people who have the capability to design puzzles and games for this state machine platform to do so. Specifications and physical description follow below.

Introduction to the device

The AndOrBit learning device is a re-engineering of the first generation of “programmable logic devices (PLDs)” that appeared on the market in 1978. Users implement Boolean logic equations using tweezers to insert small electronic components – diodes – into holes in a matrix. These equations produce one bit of output – true or false – from a combination of eight inputs and eight output bits, and each equation controls the state of one of the output bits. Inputs come from eight switches on the board and the outputs are displayed as eight LED lights. The transition from each state to the next is controlled by a pushbutton switch, as is a global reset function.

Each output is controlled by its own matrix according to the equation defined by diodes placed into matrix holes. Each equation can have up to eight “terms” made up of any combination of inputs and outputs – the elements of each term are defined by the selected signals connected by the “and” operator. This means that all of the selected inputs or outputs must be “true” for the term to be true. All eight inputs and outputs are available to the matrix along with their inverse values (the “not” operator), so the term can be determined by as few as one of 65,536 possibilities.

Each matrix has eight terms which may be combined using the “or” operator, as determined by diodes placed by the user into a special column of holes in the matrix. The resulting “and-or tree” is a general form of Boolean logic to which a large variety of logic relations can be reduced. It is not universal – that would require an infinite number of terms – but it permits the implementation of a very large number of possible logic combinations.

A switch selects each output to be implemented either as a latch – triggered by a common “clock” signal or pushbutton – or as a buffer – a direct output of the state of the matrix, which is not timed by the clock signal and changes as soon as the matrix inputs change. By “borrowing” one output we can double the number of terms for selected output.

Additional Features

AndOrBit has a 48-pin data connector which allows external electronic devices to be connected. Sensors as simple as a switch can be connected as inputs and LEDs can be connected as outputs. There are catalogs of simple robotic devices that can be connected through a CMOS or TTL connection.

Just like its precursor chips, AndOrBit units can be connected to each other through this connector to create larger functional elements – up to and including a full minicomputer (a memory board would be needed and operation would be closer to the minicomputers of the 1960’s in that case).

The clock signal can be generated by pushbutton, from an external source (through the connector) and from an oscillator controlled by a slide potentiometer on the board (allowing slow increase of clock frequency to observe fine-grained events merge into larger events as the frequency is varied.

Finally, there is a “mentoring port” as part of the connector that allows a specially-programmed external device to examine the behavior of each matrix and to set the register to a desired value. This allows for Web-based mentoring through an externally connected computer.

One Suggested Configuration

After some discussion I can propose a user-interface configuration that may help in design:

For a two-player game we can have two sets of up to four input switches, one for each player. Each set of switches can have up to four LEDs displaying the state of the other player’s switches, if desired.

Each player can also have one or more of the output LEDs at their location. One suggestion would be to have one LED for each player as a dedicated indicator of “Yes/No”. There may have to be one additional output LED dedicated to “game over”.

A pushbutton that would activate the “Clock” signal can be made available to both players.

Lee Felsenstein

Leave a Reply

Your email address will not be published. Required fields are marked *