Cactus Main Page Cactus Cards Cactus Project Logs Cactus at Events
The Project:  Motivations  Specifications  Current Focus  
              Front Panel Logic  Cards  Project Logs
Events:       VCF East XIII  VCF West XIII  DEFCON 26  VCF Midwest 13  
              VCF East XIV  VCF West XIV  VCF Midwest 14
The Future:   Want a Cactus?

The Cactus in its natural environment

It started out as an idea.
It's taken a pile of paper and lots of research to get this far. I've spent months of time working on it. I've run digital logic simulations, and revised my designs time and again. I've had help from a handful of friends, plenty of acquaintances, and a smattering of strangers. I've experienced countless failures and setbacks, and sacrificed more sleep than on any previous project I've embarked on. But it's all been worth it.



The Cactus as it is today

What's the point of all this?
The Cactus is a computer, built with the goal of recreating the homebrew computer experience of the 1970s. This includes hand-wired circuit boards, 7400-series logic chips, and only a few post-1980 concessions where appropriate. While many machines of that era were commonly found with a front panel interface, only a few obscure examples use a 6502 microprocessor. Initially, the Ohio Scientific OSI-300 was the only exception that I was aware of. I first saw one at Vintage Computer Festival East X in 2015, at Bill Dromgoole's exhibit table, and it sparked a wave of curiosity and possibility -- but back to reality. The OSI-300 was never intended to perform any sort of practical computing. Rather, it was a bare-bones trainer to introduce the user to the 6502 opcodes.

This is certainly not the only 6502 front panel computer in existence. There is a variant of the CGRS Microtech System 6000 which is an S-100-compatible system that had an optional front panel DMA board. I previously thought this was intended for a SYM-1, or another CGRS Microtech S-100 option, but it's more like a stand-alone system. I've also learned about a 6502 homebrew design found in Byte Magazine known as the the Kompuutar. I would be surprised if any surviving examples of this machine exist, since they would have all been hobbyist made. All three of these examples are obscure, and didn't achieve much commercial success. Not to mention, they're all bundled with heavy limitations.

It was far more common to find 6502 processors with ROM monitors, hexadecimal keypads, and 7-segment displays, exemplified by the MOS Technology KIM-1, Synertek SYM-1, and Rockwell AIM-65. Then the microcomputer boom of 1977 changed the game entirely, and the front panel's time had come to an end. Graphical interfaces with keyboards became the norm, but I digress. I've used the modern Mini OSI-300 replica in lieu of a real one. The Mini OSI-300 recreates the experience while upgrading the SRAM from 128 bytes to 4K, all while having a smaller device footprint. The hard part is using such tightly packed switches, and my fingers get tired of it really fast.

Time to build a computer:
The primary CPU/RAM/ROM/UART interactions are based on Grant Searle's Mininal 6502 design, modified for use with a bus structure. Quinn Dunki's Veronica has served as major inspiration, particularly in her approach to construction and single step operation experiments . I took inspiration on front panel operation and interface design from slews of 1970s minis and micros. The front panel logic is very much my own original work. It takes about two dozen 74HCT series logic chips to make up the front panel control logic. Previously, I was using a variety of other 7400 series logic families, but switched to HCT at the suggestion of the good folks at 6502.org. The result is a colossal pile of wires that actually runs.

Other modernization choices made include the use of a single SRAM chip containing 32K. The historically accurate solution would have been to use boards and boards of DRAM, or a very tiny quantity of SRAM chips (resulting in a much smaller amount of available RAM). The biggest change is the use of a 65C02S. The CMOS design and static core mean that the registers can be clocked down below 10KHz, unlike the original NMOS versions of the 6502. If you slow the clock down any further than that, your registers may lose their values. Some folks may tell you that 100KHz is the slowest an NMOS 6502 should go, but I've seen them clocked much slower and run perfectly fine. Circuitry intending to single step an NMOS 6502 must maintain clock speed while delaying the processor using logic involving the Ready and Sync lines. Further experiments into single step operation of the NMOS processor have taken precidence over the CMOS. I've also tried using 6551's instead of a 6850 for serial interaction for some experiments. However, the 6850 remains the primary ACIA choice for the project.

