9

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 have been mass-produced in the year 1979 and would cost less than $1000 to make?

18
  • 4
    And your question is?
    – UncleBod
    Nov 1, 2019 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 Nov 1, 2019 at 15:09
  • 2
    Sorry, but on the first glance Commander x16 looks precisely like "my childhood computer, but with superpowers" - Vera chip specs seem to imply significantly higher gate count than vic-ii, and RAM is quite a bit larger. I understand the appeal of such approach but it's basically the opposite of what I want to achieve. Besides I don't exactly see any effort to make sure that such computer could really be manufactured in 1982 (not that they should care about it, but that's what I care about)
    – Anton
    Nov 1, 2019 at 16:10
  • 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. Nov 1, 2019 at 19:21
  • 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? Nov 2, 2019 at 9:28

3 Answers 3

8

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.

7
  • 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, 2019 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? Nov 6, 2019 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, 2019 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. Nov 6, 2019 at 13:13
  • Worth mentioning that turning off the display can and did speed up the C64's CPU, by eliminating the VIC-II cycle-stealing altogether. It's the reason the screen went blank when a 64 was loading from cassette (something that didn't happen on the faster VIC-20, which could keep up with the Datasette even while its more primitive version of the VIC was stealing cycles to read RAM). The C-128 even added a BASIC command that would blank the screen to speed things up: FAST.
    – Mark Reed
    Nov 30, 2020 at 22:57
8

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.

2
  • 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, 2019 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. Nov 5, 2019 at 18:58
4

I have a very similar desire as you. However, mine goes much deeper. I have a desire to create a competitor for the following: KIM-1, Atari 800, NES, Apple II, etc.

In 2018, I created, designed and produced my first SBC that could have been built in 1979 and would have competed with the Apple II.

So I have a little bit of experience but I'm no expert.

These days it's so easy to grab an entry-level FPGA and just create the entire computer. That's fine for some people but not for me. I also believe the Commander X16 is clearly David's "dream computer" and not anything that would have existed in the 80's. He even calls it his "dream computer".

The computer you mentioned would be tough to beat in 1979. But you said a competitor. Not a "killer". In 1979, a competitor to the Atari 800 would have been the TI-99/4(a), TRS-80, PET and Apple II+.

So what would it take to create a computer during that time? I assume your fictional company wouldn't have had deep pockets to create custom chips. Only Atari and TI could do that in 1979 (at least for the home market).

Having said all of that, I would assume the following specs for an Atari 800 competitor:

  • Color Graphics (TMS9918)
  • At least 32KiB of RAM
  • Audio (AY-3-8910)
  • BASIC (EhBASIC)
  • Serial

Now, the next step is to decide how authentic you want to be. If you want real authenticity, you would only use parts that were manufactured back then. This is certainly possible but I think you limit yourself and it makes the design much harder. In my SBC (search for Potpourri6502 on the 6502 forums), I only used parts that are still made today.

One example I'm talking about is the RAM. It is MUCH easier to just use a static RAM chip (SRAM) in the quantities we're talking about than try to design a DRAM equivalent. Most 8-bit computers at the time used dynamic RAM (DRAM) because it was cheaper. SRAM DID exist. But it was very expensive. It still is. But for < 128 KiB, SRAM is only a few dollars. Your fictional computer could just pretend it used DRAM if you like. :-)

This means I think it's OK to take a few modern conveniences and still pretend you're competing with Atari. This is all just for fun anyway.

So let's start with graphics. I would suggest using the TMS9918. It's not made any more but they are very easy to obtain (don't buy from China...most are fakes or defects). The TMS9918 isn't as powerful as the ANTIC/GTIA solution from Atari. But it's very popular for the day and it's pretty easy to work with. However, it requires its own RAM and that RAM is normally DRAM. However, there are circuits out there that can use SRAM with it. It's just a little more involved (my GitHub repo has an example here https://github.com/cbmeeks/TMS9918/blob/master/SRAM%2BReplacement%2Bfor%2BTMS99x8%2BVRAM.pdf).

Next is the CPU. I would pick the 65C02. Sure, the Z80 is a good choice too. I'm just partial to the 6502. BOTH are still produced today. But remember, you're making a competitor. There were Z80 based machines with the TMS9918 in the 80's. You want something different. Definitely get the 65C02 and visit the guys at the 6502 forums. They have excellent information!

Next is the RAM. I would shoot for 32KiB. The TMS9918 has it's own RAM which is 16KiB. So your system could be advertised as "48KiB" system. Which is what the Atari 800 had. If you go with the 65C02, you can follow the EXCELLENT 6502 primer here: http://wilsonminesco.com/6502primer

Next would be audio. I would recommend the AY-3-8910. Like the TMS9918, it's not made anymore but obtaining them is very easy. The 8910 also has two I/O ports that could be tied to joystick ports. The 8910 isn't as good as the Pokey in the Atari 800. But, you could use two of them. Giving your computer 6 voices (channels) over the Atari's 4. Or heck, use four of them like the Phasor did for the Apple II.

Next would be I/O. I suggest using a 65C22 VIA to control the audio chips and provide a simple parallel or serial port.

Next would be serial (UART). The 65C22 VIA can do serial and parallel communications. But I'm talking about true RS-232 communications with other computers. A good example is the 65C51. Which is also still produced (despite a nasty bug). This chip is simple and easy to work with. Just not very powerful. Just keep in mind that if you want to connect to a real RS-232 port, you will need level converters such as the MAX232 (or variants). Again, the folks at 6502 forums and primer can help with this.

Finally, software. I recommend the excellent EhBASIC. It's easy to get going.

All of these components would make an excellent computer. If this computer came out in 1979 or 1980 and was actually made in quantity (with a reasonable price), it would have ran toe-to-toe with an Atari 800.

I hope this helps. Feel free to find me on the 6502 forums (cbmeeks) if you want to discuss further.

1
  • Hey, that's the fun part: "I assume your fictional company wouldn't have had deep pockets to create custom chips"
    – Anton
    Sep 11 at 10:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .