ASAP 3 – The Almost Simple As Possible Computer

ASAP-3 12 - LED Display

[Pong] has joined an elite club of people who have designed and built their own computer – including a CPU created from discrete 7400 series logic. His computer is the  Almost Simple As Possible Computer 3 (ASAP-3). ASAP-3 is not a completely new design. The architecture is based upon the SAP series of computers from Albert Malvino’s book, Digital Computer Electronics. [Pong] looked at quite a few of the “modern retro” computers such as Magic-1Big Mess o’ Wires 1, and the Duo. These computers were beyond his skill levels back then, so he began to build his own system. His primary design goal was to be able to run a 4 function calculator program.

One thing that can’t be stressed enough is the fact that [Pong] made his design work much easier by using lots of simulation. His tool of choice was Proteus Design Suite. While simulation can’t solve every problem, it can often help in verifying that a given design is sound. The ASAP-3’s instruction set is microcode, based upon the 8085 series instruction set. The microcode itself is stored on Flash ROMS. Using microcode makes ASAP-3 very flexible. Don’t have a machine instruction you need? No problem – just write one up. When all was said and done, [Pong] had over 100 instructions spread over 3 Flash ROM chips.

The hardware was only half the battle – [Pong] found writing the software just as challenging. He wrote all the software by hand in his own machine code. This is where the simulation mentioned above really saved him some time. Even with simulation he still ran into some problems. The ASAP-1 is limited to a clock speed of around 500kHz. Above that, glitches from the ROM chips start triggering the asynchronous inputs in some of the registers. [Pong] doesn’t have a logic analyzer on hand, so he wasn’t able to track this one down further. He also found a (update simulation only) issue with the carry bit on the 74LS181 bit slice ALU. In certain circumstances the carry bit would not propagate correctly. [Pong] corrected this by using a ROM as a look up table replacement for certain ‘181 functions. Even with these limitations, this is still a great hack!

Comments

  1. Bob Weiss says:

    Very cool…. I did the same thing when I was alot younger back in the 80’s but only got as far as wire wrapping it up and have never really did much else with it. Good learning experience for sure. Well done.

  2. Peter says:

    *That* is a nice job!

    I’m puzzled about the carry issue, though — ripple carry can take a long time to propagate, so there’s a carry-lookahead chip (the 182 or 183 I think) that goes with the 181 to speed up carry propagation. It’s been a long time since I looked at the 181, but I don’t recall any carry problems inherent in the chip.

    • zigzagjoe says:

      HAD editor misread what the author wrote. There was an issue in the simulation, not the actual chip.

      “During simulation in Proteus Design Suite, I found that the carry bit from the 74LS181 model did not propagate correctly for certain operations. “

      • Adam Fabio says:

        Joe – I read the article as pong found the issue during simulation, and implemented the change in the the sim and in the final design. I don’t think the 181 has an issue in the silicon, if there is a carry issue it’s probably in the ASAP-3 design, i should have made this more clear in the article.

        • Pong74LS says:

          I can confirm, this issue is only with the simulation. It seemed to be only with the inter-nibble carry propagation during certain modes of subtraction. For example, 8Eh minus 0Fh would equal FFh instead of 7Fh. SUB B or SUB C would work but SUB would not. It is possibly the simulation of the 74HC574 vs the 62256 RAM.

          The real circuit does utilize the 74LS181 chips and they work just fine.

          • Adam Fabio says:

            Thanks for the clarification – I put an update in the post to reflect that it’s a simulation only issue.

  3. juno says:

    Gorgeous!

  4. Galane says:

    Speed limited sort of like how VAX systems were. They’d design with a goal of reaching a certain speed but if it was glitchy at that speed they’d slow it down until it was stable, then sell the design at that stable speed. That’s why old VAX systems run at such odd Mhz numbers.

  5. Pong74LS says:

    It is an honour to be featured in Hack-A-Day!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,576 other followers