Building the button panel using T flip-flops. The panel has to save the user's inputs after they are unpressed.

Making the binary encoder. The binary encoder converts each decimal number (0-9) to a 4 digit binary number.

Making the subtractor. Each input is fed into a XOR gate which acts as a toggleable inverter. When subtraction mode is on, the signals are inverted!

Making the binary adder, shown in green. I built one adder block for each digit.

Making the binary decoder. The possible outputs of the calculator range from 0-18, so I needed 19 decoder blocks.

Each decoder block is made using AND and NOT gates which test for a particular state of binary digits.

Hooking up the 7-segment display. I need a two-digit display, leading to 14 distinct outputs.

Encoding the 7 segment display based on each decimal output.
