An Altair 8800 style machine designed to implement the “COW” programming language. It’s a really simplistic language, but is technically Turing complete. The machine itself is powered by a Arduino Mega (more for the IO pins then the actual processor)
Original Project Homepage A copy of that content is below:
Moo Machine: Experience the First Microcomputer Interface.
Description: Toggle switches and LEDs were the interface for the first personal microcomputer, the Altair 8800.
Two physical Moo Machines will be available for hands-on demonstrations. The first machine will be a scale-model of the Altair 8800. The physical layout and experience will attempt to match the Altair 8800 as closely as possible. A second machine will be a scaled down portable version, maintaining as much of the interface of the full scale model as possible.
The Cow Programming Language will be used in lieu of the original 8080 machine language of the Altair 8800.
Hardware The Moo Machine is based around the Arduino Mega development board. An overview of the electrical components can be located here. The digital input and output pins on the Arduino are all that is necessary for the user interface. The input circuits is a pull-up design, with debouncing logic contained within the code. The outputs are simple LEDs. The Arduino Mega (ATMega 1280) provides enough input and output pins directly for the project.
The support circuitry for the Moo Machine is fairly simplistic. The left diagram shows a standard input circuit, which will be replicated nineteen times for each toggle switch. It is a standard pull-up configuration for both sides of the switch.
The output circuits are represented by the right side of the diagram. Those circuits will be replicated 26 times for the various LED outputs for the project.
The interpreter and interface logic was written in C, using the Arduino libraries and IDE. More information is available at http://www.arduino.cc/. The Arduino Mega is the target platform.
Source code for the version I demonstrated is located on Github, specifically for version 0.9. The full repo is at https://github.com/ssmiller25/moomachine/
The Moo Machine uses the code integer for instruction entry and display. Most program demonstrations use the actual instruction, which is easier to read.
Code Instruction Description 0 moo This command is connected to the MOO command. When encountered during normal execution, it searches the program code in reverse looking for a matching MOO command and begins executing again starting from the found MOO command.