250228 PS/55エミュ製作 [49]ROPと逆ポーランド記法
Bitbltのラスターオペレーションの処理を理解するにあたって、ビット演算と逆ポーランド記法の知識を使う出番があった。
論理和と論理積の変換(ド・モルガン則)は電子回路でもよく使うから、まあまだ少しは縁があったけど、逆ポーランド記法を読み解くことになるなんて、学生時代に基本情報技術者試験で勉強したとき以来だった。
具体的には、昔のWindows(今やobsoleteなWindows GDI)では次のようなところに登場する。
→ 三項ラスター演算 - Win32 apps | Microsoft Learn
これら256通りのラスター演算コードが全て使われるわけではなく、また、ハードウェア側もこれに全て対応しているわけではない(むしろ、対応しているのはせいぜい20種類程度の組み合わせだけだ。)右にNOTSRCERASEなどの別名が付いているものがあるが、これがサポートされるべき演算だ。エミュレーター開発では当時のDDKやMSDNライブラリに収録されていたDTA (Display Test Application)というユーティリティーを使って、Bitbltエミュレーションのデバッグとテストを行った。正しく表示できれば良し。できなければ、何かが不足していることになる。このユーティリティーの存在に気付いたのはごく最近のことで、ここまで苦労を重ねる前に、もっと早い段階で知るべきだった。
しかし、これでバグ取りは一方進みそうだ。