ディスカッション (9件)
Behringerのデジタルミキサー「DDX3216」上で、自作のx86 BIOSを使いDOSを動作させるという驚きのプロジェクトです。
いいプロジェクトだね!Chris NoedingのYouTubeチャンネルを思い出したよ。彼は新しいBehringer X32ミキサーでカスタムファームウェアを動かす過程を投稿してるんだ。 https://www.youtube.com/@pcdimmer
組み込み製品でx86を使うのは今に始まったことじゃないよ。特に90年代の古いものだと、DOSやVXworks、QNXを動かすのは本当に一般的だった。産業機器にはあふれてるよ。実際、Intelは数年前まで386 CPUを出荷してたしね。* 面白いのはわかるけど、全部ブログに書いてたら今後10年はネタが尽きないよ。
- 2007年って言われてるけど、組み込み向けの顧客にはちょっと信じがたいな。Intelが一生分作り溜めでもしてない限り。
DDX3216は触っていて最高な機材だったよ。欠点はあったけど、当時の他の製品と比べたら、コストパフォーマンスはぶっ飛んでたな。
こういうプロジェクトって、組み込みシステムがいわゆるエンジニアリングっていうより、はんだごてを使った考古学みたいに感じさせてくれるよね。
DOSの要件は真のPC互換性よりずっと低い。だから昔は「DOS互換」を謳うx86マシンがたくさんあったわけだけど、IBM PC互換のクローンが市場を席巻するにつれてすぐ廃れていったんだよね。
プロセスのこの部分が気になったんだけど:
最終的なフォントヘッダーファイルは合計で22kBくらいになったけど、この単純作業にAIを使えたのはすごく助かった。Google Geminiがいい感じのBIOS用フォントを作ってくれたよ。個別の文字でピクセルエラーをいくつか修正する必要はあったけど
インターネット上に山ほどあるフォントダンプから探せば、CP437を完全に網羅した正確なやつがすぐ見つかるはずなのに。CGAフォントならぴったりだし(結果的に彼が使ったのもそれっぽいけど)、他にも8x8フォントなんていくらでもあるでしょ。
386互換のLinuxイメージを見つけたよ:
https://github.com/hatonthecat/linux_distro_tests/commit/816cfd1d2aa6e7d8338e354ceb97e88b9c06634d
フロッピーイメージだけど、他のフォルダにはブート可能なISOもあるよ。
「お、また新しいmini x86ボードか、クールだね」と思って読み始めたら、まさかミキシングコンソールが出てくるとは思わなかった。最高。
素晴らしいプロジェクト!全部自分で調べて解決したなんてすごいよ。もし本人がこのコメントを読んでたら、いくつか提案があるんだ:
-
16bit x86をターゲットにできるCコンパイラには、たいてい「ファーパーター(far pointers)」のサポートがある。これは16bitのセグメントと16bitのオフセットを合わせた32bit幅のポインタだ。これを使えばアセンブリのラッパーなんて不要になるよ。Cから直接ビデオメモリにアクセスできるし、コンパイラにセグメントレジスタの設定を任せられるから、書き込むたびにESレジスタをプッシュ・ライト・ポップする必要もなくなる(ブロック単位で画面メモリにコピーするなら、コンパイラは宛先レジスタを一度セットするだけで済むからね)。
-
IVTも同様にファーパーターのリストだ。これは16bit x86の一般的な概念だよ。CPUもこれを知っているし、ファージャンプやファーコールとしてより広く使われている。
-
他の人も言ってるけど、そこら中に転がってるテキストモードのフォントROMから適当なやつを選べばいいよ。
-
そのAMD Elanが実際のPCとどれくらい互換性があるのか興味があるな。PCがx86の事実上の標準になっていた時期だから高いとは思うけど、必ずしもそうとは限らないし。例えば初期の80186は周辺機器(割り込みコントローラなど)が統合されていて、非常に互換性が低かった。プロジェクトの邪魔にはならないだろうけど、DOSプログラムの動かしやすさには関わってくるはず。