RETRO Innovations

Hardware Design

RAM Expansion for the C64

by on May.21, 2018, under Hardware Design

RAM expansion was a common topic in the Commodore 64 community in the 1980’s.  Everyone seemed to need or want more RAM:

  • Soon after the unit arrived in stores, Paul Bosacki published a way to upgrade the unit to 512kB
  • Later, he pushed the expansion to 1MB
  • Berkeley Softworks (later GeoWorks), jumped into the fray with the 512kB GeoRAM
  • After the C128 arrived, Commodore got in the act, coming out with the 1700, 1764, and 1750 RAM Expansion Units, providing 128kB, 256kB, and 512kB of RAM, respectively.
  • Lots of people soon determined all 17XX units could be upgraded to 512kB
  • And, then, Andrew Mileski furthered that idea by piggybacking DRAM and pushing the 17XX to 2MB

Over time, RAM expansion options for the C64 have coalesced around two types: REU and GeoRAM.  The REU is much faster, but the GeoRAM is easier to create and use.

Still, both suffer from a serious issue.  Neither one makes RAM immediately available.  Both contain RAM outside the CPU’s direct access.  The Commodore REU can transfer memory from the unit to main system RAM around 1 million bytes/sec, while the GeoRAM has more humble speeds around 125KB/sec.  Sometimes, though, one would like RAM to be instantly available.

Cartridges like EasyFlash and EasyFlash 3 map FLASH ROM directly into the C64 memory map to simplify writing cartridge data.  Along those lines, it should be possible to map RAM directly into the C64 memory map as well, using the impressively capable and mysterious “Ultimax” mode.

The idea:

  • Treat the C64 memory map as 16 slices of memory, each 4KB in size. 
  • Allow the developer to select which portion of external RAM will “reside” in each 4kB slice.
  • If the developer maps a slice of RAM, any read or write access to that RAM will trigger Ultimax mode and place the external RAM onto the system bus during a CPU cycle.

The functionality shares a lot with UltiMem, a product we offer for the VIC-20.  But, the programmer can grow weary of manually configuring and reconfiguring each 4kB slice each time he/she wants to move to a different piece of RAM.  For that, we should take a page from the C128 MMU and create the idea of a “mapping set”.  A mapping set comprises 16 values, one for each slice of main memory.  The C128 supports 4 different mappings, which makes the developer’s job easier.  Set up the mapping and then just use it when needed.

So, let’s add a few more features:

  • Support a “mapping set” of 16 values
  • Support multiple mapping sets, which can be selected by storing a value into a specific register to denote the mapping set “ID”

Finally, though the Commodore REU may be too complicated to implement:

  • Support GeoRAM registers for backwards compatibility

One should be wary of announcing success too early, but initial development shows this functionality is possible.  At this point, the following functionality appears to be working:

  • 512kB of SRAM
  • GeoRAM register support
  • Support for 128 “mapping sets”
  • All memory slices except slice 0 and slide ‘D’ can reside externally

Of course, at this point, once something works, one needs to determine if anyone cares 🙂 

Comments Off on RAM Expansion for the C64 :, more...

New(ish) Project: VIC-MIDI

by on May.22, 2013, under Hardware Design

VIC-MIDI Prototype

VIC-MIDI Prototype

This project had its start in a late 2009 discussion between Leif Bloomquist, a Canadian Commodore enthusiast and musician, and myself.  Leif had been playing with a hand-built 6850-based VIC-20 MIDI cartridge designed off a 1980’s era Maplin “Electronics” article, and wondered if a production run could be arranged.  I took a look at the design, and noted that the 6850 UART would be hard to source.  I suggested some design changes to bring costs down, and plans were made to refine the design.

To further the design, I wired up a newer UART (16450-based) to a daughtercard that could plug into the 6850 socket on the original board.  That allowed Leif to refine the software, and provide out the redesign.  Once that was done and successful, we discussed a final production version.  Changes included offering a built-in user-flashable ROM function.

