5

I have a strange desire to make an imaginary competitor to the Atari 800 (6502 + different custom chips). As far as I can see people are mostly interested in making "my childhood computer, but with superpowers". I want to do something that would be completely realistic for 1979 within roughly the same budget. I'd be happy with writing an emulator only, but obviously it's just too easy to incorporate things that were not possible in that era without even realising it. Implementing it in FPGA with every chip as a separate FPGA chip seems to be the way to keeping it more real, but the difference with original technology seems to be massive (am I wrong?) hence it'd be hard to keep it real. What else can I do to limit myself to what was available at that time?

If I design a computer comparable to the Atari 800, what can I do to be sure that, after the design is altered to use similar parts to those available in 1979, it could be mass produced in the year 1979 and would cost less then $1000 to make?

  • 3
    And your question is? – UncleBod Nov 1 at 14:03
  • 2
    The Commander x16 project is taking a similar approach to a Commodore 64 alternative. You might follow that project for ideas and to see what decisions they made and why: commanderx16.com – snips-n-snails Nov 1 at 15:09
  • 6
    The answer is "yes". One could improve on the original design in any number of ways that would remain completely within '79 tech and would result in noticable improvements. Heck, simply fixing the E: driver, optimizing the graphics code in the OS and fixing two minor "bugs" in Atari BASIC would produce a machine that would run rings around the original. Personally I'd do something with the sprites too, but that would require an actual hardware mod. – Maury Markowitz Nov 1 at 19:21
  • 2
    Voted to re-open. There is a clear question (although maybe not before his edit). Plus I find the topic interesting. – RichF Nov 1 at 22:08
  • 4
    "could be mass produced in the year 1979 and would cost less then $1000 to make?" - in 1979 US dollars? Is it for a one-off using parts at retail prices, or manufacturer's cost for mass production? – Bruce Abbott Nov 2 at 9:28
5

I have a strange desire to make an imaginary competitor to the Atari 800

So there are a couple of places one could build a better 800 and still be entirely within the 1979 (well actually, 1978) tech tree. There's also some things that might not have been possible. So here goes...

The Atari was odd (unique?) in that it did not interleave memory access between the CPU and ANTIC. Instead, it ran both close to the maximum performance of the memory and allowed the ANTIC to pause the CPU.

In contrast, systems like the C64 used down-times in the 6502's clock to grab memory. Now since the memory was generally 2 MHz (although other posts here suggest this was not absolutely the case) that means if you go the interleave route, generally your CPU is going to be 1 MHz, or there won't be enough time left over for the display to grab data while the CPU is off doing its own thing.

The upside to the Atari design is that while the ANTIC had to pause the CPU to grab data, in common display modes, like the 40-column GRAPHICS 0, the CPU only needs to be paused about 35% of the time (IIRC). So overall performance was like a machine running at perhaps 1.25 MHz, and one could recover all 1.8 MHz by turning off the display. It seems like this was a better solution than the interleave option, which meant you were stuck at 1 MHz even with the display off. This of course assumes that the price of the 6502B model wasn't much higher than the A model, otherwise your price goal might get hit.

So two things to consider: was the 6502C model (no, not Sally, the real C) actually available in quantity and at a similar price point? And was memory also available at 4 MHz with the same constraints? It was for the BBC in 1981, but perhaps not 1978/9? If both are "yes" then the most obvious change would be to simply double the speed of the CPU and let the ANTIC pause it longer (in relative terms, same absolute). Since the pausing doesn't happen during VBI and margins (vertical at least) this would result in a significant performance boost (well, duh) with basically no other changes.

Beyond that, the most obvious low-hanging-fruit of that design was the sprites in the GTIA. These were, simply, terrible. Although moving them horizontally was trivial using a timer triggered on the HBI, vertical positioning required moving the sprite map in memory! This not not something the 6502 is known for, and doing so in BASIC... shudders. It also meant every sprite took up 1k of RAM!

Neither is good enough, this is, IMHO, the platform's most significant flaw.

