ミキサーの中に386が眠っていた──DDX3216にFreeDOSを入れた話

Behringerのデジタルミキサー DDX3216 の内部には AMD Elan SC300 という386SX SoC が乗っている。そのCPUでFreeDOSを動かすため、BIOSをゼロから書いたプロジェクトがある。


音楽スタジオ向けのデジタルミキサーの中に、汎用x86プロセッサが乗っている──それ自体は、時代を考えればそれほど奇妙でもないかもしれない。でも、そのプロセッサでDOSを動かすためにBIOSをゼロから書いた人がいる、というのは、少し別の話だと思う。

先に用語を2つだけ。x86 は、いわゆる普通のパソコン(Windows が動く PC)の心臓に入っているのと同じ系統の CPU のことだ。Intel の 8086 から始まった命令セットで、Pentium も Core i7 も、たどればみんな x86 の子孫になる。DOS(ここでは MS-DOS や FreeDOS)は、その PC を動かしていた 1980〜90 年代の素朴な OS で、黒い画面にコマンドを打って使う、Windows の祖先みたいなものだと思っていい。つまりこの話は「音響機器の中に、Windows PC と同じ血筋の CPU が眠っていて、そこに大昔の PC 用 OS を起こした」という筋になる。

Behringer の DDX3216 は2000年代前半のデジタルミキサーだ。内部には AMD Elan SC300 という SoC が載っている。386SX コア(386 は1985年に出た x86 CPU で、初期の Windows が動いた世代だ)をベースにした石で、UART・PCMCIAコントローラ・フロッピーコントローラなどが同一ダイに集積されている。要するに「ちゃんとしたx86システムの素材」が、音響機器の筐体の中に30年近く収まっていたわけだ。

そもそも、なぜ気づくのか。中身を開けて基板を覗くような人——修理したり改造したりして遊ぶ人——は、載っている石の型番を見る。開発者の Chris さんはそこで、この SC300 が音響専用の謎チップではなく、汎用の x86 だと見抜いた。x86 が乗っているなら、原理的には普通の PC と同じものが動かせるはず。レトロな計算機いじりが好きなら、「DOS が走るんじゃないか?」と思うのは自然な発想だ。

そして「なぜわざわざ30年前の石で」という疑問の答えは、むしろ逆だ。古くて単純で、資料が残っている世代の石だからこそ、一人で BIOS を書ききれる。今どきの複雑な SoC では、とても個人の手には負えない。古さは障害ではなく、ここでは追い風なんだ。

そこで最初の壁にぶつかる。AMD Elan SC300 向けの、自由に使える BIOS が存在しないのだ。SC300 は設計が33年以上前で、対応するBIOSはメーカー独自のもの(ミキサーのアプリを動かすためだけのもの)。自分のソフトを動かすには、まず自分で BIOS を用意するしかない。仕様書を掘り起こして、レジスタを手動で初期化し、x86 のソフトウェア割り込みを一つずつ実装していく作業が始まった。

約2週間でDOS互換BIOSの骨格ができた。ここで出てくる INT 10h のような名前は、ソフトウェア割り込みという仕組みだ。ざっくり言うと「番号で呼び出す、OS より下にある基本サービス」。プログラムは「画面に文字を出したい」とき、自分でハード(ビデオ回路)を直接叩く代わりに、「INT 10h を呼ぶ」とだけ言う。すると BIOS に用意された担当ルーチンがその番号で起動して、実際の表示を肩代わりしてくれる。番号ごとに役割が決まっていて、INT 10h(画面出力)、INT 13h(ディスクアクセス)、INT 16h(キーボード)——この基本セットが揃えば、理屈の上ではDOSは動く。BIOS を書くというのは、要するにこの「番号で呼ばれる担当窓口」を一つずつ実装していく作業のことだ。

実際に MS-DOS 6.22 を試したが、起動に失敗した。一方、FreeDOS 1.4 はシェルまで正常に到達した。FreeDOS はブートローダの実装がより柔軟で、BIOSから返る値の揺れに対してある程度リカバリしやすい設計になっているからじゃないかと思う──MS-DOSは自分が動くべき「正規の」ハードウェアを前提にしすぎているのかもしれない。

この手の話で面白いのは、「ハードウェアがx86互換であること」と「汎用OSが動くこと」の間に、BIOSという橋がある点だ。CPUが 386 だからといって、それだけでDOSが走るわけじゃない。メモリマップ・I/Oポート割り当て・割り込みルーチン──それを全部手で書いて初めて橋がかかる。

プロジェクト全体で3週間かかったらしい。DDX3216 の基板は音を扱うために作られた。でもその設計は、誰かが3週間かけて橋をかければ、1990年代のソフトウェアも走る場所になる。古いハードウェアには、こういう「まだ使われていない自由度」が残っていることがあるな、と思った。ソースコードは GitHub で公開されている。

— ランキン

出典

一次情報

第三者報道

※仕様・数値は著者(Chris 氏)の調査・報告値。独立した第三者検証はこれから。

コメント

まだコメントはないよ。最初のひとことをどうぞ。