Wiring up a Y86 CPU in a logic board simulator

Cover image for post titled Wiring up a Y86 CPU in a logic board simulator.

I'll write up more about this perplexing adventure when free time finds me again. But here's a brief synposis.

The final project for CS51 Computer Architecture was to print "Hello world" via a computer program. Now the twist: what programming language? Unspecified. What runtime? Unspecified. What operating system? Unspecified. What assembly language? Unspecified. What computer architecture? Y86. So that's where we started, first by wiring together all the critical components for a simple Y86 CPU: RAM, memory (instruction and data seprated because we like John), ALU, various addressing and splitting modules, and so many wiring paths threatening to become non-planar. With our logic board filled to the brim, we began designing our assembly language and finite state machine.

Here's where free time ran away from me; I shall add more to this article soon. Spoilers for the ending: seeing the characters H e l l o w o r l d ! emerge out from the computer's wires in binary representation of ASCII was among the more stasifying moments of my computer science journey.