Slashdot Mirror


Turning the Arduino Uno Into an Apple ][

An anonymous reader writes: To demonstrate how powerful modern computers are compared to their forebears, engineer Damian Peckett decided to approximate an Apple ][ with an Arduino Uno. In this post, he explains how he did it, from emulating the 6502 processor to reinventing how characters were displayed on the screen. "The Apple II used a novel approach for video generation, at the time most microcomputers used an interlaced frame buffer where adjacent rows were not stored sequentially in memory. This made it easier to generate interlaced video. The Apple II took this approach one step further, using an 8:1 interlacing scheme. This had the first line followed by the ninth line. This approach allowed Steve Wozniak to avoid read/write collisions with the video memory without additional circuitry. A very smart hack!" Peckett includes code implementations and circuit diagrams.

4 of 113 comments (clear)

  1. Interlacing? WTF? by Megane · · Score: 3, Interesting

    most microcomputers used an interlaced frame buffer where adjacent rows were not stored sequentially in memory

    First of all, I know a lot about micros from the late '70s and early '80s (I was there, maaaan!), and I can't remember a single one other than the Apple II series that didn't display rows sequentially.

    This approach allowed Steve Wozniak to avoid read/write collisions with the video memory without additional circuitry.

    I'm pretty sure the story I heard was that it saved one TTL chip in the counter chain to do it that way, which was just the kind of thing Woz would do.

    Collisions? Exactly what kind of collisions are you talking about? IIRC, the Apple II used interleaved access, where the 6502 would access RAM on every other clock, and the video would access it in between. (This method was also used on the original Macintosh, though the 68000 sometimes needed a wait state.) But that has nothing to do with the funky row counters.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    1. Re:Interlacing? WTF? by Megane · · Score: 2, Interesting
      So... we have two or three minor examples, hardly the "most microcomputers" as stated in the summary. TRS-80 didn't, Atari (with its complex display line modes) let you do whatever you wanted, Commodore didn't, and no big-iron S-100/SS-50 had non-sequential row mapping. Those were the "most microcomputers" up until the time of the IBM PC in 1982, which also had sequential video row mapping. Also, TMS-9918-based systems and MSX used a video chip with separate RAM, very much sequentially mapped. And ditto for all game consoles of the day.

      BBC Micro (not even available outside of one country) with some modes that did, and couple of Sinclairs (all toy computers from the end of the 8-bit era) hardly a make majority.

      Not having seen the details of what it did in the Apple II, I would not be surprised to find that it was designed to somehow optimize DRAM refresh. No Z-80 computer needed help with DRAM refresh for 16K DRAMs, but it looks like ZX Spectrum being from the late 8-bit era had a 128K option, but not until after it had been 16K/32K for a while.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
  2. Re:Cool hack, but not very useful by Anonymous Coward · · Score: 2, Interesting

    > Other people have done much more reverse engineering of the chip, down to the gate level even.

    See: http://www.visual6502.org/JSSim/index.html

  3. Re:Did this really need demonstration? by Anonymous Coward · · Score: 2, Interesting

    > Very cheap modern computer is capable to emulating a 28 year old cheap computer.

    Actually, it may contradict common sense, but you're missing part of the "history".

    As technologies evolve and brands consolidate, some old ideas are lost. Things like the mentioned 8:1 interleave, floppy drive skewing schemes or they way images are generated in vector display are harder to simulate (though feasible). And even if simulated, not everyone would know how to use them. I'm particularly reminded of ATARI 2600 image generation, a nightmare if I ever saw one. It makes me value the ZX80 even more.