パレットの初期化とかやってます。とりあえずソースを流用してパレット番号16〜231を埋めるコードとOSAkkieカラーを入れておきました。
ところで、set_paletteでio_cli()した後に、io_stiして無いんだけど、これでよかったんだっけ。誤字訂正になかったから正しいらしいとなると、io_store_eflags(eflags);で何とかなってるのかな。
void set_palette(int start, int end, unsigned char *rgb) { int i, eflags; eflags = io_load_eflags(); /* 割り込み許可フラグの値を記録する */ io_cli(); /* 許可フラグを0にして割り込み禁止にする */ io_out8(0x03c8, start); for (i = start; i <= end; i++) { (略) } io_store_eflags(eflags); /* 割り込み許可フラグを元に戻す */ return; }
さて、ここで一気に多色化対応したらどうなるだろうかなあ。OSAkkieではパレットとの変換とかでむやみやたらに苦しんでいたので、早いうちに手を打てばいいような気がして。