Hacker News new | past | comments | ask | show | jobs | submit login
MOnSter 6502 (monster6502.com)
121 points by replyifuagree 7 months ago | hide | past | favorite | 31 comments

Fantastic project and highly educational.

Also one of my favorite projects from recent Maker Faires.

Some other CPU projects I really liked were the wire-wrapped and breadboard TTL CPU implementations.

As an aside, I like the simplicity of NMOS design even if it dissipates static power.

And another: it's always 6502 day on HN apparently; averaging about 1 post per day for the past week at least. Probably not a coincidence, since the 6502 is easy to understand from silicon to circuits to software and it was also wildly successful commercially in real systems from the likes of Apple, Atari, Commodore, and Nintendo.

>"Some other CPU projects I really liked were the wire-wrapped and breadboard TTL CPU implementations."

Might you have some link for these?

A homemade 6502/65c02/6510/65816 with TTL that can run at 20 MHz: https://c74project.com/

Check out the Gigatron project. This video details its implementation: https://www.youtube.com/watch?v=QUfdASs82Lw

It was the first assembler that I learned and thus have a big soft spot for it. But I never actually owned a 6502 based computer. My first machine was a Z80 based ZX Spectrum.

Personally I think the 6502/6522 architecture is about the most perfect entry point into learning low level coding and hardware interfacing

> Is there going to be a soldering kit version of this?

> No. (But on the other hand, "Anything is a soldering kit if you're brave enough!")

No kidding - hand-soldering a few surface-mount components is hard enough, let alone 10,000 of them! Though I suppose you'd get very good at it by the time you were done. Maybe 20 components per day for 500 days or something.

As it turns out, surface mount soldering is actually easier than through-hole! The difference is a matter of technique, a simple but perhaps not immediately obvious one. And some stuff to help with it.

Liquid solder flux is key. The core of the method: Melt a small blob of tin onto a solder pad. Solder flux is applied to tin blob. Hold component to blob with tweezers. Melt blob with iron. Component will now stay put. Apply solder to the other pad. Done.

This makes use of the solder's surface tension and adherence properties; The solder only wants to stick to hot metal surfaces, and surface tension will actually align the component on the pad. Very clever! The step that adds flux is there to allow us to re-melt the solder, have it flow well, and crystallize correctly when it cools (so no cold joints).

Chips are soldered with a logical extension of the technique that further employs the solder's preferences for sticking to this and flowing like that :)

After having been taught this, I now find through-hole much more of a hassle. It's nice to be free of the hole-poking and board-flipping and leg-snipping. And it's nice to be able to avoid the increased circuit noise that the superfluous metal brings (the legs are effectively antennae!).

Here is where I learned: https://store.curiousinventor.com/guides/Surface_Mount_Solde...

The trick to doing smd soldering is reflow. On all budget all you need is a hot air gun, if you put solder and flux on the pads manually before placing the components. With a stencil and solder paste you can save the time tinning the pads, and placing a component every few seconds is quite possible. So if you work really hard and quite possibly break your back you can assemble this board in a day :)

If you're working with stencil and paste, my understanding is that paste only has a few hours of working time once it's applied, so you have to assemble it in the day.

Another discrete transistor CPU also notable for its scale is the Megaprocessor:


As a boy I had a Franklin (early apple clone) which I think had some variant of the 6502 processor.

Getting software written for the Apple II to run was difficult. On one of the early King's Quest games I figured out I could get it to run if I pulled the disk out partway through the load and then put it back in.

I mean, totally worth the research effort because it was King's Quest after all!

That sounds like one of the oddities in retro-computing that could be enormously fun to investigate in detail, if reproducible.

Unfortunately, I don't have or ever had a Franklin, and acquiring one just for that would be a bit much (with no other interest in the machine besides that, it would also be a waste).

I once bought an Apple II just to resurrect one old floppy disk. Many things went wrong, and I actually ended up buying two of them, and a bunch of other stuff, before it was all over. The story is here:


That was a good read, thanks. And good job on successfully preserving that floppy in the process!

Makes me wonder if the individual bits on an old floppy could be picked up by magnetic film. If that had sufficient resolution, you could then just photograph the film, and do some image processing to read the bits. There's a bit of work to then decode the actual data.

