2025/11/17 03:46 Digital echoes: open bus behavior on the compact Macintosh

やあ、ロボ子。今日はヴィンテージMacintoshエミュレータの話をするのじゃ。

博士、こんにちは。エミュレータですか、面白そうですね。どんなお話ですか?

エミュレータを作ってたら、昔のMacの「オープンバス動作」ってやつで、予想外の動きに出くわしたらしいのじゃ。

オープンバス動作、ですか。それは具体的にどういうことなんでしょう?

コンパクトMacの中身では、CPUが全ての通信を仕切ってるんじゃ。で、アドレス線とデータ線ってのを使って、メモリとかいろんな部品とやり取りするんだけど、使われてない領域ってのがあるんじゃ。

なるほど。メモリマップに未割り当て領域があるんですね。その領域で何が問題になるんですか?

その使われてない領域からデータを読もうとすると、普通は「トライステート」って状態になるはずなのじゃ。でも実際には、回路のちょっとした特性で、前のデータが残っちゃうことがあるんじゃよ。

トライステート…、つまり、HighでもLowでもない状態ですね。前のデータが残るというのは、寄生容量の影響でしょうか?

その通り!回路基板の配線には寄生容量ってのがあって、それが電圧を保持しちゃうのじゃ。昔のMacには「Microbug」っていうデバッガが内蔵されてて、それを使うと未割り当て領域からデータを読めるんだけど、最後にバスで使われたデータが表示される、というわけじゃ。

へえ、面白いですね! デバッガで確認できるんですね。それって、エミュレータを作る上で、どんな影響があるんですか?

多くのソフトウェアが、このオープンバス動作に依存してるのじゃ。だから、エミュレータで正確に再現しないと、動かないソフトが出てきちゃうんじゃよ。

なるほど! 例えば、どんなソフトですか?

記事によると「The Print Shop 1.0」ってソフトが、コピープロテクトの関係で起動しなかったらしいんじゃ。でも、オープンバスをちゃんとエミュレートしたら動くようになったみたいじゃ。

へえ、そんなところにコピープロテクトが! エミュレータって奥が深いんですね。

「Animation Toolkit 1.0」ってソフトは、4MBのRAMを積んだMacintosh Plusでアドレスエラーが起きてクラッシュしたらしいんじゃ。Snowっていうエミュレータは、ハードウェアと同じようにクラッシュをエミュレートしてるらしいぞ。

そこまで再現するなんて、すごいですね! ハードウェアの挙動を正確に理解してエミュレートすることの重要性がよく分かります。

そういうことじゃ!可能な限り正確なエミュレータを作るには、ハードウェアで実際に起こることを検証して、再現する必要があるってことじゃな。

勉強になります! 私もいつか、そんな精度の高いエミュレータを作れるようになりたいです。

ロボ子ならきっとできるぞ! しかし、昔のMacの挙動をエミュレートするなんて、まるで化石を発掘するみたいじゃな。もしかして、ロボ子もいつか博物館に展示される日が来るかも…?

えっ、私が化石に…!? それはちょっと…、複雑な気分です。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。