From a programming standpoint, eight sprites of 8-bits width with separate vertical positioning registers would be infinitely preferable. One could expand this, as did the C64, to provide more bits of width or multi-color options. These, however, require more time during the HBI to read, and thus the CPU would spend more time paused. This is a small price to pay. One could further offset that cost by expanding GRACTL to use the upper four bits to turn on or off sets of sprites - say two sprites per bit - and thus allow the programmer to easily tune performance with minor bit-fiddling. You might need a few more color registers, depending on how many colors you allow per sprite and in total, but even that seems trivial.

The rest of the possibilities seem rather more questionable. POKEY's sound was not stellar, but it worked and did so with a very low gate count, and having heard enough C64 sound in my life I'm not convinced the SID was an order of magnitude better. Sadly, stereo TV sound was not yet a thing (even in theory I believe) so that's not something you could have added at that time.

On the hardware side, obviously a RS232 and printer port were absolutely required on the 800, and SIO could easily be a 8P8C (with MOTOR on CLOCK OUT), but overall the platform was pretty solid, especially for the era. Besting it is not trivial, the C64 did, barely, but only after another three years and two Moore's.

  • Your answer is a pure gold. A few qs: Is SIO instead of RS-232 an attempt to lock users in? Getting SIO out of POKEY (or removing paddle scan) would probably be enough to get rid of detune (more audio counter bits). I (naively) don't think that CPU speed was a limiting factor. Video chip(s) is another story. The hard limits that I see are memory speed, pin count (luma) and chip freq(chroma). I don't know how far I can go with the freq, and also don't know how complex can be the logic that forms the current pixel color - if it is synthesizable on todays FPGAs is it OK for ASIC in 1978? – Anton Nov 6 at 11:07
  • 1
    "SIO instead of RS-232 an attempt to lock users in" - no, SIO was an expedient solution that was originally intended to be solely used as a cassette interface! There was certainly some lock-in once it was released, but I'm convinced that wasn't the goal. " OK for ASIC in 1978" - oh for sure, don't forget there were many 80-column systems in that era and they did this. Normally the solution was to have two banks of memory (Apple II), but simply using faster RAM would do it (BBC). So the question remains - was 4 MHz RAM really available? – Maury Markowitz Nov 6 at 12:13
  • It is strange that cassette interface was needed at all, considering how ZX Spectrum handled tape loading (I'm probably missing something). I never hoped to speed up the memory, 2Mhz should be enough for anyone:). I can't upvote your answers enough! – Anton Nov 6 at 13:10
  • 1
    Actually it worked the same way as the Spectrum, but the signal was coming from the POKEY instead of the CPU. They originally had only a couple of pins, +5, data out and in, sound in (other change of the tape) and motor control. To expand it to SIO, they simply added clock out and in and various signal pins like INTERUPT - which were never used in practice. So they ended up with 13 pins when it seems 8 would have done. – Maury Markowitz Nov 6 at 13:13
6

I would simply consider the complexity of the ANTIC, POKEY, and GTIA chips -- how many transistors etc., and use that as a transistor budget for your gate arrays.

Simply assume that the designers made the chips "as complex as they could given technology and economics", and use them as a benchmark.

Also, you need to keep the clock rates down like they were back then and also consider the limitations of the TV screens they were being displayed on.

That said, if you had come piece of logic that lets you plug your thing in to a modern VGA or HDMI monitor due to simply being the reality of modern times. That's fine. No different from that little RCA box that converted the computer signal in to the antenna signal for a generic TV, right? Showing 320x192 B&W pixels on a VGA monitor.

  • That's basically how I decided to approach this (plus an old TV with a composite input, VGA is not fair!), but I'm still worried that I'll do more work in one tick than it was possible for an older chips (particularly when it comes to how fast I can get pixel data from RAM to the TV). – Anton Nov 5 at 17:50
  • 1
    If you display is memory mapped, it's gated by the combination of the CPU speed and the access the CPU has to the bus. Many video systems, stole cycles from the CPU during display -- the Atari was "faster" if you turned the display off, for example. I brought up VGA simply because most folks no longer have a composite display, so whatever the black box does that converts your legacy graphics screens to actual dots on a modern display I would consider outside of the budget, as it's just a "converter", not "the system" per se. – Will Hartung Nov 5 at 18:58

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.