MOnSter 6502: a working transistor-scale replica of the classic MOS 6502
monster6502.com
monster6502.com
Complete working transistor-scale replica of the classic MOS6502 microprocessor - https://news.ycombinator.com/item?id=33841901 - Dec 2022 (38 comments)
MOnSter 6502 - https://news.ycombinator.com/item?id=26507525 - March 2021 (31 comments)
The MOnSter 6502: transistor-scale replica of classic MOS 6502 microprocessor - https://news.ycombinator.com/item?id=17969472 - Sept 2018 (81 comments)
A working, transistor-scale replica of the MOS 6502 microprocessor - https://news.ycombinator.com/item?id=14386413 - May 2017 (44 comments)
The MOnSter 6502 - https://news.ycombinator.com/item?id=11703596 - May 2016 (74 comments)
The team behind this project sells kits for two classic ICs, the 741 op-amp [1] and the 555 timer [2]. Sadly, they've said the Monster6502 is too big and complex to make a practical kit.
[1] https://shop.evilmadscientist.com/tinykitlist/762 [2] https://shop.evilmadscientist.com/tinykitlist/652
The current iPhone processor (Apple A17) contains 19 billion transistors. So now we have 126 acres in a pocket.
I've said it before: I would totally buy one of those just to hang on my wall. It's a truly awesome project, and I love blinkenlights!
We used to have circuits, and when integrated on one piece of silicone, we called them "integrated circuits", while the old ones became "discrete circuits".
Actually pretty cool that it's able to get 1/20th the speed when it's this big!
I guess someone would have to see how similar it is to a vanilla Apple ][.
A Laser 128 isn't that fundamentally different to an actual Apple II. In fact, from a wider point of view, they are "almost identical".
DRAM needing timely refresh is universal to DRAM itself: It's because DRAM is literally made of a transistor and a capacitor holding your bit, and if you don't access it every so often, that capacitor discharges eventually. The most realistic path to "slow DRAM" would be to replace DRAM with SRAM altogether, which is effectively made of transistors only, and holds its content as long as just power is applied. It's not that hard to replace DRAM with SRAM: Apart from not needing refresh, SRAM behaves similar to DRAM. It's just more expensive (and usually faster, which is also not a drawback), and the DRAM refresh, while not doing anything useful, wouldn't hurt.
But as for video output, that's just a consequence of how Apple II's (most microcomputers of that era, actually) video output works: By literally controlling the electron gun in the CRT, with only some analogue electronics in between. The monitor however wants to move the electron beam at a certain speed (or, if you had a fancy Multisync monitor, a set or range of speeds). But even if that wasn't the case, the phosphor on the screen glows only for a short amount of time, so draw your picture too slow, and you will only see small parts of it.
The latter can be demonstrated by just pointing a camera at a CRT. In all likeliness, the camera's frequency will be slightly off from the CRT's frequency, so that you capture different parts of the beam's path at each frame, simulating what it would look like if you'd slow down the beam itself: https://pub.mdpi-res.com/sensors/sensors-22-01871/article_de...
Would it be possible to decouple the video output circuit from the microprocessor's timing? Absolutely! And this is in fact what virtually any modern computers has been doing for many decades by now: Even if you still can find analogue VGA with a CRT, that VGA card had its own clock that is completely independent of the CPU's clock. But that's just not how simple home computers of that era usually operated.
There were accelerator boards, but they ran at integer multiples of the original clock speed for that reason.
There was a moment many years ago when I considered constructing a mechanical 6502. I quickly learned that transistors are fabricated in silicon for economic reasons.
But if you'd take a long exposure photo of the CRT, it would likely work! (EDIT: Might fry your phosphor, though... as for any other components, like filters or components that may get damaged by the now only slowly changing current, I just assume you replaced or retuned that as part of the conversion process.)
https://en.wikipedia.org/wiki/Phosphor#Standard_phosphor_typ...
https://tubetime.us/index.php/2015/10/31/crt-phosphor-video/
http://www.labguysworld.com/crt_phosphor_research.pdf
The P10 phosphor there claims "Persistence from several seconds to several months"(!)
http://www.apple-iigs.info/doc/fichiers/TheappleIIcircuitdes...
However, I wouldn't be surprised in the slightest if any other of the integrated circuits don't work at the slower speed for some reason. (Filters etc. you'd just replace/retune.)
There are an excellent series of talks at CCC titled "The Ultimate X talk" [0] where you are shown exactly how. I recommend The Ultimate Acorn Archimedes Talk [1] which introduced the ARM chip, but also shows how shared bus access and optimisation was the core principle of performant designs at the time.
[0] https://media.ccc.de/search/?q=the+ultimate+talk
[1] https://media.ccc.de/v/36c3-10703-the_ultimate_acorn_archime...
Also disk I/O and RS-232 are bit-banged.
You could easily slow that down as well.
The big problem is really the CRT (and possibly other ICs in the computer that don't like the extreme slowdown). As noted below, if you went through the arduous process of replacing and retuning components to be able to slow the beam down, your phosphor coating is still too fast, and probably doesn't like having the beam passing only slowly over it. (You thought regular burn-in was bad!)
However, replace the CRT with something else, like an LCD with some extra buffering circuit, and it could work. Yes, the color burst will be at a much lower frequency as well, but just demodulate color at this lower frequency, then.
https://en.wikipedia.org/wiki/CDC_6600
60 bit, 10 MHz processor, introduced in 1964.
Article says that was 10 times faster than other contemporary machines; but that still leaves those at around a solid megahertz.
Discrete logic circuits can be fast because they have a lot of area over which to dissipate heat and can guzzle current.
Ram takes so much space.
I remember a Minecraft mod from way back that let you do "modular" redstone, going "into" blocks to build redstone inside them, which you could then reuse as a single block. I wonder if it's been updated.
... but not too fast either, because the long trace lengths are antennas so you'll end up in EMF emission regulations hell on the one side, and signal integrity issues on the other side. On top of that come losses from inductive and capacitive coupling.
Moreover, most of them used either ECL or TTL, which are logic families much faster than P/N/CMOS. This being a transistor-level replica of an NMOS 6502, it can't go much faster.
> No; it's relatively slow. The MOnSter 6502 runs at about 1/20th the speed of the original, thanks to the much larger capacitance of the design. The maximum reliable clock rate is around 50 kHz. 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.
Now I'm curious but in way over my head.
Could the speed be improved by using MOSFETs with better capacitance?
Can the full 1.023 Mhz be attained by throwing money at it or are there physical limitations at that scale?
> Could the speed be improved by using MOSFETs with better capacitance?
Not using MOSFETs would make it faster, in theory. MOSFETs have a delay time and are considered slow. But it appears they want to be true to how the original was made. There definitely exist mosfets indistinguishable from dust - I made the mistake of designing with a few at one point. So probably, yes.
Another thing I noticed is that the distance between the components on the board is quite high. They might have done that to replicate the original layout, or maybe I'm just not seeing it correctly. But everything - including the traces on the board - has some capacitance.
> Can the full 1.023 Mhz be attained by throwing money at it or are there physical limitations at that scale?
Hard to answer without measuring, though I'd imagine it's possible. 1MHz isn't that fast, but if you have high capacitances or they don't switch fast enough (e.g. MOSFETs) then your signals are going to get muddy.
EDIT: to be clear, not ragging on the project. This stuff is beyond cool.
My understanding is that the MOS 6502 was MOS, so MOSFET. Not using MOSFETs would make it less of a replica.
Implementing the replica in an integrated circuit instead of discrete transistors would lower capacitance.
The delay time is a consequence of the capacitance.
It makes me wonder, what transistor family would give you the best performance for this (very unusual nowadays) use case? Obviously not MOSFETs.
From what I understand, germanium transistors were most common for 2nd generation computers, because (at the time) silicon transistor technology wasn't sufficiently mature to be used for that application.
But it would need something like 2 to 4 times the surface area, and would make a nice room heater.
For those too lazy to do the math: the original did 1 MHz to 3 MHz.
Note the units -which I missed the first time- kHz vs mHz.
The gate capacitance is 20 pF. One logic gate output is typically driving several inputs, so the typical load is several-fold of this capacitance. One could check the schematics for the maximum fan-out in the real circuit. The longest, one foot long traces on the PCB add another few tens of pF. So the capacitance seen by an output of a logic gate will probably be in the range of 20-100 pF most of the time. But it is the slowest gates which determine the speed of the whole circuit, so the worst case could be much worse.
These transistors themselves are extremely fast and can switch on and off in about 3 ns. Their channel resistance is in single Ohm range even at the lowish gate voltages, so the RC time constant is also very small 100pF * 3 Ohms = 0.3 ns. Thus this is also not an issue. The slowness of the circuit comes from elsewhere.
First, from the resistors which pull the logic gate outputs to the supply voltage. There is one for each logic gate, so a total of one thousand of these, and in the first approximation half of them conduct at any given time. To keep power consumption low, these resistors must have relatively high resistance values. If we limit the current for the logic to 1 A total, that is 2 mA for each of the 500 resistors. Therefore the resistors must be 2.5 kOhm for 5 V supply voltage. Thus charging of the nodes of the circuit through these 2.5 kOhm resistors is almost a thousand times slower than discharging the same nodes through the 3 Ohm channel resistance of a fully open transistor. Still, this is not too bad -- on the order of 250 ns of delay per gate.
But the frequency for the whole circuit is determined by delay not through just one, but through many gates in series, plus there are probably parts of the circuit topology which are not optimal for implementing them with discrete transistors, where the delay does not follow from such a simple reasoning as above.
The speed can probably be easily increased by an order of magnitude if one were willing to spend 50W instead of 5W for the circuit. Beyond that, one would want a CPU circuit designed specifically for implementation in discrete transistors, not a discrete element copy of a monolithic chip.
6502 was my first CPU so I'm totally down to buy one, even though it's going to be pretty expensive. I'd be pleased if they could make them for less than $5k.
[1] https://www.masswerk.at/nowgobang/2021/6502-illegal-opcodes
The next time I have some time, I would love to do a discrete RISC-V, but I know how big a project this sort of thing is.
I also implemented them in a bunch of different FPGAs, though that is less relevant here.
Glacial is an 8 bit processor optimized to emulate a 32 bit RISC-V and SERV is a serial implementation of a 32 bit RISC-V. They save transistors at the cost of many clocks per instruction.
There are several projects that implement RISC-V using TTLs but I have not heard of one using individual transistors.
Reminds me of the Megaprocessor project.
The fact that it actually works is just bonus.
Gigatron is a retro 8-bit computer with no microprocessor. Instead, its processing is done through thoughtful application of “TTL” logic chips. It’s another project that helps you “see” the processor’s internals. Kits aren’t for sale anymore through the official website, but you can find unpopulated PCBs and the components shouldn’t be hard to find.
when would it have been state of the art?
I think it's a question of mm rather than nm!
But I think IBM's SLT from the 1960s might come close: https://en.wikipedia.org/wiki/Solid_Logic_Technology
Those little square "chips" are not actually integrated circuits, but effectively small PCBs with surface mounted discrete components (including transistors).
So this “hybrid” of having SMT components in a can by IBM seemed close.
Happy to learn more!
I'd have put it around 1963. Before DTL chips, introduced in 1964. Non-military TTL came along in 1966.