That brings us up to late 2012.  I purchased the parts for a completely new prototype board, but could not get it assembled by World of Commodore, so I brought the parts to the show and hired the assembly done.

Well, the assembly resource took longer than expected to finish the construction, but I did receive this same exact board mid-Feburary 2013.  I fixed a few small design issues, only to discover the board expansion port was wired 100% backwards.  Commodore, for reasons known to them only, named the pins on the VIC-20 expansion port in reverse from the industry standard.  Since the prototype PCB pins were named according to the standard, every one would need modification.

I packaged up the board and sent it back to the assembler, but I must have messed up the address, as it did not arrive in a timely fashion.  Since I had shipped it from the Post Office directly, I didn’t get tracking information, and thus had no idea of its location.  After a few weeks, I resigned myself to the loss of the unit, and started gathering parts for a second unit to be shipped via trackable shipment to the assembler.  As it turns out, the assembler and I were both planning to attend the 2013 Midwest Gaming Classic in WI, so I made plans to transfer a new set of parts during the show.

No sooner than the show ended and parts were transferred, the original package showed up at my office, undeliverable.  I quickly saw the addressing issue, created a new trackable label with the correct address, and sent it on its way.  Which brings us to last week, when the unit arrived, after the rewiring effort.

After all of that effort, I could now begin the potentially laborious task of debugging a “paper design”.  I had designed the entire unit on paper, but had not previously proven out any of the elements on a breadboard.  Though the original UART design was working on Leif’s PCB, the new design was marked different, owing to the additional decoding logic needed for the FLASH ROM.  As such, it was almost a completely new design.   I’m not sure if credit is deserved and who deserves it, but the UART and FLASH ROM read access worked out of the box.  Bank selection for the FLASH ROM did not work, but that’s a minor issue.

And, we’re almost to the point of creating a VIC-20 MIDI production design.

28 Comments :, more...

New Project: IECSwitch

by on May.20, 2013, under Hardware Design

IECSwitch v0.1

IECSwitch v0.1

I can’t claim a significant amount of creativity, but over the past few years, two folks have dropped off “VIC-Switch”-like devices in hopes that I could reverse engineer them.  THese are devices used back in the day (typically in schools) to share a single disk drive or disk and printer with up to 8 computers. I long ago drew up schematics of the existing designs, but wanted to freshen up the solution instead of just creating a replica.

Well, as it goes, finding time takes time, but I decided to try my hand at a new design, and here is the current result.  It’s not much at present, though I can enable/disable IEC ports, and “hold” the 64 from timing out the bus request.  Yes, that’s an LCD there.  I found a great price on them, and I think that’ll be in the final design.  It’s only marginally cheaper than a 7 segment LED or two, and much more interactive then a few LEDs.

It’s been awhile since I developed firmware, and this gave me a chance to clean the cobwebs off my programming skills.

7 Comments :, more...

Coming Soon: SuperOS/9 MMU Kit

by on May.16, 2013, under Hardware Design



In the “another project that has been long in gestation” category comes a niche offering for those with Commodore SuperPET machines and a desire to run the OS/9 operating system.  OS/9, a multi-tasking, multiuser, realtime OS with UNIX-like qualities, was popular in the 1980’s and ran on machines with the Motorola 6809.  In addition to the small TRS80 Color Computer, the SuperPET includes a 6809, but the standard memory map of the SuperPET does not lend itself to OS/9 operation.  That is where this little board comes in.  Installation does not affect normal SuperPET operation, but extends it with OS/9 compatibility.

The SuperPET, a variant of the Commodore 8032 that included additional boards designed by the University of Waterloo, did not sell well, as far as I can tell, and limited (though not ultra-rare) numbers exist.  Still, for those lucky enough to own one, OS/9 can truly turn the SP9000 (another name for the SuperPET) into the MicroMainFrame (another name for the SuperPET).

