r/beneater

Image 1 — My overengineered EEPROM programmer (+ my perfboarding technique)
Image 2 — My overengineered EEPROM programmer (+ my perfboarding technique)
Image 3 — My overengineered EEPROM programmer (+ my perfboarding technique)
Image 4 — My overengineered EEPROM programmer (+ my perfboarding technique)
Image 5 — My overengineered EEPROM programmer (+ my perfboarding technique)
▲ 50 r/beneater+1 crossposts

My overengineered EEPROM programmer (+ my perfboarding technique)

(Sorry for reposting, the images didn't show up as a carousel properly the first time and I don't know how else to fix it)

Howdy, guys. As several others seem to enjoy doing here, I've made a permanent version of my Arduino Nano EEPROM programmer module. I want to preface by saying that I didn't even watch Ben's video past where he started writing code, because I knew I could do it all on my own and then watch what he did, as that would be interesting.

Major differences:

  • I didn't even know shiftOut() existed. I used SPI COPI (D11) as my serial output and SCK (D13) as my serial clock pin, and used the Arduino SPI module to shift out bytes. You simply tell SPI the LSB_FIRST or MSB_FIRST order and clock speed, and then send bytes out. It even has a "transfer16" function that takes an int and would fill both 595's.
  • I made all my pins have configurable assignments, which will be significant in a second.
  • I made a serial interface with both a read and write function. I did take inspiration from Ben's "read" format. My serial interface asks how many chunks you want to see and prints them out, and the write interface uses a "chunking" technique that currently reads chunks that are at most 64 bits wide, before sending an "ACK" byte for the sender to respond to and send the next 64 bytes. It then reads the ROM contents back and prints error messages if certain bytes did not write properly. The hardware serial input bus is 64 bits, so you need chunking to avoid buffer overruns from data being written faster than you can write it out when you are trying to write the whole chip's 2 kilobytes. The serial buffer ends up "catching up" and dropping bytes at any speed faster than like 1200 baud, which is absurdly slow and I was not going to stand for it.
  • I actually followed the datasheet specification and made my write flashes last under 1000 nanoseconds by using register-level outputs and assembly NOP operations to make my write flashes last about 400 nanoseconds each. I didn't think I could get away with what Ben did, I kind of jumped the gun here.
  • I realized I don't even need two shift registers. One is just fine including the Arduino's digital pins. It's actually really close, but it's perfect with only one 595.

https://preview.redd.it/6t1ecczrdibh1.png?width=954&format=png&auto=webp&s=e34c9eab38a30a99ab9e7124d3c2ef331f8263d2

https://preview.redd.it/i7qhc6l8eibh1.png?width=735&format=png&auto=webp&s=b54a5fd989b8a0366a561332eb3660f63b89bd48

https://preview.redd.it/cio9pdyuzibh1.png?width=921&format=png&auto=webp&s=652a7c69bf31e4b9036f626eac5f34a89da970c9

https://preview.redd.it/g5ev7sxj3jbh1.png?width=615&format=png&auto=webp&s=59dd36195d1af7c213c1bd6be6d1d313c34ada05

https://preview.redd.it/bbqy8g1h3jbh1.png?width=485&format=png&auto=webp&s=de1e74150d52b8e41cd2f2d78232dccfc68e5f8b

A few years ago I devised a technique for perfboard planning, where I abuse KiCad, making it act like a perfboard routing simulator.

  • I created the schematic and ONLY placed the connections that were absolutely set in stone (SPI pins with SPI pins, power distribution, strict "no connect" marks on unused pins etc.) and I left all usable digital pins open, to be distributed during actual routing. This is because digital pins can just be assigned to their jobs in the software, which lets the hardware be far nicer.
  • I made the grid size 2.54 mm to enforce the perfboard geometry.
  • I made the "traces" the same exact width as my spool wire, so I could visualize how much space they would actually take up.
  • I treated the front and back of the "PCB" as the front and back of the perboard, giving me insight into where I could weave wires, though I like to avoid this.

