The Cactus, A Starting Point
Posted: Tue Apr 10, 2018 8:00 am
Greetings! I'm surprised I didn't visit this forum sooner. I'm not really sure where to start with all of this so here goes the short story of The Cactus.
A few years ago, I saw an OSI-300 on display at VCF East. I had never seen a 6502 machine that was so spartan, and more importantly was using toggle switches and LEDs instead of a hex keypad/display, with a ROM to help you out. Other processors commonly had front panel interfaces, but why not 6502's?
I wanted an OSI-300, but I knew they were prohibitively rare. I briefly thought I could make my own, but the lack of a schematic and the awareness of my own ignorance made the task a bit too daunting. The good news was that within 6 months, a mini OSI-300 kit was available so I bought a pair. It was eye opening and fun, but the tiny switches made it tough for me to use for more than a few minutes. I figured I could make a few changes to it and improve the usability.
Some time later, I saw Grant Searle's low-chip count 6502 design with serial and BASIC aboard and wondered if the two concepts could be united, Altair 680 style.
That idea spiraled out of control. I started designing schematics for a complicated front panel interface that had features I figured would be nice. Things like:
I constructed front panel interface cards, one at a time, resulting in 7 cards. 32K RAM, 16K EPROM, selectable baud rate serial card, address control card, CPU card, status control card, data control card. While the CPU is running, the front panel logic cards are supposed to sit quiet and observe the bus but not interfere. When the CPU is halted, they are to unlock and let you visit addresses, observe and modify data, and otherwise play... that's the idea anyway.
In practice it doesn't go that well. While testing the data control and address control cards individually, they seem to work fine. In integration testing, they fail to do their jobs, and produce phantom operations. The status control card is another story, that thing is riddled with problems, but it can be bypassed for the moment. Other tests have involved just the CPU, RAM, ROM, and serial, with all of the extra features disabled. For these tests, things like the single step is hard wired out, along with the more precise address decoding of the serial card. Effectively, it's supposed to be just the breadboarded Grant Searle design but on my backplane & cards. No dice. Every time, it looks like it gets just past checking the reset vector and then produces inconstant results on each test run.
I know there are aspects to the implementation and design process where my knowledge is lacking. I'm walking into a world where I have never tread before, and thus there is much to learn. I've discovered much but hit a bit of a road block. Right now, my current plan of attack is to observe most of the bus with a simple logic analyzer, and see where the hiccups are. I've also got a hunch that the bus signals are ringing, and thus possibly poorly terminated, but I don't have enough evidence to back that up or what I would do about it. I'm not really sure where to go from here. I'm glad to answer any questions about my flawed design, and hopefully I can get pointed in the right direction because I'm determined to move forward with the Cactus.
A few years ago, I saw an OSI-300 on display at VCF East. I had never seen a 6502 machine that was so spartan, and more importantly was using toggle switches and LEDs instead of a hex keypad/display, with a ROM to help you out. Other processors commonly had front panel interfaces, but why not 6502's?
I wanted an OSI-300, but I knew they were prohibitively rare. I briefly thought I could make my own, but the lack of a schematic and the awareness of my own ignorance made the task a bit too daunting. The good news was that within 6 months, a mini OSI-300 kit was available so I bought a pair. It was eye opening and fun, but the tiny switches made it tough for me to use for more than a few minutes. I figured I could make a few changes to it and improve the usability.
Some time later, I saw Grant Searle's low-chip count 6502 design with serial and BASIC aboard and wondered if the two concepts could be united, Altair 680 style.
That idea spiraled out of control. I started designing schematics for a complicated front panel interface that had features I figured would be nice. Things like:
- Hopping to an address location, then incrementing with the press of a button.
- Viewing, modifying, and re-entering bytes on the data bus, without having to re-enter the entire byte. Say you mistakenly entered 2C instead of 2D? Rather than clear the entire byte Kenbak-1 style, just change the bit that you messed up.
- Set/Clear momentary switches, like an HP-1000 which I got to experience at VCF MW last year.
- Observing the data and address buses while the CPU is running for maximum blinkenlights.
- Features like Deposit, Deposit Next, Examine, and Examine Next.
- Modular cards, to allow easy improvements.
- Slow clock speed, right around 1MHz to allow use of older components.
- Single stepping the CPU (the one thing I know is considered to be the most unlikely goal on a 6502)
I constructed front panel interface cards, one at a time, resulting in 7 cards. 32K RAM, 16K EPROM, selectable baud rate serial card, address control card, CPU card, status control card, data control card. While the CPU is running, the front panel logic cards are supposed to sit quiet and observe the bus but not interfere. When the CPU is halted, they are to unlock and let you visit addresses, observe and modify data, and otherwise play... that's the idea anyway.
In practice it doesn't go that well. While testing the data control and address control cards individually, they seem to work fine. In integration testing, they fail to do their jobs, and produce phantom operations. The status control card is another story, that thing is riddled with problems, but it can be bypassed for the moment. Other tests have involved just the CPU, RAM, ROM, and serial, with all of the extra features disabled. For these tests, things like the single step is hard wired out, along with the more precise address decoding of the serial card. Effectively, it's supposed to be just the breadboarded Grant Searle design but on my backplane & cards. No dice. Every time, it looks like it gets just past checking the reset vector and then produces inconstant results on each test run.
I know there are aspects to the implementation and design process where my knowledge is lacking. I'm walking into a world where I have never tread before, and thus there is much to learn. I've discovered much but hit a bit of a road block. Right now, my current plan of attack is to observe most of the bus with a simple logic analyzer, and see where the hiccups are. I've also got a hunch that the bus signals are ringing, and thus possibly poorly terminated, but I don't have enough evidence to back that up or what I would do about it. I'm not really sure where to go from here. I'm glad to answer any questions about my flawed design, and hopefully I can get pointed in the right direction because I'm determined to move forward with the Cactus.