Jeff Truck's RCA 1802 COSMAC Build Packs a Home-Built MMU to Address a Whopping 256kB of Memory

By paging memory in and out as required, this COSMAC descendant breaks through the 16-bit address barrier to pack 256kB of usable RAM.

Gareth Halfacree
2 years agoRetro Tech / HW101

Vintage computing enthusiast Jeff Truck has built a microcomputer around the RCA 1802 "COSMAC," notable as the first commercial microprocessor to use a complementary metal-oxide semiconductor (CMOS) process — while Truck's host for the device extends things by adding a memory management unit (MMU) to expand its address space all the way to a hefty 256kB.

"I spent about a year on this build," Truck says of his latest creation, "and I think the time spent thinking things out and designing it out, the patience with having to scrap current ideas and come up with new ones, I think finally paid off for me."

This RCA 1802 "COSMAC" build has something few others can boast: an MMU and 256kB of RAM. (📹: Jeff Truck)

The system in question is built around the RCA 1802 COSMAC, an eight-bit microprocessor launched in 1974 in a 40-pin DIP package. Its biggest claim to fame, aside from having driven the COMSAC ELF kit computer at a time when most rivals were opting for the MOS 6502 or Zilog Z80, is being the first commercial microprocessor to switch from the N-type metal-oxide semiconductor (NMOS) process to CMOS — hence its name, the Complementary Symmetry Monolithic Array Computer.

As an eight-bit processor with 16-bit addressing, the COSMAC supports 64kB of RAM — generous for the era — but while Truck's previous builds had adhered to this restriction, his latest opted for more by adding something missing from earlier designs: a memory management unit (MMU).

"You might ask yourself 'how in the heck can Jeff access 256k of RAM from a 16-bit address bus?' [Well], here's what I spent the majority of time on over the winter: it's what I call my memory manager unit, or MMU. I'm most proud of this device here. I've spent quite a bit of time writing out design after design after design, emulating activity in my own mind — because, of course, nothing like it existed at the time, and I'm pleased to say the first generation of this board worked on day one."

The presence of the MMU means that banks of memory can be paged in and out as required, extending the computer's address space well beyond the 64kB for which it was designed. "I can tell it, for each register, what page or bank of memory that it needs to switch to when that register's being used," Truck explains.

"Through a program I can say 'hey, when Register 11 is accessing memory I want you to use Bank 01, when Register 12 is using memory I want to address, say, Bank 02 — completely independently of one another — and this thing will switch the banks, essentially by toggling [these] two additional address lines."

A video detailing the build is available on Truck's YouTube channel, while schematics, Gerbers, and microcode, plus 3D print files for mounting hardware and the front panel, are available on GitHub under an unspecified open source license.

Gareth Halfacree
Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.
Latest articles
Sponsored articles
Related articles
Get our weekly newsletter when you join Hackster.
Latest articles
Read more
Related articles