$BFE001 — CIA-A REGISTER

BFE001

Bit 1: LED / low-pass filter

ワイヤーフレームで考える頭の中の地図——ディジョンの ZX Spectrum からAmigaのメモリマップドハードウェアまで、 その間に配線されたすべてのこと。

$000000

自己紹介

Mark Karpelès です。システム思考の人間です。人生のほとんどを、 ものごとの仕組みを理解するためのメンタルモデルを作ることに費やしてきました。 CPUの内部構造からトランジスタまで、ドアの取っ手の機構から分散ソフトウェア アーキテクチャまで。仕組みを理解すること自体がご褒美です。あるシステムの 動きが予測できるようになると、脳は次の未知へと移っていきます。

このサイトの名前は $BFE001 に由来しています。AmigaのCIA 8520チップ上の ハードウェアレジスタです。そのアドレスのbit 1に書き込むと、電源LEDと オーディオのローパスフィルターが切り替わりました。トンネルを通過するような くぐもった音を再現するために使うゲームもありました。Amigaでコードを書いた 中で、あの一つの命令——MOVE.b #$02,$BFE001——だけが何十年も 頭に残り続けました。1行のコードでマシンの物理的な状態に手を伸ばして 変えてしまう、そんな感覚でした。

その感覚——システムの内部が見えて、構造を理解して、どの線を引けばいいか 正確にわかる——それが物心ついた頃から自分が世界を体験してきた方法です。

$BFE001

この名前の由来

AmigaはハードウェアをそのままCPUのアドレス空間にマッピングしていました。 メモリアドレスに書き込むというのは、単に値を保存するだけでなく、マシンの 物理的な状態を変えることでした。$BFE001 はCIA-AのPort Aレジスタの アドレスで、キーボード、ゲームポートのボタン、電源LED、オーディオの ローパスフィルターを制御していました。

$BFE001 — CIA-A Port A (PRA)
Bit 7–2 ゲームポート、キーボードシリアルデータ、オーバーレイ
Bit 1 LED制御 / オーディオ ローパスフィルター切替
Bit 0 オーバーレイビット($000000でのROM/RAMマッピング)

ゲームではbit 1を切り替えて、トンネル内のくぐもった音のようなエフェクトを 作っていました。Amiga 2000では、電源LEDは完全に消えるのではなく暗くなりました。 たった1ビット、たった1つのアドレスで、マシンの物理的な挙動が変わる。

あの命令——MOVE.b #$02,$BFE001——は、ソフトウェアとハードウェアの 境界が溶ける瞬間を初めて感じた出来事のひとつでした。 このサイトが存在する理由です。コンピュータをブラックボックスとしてではなく、 あらゆるレベルで中を見て、理解して、操作できる構造として捉える ——そういう考え方を表しています。

あれは良い時代でした。マシンはシンプルで、アプリケーションコードから ハードウェアレジスタまで、スタック全体を理解できました。 現代のシステムははるかに強力ですが、中身ははるかに見えにくくなっています。