These must be connected to +5 and ground, respectively. It is also good practice to place a decoupling capacitor (0.1uF or 0.01uF is good) on the power rails near the Vcc connections.
## Ben Eater EEPROM Programmer
If you are here because you built the [Ben Eater EEPROM
Programmer](https://github.com/beneater/eeprom-programmer), note that the designs are
similar, but the TommyPROM code will not run on that hardware without some significant
changes. If you just need to unlock the Software Data Protection (SDP) on a chip, then
see the
[unlock-ben-eater-hardware sketch](https://github.com/TomNisbet/TommyPROM/tree/master/unlock-ben-eater-hardware) for a solution. That sketch is purpose-built to run on the Ben Eater
hardware directly and it will not work with the TommyPROM hardware.
If you want the functionality of the TommyPROM software on the Ben Eater hardware, the
easiest path is probably to modify the hardware to match the TommyPROM software rather
than trying to change the pin assignments in software. There are a few reasons for this:
* The Ben Eater hardware uses D13 to control the ROM's Write Enable pin and it ties the
Chip Enable pin to always be active. The D13 pin is connected to the Arduino's built-in
LED, which blinks at boot. This means that the chip is likely some writing random data at
boot time. This isn't a problem for the Ben Eater sketches, because they always write
their own data to the chip anyway. One use of TommyPROM is to just read data from a chip,
so a random write on boot would be bad.
* The OE pin is controlled by the Address shift registers. This doesn't work well with
the modular architecture of TommyPROM and it definitely would not work with 74LS164s
because it would toggle the OE pin as new addresses are shifted in.
* The direct port write software is a bit complicated and is more difficult to change than
just renaming a few pin #defines. This was done for performance reasons, particularly
for the SDP timing, but it means that the code is not easy to change.
Changing the hardware is fairly straightforward. The data lines move 3 pins from D5..D12
down to D2..D9. Most of the ROM and shift register control lines move over to the A0..A5
pins. The upper shift register is controlled directly from the Arduino instead of being
connected to the overflow of the lower shift register. All of the connections are in the