It worked first try, which I would have hoped after all that. I hope y'all find this cool and my biggest hope is that my perfboarding technique gives others ideas. I'm sure it's been done before, but I came up with it myself and haven't seen others do something like it. I love aesthetically pleasing circuits.

u/HydroPage — 4 hours ago

No-VIA PS/2 keyboard interface with working LEDs!

I've got the keyboard working using a ATF22V10C PLD and various ICs instead of the W65C22. Scan codes/data are read and written with a data register, while IRQ status, error status, and IRQ enable use a control/status register, making it a 2-byte interface. On incoming data, the PLD raises IRQ and suppresses further keyboard input by pulling the clock low. (The keyboard will buffer it.) Reading the data clears the IRQ and input suppression. Output happens automatically on a host write. The PLD pulls the clock low, which causes the start bit (0) to be shifted on to the data wire, signaling a write. Error status checks for correct start, stop, and parity. Parity is checked for input and generated for output using a 74HC280. There is no bit-banging here! Input uses a pair of 74HC595s like Ben's design. Output uses a pair of 74HC165s. And, of course, output support comes with those sweet keyboard LEDs.

u/Ancient-Ad-7453 — 3 days ago
▲ 273 r/beneater

A moment of silence, please. 😭

I was just moving my project from one desk to another. One split second, and... disaster. Weeks of prototyping and cable management instantly transformed into an absolute rat's nest.

I honestly don't know whether to laugh, cry, or burn all these breadboards down. Accepting condolences and emotional support to find the strength to rewire everything. Press F in the comments to pay respects.

u/Hour-Creme-6557 — 7 days ago

Found a local supplier in India with almost every IC used in Ben Eater's projects (including the hard-to-find ones). Happy to help others source them.

When I first decided to build Ben Eater's 8-bit computer, I was honestly more worried about sourcing the ICs than building the computer itself.

Like many people, I searched everywhere—Digikey, eBay, Robu, Robocraze, MakerBazar, and several other online stores. Some ICs were unavailable, some were ridiculously expensive, and for a few I couldn't find any Indian supplier at all. I even saw many Reddit posts where people recommended importing parts or using alternative chips because the originals weren't available.

Then I visited a local electronics market in India... and I was genuinely surprised.

The shops there had every single IC used across Ben Eater's videos—not just the 8-bit computer series. They even had some of the exact original LS-series chips that Ben himself recommends alternatives for because they're difficult to find in other countries.

Most of them were also very inexpensive.

Since I've already built relationships with these shops while sourcing parts for my own project, I thought I'd offer to help anyone who's struggling to find components.

I'm not running a business and I'm not looking to make a profit. I just want to help people like me who were stuck at sourcing parts.

If you're building one of Ben Eater's projects and can't find the chips:

-- I can source individual ICs or complete project parts locally.

-- I'll charge only the actual component cost.

-- You cover the shipping cost from India.

-- If a shop has multiple options (different manufacturers, etc.), I'll let you choose.

-- I can also put together complete IC kits for the different Ben Eater projects so you don't have to hunt down dozens of individual parts.

If you're interested, send me a DM with the parts list or the Ben Eater project you're building, and I'll check local availability.

Hopefully this helps someone avoid the weeks of searching that I went through before discovering these local suppliers!

Edit 1: just for price comparison, I purchased all the chips(except EEPROM) for 8-bit computer for just around 2.5k/3k rs ($40). Eeproms are ($10 each 28C16 ones). I'm seeing many posts that they are very expensive on sites like digikey or mouser.

reddit.com
u/Revolutionary_Mud679 — 6 days ago

Weird ALU issue that I have no idea how to debug

