Apple IIをマイコンボード「Arduino Uno」で再現した強者が現れる
世界初の市販パーソナルコンピュータとして知られる「Apple II」を、ワンボードマイコン「Arduino Uno」で再現する様子が、Arduinoを使った電子工作をブログで紹介するダミアン・ペケット氏によって公開されています。
Turning The Arduino Uno Into An Apple ][
http://dpeckett.com/turning-the-arduino-uno-into-an-apple
Apple IIは1977年、Apple共同創業者のスティーブ・ウォズニアックによって設計された世界初の個人向けコンピュータで、まさしく歴史に残るモデルです。ペケット氏は「現代のマイクロコンピュータがどれほどパワフルなのか」を証明するために、この1980年代の歴史的な名機をArduino Unoを使って再現しようと決意したとのこと。
Apple IIはCPUに「MOS 6502」を搭載しています。なお、MOS 6502は当時としては破格の安さで登場したCPUで、その互換CPUがファミリーコンピュータやPCエンジンなどにも用いられたことでも知られています。Apple IIをエミュレートするための第一歩は、MOS 6502を完全にエミュレートすることだったとのこと。
ANSI Cを使って書かれたウォズニアックのコードはBCD演算をサポートしないシンプルなもの。また、MOS 6502の命令セット自体、各オペコードが8ビットの固定長、56個の命令、13個のアドレスモードとシンプルなものだとのこと。
MOS 6502のプログラミングガイドを読破してMOS 6502のエミュレートが完了すると、ペケット氏はAppleのファームウェアをシミュレートする作業に移行しました。しかし、原因不明のバグに悩まされて、この作業には大いにイライラさせられたそうです。
Apple IIの画像表示はビデオメモリの1ビットが画面上の1ピクセルに対応しています。
ペケット氏はArduino UnoのUSBインターフェースを使ってビデオインターフェースを設計。なお、Arduino Unoのメモリを節約するためにフレームバッファの格納を二次プロセッサに任せているとのこと。
これはApple IIのビデオインターフェースのXORゲートのブロックダイアグラム。
XORを再現する擬似コードはこんな感じ。
Apple IIは独自のキーボードプロトコルを採用していました。そのため、キー入力の結果をArduinoで簡単に扱えるPS/2デバイス対応に変換する必要があります。なお、下記URLからペケット氏作成のキーボードデコーダーをダウンロード可能です。
http://static.dpeckett.com/apple/keyboard.c
これはApple IIのデフォルトのキーコード。
これはキーボードタイミングを示すダイアグラム。
Apple IIは外部記憶装置としてカセットタイプのインターフェースを採用。データは少なくとも1500baud(ボー)のシンプルな周波数シフトキーで保存していました。
Apple IIのカセットインターフェースで採用されたZero Crossing Detectorの概略図はこんな感じ。
記憶用カセットインターフェースをArduino Unoで扱えるように、ソフトウェアで復調するとこんなプログラムになるとのこと。
そして、Apple IIを完全に再現するArduino Unoエミュレーターが完成。なお、Arduino UnoエミュレーターはAtmega328pを搭載しており、オリジナルのApple IIのMOS 6502と比べてパフォーマンスは5分の1から8分の1程度とのこと。
Arduino Unoエミュレーターでマンデルブロ集合をプログラムすると……
こんな感じで出力結果を得られました。
なお、ペケットさんのブログでは、Apple IIを完全に再現したArduino Unoエミュレーターが実際に動く様子をムービーで確認することができます。
Turning The Arduino Uno Into An Apple ][
・関連記事
3分の1サイズの初代Macintoshをラズベリーパイで再現した「Mini Mac」 - GIGAZINE
Apple IIのDOSソースコードが30年以上の時を経て公開される - GIGAZINE
iPadを往年の一体型マッキントッシュやiBookに装着して楽しんでみる - GIGAZINE
初代マッキントッシュのマニュアル - GIGAZINE
Apple Iの動作品がオークションにかけられ5000万円以上で落札 - GIGAZINE
Android端末とArduinoハードウェアを簡単につなぐことができる開発ボード「PocketDuino」 - GIGAZINE
・関連コンテンツ
in ソフトウェア, ハードウェア, Posted by darkhorse_log
You can read the machine translated English article A strong man appears reproducing Apple I….