SSブログ

孤独へ向って突っ走れ(9) [  PC-98x1(補完計画)]

朝起きたら、左足の親指付け根の関節が痛くなっていた。きのう一日中PCの前に座っていて血行不良になったのが、以前に腫らせて悪くなっている足の関節に悪影響を及ぼしたらしい。

でも昨日の続きをやりたくてしょうがない。私はああいう、PCのハードを直接制御するようなコードを見るとワクワクしてくるんだ。実際にはBIOS経由だから直接じゃないが。足が痛いからPCの前に座っちゃいけないんだが、少しだけ、少しだけやろう。

INT18でAHレジスタ=42Hの時、CHレジスタの値は何を入れるのか。
私自身が若いころに書いたソースコードと解説を読むと、この1バイトをビットごとに見ると
LLCP0000
で、
LLは01なら200ラインLOWER、10なら200ラインUPPER、11なら400ラインだ。
Cは0ならカラー、1ならモノクロ。
Pは0ならGVRAM表示ページ0、1なら表示ページ1。
だから

MOV AH,42
MOV CH,80
INT 18

は、GVRAMを200ラインUPPER、カラー、表示ページ0で使う設定だ。
ええと次は

MOV AL,08
OUT 68,AL

OUTだって。それ何。I/Oポートだって。いよいよハードウェア直接制御か。私は自作のCライブラリから68Hを検索した。ない。これはなかった。残念。

ネット上に情報があった。苦労して実験を重ね、自力で情報を作ったサイトらしい。それによると、この命令はPC-8801との互換のために存在するという。グラフィック画面の奇数ラスタを表示する指定だそうだ。

MOV AL,4B
OUT A2,AL
上記のサイトによると、4BHはグラフィックGDCへのコマンドCSRFORMらしい。I/Oポート番号A2HでGDCにコマンドCSRFORMを指定して、次の

MOV AL,00
OUT A0,AL
I/Oポート番号A0HでGDCにコマンドのパラメータを指定するようだ。

上記サイトにはI/Oポート番号A2Hに4BHをOUTするのがグラフィックGDCへのコマンドCSRFORMだということと、それに続くI/Oポート番号A0HへのOUTがCSRFORMコマンドのパラメータ指定だということは載っていた。しかしパラメータの詳細までは載っていなかった。

さらにネット検索したら、別のサイトにたまたま載っていた。コマンドCSRFORMの場合、パラメータ指定A0Hは全部で3回続ける。ただし2回目や3回目のOUTをしなければ、その時点までとなる。この使い方を思い出して、私は大昔に買った赤い本を懐かしく思った。

このコマンドをテキストGDCに送った場合、カーソル表示のいくつかの設定ができる。しかしグラフィックGDCの場合、グラフィック画面にカーソルは表示しないので、設定はただひとつ、1行のライン数だけだ。ふつうグラフィック画面は1行1ラインだから、このコマンドは本当はグラフィックGDCに送るまでもない。

GDCへ送る3回のパラメータのうち1回目の、ビット0からビット4までが、((1行のライン数)-1)を表す。つまりI/Oポート番号A0Hへ送っている00Hが、1行1ラインの設定だ。

残念ながら私のCライブラリにはこのコマンドがない。自分が有用だと思ったコマンドはライブラリに取り入れたが、不要だと思ったコマンドは取り入れなかった。前回の記事で、若いころの自作Cライブラリを見つけた時、私はまるで過去の私がウルトラマンのように助けに来てくれたと感じたものだった。たしかに若いころの私は、颯爽とやってきて、私を救ってくれた。でも、そのあとすぐに力尽きて倒れた。これはウルトラマンというよりウルトラの父の登場シーンだな。

PC-98用にCやMASMでプログラミングしていた人なら同じだろうが、私もPC-98のデータブックを買った。私の記憶では、青くて分厚い本にはメモリマップやBIOSの情報があった。GDCについてはそれでは足りなくて、ブツクサ言いながらしばらく過ごしていたら赤い本が出た。速攻で買った。どちらも当時の私の愛読書だった。でも時が流れPC-98用ソフトが過去のものとなり、私がまだエミュレータの存在を知らない(ひょっとするとまだなかった)時期に、今後は役立たないと思って処分した。今になってこんなに残念だ。

MOV AH,42
MOV CH,C0
INT 18
さっきGVRAMを200ラインUPPERにしたばかりなのに、ここで400ラインにしたぞ。

という所までで、残念ながら今日は終わりだ。足が本格的に痛くなってきた。それなのにニーモニックや割り込み処理を見ていると、やめられない止まらない。このままでは明日歩けない。実はPCの前に座るのが無理だから、さっきから安楽椅子に座ってスマホで書いていた。それもここまでにしなきゃ。

コメント(0) 

コメント 0

コメントの受付は締め切りました