I’m building and troubleshooting an ALU, and I’ve run into a weird issue.
When the B register is all 0s and the A register is set to 00000001, the SUM register is showing 01000001. This suggests the second LED is stuck high.
I traced the wiring and found that A_6 was incorrectly connected to pin 3 (which is tied to the second LED). I moved it to pin 14 of U20 (where it’s supposed to go), but then the first LED lights up instead of the second.
At this point I’m confused because:
• With B = 00000000 and A = 00000001, the SUM should be 00000001, but I get 01000001.
• When A_6 is floating, I get 10000001.
• When A_6 is connected to pin 14 (correct location), I get 01000001.
Even more strange:
• If I manually set only the second LED on the A register, the output shifts and the first LED lights instead.
• So instead of getting 01000000, I get 10000000.
It seems like the bit positions are shifting or getting swapped somewhere in the SUM output.
Final summary of behavior:
• Rightmost LED ON on A register → SUM looks mostly correct but with an extra second bit high.
• Second LED ON on A register → output shifts left, and the first LED becomes high instead.
What should I check next to debug this?

u/Blackout867 — 7 days ago

Breadboard vs PCB

I have a comment that I just want to leave here for no particular reason other than I think it might be a good philosophy…

I’ve started down the road of the Ben Eater projects, by starting with the EEPROM programmer, and have learned that it is a great idea to, as soon as I have validated the circuit for whatever module/widget you are currently working on with a breadboard, that it is a great idea (especially if I know I’m going to be using this circuit/module/widget further), to get it onto PCB as soon as possible. That way, there is at least one less layer of potential troubleshooting to do in future.

Edit: Forgot to mention that I have undertaken that as I go further down the Ben Eater rabbit hole, I undertake to make any and all circuits and PCB designs available under OSHW (probably CERN license) on my GitHub. Links to follow…

reddit.com
u/jacod1982 — 6 days ago
▲ 105 r/beneater

Just finished the clock, any tips before kit 2?

Just the title. Clock module took me about a week and I just referenced the schematic for 90% of it. The registers and ALU seem like tougher modules so just asking for any feedback, thanks 🙏.

u/Blackout867 — 8 days ago

Ben Eater 8 bit PCBs available

I just finished building the 8 bit computer from the gerber files found here. I found 2 minor issues but can confirm the board works fine. I had 5 PCBs produced via PCBWAY. I am happy to part with 3 of them. Prices have gone up it seems from previous posts on here but I had them made for $48 each delivered. I would also be able to supply most if not all of the parts needed for fabrication at cost. Most of the parts I have I bought from digikey with the exception of some of the more hard to get ones. When buying from digikey there was a decent discount for buying in bulk so I just did that. Hence the extras available. Let me know if you have any questions. I would perhaps even considering supplying a complete board if someone was interested.

One specific difference to note is that the pcb uses the 74LS76, whilst Ben uses the 74LS107. So when looking through Ben's part list you need to switch out that part. I bought my 74LS76 on ebay. I do have an extra.

I thought I would also point out that I did not build the EEPROM programmer. I bought the T48 programmer and used the github file to get the bin files. It worked really well. The bin file for the 7 segment display here is for a signed integer which limits the values to +/- 127. If you want to go above 127 you need a different bin file. I just pasted the python code at the link above into chatgpt and asked it to generate the bin file to display unsigned integers. I needed this for the Fibonacci program to run to 255.

reddit.com
u/theaddies1 — 7 days ago

LCD with a 74HC373 D-latch and an ATF22V10C PLD instead of a VIA

There's clearly a software bug with scrolling text up from the bottom, but the hardware seems to be working! The PLD runs a 3-bit cycle counter to constantly toggle E at 1/8 the PHI2 frequency. Normally, it simply reads the busy flag repeatedly. When the CPU does a write, it latches the data in the register and writes it out next time "E" goes high. A0 maps directly to RS to determine if you're writing an instruction or data, so it's only a 2-byte interface! Reading either register returns the last recorded busy flag. There's no way to actually read data from the LCD aside from the busy flag, but I can't think of a reason I'd ever need to do that.

Here's all the code it takes to write a character in the A register!

busy:
        bit     LCD::CHAR
        bmi     busy
        sta     LCD::CHAR
u/Ancient-Ad-7453 — 9 days ago

