8 digit, four function calculator built from 4̶0̶0̶ 500 relays and q̶u̶i̶t̶e̶ ̶a̶ ̶l̶o̶t̶ ̶o̶f̶ ̶d̶i̶o̶d̶e̶s̶ hopefully no diodes
So it turns out I absolutely hate wiring diode arrays, and I would like to display all three registers, not just the input register and accumulator. (I was able to rework things to get it back down to three registers).
The seven segment LED display would require over 1000 diodes and I just don't care to do that.
So instead I've found a good deal on 24x IN-12B Nixie tubes and sockets and will use those instead. That eliminates the last few diodes and any semiconductors in the entire project.
In other news, I calculated that the core of the calculator, which can multiply two single digit numbers and then add another single digit number to the product, and then convert the binary result to BCD, will take 87 relays. It has a 34 relay latency that data has to propagate through. I measured the switching time of the relays I'm using in this part to be about 15ms, so it will take approximately half of a second for a signle digit calculation to take place.
This means that an addition or subtraction will take 4 seconds, a multiplication will take 4 seconds per multiplier digit (32 seconds for 8 digit x 8 digit) and a division, (which uses magnitude comparators, shifters, and counting subtraction) will take a maximum of 320 seconds (99999999/1) but will typically be much less.
I just wired and tested one diode array used for decoding the 1 of 10 signal to the what the seven segment displays need. It took a long time.
The parallel multiplier was going to use diode arrays as well, but I am not keen on using 40 relays and 768 diodes. I looked into the double dabble algorithm and it actually seems pretty simple to do with eight +3 adding circuits with no output carry. Best guess is maybe 60-80 relays for a parallel multiplier and double dabbler, which will also cut down the amount of relays required in the adder.
I'm hoping to make at least 4 single digit additions or multiplications per second, which would allow for a complete 8 digit by 8 digit addition to be made in 2 seconds and a multiplication to be made in 32 seconds.
Also I think I may need four registers, not three.
And just like that, I have run out of relays.
I currently have all of the DPDT relays laid out on a board that handles the decoder logic for the 7 segment displays. I'm cheating here and converting BCD to 1 of 10, and then using diodes to drive the segments. I just don't have enough relays to do it properly. The multiplier section and divider section will work the same way. (Binary parallel multipliers are actually easier to make than binary parallel adders, but making it BCD makes it impractical. I could make a binary to BCD converter but it would require either 8 parallel BCD adders or would take way too long to do any math).
The SPDT relays are laid out on a board in an arrangement of three 8x4 registers. Two of the registers can shift right with the help of some 4PDT relays not yet on the board, and the remaining register can shift left and right, to accommodate user input arriving with the most significant digit first. I have 2 digits worth of registers wired as a test, as well as one digit of the display.
A long time ago I built a one digit BCD adder using 19 relays. I expect to add three digits together with 36. The multiplier and divider will share something like 38 relays and more diodes than I want to think about right now. Hopefully I don't run out of relays, but I know I will. I always do.
I have schematics but I make the schematic after I make that part of the circuit for some weird reason so they will be delayed. Here is a glimpse of it though.
Using some sort of light table is really helpful to keep track of what all of the pins connect to. This is the backlight to an old monitor.