RC1979 - A scratch-built RC2014-compatible computer using only parts and techniques from 1979

291 views
Skip to first unread message

Chip Andre

unread,
Apr 20, 2019, 10:19:47 PM4/20/19
to RC2014-Z80

RC1979.PNG



This is an ongoing project which is still in the design phase.  Updates and revisions will be posted as I make them.


I ran across the RC2014 a while back, and I've been thinking about building one ever since.  I knew from the start I didn't want to just purchase a kit - that's basically just a soldering exercise.  I wanted to make modifications and lay out the circuits on perfboard.  I figured this would force me to understand how the components work together, and it would be a good circuit design exercise.  Since there was no way I was going to improve on the RC2014 boards, I chose to make changes based on chronological restrictions.  I would design the system using only components available in late 1979, and I would set myself a strict budget of $300.  For pricing and availability, I used the ads in the back of Popular Electronics magazine from that time period.

So why 1979 specifically?
 
There's a few reasons.  1979 is exactly 40 years ago, and that's a nice round number.  It's also the year I was born, so it's somewhat meaningful for me.  But most importantly, 1979 is realistically the last year a project like this would have made sense.  It was the last time you could build a computer from scratch and end up with something that had an equivalent-or-better price/performance ratio compared to commercially available machines.  By the end of 1980, it would have been pretty hard to build something in the US that could compete with a VIC-20 or CoCo for the same money.  I don't think anybody in the UK could beat the ZX80 for what it cost.  By 1984 you could get a C64 or Atari 800XL for $200, and nobody was getting anywhere near those systems on price or performance with a scratch-built project.

It was (and still is) an interesting challenge.  I have the circuits designed for the core system, but I still need to decide what direction I'm going to go for keyboard and video.  The only graphics chip that would have been a plausible option at that time would have been the CDP1861.  Unfortunately, it relies on DMA, which the Z80 doesn't support without an expensive external controller, and which I do not yet fully understand.  Using a CDP1861 is also a bit of a problem in that they were discontinued decades ago and are very hard to come by.  There is a project that emulates the 1861 with a picaxe, which is not really cheating since it's pin-compatible with the original.   Other than that, I think the only remaining method is generating text-only video output from discrete components and an ASCII ROM, which is going to be more work than the rest of the project combined.  If there's a third way here, I'd love to hear it.

For the keyboard, I think everything back then just used a key matrix and dumped key presses directly into memory through a parallel controller.  I think that's how it was done.  Again, I'd welcome some period-appropriate alternatives.


If you'd like to see what I've got so far, the circuit design is hosted here: https://easyeda.com/chipandre/rc1979

I know it's not pretty, but easyeda doesn't seem to allow you to rotate components.  I also I'm not technically using the bus lines "properly", but I like my way better.  Just assume that the bus lines will all be hooked together and directional components will be facing the right way when it gets built.

Once I'm happy with the abstract circuit design, I will do an actual circuit layout on perfboard and stripboard in lochmaster.  Once that looks good, I will actually try to build this thing in reality and make it work.


Greg Holdren

unread,
Apr 21, 2019, 1:46:44 AM4/21/19
to RC2014-Z80


Looks like good start Chip.

You can rotate parts in EasyEDA with the space bar, flip horizontally with the X key and vertically with the Y key. As long as you are using net names on the pins it should connect to the correct places.

Greg

Alan Cox

