Building a 6502 Simulator in Python (Part 2)
From a 12-instruction teaching CPU to a full MOS 6502 emulator, inspired by Ben Eater’s breadboard projects.
Why the 6502?
The MOS 6502 is the processor that defined home computing in the late 1970s and early 1980s. It ran the Apple II, the Commodore 64, the Atari 2600, and the Nintendo Entertainment System. It powered the first affordable personal computers and launched an industry.
What makes it perfect for a simulator project:
Building a CPU Simulator in College (Part 1)
The original MM1 processor simulator: a custom instruction set architecture built in Python as a student.
The Assignment
In 2004, week 5 of the Modeling Motion program introduced something unexpected: we weren’t simulating springs or epidemics anymore. We were building a computer from scratch, in software.
The assignment was to implement a simple processor simulator. Not a real CPU architecture like x86 or ARM, but a custom one designed for teaching: the MM1 (Modeling Motion 1). It had 8 registers, 64 words of memory, a 12-bit instruction format, and just enough instructions to write meaningful programs.
Modernizing Legacy Code: From 2004 VPython to Python 3.14
Taking old college physics simulations written twenty years ago and getting them running on modern Python.
The Time Capsule
In 2004, I was a student at The Evergreen State College in a program called Modeling Motion. We wrote Python simulations of physics phenomena (springs, gravity, epidemics, particle collisions) using a library called VPython. I was learning physics and programming simultaneously, translating equations of motion into running code for the first time.
Building a Computer on Breadboards (Ben Eater Project, Log 1)
I’m building a computer. Not assembling one with a screwdriver, but building one from logic chips and wire, on breadboards, following Ben Eater’s legendary project series. First up: the clock module. Here’s log one, backwards chip and all.
Why I Love Computers That Are Worse in Every Way
My daily driver has 32GB of RAM and a processor that can run a billion operations per second. My favorite computer to tinker with has 64KB of RAM and runs BASIC. It’s worse in every measurable way, and I love it.
Here’s why: when you have 64KB, every byte matters. There are no layers of abstraction hiding what’s actually happening. No operating system doing a hundred things in the background. No framework of a framework of a framework. It’s just you, the hardware, and whatever you can fit in memory. You type something, and the machine does it. You can understand the entire thing, top to bottom. When’s the last time you could say that about any modern computer?