A strong man appears reproducing Apple II on the microcontroller board "Arduino Uno"

"Apple II" known as the world's first commercially available personal computer, a one-board microcomputer "Arduino UnoReproducing with "Arduino's electronic workshopblogIt is published by Mr. Damien Pecket introduced at.

Turning The Arduino Uno Into An Apple] [

Apple IIIn 1977, Apple co-founderSteve WozniakIt is the world 's first personal computer designed by, it is a model that remains in history. In order to prove "how powerful the modern microcomputer is," Peckett said he decided to reproduce this historical name machine of the 1980s with Arduino Uno.

Apple II gives the CPU "MOS 6502"Is carried. In addition, MOS 6502 was a CPU that appeared at a reasonable price as then, its compatible CPUNESYaPC engineIt is also known that it was also used for. The first step to emulating the Apple II was to completely emulate the MOS 6502.

The Wozniak code written using ANSI C is a simple one that does not support BCD operation. Also, the instruction set itself of the MOS 6502, each op code is a fixed length of 8 bits, 56 instructions, 13 address modes and a simple one.

After the MOS 6502 programming guide was read and the emulation of the MOS 6502 was completed, Mr. Pecket moved to the task of simulating Apple's firmware. However, I was bothered by a bug of unknown cause, I heard that this work was frustrating much.

Apple II image display corresponds to one pixel of the video memory one bit of the video memory.

Pecket designed the video interface using Arduino Uno's USB interface. In order to conserve Arduino Uno's memory, we are leaving the frame buffer storage to the secondary processor.

This is the Apple II video interfaceXOR gateBlock diagram.

Pseudocode to reproduce XOR looks something like this.

Apple II adopted its own keyboard protocol. Therefore, it is easy to handle the result of key input with ArduinoPS / 2 deviceIt is necessary to convert it to correspondence. In addition, you can download the keyboard decoder created by Mr. Pocket from the following URL.


This is Apple II's default key code.

This is a diagram showing keyboard timing.

Apple II adopts a cassette type interface as an external storage device. Data should be at least 1500 baud (baud) Was saved with a simple frequency shift key.

The schematic diagram of the Zero Crossing Detector adopted in the Apple II cassette interface looks something like this.

It will be such a program when demodulating with software so that the memory cassette interface can be handled by Arduino Uno.

And, the Arduino Uno emulator which completes reproduction of Apple II is completed. Please note that the Arduino Uno emulatorAtmega 328pAnd the performance is about one fifth to one eighth compared with the original Apple II MOS 6502.

When you program the Mandelbrot collection with Arduino Uno emulator ......

I got the output result like this.

In addition, in Pocket's blog, it is possible to check the movie to see how the Arduino Uno emulator completely reproducing the Apple II actually moves.

Turning The Arduino Uno Into An Apple] [

in Software,   Hardware, Posted by darkhorse_log