Skip to main contentMoomachine
- 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.
- 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.
- 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.
- Below are several example programs. Please refer to the language reference. For debugging purposes, use the Cow Language web implementation at http://www.frank-buss.de/cow.html
#Hello World (from http://www.c2.com/cgi/wiki?HelloWorldInManyProgrammingLanguages
[[ H in first memory position - 72 in ASCII ]] MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO [[ Print Current Memory Position ]] Moo [[ Add an additional 29 for the "e" - 101 ]] MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO [[ Print Current Memory Position ]] Moo [[ Add 7 more for the "l" = 108 ]] MoO MoO MoO MoO MoO MoO MoO [[ Print current twice for "ll" ]] Moo Moo [[ Add three for the "o" = 111 ]] MoO MoO MoO [[ Print ]] Moo [[ Reset memory to 0 ]] OOO [[ Add 44 for the "," character ]] MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO [[ Print ]] Moo [[ Add 116 for non-breaking space " " - 160 ]] MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO MoO [[ Print ]] Moo [[ Subtract 41 for "w" - 119 ]] MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo MOo [[ Print ]] Moo [[ Subtract 8 for "o" = 111 ]] MOo MOo MOo MOo MOo MOo MOo MOo [[ Print ]] Moo [[ Add 3 for "r" = 114 ]] MoO MoO MoO [[ Print ]] Moo [[ Subtract 6 for "l" = 108 ]] MOo MOo MOo MOo MOo MOo [[ Print ]] Moo [[ Subtract 8 for "d" = 100 ]] MOo MOo MOo MOo MOo MOo MOo MOo [[ Print ]] Moo [[ Reset current memory back to zero ]] OOO [[ Add 33 for "!
- 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.