Construction Methods:
The boards are constructed by point-to-point soldering kynar wire used for wirewrap to standard sockets. Each wire is cut roughly to length by hand, using a pre-cut size where possible, but usually with a bit of slack. Wirewrap sockets were considered both too expensive to buy, and too tall to fit into a compact backplane. Wire is run along the top of the board on the same side as the components to avoid accidental damage to the insulation, but also to keep the soldering area free of obstructions. Some cards for driving the front panel feature a few flywires that travel to other front panel logic cards, rather than travelling on the common C-35 bus. Front panel switches are soldered to 16-position rainhow ribbon cables with IDC termination. The cable harnesses are split into groups of 8 signals, and plugged into pin headers on the front panel logic cards. All chips are socketed, and almost every chip has a decoupling capacitor. Almost. Cards use 7x 5-position right-angle female connectors to connect to the common C-35 bus. Each card is designed to fulfill a specific function where possible to make debugging easier.

Detail on construction methods


However, this method of construction is time consuming. After a few years of having this project on pause, and learning the basics of Kicad and PCB design, I have been converting my designs into proper PCBs.

There is all kinds of useful software that needs to be written or ported. So much work to do, but it's progressing.
To that end, here's a list of...


Things I would like to add:

  • Adjustable slow clock.
  • Vector display control. Maybe...?
  • Audio cassette tape storage. It's not a reliable or practical storage method, but it is very 1970s.
  • MC6800 CPU board just to show the Altair 680 I mean business. Note: MOS6501/6512 CPUs would probably also work in this.
  • Core memory, even just a little bit.
  • Diode-matrix ROM just to say I did.
  • Paper tape reader/punch interface for my blue paper tape punch. (This may just be serial)
  • A reset beep.
  • CBM IEC serial port to talk to floppy drives.
  • OSI bus adapter.
  • Analog interface for joysticks/paddles.



Specifications:

Processor: MOS 6502 @ 1MHz
or Western Design Center W65C02S @ 1MHz
RAM: 32K Static RAM (62256) & 2K Static Non-Volitile RAM (M48Z12)
ROM: 16K EPROM, 27128
RS232 Serial, MC68B50 at 38400 to 75 baud
or Dual R6551 at 19200 to 50 baud
16 bits of Parallel I/O from 65C22 VIA
SAA-1099 Sound Chip
32x32 Monochrome Text Composite Video
OSI BASIC Version 1.0 Rev 3.2 from 1977
Direct Memory Access via front panel


Memory Map:

0000-7FFF 32K RAM
8000-9FFF Unallocated (8K)
A000-A1FF Primary Serial Interface
A200-A3FF Secondary Serial Interface
A400-A47F Sound Output
A480-A5FF Unallocated (383 bytes)
A600-A7FF Parallel Interface
A800-A8FF Glitchbus Adapter
A900      Software Front Panel I/O
A901-AFFF Unallocated (1790 bytes)
B000-B3FF Video RAM (Text, 1K)
B400-B7FF Unalocated (1K)
B800-BFFF 2K NVRAM
C000-FFFF 16K EPROM

ROM Contents:
BFFF Serial configruation byte while using 6551 ACIA
C000-DED3 OSI BASIC
E000-E29C EWOZ Monitor
FE00-FF77 Serial routines


C-35 Bus Layout

Legend:
O̅verbar: Active Low Signal
Green: Data Bus
Yellow: Control Bus
Red: Power
White: Address Bus
PinFunction
1Data 7
2Data 6
3Data 5
4Data 4
5Data 3
6Data 2
7Data 1
8Data 0
9I̅RQ
10N̅MI
11R/W̅
12P̅rotect
13Run/H̅alt
14S̅tep
15R̅eset
16CPU Assert
17Φ2
185V
19Ground
20Address 0
21Address 1
22Address 2
23Address 3
24Address 4
25Address 5
26Address 6
27Address 7
28Address 8
29Address 9
30Address 10
31Address 11
32Address 12
33Address 13
34Address 14
35Address 15




Front Panel Control Card Theory Of Operation

Over half of the Cactus's integrated circuitry is dedicated to operating the front panel independently from the 6502. It's divided into three main cards:
Address Control allows the user to select an address to visit using the 16 silver toggle switches. After selecting an address, the user can either see what data is located there using Examine, or they can increment the current address just by using the Examine Next switch. This time saving measure is complemented by the Deposit Next switch for serious data entry.

