Why?
There's really no good reason behind this project, but it was a fun exploration of computer systems and a fiun way to show that Turing Machines are suffciently complex for all computions. Due to the constraints of a Turing Machine, even simple instructions require much effort to implement. Furthermore, the lack of random access memory means that many features of modern languages are simply much less effcient on a Turing Machine.
Architechture
The machine simulates a CPU with a minimal control unit and ALU. The control unit has a flag to denote its execution state (between fetch and execute), an instruction counter and instruction register akin to a typical Vonn Neumann machine, as well as a ``clock'' for keeping track of internal execution. The ALU only operates on 2 auxilary registers, but can perform any of the supported operations.
AssemblyTM
In order to streamline the development process and sidestep the tedium of writing Turing Machines, I developed a simple architechture in order to implement instructions as a collection of even more atomic operations, along with ``compiler'' that turns the written script into Turing Machine circuitry. The result is a basic instruction set resembling those of microprocessors, which greatly aids the translation process.
Log in or sign up for Devpost to join the conversation.