OSASKでJava
- nmosask_b.cの495行目でGeneral Protectが発生。どこがおかしいんだろう? -- ベイサイド 2003-09-22 (月) 09:48:08
- fp1の算出方法を fp1 = fp0 + ((filesize + 0xfff) & ~0xfff);にすれば直る気がしますがどうでしょうか?(問題はこれだけじゃない可能性もあります)。どちらにしても今のfp1の算出方法は完全にミスっています。 -- K 2003-09-22 (月) 11:59:01
- ちなみに、OSASKはメモリマップトファイルなので、そもそもメモリに読み込むことが不要なような・・・。xmallocもコピーもしないで、classMap = fp0;だけでOKな気がします(CLASSESとHELLOの間に隙間ができるのがいやなのかな?それなら確かにコピーする意味はあります)。 -- K 2003-09-22 (月) 12:04:18
- ご指摘ありがとうございます。おかげで動きました。fp1のアドレスって、0x010+filesizeじゃなかったんですか? -- ベイサイド 2003-09-22 (月) 13:03:35
- classesMapはuchar型なんです。classesMap=fp0としたらうまく動かなかったのでコピーすることにしました。CLASSESとHELLOの間に隙間を入れたくなかったのですが、WRPファイルはそういうフォーマットにはなってませんでした。したがって、ソースは汚くなっちゃいました(汗) -- ベイサイド 2003-09-22 (月) 13:05:15
- CLASSES.WRPとさらにいえばWABA.BINを隠蔽できれば、さらにエミュレータっぽくなりますね。 -- ベイサイド 2003-09-22 (月) 13:11:36
- 雰囲気としては、fp1 = lib_readCSd(0x0010) + (CLASSESで使った分);です。でも、プログラムではfp0にlib_readCSd(0x0010)が入っていて、CLASSESの消費量はfilesizeから計算できるので計算したわけです(単純に足したいところですが、OSASKのメモリマップトファイルはマッピング開始位置を4KB単位でアラインしなければいけません)。 -- K 2003-09-22 (月) 13:23:09
- それと、もし可能なら、HELLO.WRPをファイル名でオープンするのでなく、ファイルセレクタで選ばせるようにしてください。そうするとOSASK ver.4.1でシェルとの連携ができます(HELLO.WRPを実行すると自動的にWABA.BINが走って、セレクタでHELLO.WRPを選択したようになる)。 -- K 2003-09-22 (月) 13:25:26
- classesMap = fp0;にはできなかったということですが、それならfp0をuchar *で宣言すればいいだけのことです。しかし隙間を入れずにつながなきゃいけないみたいなので、結局コピーするのが簡単な方法でしょう(コピーしないで使えるとさらに速度が上がってメモリ消費量も減りますが、まあそれは遠い将来への要望ということで。waba本体もいじらなきゃいけなさそうですしね)。 -- K 2003-09-22 (月) 13:30:21
- すみません、既にファイルセレクタで選べるようになっていたんですね。助かります。>waba05 -- K 2003-09-22 (月) 14:03:05
- uchar *fp0;とやったらうまくいったのでこちらを採用しました。正直ポインターってよくわからないんですよ(爆)だからJavaで楽をしようってのもあるんです。OSASK4.1への採用お願いします。WABA0.5ならたぶん問題ないレベルだと思います。 -- ベイサイド 2003-09-22 (月) 15:40:10
- fp0の改良についてはソースで確認しました。OSASKの機能を生かしてもらって嬉しいです。・・・さて次なる問題を発見しましたので報告します。どうやらwaba0.6はテキストボックスとグラフィックボックスを重ねてしまったらしく(これはいけないことです)、ウィンドウを移動させると表示が狂います。グラフィックを使いたいみたいなので、そういう時はグラフィックボックスだけにして、文字を書くときはtest038の方法でやってください。 -- K 2003-09-23 (火) 15:51:44
- test038ってどこで入手するのでしょうか? -- ベイサイド 2003-09-23 (火) 15:56:41
- ベータテスタにならないと入手できません。ベータテスタはちょっとした覚悟とやる気さえあれば登録なしにすぐになれます。・・・ええと、僕のOSASKページの求人リストへ行って、ベータテスタのところを読んでください。そうすれば、test038を入手する方法が分かるはずです。 -- K 2003-09-23 (火) 16:04:16
- 指摘どおりテキストボックスを使うのはやめました。これでウィンドウを動かしても表示が狂いません。Kタンありがとう。 -- ベイサイド 2003-09-23 (火) 17:42:41
- lib_drawline0(0x0080 /* OR */, gbox, 0, lpt->st.x, lpt->st.y, lpt->ed.x, lpt->ed.y); としたら黒で線を書くはずなのだが、出ない。他の色なら出る。 -- ベイサイド 2003-09-23 (火) 19:06:32
- ORじゃ出ませんよ。当然です。PSETにしましょう。PSETは、optを0x0000にしてください。 -- K 2003-09-23 (火) 19:08:50
- ご指摘ありがとうございます。ついでに4bitカラーにも対応しました。24bit->4bitの変換アルゴリズムはいい加減ですが。 -- ベイサイド 2003-09-23 (火) 20:21:40
- ラインや点打ちが16bit/32bitグラフィックボックスに対応しないせいで、お手数かけてすみません。いつかやらなきゃと思いつつ、先送りしています。これができれば素直に32bitグラフィックボックスが使えますよね・・・。 -- K 2003-09-23 (火) 20:28:59
- g.drawText("a" + 1, 0, 0);は動くが、int b = 1;g.drawText("a" + b,0,0);でGeneralProtect発生。keytest.wrp(WABA08.LZHに同封)。 -- ベイサイド 2003-09-25 (木) 14:13:27
- 僕はJavaのことはよくわからないのですが、文字列に対して整数を加えることができるのですか?'A'+bとかなら僕でも分かるんですが・・・。 -- K 2003-09-25 (木) 14:39:22
- String a = "a" + 123 + "b"; で "a123b" になります。Javaの特徴です。 -- ベイサイド 2003-09-25 (木) 14:56:17
- おもしろい!> "a123b" -- K 2003-09-25 (木) 14:57:12
- Javaにprintfがないのはたぶんこのせいです。println(String str)はありますけどね。 -- ベイサイド 2003-09-25 (木) 14:57:50
- あと数値はString a = 12345 + "";のようにすれば文字列になったりします。 -- ベイサイド 2003-09-25 (木) 14:59:35
- バグの原因はStringBuffer回りを実装していなかったためでした。これでだいぶ使えるようになったと思います。 -- ベイサイド 2003-09-25 (木) 20:04:17
- マウスイベントを入れ始める。Bochsじゃ処理がおいつかない?マウスイベントが山のようにコンソールに出力される。そのあと反応がなくなる。困った・・・ -- ベイサイド 2003-09-26 (金) 01:03:35
- シグナルボックスを4096バイトくらいに増強して、マウスイベントはコンソールには出さないようにする、のがおすすめです。Bochsじゃなければ、マウスイベントはパンクしないで済むだろうと思いますが・・・。Bochsでは時々休みながらカーソルを動かしてあげてください。 -- K 2003-09-26 (金) 01:12:29
- メモ:waba/ui/PenEvent found--VmQuickError--VmError--push:0までわかった。 -- ベイサイド 2003-09-26 (金) 01:48:34
- ERR_OutOfClassMemだって。STACK,MALLOC,MMAREAとも100kもとっているのに足りないのかな・・ -- 2003-09-26 (金) 02:10:54
- とりあえずマウスイベントのバグは取れた模様。スリープ、キーイベント、マウスイベントがそろったのでたいていのアプリは作れるはずです。 -- ベイサイド 2003-09-26 (金) 04:08:23
- うわぁ! すごいすごい!! もうそんなとこまできちゃったんですか?。 がんばれ??!!!! (でも、無理なさらずに。お体にはくれぐれも気をつけて。) (^^) -- hideyosi 2003-09-26 (金) 06:56:04
- int a = 0x100000000 / 659.26 /* E5 */; といれたら can't link ___divd3 と表示されてしまった。 -- ベイサイド 2003-09-28 (日) 01:33:04
- Waba標準インターフェースではウィンドウタイトル変更が想定されていません。さて、どうやって拡張したものか・・ -- ベイサイド 2003-09-29 (月) 10:29:24
- 無理に拡張しなくてもいいですよ。javaとの互換性を損ねたりしたらもとも子もありませんし(どこでも動くバイナリだからこそ利用される)。それとも、互換性を維持したまま、拡張できるのかな? -- K 2003-09-29 (月) 10:59:02
- 一番簡単なのはOsaskWindow extedns MainWindowとしてOsaskWindowをいろいろいじることでしょうか。 -- ベイサイド 2003-09-29 (月) 11:39:18
- MainWindow.setTitle()関数を追加しました。Waba for Windowsではこの関数は用意されていませんから呼んではいけません。このくらいの拡張なら許されるでしょう。 -- ベイサイド 2003-09-30 (火) 01:06:50
- うーん、その関数を使ったwrpを作ると、OSASKのwaba.binでしか動かないプログラムになってしまうわけですよね。win32版のwabaがこの関数を無視してくれるようになれば(もちろんちゃんとサポートしてくれたらもっといいですが)、この拡張を使うといいですよ、といえますが、それまではこの命令を使うと実行環境を狭めてしまうので、利用をお勧めできないところがちょっとつらいですね。 -- K 2003-09-30 (火) 16:34:15
- なにかうまい解決方法はありますか?関数をけずるのは簡単なのですが、増やすのは難しいですよね。Waba for Windowsのみこの関数を無視するなら割と簡単なのですが、すべてのWABAで動作を保証するなら、すでにある関数以外は使えないことになってしまいます。 -- ベイサイド 2003-09-30 (火) 16:55:49
- win32版をいじるなら普通のJavaで動くようにライブラリを移植したほうがよいかもしれません。そこまでの余力はないですが(汗) -- ベイサイド 2003-09-30 (火) 16:57:52
- 僕はとりあえずあきらめるのが一番いいかな、と今は思っています。もちろん拡張するのはすてきなのですが、結局誰も使わない関数になりそうですしねえ・・・。でも、このsetTitleが、OSASK以外でもつかいたいねーって言われていれば、むしろOSASK版で最初に載せて、こんな実装をwaba本家でやってほしい!という例にすることもできます。そこまで元気なら拡張には大賛成、そこまで気乗りしなければ削除に賛成、といったところです。・・・どっちにしてもWaba(Java)の長所は「互換性」だと思うので、みんなに合わせるか、みんなが合わせるように仕向けるか、そのどちらかしかないと思います。難しい問題ですねえ。 -- K 2003-10-01 (水) 16:49:44
- Waba1.1では、折衷案としてMainWindowを拡張した場合はいままでどおり、OsaskWindowを拡張した場合はSetTitle()を使えるようにしました。 -- ベイサイド 2003-10-01 (水) 18:07:38
Last-modified: 2009-11-17 (火) 00:00:00 (JST) (319d) by ゲスト