The project has been gestating since 2008 in some fashion.  Late that year, TPUG member Golan Klinger asked if I could reproduce the SuperPET MMU board, which TPUG members created in 1985. for a possible club fundraising activity.  I dutifully created a new layout of the design, and awaited next steps.  Around the same time, Mike Naberezny (of fame) started discussing the board, and we eventually compared notes.  Over time, it became evident that TPUG was not going to pursue offering the unit for sale, and Mike performed a significant amount of legwork obtaining permission to replicate the software from Radisys (who purchased the OS/9 rights) and permission from TPUG leadership to offer the PCB.  Thus, the majority of credit for this offering goes to Mike, who has a web site devoted to this impressive little board.  I’ll put one in due time, but it won’t provide any more detail than Mike’s.  I should also give a shout out to Steve Gray, who helped with information and PCB scans.

Currently, due to the low volumes, the unit will be available in kit form only for approximately $30.00.  Thus, break out your soldering iron and a weekend of time to add this capability to your SuperPET!

11 Comments :, , , more...

QuadPortIEC Arriving!

by on Mar.21, 2013, under Hardware Design, Storefront

QuadPortIEC FInished Unit

QuadPortIEC Finished Unit

Sometimes, a product gets lost on the way to final production.  Our QuadPortIEC 4 port IEC bus hub is one such product.  After announcing the design here and showing off completed boards here, we focused our attention on the recently introduced ZoomFloppy and then the EasyFlash 3.  Finally, we sent the boards off for assembly, but still felt a bare board with wires would simply not work as a product.  Finally, about a year or so ago, Commodore enthusiast Jim Peters in Iowa requested some bare PCBs and assembled units for personal use, which we supplied.  He took it upon himself to machine finished cases for the units, with fabulous results.  Thus, we hired him to supply finished cases for the remaining stock, and now can offer them in the store.

The design has not changed; QuadPortIEC is nothing more than a “dumb” IEC hub.  ATN switches on the front for each port allow “silencing” of each bus segment, but that’s the only functionality exposed.

Still, we are glad to finally put the units in the store, where they will sell for USD$30.00.  Since the units fill out a small flat rate box, we may need to adjust shipping charges for buyers.


6 Comments :, more...

2013 Midwest Gaming Classic

by on Mar.21, 2013, under Hardware Design

Bowling, Defender, Gyruss, and Starfire

Bowling, Defender, Gyruss, and Starfire

Klax and Pole Position

Klax and Pole Position

RETRO Innovations will be traveling to Brookfield, WI this weekend for the 2013 Midwest Gaming Classic.  We’re simply attending, not manning a store table, but feel free to email us if you’d like to place an order for pickup and skip the shipping costs.

Since we don’t have enough things to keep us busy, we’ve been on an arcade machine buying spree over the last few months, picking up:



Shoot the Bull Darts

Shoot the Bull Darts

  • a KLAX upright conversion, in great condition
  • a Pole Position, in good condition, working, but missing a few sound effects
  • a non working asteroids, in rough condition
  • a Shoot the Bull game in a Ms. Pac Man cabinet
  • Some Championship Bowling ROMSTAR game, in a Super Pac Man cabinet (purchased for the cab, monitor and wiring).
  • a Gyruss, complete and working
  • a Defender, with monitor issues
  • a StarFire unit, in a Defender case, with PCB issues (but, partially working)

Since our goal is to see if there are product opportunities in game restoration for RETRO Innovations, buying machines that need help seemed appropriate.  KLAX was a fluke, as it’s in great condition, but the others all need some TLC for optimum operation.  To start that process, a trip to MGC is required.  We know the Ms. Pac Man needs to be converted back, and that requires some parts (we have a known working PCB for the game already).  Asteroids might be beyond help, and so might be parted out, while the Pole Position just needs some TLC on the PCB and general cleaning.

It’s an interesting exercise, and they should be fun to play… err test!

9 Comments :, , more...

Seeing (EasyFlash 3) Red!