unread,
Apr 21, 2019, 11:24:25 AM4/21/19
to rc201...@googlegroups.com
On Sun, 21 Apr 2019 at 03:19, Chip Andre <chip...@gmail.com> wrote:
>
>
>
> This is an ongoing project which is still in the design phase. Updates and revisions will be posted as I make them.
>
>
> I ran across the RC2014 a while back, and I've been thinking about building one ever since. I knew from the start I didn't want to just purchase a kit - that's basically just a soldering exercise. I wanted to make modifications and lay out the circuits on perfboard. I figured this would force me to understand how the components work together, and it would be a good circuit design exercise. Since there was no way I was going to improve on the RC2014 boards, I chose to make changes based on chronological restrictions. I would design the system using only components available in late 1979, and I would set myself a strict budget of $300. For pricing and availability, I used the ads in the back of Popular Electronics magazine from that time period.
>
> So why 1979 specifically?
>
> There's a few reasons. 1979 is exactly 40 years ago, and that's a nice round number. It's also the year I was born, so it's somewhat meaningful for me. But most importantly, 1979 is realistically the last year a project like this would have made sense. It was the last time you could build a computer from scratch and end up with something that had an equivalent-or-better price/performance ratio compared to commercially available machines. By the end of 1980, it would have been pretty hard to build something in the US that could compete with a VIC-20 or CoCo for the same money. I don't think anybody in the UK could beat the ZX80 for what it cost. By 1984 you could get a C64 or Atari 800XL for $200, and nobody was getting anywhere near those systems on price or performance with a scratch-built project.
>
> It was (and still is) an interesting challenge. I have the circuits designed for the core system, but I still need to decide what direction I'm going to go for keyboard and video. The only graphics chip that would have been a plausible option at that time would have been the CDP1861. Unfortunately, it relies on DMA, which the Z80 doesn't support without an expensive external controller, and which I do not yet fully understand. Using a CDP1861 is also a bit of a problem in that they were discontinued decades ago and are very hard to come by. There is a project that emulates the 1861 with a picaxe, which is not really cheating since it's pin-compatible with the original. Other than that, I think the only remaining method is generating text-only video output from discrete components and an ASCII ROM, which is going to be more work than the rest of the project combined. If there's a third way here, I'd love to hear it.

The ZX80 and ZX81 do it by abusing the CPU instruction fetch. The CPU
runs at the right clock speed for the video and a small amount of glue
logic generates various bits of the frame. The actual video fetch is
done by the CPU jumping to an address with the top bit set. That
fetches from the lower bits but the logic hands the CPU a nop, steals
the byte and uses it to lookup characters. A counter manages the low
bits so that you get 8 pixel high chars. In fact you can even do high
resolution of sorts by abusing it a bit!

The ZX80 did it as a software construct, the ZX81 added an NMI
generator so the system can display video even when working (but at a
high performance cost). Some of that is cleverly mitigated - the top
of frame blanking period is used to do housekeeping and keyboard scan
and executes in a fixed number of clocks.

Most of the rest seem to be using discrete logic - but the designs for
the UK101, Nascom and the like are well documented.

I think you are wrong about the CDP1861 though. The HD46505 (better
known for the 6545/6845 etc versions), 5027 and Intel 8275+8257 were
out by then as was the much more integrated 6847 (designed for cheap
game consoles but later better known for the Tandy COCO / Dragon 32)

For the 6847 look for the early data sheet, that covers wiring it to a
6800, not the later one that just shows how to wire it to a 6809 and
SAM. The 6847 was in shipping 1979 systems such as the Imagination
Machine. There's also a complete circuit diagram for Tandy's late and
rather terrible MC10 which used a 6803 / 6847 pair. Whilst the machine
is a bit post your period, the ICs used are I think of period except
maybe for the ROM. (The 6801/3 were 1979 - in fact if Tandy had built
it in 1979 not 1983 it would have been quite a nice cheap computer 8))

Having dug around you are also ok if you build the TMS9918 RC2014 card
with a 9918, not sure about a 9918A 8)

For the 6845 it looks like the originals are fine (1978) but the 6545
might have been 1980. That's mildly irritating as the 6545 added a
neat extra feature whereby you can wire the video RAM solely to the
6545 and drive the display via the register interface.

> For the keyboard, I think everything back then just used a key matrix and dumped key presses directly into memory through a parallel controller. I think that's how it was done. Again, I'd welcome some period-appropriate alternatives.

The TRS80 is nothing more than address lines buffered to one side of
the matrix and latch to the other. Read the address, the lines are
strobed, and if the latch is the decode target then you get the matrix
info you wanted. Most of the others are similar but not all. ASCII
keyboards were a thing back then and some systems like the Nascom used
those.

The most insane one I ever saw was the Microbee. They cleverly abused
the 6845 light pen support as a keyboard scanner!

Alan

Chip Andre

unread,
Apr 21, 2019, 1:07:16 PM4/21/19
to RC2014-Z80
I'm not sure I'm clever enough now - even with the help of the internet - to implement a video hack like the ZX80.  I definitely wouldn't have been able to figure it out back then before the ZX80 even existed to prove it could be done.

I was aware that the 9918 technically existed in 1979.  But I had to discount it because  it launched at the end of the year, and it's unlikely I would have even heard about it (let alone been able to acquire one) at that time.  My first instinct was that this would apply to the 6845/6847 and 8275 as well, but I decided to expand my research.  Several ads in Popular Electronics list various TI, intel and motorola support chips, but none list those chips.  However, I found both the 8275 and 6845 for sale in the 11/79 issue of BYTE.  They're not cheap ($50 and $40, respectively), but the amount of components and work a 6845 will save makes it more than worth it.


I'm tempted to go with an 8279 to handle a lot of the grunt work for the keyboard interface, but at $17, it might not be within budget.   A really bare-bones system like the TRS-80 used might be necessary for cost reasons.

Chip Andre

unread,
Apr 21, 2019, 3:40:34 PM4/21/19
to RC2014-Z80
I found this ASCII keyboard project from the 6/74 issue of Popular Electronics, and that's what I'm going to go with.   I'm a little confused how to interface with it on the computer side, though.  I mean I understand it will be tied into one of the parallel buses, but how does the computer know when a key is pressed and it should read those lines?  How does it know what to do with it afterward?  I feel like I missed a step somewhere.


On Sunday, April 21, 2019 at 11:24:25 AM UTC-4, Alan Cox wrote:

Greg Holdren

unread,
Apr 21, 2019, 3:50:20 PM4/21/19
to RC2014-Z80


/KP is key press. Page 29 talks about it. Use interrupt or polling on that signal.

Greg

Greg Holdren

unread,
Apr 21, 2019, 4:09:03 PM4/21/19
to RC2014-Z80
You can also decode your X-Y key layout from an old PC style keyboard. This project is for a 6502 CPU but you can use Z80 PIO or 8255s instead of the 6522s and transpose the code to Z80.

Keyboard section:

Main Page:

GitHub:

Greg

Richard Lewis

unread,
Apr 21, 2019, 6:40:01 PM4/21/19
to RC2014-Z80
This is part of a famous project:  Don Lancaster's TV Typewriter project that helped kick off people building their own micro-computers in their garage (like the Apple 1). You can probably find this book somewhere: TV Typewriter Cookbook


On Sunday, April 21, 2019 at 12:40:34 PM UTC-7, Chip Andre wrote:

Mark T

unread,
Apr 22, 2019, 7:52:37 PM4/22/19
to RC2014-Z80
Probably need to include a cassette interface too. With the cost of uv eproms, it was probably cheaper to have a small eprom with monitor and bootloader and then load basic from cassette.

This was the method used by the SWTP 6800 that our school had as their first micro. I think it was around 76 or 77. Fairly sure it had mikbug rom as i remember trying to use machine code. Used to take five minutes or more to load basic from cassette, i think it was 8k basic, not sure if it had 12 or 16k ram.

The advantage for a homebrew machine is it could use the stock mikbug rom, but then needed a terminal, so probably not a common homebrew solution.

Someone broke in one night and stole the cassette player and the basic cassette, but left the computer and terminal. Of course nobody had copied the cassette as a backup, i dont think they ever got a new basic cassette, as far as i remember the machine was replaced with an RML 380Z but i never spent much time on that.

Mark

Chip Andre

unread,
Apr 23, 2019, 9:49:16 AM4/23/19
to RC2014-Z80
That is exactly what I have been thinking about for the last day or two.  I'm sure I could get away with a 1k (or less?) EPROM if all it had to do was initialize the display and load a program from tape.  I found this circuit which certainly seems easy enough.

Alan Cox

unread,
Apr 23, 2019, 10:00:50 AM4/23/19
to rc201...@googlegroups.com
On Tue, 23 Apr 2019 at 14:49, Chip Andre <chip...@gmail.com> wrote:
>
> That is exactly what I have been thinking about for the last day or two. I'm sure I could get away with a 1k (or less?) EPROM if all it had to do was initialize the display and load a program from tape. I found this circuit which certainly seems easy enough.

Some early systems used a uart (CUTS and Kansas City standard tape
format) although you don't really need a UART. The sinclair machines
just bitbang a few discrete components. The ZX80/81 wasn't that great
at it but the Spectrum added little more than a schottky diode to the
previous circuit and did 1500 baud reliably. (Actually the circuit
will do upwards of 3000, tape decks are the limit)

https://www.sol20.org/articles/img/CUTS_PE_Mar_76.pdf

In the Nascom case to keep the cost down the UART is shared between
the tape and any other uart usage you might have - including needing
to remember to set the baud rate switches back or you saved at the
wrong speed 8)

Alan

Chip Andre

unread,
Apr 23, 2019, 10:49:26 AM4/23/19
to RC2014-Z80
Yeah, I was thinking about using the 6850 I already already have in the design.  I was figuring a DPDT toggle to switch the clock and RX pins between the system/tape clocks and header/tape inputs.  I've also been thought-experimenting how I could use one audio channel for data, the other for an index counter, interleave a TOC every 4K or so, control the deck's motor/direction with the PIO, and basically make a full-fledged tape storage system that used audio cassettes.  But that's well beyond the scope of this project and really me just distracting myself from some of the trickier bits that are actually important.

Mark T

unread,
Apr 23, 2019, 11:02:23 AM4/23/19
to RC2014-Z80
The early cassette interfaces generated audio signals to record or play on a standard audio cassette recorder. There were a few examples that would directly drive the record/playback head to record digital data to the cassette in a similar way to a floppy disk.

I’m not certain but i think the commodore 64 data recorder was of this type.

There have been a few examples of circuits published, i think there was one in byte magazine or possibly one of the many other magazines of the day. It maybe worth exploring some of the older magazines around the late 70s early 80s, all sorts of interesting example circuits. I daren’t start searching because i know I’d get distracted and spend the next week reading all the articles again. American radio history is one possible source, check copies of byte, eti (electronics today international) and elektor.

In the early eighties i had a micro cassette deck that used this method. Tape direction and on/off controlled by micro. I had it working to seek/read/write blocks with a simple os, using an index stored at the beginning of the tape. Slow but random access. Unfortunately i threw it away when i moved to canada.

Lately i was thinking a car cassette player might be modified in a similar way.

Finding a cassette deck is not so easy now.

Mark

Alan Cox

unread,
Apr 23, 2019, 11:37:48 AM4/23/19
to rc201...@googlegroups.com
> The early cassette interfaces generated audio signals to record or play on a standard audio cassette recorder. There were a few examples that would directly drive the record/playback head to record digital data to the cassette in a similar way to a floppy disk.
>
> I’m not certain but i think the commodore 64 data recorder was of this type.

It was.

> In the early eighties i had a micro cassette deck that used this method. Tape direction and on/off controlled by micro. I had it working to seek/read/write blocks with a simple os, using an index stored at the beginning of the tape. Slow but random access. Unfortunately i threw it away when i moved to canada.

The Epson PX-4 and friends could do this with microcassettes and
actually use them under CP/M as drives.

I'm not sure btw that trying to record different things on the stereo
channels works too well, the separation between channels is not great
and of course that simply doesn't matter for music. You just need a
suitable encoding that is DC balanced and always within the frequency
range of the device.

Alan

Chip Andre

unread,
Apr 23, 2019, 10:20:08 PM4/23/19
to RC2014-Z80
After researching the 6845 and how it's implemented, it doesn't appear to be quite the magic bullet I was hoping for.  There's really quite a bit of extra work needed to get video out of it.  It seems the chip I really want is the 6847, which is more integrated, though less flexible.  It even has a very basic ASCII character set built in.

Unfortunately, I was having trouble finding a price reference for the appropriate time period.  In fact, I still haven't found a 6847 for sale in any of the old magazines I've collected.  However, I did find this 1978 ad for the functionally-identical S68047 from AMI online, which conveniently includes (surprisingly low) pricing.  Granted the $11 quote is for quantities of 100 or more, but even if a single chip is $20, it would still be half the cost of the 6845.

That 1978 ad plus this 1979 issue of Ipso Facto (a cosmac elf zine) featuring a DIY 6847/S68047 video board leave me confident that these chips would have been an option. I'm not sure who cloned who or when, but I'm going to assume that both chips were available for roughly the same price.  Since only the 6847 is still reasonably available, that's what I'll go with.
Reply all
Reply to author
Forward
0 new messages