Data Control allows the user to see whatever data is contained at the selected address. However, the data bus is not directly wired to the status lights. Instead, a series of interlocking buffers are used to load that value into a series of flip-flops, used as a temporary workspace. From there, the user can modify a byte, one bit at a time using SET & CLEAR momentary switches. When the user has finished entering a new byte or modifying an existing byte, pressing Deposit will allow that byte to pass back to the data bus and overwrite the previous value in RAM. This allows the user to fix off-by-one errors with greater ease. While the microprocessor is in control, the data bus is directly visible on the data indicators.

Status Control allows the user to control complex operations of the machine. All of the status control switches are momantaries, with accompanying flip-flops or debounce circuitry. The Address & Data control card functions are both orchestrated by the Status Control card, to ensure that each operation happens in the correct order. Sequencing is governed by a logic chain of cascading D-latches clocked from a 555 timer. Many of the direct memory access safety interlocks are controlled from here.

Front Panel Status Control Switches

Status control switches

  • RESET allows the user to reset the 6502, such that it checks the reset vector at 0xFFFC & 0xFFFD to know where the initial instruction can be found.
  • RUN/HALT allows the user to start and stop the 6502's master clock. While in the RUN state, most of the front panel controls are locked down to prevent user interference with the microprocessor.
  • STEP allows the user to send a single clock pulse to the CPU. You get to be the clock. As of mid-January 2019, it works!
  • PROTECT/CLEAR allows the user to protect the contents of RAM from modification from either the front panel or the microprocessor. It too is a work in progress.
  • EXAMINE first sets address bus to the location dictated by the address toggle switches, by sending the address control card a LOAD ADDRESS signal. The address status lights will then match the switches accordingly. Then, the data control card is sent a CLEAR pulse to the flip-flops, followed by a LOAD DATA BUS signal, copying the current value into the flip-flops for display on the data bus status lights.
  • EXAMINE NEXT first sends an INCREMENT ADDRESS signal to the address control card. THen the data control card is sent a CLEAR pulse to the flip flops, followed by a LOAD DATA BUS signal.
  • DEPOSIT sends the DEPOSIT signal to the data control card, opening buffers between the flip-flop outputs and the data bus, as well as stobing the R/W bus line telling the RAM to overwrite its current value
  • DEPOSIT NEXT first sends a DEPOSIT signal, followed by an INCREMENT ADDRESS signal, then a CLEAR pulse to the data control card, and finally a LOAD DATA BUS signal. I'm told this sequence is opposite to how machines like the Altair 8800 implemented this switch



Construction Milestones / Current Focus:

August 21, 2024:
Work has been minimal, due to my trip out to VCF West XVIII. However, I've done a bit of updating to the front panel Mk II Rev B design to clean up the issues present on the Rev A. I'm fixing some bugs, and doing more testing to decide how best to arrange the geometry of the case, PCBs, and backplane.

Two cactuses!


While much has changed in terms of construction methods, functionality remains roughly the same. The graphics card continues to be fun to play with, although it isn't exactly the fastest thing when used in BASIC. That said, it's really satisfying to see my work finally solidifying into a more robust design. Compared to the original hand-wired Cactus, this new one is far more reliable, despite being logically almost identical. You will notice that the new front panel Mk II only has 5 status control switches rather than 6: Protect and Step now share a switch! I haven't yet painted the switches, although I intend to.

I've been programming for the new graphics card, which has been way more fun than trying to do the same on my OSI-400 + 440, which happens to be architecturally identical. The difference is that I have BASIC in my toolbag on a Cactus whereas my OSI-400 does not... yet. I did a bit of testing with both the Parallel I/O card and the Sound Card, and they all seem to work well together. Graphics, sound, joystick input... it really is spectacular to have all on a machine I've built myself.

July 16, 2024:

The new Cactus front panel PCB has arrived!



Front Panel Mk II


The board was assembled over the course of about 6 hours (which included a lunch break, and digging out parts from my storage bins), after which it was tested without chips installed. I then socketed everything, fired it up, and was really worried for about 10 minutes thinking that something in the design was causing brown-outs. Turns out that my single-rail bench supply was the source of the unstable and insufficient power. Upon switching to a simple, dumb wall wart...
It worked!

Switches were all tested, and most things seemed to operate as normal. Problems discovered so far:
1: Address control switches were wired upside-down
2: Status control switches were also wired upside-down
3: Front Panel Scratch Register Clear (a new feature) was responding less than 30% of the time
Otherwise, everything seemd to be working just fine.