by on May.09, 2012, under Hardware Design, Storefront

EasyFlash 3 Finished Unit

EasyFlash 3 Finished Unit

The difference between a project and a product often boils down to looks. Along with a professionally designed and manufactured circuit board, a proper enclosure completes the package.

Thought we have long offered a un-machined cartridge case with 64NIC+ Ethernet cartridges, we had resisted the thought of milling cartridge cases.  In the case of the 64NIC+, the Ethernet jack machining is tough and prone to error.  A proper CNC milling machine is required to efficiently handle such a design.  However, the EasyFlash 3 did not require so complex a solution to correctly machine a suitable cartridge enclosure.  Some simple jigs on the drill press and creative use of drill bits ably substituted for a CNC mill.  As a result, EasyFlash 3 arrives in an optional fully machined enclosure.

The red color choice was somewhat arbitrary, as we have clear enclosures.  Still, translucent red and the red LED on the unit seemed to fit well together.  I hope you agree.

The EasyFlash 3 is now available in our online store.


Comments Off on Seeing (EasyFlash 3) Red! :, , more...

X Pander-3 VIC Progress

by on Apr.22, 2012, under Hardware Design, Storefront

X-Pander 3 VIC Assembled PCB

X-Pander 3 VIC Assembled PCB

The wait is almost over for VIC Expansion enthusiasts.  After a significant delay, X-Pander 3 VIC units are nearing the end of assembly.  As the photo shows, only the IO2/IO3 SWAP jumpers are left to assemble.  We hope to add this to the store by the end of the week.

Given the width of VIC-20 cartridges, the finished units will have the switches located underneath the board, but will otherwise look identical.

As the picture suggests, the unit shares the same basic layout and operation as the X-Pander 64, but adds additional switches to control BLK and RAM lines.

Comments Off on X Pander-3 VIC Progress :, , more...

uIEC/SD Daughtercard v3.2 In Production

by on Apr.13, 2012, under Hardware Design

uIEC/SD Daughtercard v3.2

uIEC/SD Daughtercard v3.2

uIEC/SD Daughtercard v3.2 (side view)

uIEC/SD Daughtercard v3.2 (side view)

While replenishing stock of uIEC/SD daughtercards, I decided to improve the design a bit.  Hopefully, this version will eliminate the need to offer the original daughtercard option.


  • Buttons now on side of unit, for easier access.  Buttons can now be used on C128D/C128DCR when installed.
  • Operational Mini-USB connector.  If desired, power with a small Mini-USB phone charger
  • Complete 7805-based linear regulator section available for hobbyists.  Parts are not present on the board, but should be trivial to source (2 caps and an LM7805)
  • Oversized holes at front of board to allow PCB standoff usage.  When powered via MiniUSB, standoffs can be used to level the PCB.

The new daughtercard works with all uIEC/SD versions (3.0,3.1, and 3.2).  Stock will be arriving soon.  Production boards will have sorter switch posts, for some reason, I accidentally ordered taller ones for the prototype.

Comments Off on uIEC/SD Daughtercard v3.2 In Production :, , more...

C2N Power! v2.0 Hardware Ready

by on Mar.16, 2012, under Hardware Design

C2N Power! v2 top

C2N Power! v2 top

C2N Power! v2 bottom

C2N Power! v2 bottom

Well, C2N Power! v2 is manufactured and the first few units are assembled,  Hopefully, this weekend I can verify electrical operation and then I’m hoping to ship a few of them to developers for software creation.  The offer is still open for assembly programmers who want a small weekend challenge.

The unit is shown assembled for Real Time Clock operation, with a Maxim DS1307+ installed under the unit, with I2C pullup resistors and the MOTOR line conversion transistor in place.  On top, a lone 3V3 Lithium battery powers the RTC when CBM power is absent.

Comments Off on C2N Power! v2.0 Hardware Ready :, , more...

Visit our friends!

A few highly recommended friends...