[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 3016] Re: ASKA(ASM)での呼び出し方について
- Subject: [OSASK 3016] Re: ASKA(ASM)での呼び出し方について
- From: Hidemi KAWAI <kawai !Atmark! imasy.org>
- Date: Tue, 22 Jan 2002 02:42:51 -0000
こんにちは、川合です。
rakkyo さんは 2002/01/22 01:11:16 の「[OSASK 3015] ASKA(ASM)での
呼び出し方について」で書きました:
>今、どれくらい縮むのかなと、BMPVをASKAで書き直しているのですが、
なんとすばらしい向上心!
・・・なんというか、あれだけの資料でここまで作ったというのは、
それだけで賞賛に値します。
>lib_initmodulehandle1がうまく呼び出せません。
>構造体の書き方がおかしいのかなと、gg00lib7のinitmdh1.asm(.なんたらやendは
>削除)をIncludeして、呼び出したりもしてみたのですが、ファイルの選択ダイア
>ログが出てこず、うまくいきません。
>(シグナルも帰ってきていないみたいです)
これの解決とどのくらい関係あるのか分かっていませんが、一つすぐ
に分かったことがあるのでアドバイスします。以下は引用です。
---
// stack:2k malloc:176k file:92k
segment CODE(USE32, PARA);
default(code == CODE);
void near header()
// タグの代わり(32byte)
{
segment CODE == CS; // 386asmのためのおまけ
ORG(0x0000);
asmout("JMP main");
ALIGN(8);
asmout("DB 'GUIGUI00'");
DD(0x5000 /* 20KB */); // stack & work size
asmout("DD 0,0,0");
}
---
ええと、まず、スタックは4KBにしましょう。僕の過去のサンプルで
はばかみたいにけちって2KBにしているものがありますが、あれは悪い
例です(すみません)。
ASKAでプログラムを書く場合、stackやmallocやfileの値はソース中
に記述します。仮に、
stack:4k malloc:176k file:92k
ということにするとしたら、headerの最後の2行はこうなります。
DD(4096 + 180224);
DD(94208 + 1, 0, 0);
そしてmain()の最初のところも、
WORK *work == DS:0x1000; /* 4KB */
ESP = 0x1000;
にします。malloc()の最初のworkの値もこれにそろえてください。
それとTempDataをちゃんと作ってあるみたいなので、_lib_initmodul
ehandle1()を持ってくる必要はありません。元に戻しましょう。
>lib_init等、前のコマンドといっしょに、 lib_waitsignal(シグナルが来るまで
>スリープ)を呼び出すと、INT 0x03が発生するのですが、どうしてでしょうか??
これは、"struct LIB_InitModuleHandle1"の宣言で、最後にeocを誤
って含めてしまったせいではないでしょうか?いや、良く分からないん
ですが・・・。そのおかしくなるという状態のソースに戻していただけ
れば、アドバイスできると思います。
また、"struct LIB_MapModule"の宣言で"word sel;"という部分があ
りますがこれはいけません。"int sel;"にしてください(もしくは、以
下のようにする)。
word sel, [2];
さらに、"struct LIB_FlushGraphBox"の部分の"word hoge;"も"int s
el;"にしてください。ここには、0x000cを入れます。
static_datas()内の/* lib_puttitle */のところに、DWを使っている
部分がありますが、これはDDに直すべきでしょう。
また、"struct WORK"の宣言のところで、
LIB_PutString lib_puttitle;
という部分がありますが、これは、
LIB_PutString lib_puttitle, [24];
の間違いだと思います。
---
他にも問題が残っているかもしれませんが、ちょっと今は分かりませ
ん。駄目なら駄目で、以上の修正を加えた状態で再度質問してください
。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.org
Homepage http://www.imasy.org/~kawai/