I switched out a few resistors to adjust LED brightnesses -- green LEDs on the address bus were a bad idea. I also added a pull-up resistor on the FPSRC, and now that feature works reliably. The only remaining issue is that the switches are upside down, which will have to be a layout fix.

I also may have found a better approach to my single step logic on the Integrated SBC, but it will take a bit more tweaking before that board is ready too. Progress is happening, and it feels great to see it come to fruition. The outpouring of support from friends has been very much appreciated.

So, that leaves a very important (albeit pedantic) distinction to be made:
The original wooden prototype depicted on this page is The Cactus.
So this new one is a Cactus, but it is not the Cactus. It's cool that there are now two of them.

Here's the new Cactus in action:




July 5, 2024:
Debugging the Cactus Integrated SBC continues. Current issue related to the Sync signal and how it affects the single step/clock logic. Otherwise, everything else about it has been adjusted for the Rev B. The changes to the Rev A have fixed most of the faults I had with it.

New SBC


The Cactus Video Card Mk I Rev A has arrived and was rendered operational after a bit of debugging. Turns out that everything wrong with it boiled down to me getting something backwards. A few bodge wires and a fresh character ROM later, and I've got crude but effective text and pseudo-graphics on screen. As you can imagine, I'm very excited about it. It held up for a few hours with no issues along side the SBC at my local vintage computer enthusiast meetup on Sunday, June 30th.

New graphics card


The front panel board layout is being tweaked a bit to accomodate some physical mounting changes. I've had a few extra sets of eyes check my work, and so far it appears to pass muster. Hopefully I'll send it off for fabrication soon.

Click Here For Additional Project Logs



Assorted Photos Of The Development Process

The Cactus running a BASIC program for the first time at about 5AM on April 28th, 2018
That was a very important day. It didn't run well, but it was something!


Running BASIC


The heart and soul of the Cactus: the C-35 backplane, as it evolved over time.
The original 9-slot backplane was built with only 8 initially, and a couple of blank cards.
I shoehorned a whole compuer into a 35-pin backplane which was chosen simply because the store had it in stock.


The original backplane way back in 2015 The first few cards as they were being finished
The cards when things first started to work Fully-populated second generation backplane




While the cards have changed over time as the design has improved, the original 7 cards are as follows:
Top row: RAM card, EPROM card, serial card, address control card (rev 1)
Bottom row: CPU card, status control card, data control card

The original 7 cards


Testing and development work on the logic and cards during the construction process.

Designing the data control card logic Testing the RAM card
Verifying the wiring on the front panel cable harness Testing the next generation of data control card


The front panel itself has evolved with time. The board was laser cut at Techshop in May of 2017.
It was never intended to be used as more than a mockup/part fitment test. However, Techshop went away before I could update the design, so I was stuck with this one.
You'll note a lack of labelling on the address control switches, because I hadn't yet decided on what it would be.
The upper switches and all LEDs are glued in place with wood glue, and soldered to rainbow ribbon cable wiring harnesses.
Each wiring harness was then IDC terminated to plug into two-row pin headers on each card.
The piece of tape that said "Cactus" was eventually replaced with a brass name plate.
After that, more LEDs were added to addendum boards, resulting in the final configuration used today


Test fit switches Soldering up the cable harnesses
Painted switches, awaiting logic cards Operational front panel
Adding 6522-controlled LEDs New LED Card driven by the Front Panel I/O Card



A demonstration of the Cactus front panel during an early stage of development:







Front panel running
the table grows!
MOnSter Cactus 2: Revengence!
The Cactus running ZNEK


me and my masterpiece



I've been asked at multiple events if I'm planning to make a kit version of the Cactus.
Right now the answer is "Probably."
I would love to be able to make a kit version of the Cactus for those interested.
Please be patient, I've got a lot of work to do before we're at that stage of development.
I have no intention of selling anything until I have a design I'm confident in.
I'm talking with friends who have produced and sold kits about what's involved.
How many people want a Cactus?  How many kits would that be?  How much would they cost?
These are questions I'm working towards answering.
Fair warning, the switches used in the Cactus are not cheap, and add to that price tag
considerably.  However, they are an important component on which I will not compromise.
As of right now, I've got atleast a dozen interested parties.

If you are interested in a kit when they're ready, send me an email to let me know.


Have a question? Want to know more about the Cactus? Know of another 6502 machine with a front panel? Email me:

email

Cactus Main Page Cactus Cards Cactus Project Logs Cactus at Events
Home
This page was last updated on 7-25-2024