Not quite "picked up by magnetic film", but nowadays it's very common do use things like KryoFlux, which essentially reads the magnetic flux changes on a very low level, and therefore provides a very detailed (for almost all intents and purposes: 100% faithful) image of the actual disk. Not just its filesystem or any other higher level.

Reading in a disk drive is also usually entirely nondestructive (barring any mechanical issues), so that's a very good solution already.

If I recall correctly, the Franklin Ace used the standard MOS 6502 processor. The biggest problem was that later versions, post-lawsuit, couldn't just copy the Apple ROMs which may have been where the incompatibilities lay.

This is too cool.

I have been thinking of an overwhelmingly cheaper, weenier version. In place of discrete transistors, it has a microcontroller—say, 40 MHz ARM?—and LEDs showing register contents, and a ribbon cable to a 40-pin DIP plug. It watches the clock pin and, on edges, sets output pins and executes just enough of the current instruction to be ready for the next edge.

It would be fast enough to plug into the socket of a real machine, e.g. Apple ][. Probably it should have pause, single-step, and run buttons.

They used to actually sell things like this for what would be $50k, made with TTL logic.

Another alternative would emulate the whole Apple ][, maybe with a bus that could drive real perpheral cards? Or a socket for a real floppy disk drive? Without the connector, a pure software emulation would suffice.

Ben Eater builds and explores a 6502 computer on a breadboard in his fantastic YT series and build-kit: https://eater.net/6502

I was curious about this passage from the FAQ:

>"Is it truly a "discrete 6502?" Not in the strictest sense. However, it really depends upon how picky you would like to be. The MOnSter 6502 uses the original dynamic NMOS logic design, implemented at the individual transistor level.

Dynamic NMOS requires a large number of "transmission gate" transistors that are used to switch currents. For various technical reasons, only a 4-terminal MOSFET can make an effective NMOS transmission gate. Unfortunately, individually packaged 4-terminal MOSFETs are no longer commercially available. However, they do still make arrays of 2 or 4 MOSFETs on a single chip with a separate substrate pin. We used the 4-pack version — These are the quad transistor array chips that we mentioned earlier.

Because these transistors do share a pin, there are (strictly speaking) integrated circuits in the MOnSter 6502. However, one might credibly argue that it is a discrete transistor design since there are not (for example) any logic gate chips in the circuit."

Is a shared pin really the big distinction? On a discreet circuit surely multiple components still share the metal traces on a PCB no? Perhaps I'm misunderstanding the meaning of discreet CPU?

Looking for 4-terminal MOSFETs in a deep rabbit hole, so let me safe everyone else the trouble: MIC94031, SST215, MIC94051, SST213, MIC94030, SST211. $3+ ea

Discrete parts have one electrical component per package. A surprisingly good description at pcmag: https://www.pcmag.com/encyclopedia/term/discrete-component

Because the Monster 6502 uses 4-transistor packages, they can't claim their design is 100% discretes.

However, these are separate transistors with a shared substrate. It's not easy to call them integrated circuits either! It's a gray area.

To muddy the waters further: early 'integrated circuits' were actually thin film circuit boards with discrete components on them wired together for common functional blocks. They either had all their pins on one side allowing for vertical mounting or the now much more common dual row of pins.

A discrete cpu means "no integrated circuits". So the question answer on "does a piece of silicon where the transistors share a pin count as an integrated circuit?"

By the most strict definitions, it does count as an integrated circuit. But really, not _that_ integrated.

Thinking about doing this with a modern CPU reminds me of the ancient claims that a computer powerful enough to do some task would require Niagara Falls as a cooling unit.

Bravo to this project!

> The primary limit to the clock speed is the gate capacitance of the MOSFETs that we are using, which is much larger than the capacitance of the MOSFETs on an original 6502 die.

A BJT/TTL conversion would be very interesting.

TTL is probably not doable (discrete transistors with multiple emitters are basically nonexistent) but DTL is definitely feasible, although it would increase the power dissipation greatly.

You can make a multi-emitter transistor out of multiple transistors by tying their bases and collectors together.

I would use DTL rather than to use a pretend multi-emitter transistor made like you suggest because the emitters tend to be used as gate inputs and you will have subtle differences in bias voltage when doing it your way that could completely screw out the output of the circuit. Better to replace the gate in its entirety by something functionally equivalent rather than the transistors.

Discrete transistors have never been cheaper so this is more practical than it's ever been. (Not sure how the current semiconductor shortage has affected things...)

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact