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