Compared to all the other machines around us, the most unique feature of the digital computer is its amazing versatility. How does a machine with a finite hardware perform seemingly infinite array of tasks, from games to word processing to scientific simulation?
A computer can be described , abstractly, by specifying and demonstrating its machine language capabilities. Seeing some low-level programs written in machine language helps us understand not only how to get the computer to do things, but also why its hardware was designed in a certain way. Machine language is the most profound interface in the overall computer enterprise—the fine line where hardware meets software. This the point where abstract thoughts and symbolic instructions are turned into physical operations performed in silicon.
The most elementary sequential chip in the computer is a device called a flip-flop. There are several variants of flip-flops. In this project, I've used the variant called a data flip-flop or DFF. Its interface consists of a single bit data input, and a single-bit data output. In addition, the DFF has a clock input that continuously changes according to the master clock's signal. For the purpose of this project, DFFs are treated as primitive building blocks from which all other memory elements are built.
All the Boolean and arithmetic chips built so far have been combinational. Combinational chips compute functions that depend solely on combinations of their input values. These relatively simple chips provide many important processing functions (like the ALU) but they cannot maintain state. Since computers must be able to store and recall values too, they need memory elements that can preserve data over time. These memory elements are built using sequential logic.
The chips built thus far have been generic, i.e. their designs are universal and would hold for any computer. The ALU is the first bit of proprietary chip added into the mix. There is no universal way of designing an ALU. It all depends on product requirements.
All computer chips are made from the same building blocks: elementary logic gates. A logic gate is a physical device that implements a mathematical logic (Boolean) function. The simplest example of a logic gate is the `NOT` gate. It takes a single input and outputs its inverse. If the signal is ON, the inverter outputs OFF and vice versa. These gates can be constructed in many different ways but their logic behaviour remains consistent across all computers.
Daisy is a 16-bit computer equipped with a screen and a keyboard. It resembles old school handheld computers like Gameboys, PDAs and mobile phones.