ねこめもmkII(マークツー)

本家ねこめも (http://nekomemo2.site)の補助用。 主に勉強ネタ。

8日目(マウスを動かすまで)

その前に、前回の画面の文字が出ない&化ける問題について。
bootpack.cの

sprintf(s, "%02X", i);

のところ、%02Xを%xにして小文字で表示されるようになった。

難しい話ではなく、単に変数の型の問題だった。

多少本書と表示は変わるが、キーボードとマウスの動作確認には支障ない。

 

haribo05aに入る。

ここからはしばらくはbootpack.cの編集になる。

上記の%x(harib05c、dは%dも出てくる)の問題だけ注意して、make runでちゃんと表示されることを確認。

これで背景を削りながらも、マウスをコントロールできるようになる。

 

haribo05dまで実際に動作させて解読が終わったら、あとは本書を読むだけ。

メモリの番地を図にして解説しているブログがあって、そこがとてもわかりやすかった。そちらを見たほうがいい。

(でも自分の頭が悪いので、正直なんとなくわかったような気になった感じ)

ここはあまり書き残すことはなかった。

 


 今回参照させて頂いたサイト:
http://bttb.s1.valueserver.jp/wordpress/blog/2018/01/06/makeos-8/

 

7日目(文字表示の不具合)

harib04aを参照してmake runしたが、最初のエラー。

int.c: In function ‘inthandler21’:
int.c:34:9: warning: implicit declaration of function ‘io_in8’; did you mean ‘io_out8’? [-Wimplicit-function-declaration]
data = io_in8(PORT_KEYDAT);
        ^~~~~~
        io_out8

int.c:34:16: error: ‘PORT_KEYDAT’ undeclared (first use in this function)
  data = io_in8(PORT_KEYDAT);
               ^~~~~~~~~~~

int.c:34:16: note: each undeclared identifier is reported only once for each function it appears in

これは「#define PORT_KEYDAT0x0060」の一行を書き忘れ。
しかしこれを直してmake runで画面が出ても、 Aを押すと2Xが出てしまう。
他のキーも同じ。ちょっと怪しい。
気になるワーニング。

int.c: In function ‘inthandler21’:

int.c:35:9: warning: implicit declaration of function ‘io_in8’; did you mean ‘io_out8’? [-Wimplicit-function-declaration]
  data = io_in8(PORT_KEYDAT);
        ^~~~~~
        io_out8

これでも画面は出る。
見直したところ、これは「int io_in8(int port);」がbootpack.hになかった。
それを直しても表示はまだ治らない。

しかたないので放置して、harib04b進むが、またエラー。

bootpack.c:32:13: error: invalid use of undefined type ‘struct KEYBUF’
   if (keybuf.flag == 0) {
            ^

bootpack.hにいろいろ追記してなかった。本家を参照して修正。
そして nasmfunc.nasでio_stihltのミスタイプ。
make runは同じ。右Ctrlでも2Xになる。

エラーは同じものが頻発するので、int.cとbootpack.cを変更したらbootpack.hを確認しながら進めるようにする。
それと不安が残るので、hariboteフォルダごとバックアップを取りつつharib04eまで進む。
 ホーム/tolset/haribote_bak1
という感じにしている。

fifo.cが増えたので、bookpack.hに/* fifo.c */のところを追加。
Makefileにもfifo.cを追加
make runで画面は出るものの、やはりキーボード入力で変化なし。
だんだん結果が本書と離れてしまうが、7日目はこのまま最後まで続ける。

harib04fに進むと、これはbootpack.cの編集だけで済んで問題なかった。
しかしキーボードは受け付けない。
haribo04gで再びマウスとキーボードも受け付けるようになるが、表示がどうも違う。

(152, 78)

は問題ないが、起動直後の画面が本書と違い

(152, 78)
  (152,78)

になってしまっている。

更新されていると思われる.cファイルをHariboteOS/project/07_day/harib04gからそのままコピペしても表示が変わらないので、これはこういうものとしてこの章は終了。
参考にしたブログ等はないが調べた感じでは、そろそろUbuntu上でQEMUを使っていることの差分が出ているような感じ。(と、思いたい)