- 元の Macintosh の128KBメモリと比べると、Raspberry Pi の264KB RAMで十分。1984年の Macintosh はフォルクスワーゲン Golf の3分の1の価格だった。
- RP2040にモノクロVGAとUSB/キーボードを接続し、Macをエミュレートして初期のMacアプリケーションを実行
- GitHub で公開された情報を通じて、誰でも自分で構築可能
Pico-Macとは?
- Raspberry Pi RP2040マイクロコントローラ(Picoボードを使用)がモノクロVGAビデオを駆動し、USBキーボード/マウス入力を受けて Macintosh 128K コンピュータとディスクストレージ装置をエミュレートする
- RP2040の2MBフラッシュは、OSとソフトウェア用のディスクイメージを格納するのに十分
- MacDraw、MacWrite、MacPaint のような初期の Macintosh アプリケーションを実行できる
道のり
3つのルール
- 楽しいこと。
- 68Kアセンブリは学びたくない。
- 初期のMacシステムソフトウェアの内部に深く踏み込みたくない。
Mac 128K
- Motorola 68000 CPU、8MHz。
- メモリマップ、キーボード/マウス、ビデオスキャンなどの基本的なハードウェア構成。
- Mac 128K と Mac 512K はRAMだけが異なる。
- Mac Plus はSCSIと800Kフロッピードライブを追加。
Macエミュレータ: umac
- Musashi 68Kインタプリタを使って Mac 128K エミュレータを構築。
- ROMイメージの読み込み、RAMの割り当て、デバッグメッセージとロギングの設定。
- アドレスデコードを追加し、CPUの読み書きをRAMまたはROMへ誘導。
- IWMチップへのアクセス後に "Unknown Disc" アイコンを取得。
- SDL2フロントエンドで包み、リアルタイムの画面リフレッシュを確認。
ハードウェアとRP2040
- 512x342x1ビデオをVGAへ出力し、TinyUSB HIDのサンプルを統合。
- VGA PIO処理によってビデオデータをスキャンし、DMAを使ってフレームバッファデータを出力。
- 複数回のDMAチャネル再構成を通じて安定したビデオ出力を実現。
再びエミュレーションへ
- Musashi の大きな opcode デコードジャンプテーブルをフラッシュに保存するよう変更。
- ディスアセンブラと実行サイクルカウントを削除。
- RAM使用量を最小化し、Picoでビルドと実行が可能に。
パフォーマンス
- Picoを250MHzにオーバークロックして性能を向上。
- よく使われる200個のopcode関数をRAMに保存し、1.4 MIPSを達成。
別れの挨拶
- MicroMacプロジェクトは楽しく有益な経験だった。
- GitHubリンクを通じて自分で構築可能。
GN⁺の意見
- 興味深いプロジェクト: MicroMac は、安価なハードウェアでクラシックMacintoshをエミュレートする興味深いプロジェクト。ソフトウェアとハードウェアの組み合わせを通じて、エンジニアリングの面白さを感じられる。
- 学習機会: このプロジェクトは、初級ソフトウェアエンジニアにとってハードウェアとソフトウェアの相互作用を理解する良い機会を提供する。特に、エミュレーションやPIO、DMAのような概念を学べる。
- 性能最適化: 性能最適化の過程で、さまざまな技術的課題とその解決方法を学べる。特に、メモリ管理とオーバークロックの重要性を理解できる。
- コミュニティとの共有: GitHub を通じてプロジェクトを共有し、他の人と協力できる機会を提供する。これはオープンソースコミュニティの利点をよく示している。
- 将来の可能性: このプロジェクトは、より大きなRAMを持つMCUを使って拡張できる可能性がある。より複雑なアプリケーションを実行できる道を開く。
1件のコメント
Hacker Newsの意見
VGAケーブルの入手困難: 最近、アートインスタレーションのためにVGAケーブルが必要になったが、周囲の誰も持っておらず、結局新しく買わなければならなかった。多くのケーブルが捨てられている状況だけに残念。
Amigaプロジェクト: AmigaOS 3.2を実行するAmigaを作りたかった。3Dプリントで元の形をした小さな筐体を作るというアイデアがかわいい。古いフロッピードライブがないので体験としては少し物足りないが、既存のデスクトップPCでエミュレーターを動かす代わりに専用マシンを使うという発想が気に入っている。RP2040が68kの役割を担う低レベルなアプローチも興味深い。
Macの第一印象: Macが最初に登場したとき、コンピューターショップで働いていた。画面の隅の丸みを見て、その天才的な設計に感嘆した。
プロジェクトへの称賛: このプロジェクトは非常に印象的だ。読んでいて楽しかったし、文章のスタイルも気に入った。組み込みプロジェクトでは高速なプロトタイピング/デバッグのためにデュアルターゲットビルドを試しているが、PCビルドをより頻繁に使うようになる。もっと多くの人がこうすべきだ。
VGAインターフェース: VGAインターフェースがいちばん印象的だった。
ESP32ハックへの挑戦: ESP32でvMacを動かそうとしたが、失敗した。このプロジェクトははるかに高いレベルにある。敬意を表したい。
小型SBCの探求: 最後の68k Macや90年代中後期のPPC Macを完全な性能でエミュレートできる最小のSBCは何なのか気になる。これを現代的なノートPCの筐体に組み込めば、System 7.6.1からMac OS 9.xまで動かせる実用的な「禅モード」ノートPCになりそうだ。
ブログミラー: ブログが過負荷状態のようなので、ミラーリンクを共有した。
MacPaintへの言及: MacPaintに触れなかった理由を説明している。Bill Atkinsonはあらゆるテクニックを知っていて、それを活用してMacPaintを当初の制約の中で動作させていたはずだと考えている。著者にとってはフェアな勝負ではない。
VGAコネクター探し: VGAコネクターが必要だったが手に入らなかった。昼休みに散歩していたら、道でVGAケーブルを見つけた。こういうことも時々ある。