Apple 1 Compatibility with 65C21 and Arduino-Based Video and Keyboard Emulation

With a 65C21 PIA, which is still sold today on Mouser, an HC138 decoder for more granular address decoding, and an Arduino Nano to emulate the Apple 1's keyboard and video, you can modify Ben's circuit to run the entire Apple 1 software library. It was pretty cool for me to go back in time and discover some of the earliest software made for home computers. Fun upgrade if you're looking for an extension to the 6502 project!

Repo: https://github.com/The8BitEnthusiast/apple-1-breadboard-arduino

u/The8BitEnthusiast — 10 days ago

My 12MHz experiment...

The screenshot shows PHI2 in yellow and D0 in purple. This shows a RAM-to-CPU read of "1" followed by a CPU-to-RAM write of "0". That nice steep rise on the left is the read of a "1" from 15ns RAM. When PHI2 goes low, there is nothing driving the data bus, but it stays high anyway due to capacitance. (I tried a 1K pull-down and it barely moved!.)

The next clock is the 6502 writing 0 to RAM. The edge...is...really...slow.... It makes to about 1V before PHI2 goes low, the 6502 stops driving, and the RAM latches the data. This is CMOS! 1V is good enough, right? Nope, RAM inputs are TTL compatible. I need to reliably make it to 0.8V!

What gives? I know I have about 9 ICs listening to the data bus...but why doesn't it seem to matter when the RAM is putting data on the bus instead of the CPU? Checking datasheets, my RAM Ioh is -4mA and Iol is 8mA. The W65C02S Ioh is -0.7mA and Iol is 1.6mA. What does that mean? The 6502's output drive is really weak!

I could possibly fix with a 74AHC245 bus transceiver (or two, to split up the load). For now, I guess I'm going to drop the frequency until it works.

Also, I just noticed I'm getting about a 55%/45% duty cycle, which isn't helping. Wonder if I can do anything to improve that?

u/Ancient-Ad-7453 — 10 days ago

(Part 3) Issues with Register Module of the 8-Bit Series

Continuing from my last post (and thanks to u/Ancient-Ad-7453), I have uploaded a picture + video of the behaviour before adding cables.

https://preview.redd.it/rdbyuitk7g9h1.jpg?width=1200&format=pjpg&auto=webp&s=e50dbec1bcd0603a552ae15279b8ff13c7d506ea

register behavior with no cables typing

I have connected 4 red wires from the first ls173 (pins 11, 12, 13, 14) to VCC. The Enable and load were connected to VCC to start.

  • with Load set low, corresponding LEDS for pins 3, 4, 5, 6 on first LS173 connected to pins 2, 3, 4, 5 on LS245 are constantly on while LEDs on pins 5 and 6 vary on and off

first ls173 outputs

first ls173 vcc connections

I tried using the 4 red wires on the second ls173, connecting pins 11, 12, 13, 14 to VCC, starting with enable and load set to VCC.

  • With load set low, corresponding LEDS for pins 3, 4, 5, 6 on the second ls 173 (connected to pins 6, 7, 8, 9 on ls245) are constantly on, while LEDs on pins 3, 4 vary between on and off.

second ls173 outputs

second ls173 vcc connections

reddit.com
u/Short-Mongoose-1546 — 11 days ago
▲ 128 r/beneater

Dinosaur Game Version2!

I added a smooth jumping animation to my 6502 dinosaur game. I also made a git repository to store the code so you can try it for yourself!. The repository should be available at https://github.com/supergoat559/6502DinosaurGame/tree/main

This is the first git repository I've made so feel free to let me know what best practices are for that.

u/supergoat559 — 13 days ago

6502 kit

Planning on buying this kit, I saw that there were additional kits like the serial interface kit and clock module kit, are those required? I assume the kit itself would have everything but correct me if I am wrong.

As for any tools, do you recommend I get an oscilloscope or logic analyzer or etc?

Thank you!

reddit.com
u/anon_andwhat — 12 days ago