暇つぶしにBTRONプログラミングでもするかー
ひまつぶしだからな。 驚いて失禁するなよ。 泣いてもママは助けてくれないぞ。 #include <tororon.h> void MAIN(M_EXECREQ, *msg); { pdsp("どうよ"); ext_pcr(0); } tororon.h -------------------- // これはフリーだ、勝手にすれゴラァ #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> いきなり間違ってた。 >>2 の6行目を差し替え。 #include <tororon.h> void MAIN(M_EXECREQ, *msg); { pdsp_msg("どうよ"); ext_pcr(0); } クソスレ立てる前に 人にコード見せる前に コンパイラに通しておけ。 そーゆーレベルの問題じゃないような… どこにこのコードを人に見せる必要があるのか小一時間(以下略 おっ、食いつきがあった。 まじめな人達だ。 >>9 君の手元ではコンパイラに通せないと?ならば通るコードは どんなものよ。 >>10 下手糞なプログラムは上手い人が 狙ってできるものではないのだよ。 その時その時を精一杯頑張って絞 り出された結晶のようなものです。 インターネットは使い方次第で個の力を何倍もの力に変えることが可能です。 費用対効果で他の媒体にこれより優れたものは無いでしょう。 長い目で見ても素晴らしいネットワークビジネスの紹介!! 私たちの参加しているネットワークビジネスは 在庫をもつ必要がなく、 製造メーカーの製品を直接広めるものです。 私たちのグループは、製造会社の製品をHPとメールという媒体も活用して、 低価格、高品質なよき製品を広めようという集まりです。 流通コストを消費者に還元して製品を広めるというこのシステムは、 何人かの識者が本などで発言しているのを読んでみると、 人間的かつ将来有効なシステムを創っていける可能性の大きいものだと感じます。 実際、有名な大会社AT&T、GM、マスターカードなども採用しだしています。 興味のある人には、ぜひ参加して一緒にやってみましょう。 以下のホームページでの説明も御覧ください。 http://ailove22.fc2web.com/lpd/index.html >>11 M_EXECREQ, *msg × M_EXECREQ *msg ○ ext_pcr(0); × ext_prc(0); ○ >>16 おっ、的確な指摘だ。サンクス。 しかし実名ならば社会的に抹殺されるような間違いだな、こりゃ。 というわけで修正。 #include <tororon.h> void MAIN(M_EXECREQ *msg); { pdsp_msg("どうよ"); ext_prc(0); } tororon.h -------------------- // これはフリーだ、勝手にすれ #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> 申請すればこのレベルでもIDをもらえるのか試してみたいが さすがにオレもそこまで厚顔無知にはなりきれないな。 どーせならマイクロスクリプトで書けや( ゚Д゚)ゴルァ >>17 コンパイルは通るかも知れんな。 ところで期待通りに動いたか? 貴様脳内プログラミングするには 100年早いと思われ。 >>22 まじかよ、動かないのかよ! BTRONプログラミングは難しいね。純朴少年だったならば泣いて 鼻水をたらしながら逃げ出して、トロン嫌いになっていたところ だろう。 というわけで修正。 #include <tororon.h> void MAIN(M_EXECREQ *msg); { TC *message = (TC[]){L"どうよ"}; pdsp_msg(message); ext_prc(0); } >>21 資料がなくて脳内プログラミングできないんだよ。 おまい本当にCでプログラム書いたことがあるのかよ… (TC [])←なんじゃこりゃ TC *message = (TC[]){L"どうよ"}; × TC message[] = {L"どうよ"}; ○ しかし開発環境における日本語の扱いは意味不明だな。 データボックスも糞だし。やれやれだぜ。 >>25 あ、それで通るんだ、なるほど。 >(TC [])←なんじゃこりゃ これはオレが創作したのではなく、サンプルに書いてあったのを 真似たのである。 というわけで修正。 #include <tororon.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"どうよ"}; pdsp_msg(message); ext_prc(0); } あそんであげるからさ、お願いだからsageてくれないかな。 このスレ見られたらBTRONユーザーがまた馬鹿にされちゃうよ。 sageかたは知ってるよな? >>27 多分それならだいじょうぶだろうな。 ところで、 > これはオレが創作したのではなく、サンプルに書いてあったのを > 真似たのである。 そのサンプルどこにあるのよ? 探してみたけど見つからなかったぞ。 あと>>1 は大至急コンパイラを手に入れること。でなきゃあそんでやんないよ。 >>29 恥ずかしがらずに敢えてageるところに光明が見えてく るのである。 >そのサンプルどこにあるのよ? 探してみたけど見つか >らなかったぞ。 開発者サイトから入手した dojosrc.tar.gz に含まれる src/prac01b.C 。 >>29 他OSのスレ?でまともなのはほとんど在りませんが何か? >>30 > TC *message = (TC[]){L"どうよ"}; prac01b.Cみてみたら、同じように書いてあったのでおかしいなあと思って調べてみたら、 これはC99で認められている新しい書き方で俺が知らなかっただけらしい。 C++のコンパイラがはねてたので間違いだと思い込んでしまったよ。 うぅぅ、恥だ… >>1 よ、正直スマンかった… >>33 C99に限らずgccの拡張で以前からあったような気がするが 確証はない。(だから黙ってた) gcc以外でコンパイルされることがあるとは思えないが、 しかし敢えて移植性の低そうな表現を選んだprac01b.Cの 作者の意図はよく分からん。 さてと、今日もプログラミングするかー。 >>33 ふーん、なるほど。おれはC99のお勉強は数年後にしよう。 >>34 なるほど。 ということで以下のをおれ推奨印にしておくか。 #include <tororon.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"どうよ"}; pdsp_msg(message); ext_prc(0); } バリエーション。 #include <tororon.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"こんばんは牽牛さん"}; pdsp_msg(message); ext_prc(0); } tororon.h -------------------- // これはフリーだ、勝手にすれ #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> 後はコンソールへの文字列表示に挑戦したいが、資料収集が大変だ。 挫折するかも。 >>41 %sでなく%Sは正直知らんかった。最近まで。…って話?? >>43 そうだけどさ。思いつかんじゃん。 で、なんだろ? 罠っちゅーほど酷いことあったろうか? まあ俺もはじめは戸惑ったけどさ。ちょっとがんばればわかるんじゃないかな。 %Sの話はMonaWikiにもでてたからね。 ところで>>1 はどこへいったんだ? でてきてくれんとこのスレ50までいかんうちに 沈んでしまうぞ。まあ千里の道も一歩からということもあるし、気長にいこうや。 質問があればここにかくんだぞ。 ネタを新たに仕込むのに時間がかかりそう。何かやりたいネタが あれば、1にとらわれずにどうぞ。 // GPLにしとくか // Jane #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"Jane"}; TC message2[] = {L"( ゜Д゜)"}; pdsp_msg(message); slp_tsk(1000); pdsp_msg(message2); sig_buz(0x10001004); ext_prc(0); } >>51-52 そうなの?知らんかった。 なので修正。 // GPLにしとくか // Jane #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"Jane"}; TC message2[] = {L"( ゜Д゜)"}; pdsp_msg(message); slp_tsk(1000); pdsp_msg(message2); sig_buz(0x10001004); ext_prc(0); } バリエーション。 // GPLにしとくか // Jane 1.1 #include <basic.h> #include <bstdlib.h> #include <tcode.h> #include <errcode.h> #include <btron/btron.h> #include <btron/dp.h> #include <btron/hmi.h> #include <btron/vobj.h> #include <btron/tip.h> void MAIN(M_EXECREQ *msg); { TC message[] = {L"Jane"}; TC message2[] = {L"( ゜Д゜)"}; pdsp_msg(message); gset_ptr(PS_BUSY, NULL, -1, -1); slp_tsk(2000); gset_ptr(PS_SELECT, NULL, -1, -1); pdsp_msg(message2); sig_buz(0x10001004); ext_prc(0); } 13行行末の「;」を削除したら無事コンパイルできますた。すごいアプリが出てきたものだ〜。 >>52 >13行行末の「;」を削除したら いつからそんなのが混入したのだろうと見直してみたら、 最初からではないの。 オレもまだまだ尻が青いなー。 もし、C、C++以外の言語を使うビジュアル開発環境があるとしたら使ってみたい? >>58 もちろん使ってみたいでし。APLとかでなければ……。 マイクロスクリプトをビジュアル開発環境と呼ぶのは気が引けるら。 いまんとこネタ。 一応、Windows上でDelphi使っていこうか、ってことくらいしか考えていない。 最初はC用の開発環境にするけど、将来はObjective-CかEiffelにしてみたい。 ちなみに、DelphiもObjective-CもEiffelも使ってなんか作ったことは一度もないし、超漢字用のCygwin版開発環境も入れたことない。 な、みごとにネタだろ。 ひとときの夢を有り難う…(涙 じゃあ、こっちもネタと言うことで… ANS-Forthのっけてみたいなとか思っているけど仕様の翻訳が全然すすんでいましぇん。 あと訳が終わってもシステムコールのアセンブラインターフェイスとかオブジェクトファ イルの形式が全然分からないのでお先真っ暗でし。ちなみにそっち方面の経験全くありま しぇん。 ネタというよりもはや妄想でし。 #!/usr/bin/ruby print "雑談も" print "プログラミング言語ですれば" print "ソフトの一丁できあがり" print "\n" BTRON プログラミング リンク でGoogleで検索したら、このスレが3番目だった。 教えてくださいおながいします。 http://sapporo.cool.ne.jp/bbs/btron?num=372&ope=v&page=&id= にある方法でログを出そうと思ったのですが、コンソールに出ません。 なぜかシステムコンソールに出るのだけれど。。。 なんでここ、 if (cons_conf(CS_SRCHPORT, args)) cons_conf(CS_SETPORT, args); とか(こうするとコンソールに出る感じ。でも黙り込むことがある) なってないのかもわからんのですが、実験すると止まることがある ようで、いまいちわかりません。 GSDPの過去ログもないし。 大量に出力すると動きがおかしくなる(つーか、無視されるようになる) のも挙動不審な感じ。。。 ここで訊くのが間違いだったらスマソ。 んにゃ、セルフ開発環境に付いてるSYSCONSOLEです。あと、CONF_SELFというのもようわからんちん。 すまん、実はセルフ開発環境は使ったことがないんだよな… 誰か質問に答えてあげられる人はおらんかのう。 まず用語が理解できないので説明希望。 「システムコンソールでないコンソール」とは何のこと? 「セルフ開発環境に付いてるSYSCONSOLE」とはコンソール小物を起動 するとできるコンソールとは別物? えと、「セルフ開発環境に付いてるSYSCONSOLE」(システムコンソール)と、 「超漢字にもともと付属しているCONSOLE」(コンソール)とを 区別したかったのです。 前者「システムコンソール」はあれです、syslog()で表示できるやつ。 後者は小物箱の中に「コンソール」という名前であるはずです。。。 こっちはsyslog()で表示できなかったと思います。で、コンソールから コマンド打って実行すればprintf()で表示できるんだったかな?(ちょっと いま確認できません。スマソ) マイクロスクリプトから起動したコードから、ログだとかをコンソール (標準添付のCONSOLEの方)に吐かせたいのですよ。 TiPSにある「セルフコンソール」とは「コンソール小物」のことと思われ。 http://www.personal-media.co.jp/tron/developer/doc/brightv.r4/device/console.html#aei 辺りをつらつら読むと > 指定したコンソールに設定されている出力タイムアウト以内にデータを出力できなかったときは、 その時点でリターンする。 なんてことになっていたりするし、一気に流し込むとバッファがあふれるなんてことも あったような気がする。この辺すでに忘却スマソ。 あっほんとだ 「セルフ」って書いてある システムコンソールじゃなかったのね。 ずびばぜんでじだ & ありがとうございます で、コンソールの性能が悪くて??、出力できる保証はないらしい、と。困ったなこりゃ。 システムコンソールって起動するとポート番号1のCONF_SELFな ポート(デバッグ起動するとCONF_SERIALになるのかな?)をCONF_BUFIOに設定変更してるようですね。 それで何も考えずに1番ポートからCONF_BUFIOを探していくと システムコンソールに出力してしまうのか。 3番ポート以降でCS_SRCHPORTすれば確実にコンソールの方に 出力できるかな? とりあえず出力先を確定するのはこれでやっつけるとしよう。 で、コンソールの性能が悪い?? 件はうまい回避方法があるでしょうか? console_put()でタイムアウト検知するか、console_ctl()でタイムアウト 設定を変えておいてconsole_out()すれば、とりあえず黙り込むのは 避けられるかな。で、何度か再試行してから諦める、と。 たぶん豊福さんとかがGSDPで話題にしてるんじゃないかと思うんですが。GSDPって過去ログ出してないからなあ。 >>73 手元のログ見たよ。 確かに豊福さんが話題にしていますた。 俺もGSDP入ってるけどそのときの話はコンソール作ってその先にプロセスがいて それとやりとりするというものだった。今回の話はログをコンソールに流すだけなんだよね。 セルフ開発環境も入れてるけどSYSCONSOLE知らなかった。どうやって動かすの? >>74 やは〜りそうでしたか。 >>75 あれ? 小物登録しませんでしたか? 小物メニューに出てますけど。。。 それにしてもコンソール面倒だなあ。。。 小物メニューにありますた。 でもダブルクリック起動すると落ちるけどどうやって起動するの? >>70 syslog()って初めて聞いたんだけどどこに説明書いてあるの? |マイクロスクリプトから起動したコードから マイクロスクリプトのsystem関数でCプログラムを起動したってこと? http://homepage1.nifty.com/SR50/tyoukanji/tyoukanji.html#kasou 面白いから読んでみ。 日本人は創造性が遺伝的に劣っているんだそうだ。孫によると。 こんなやつに日本のネットを仕切られて、おまえら、いいのか、ほんとに。っていいたくなる。 perl -e '$z="カ";$y="ー"; $x="バ";$v=">>79 ";print "$v\n\n$x$y$z\n";' あー、そこのサイトはコミュニティー内でも基本的にネタ扱いなので 放置の方向でよろしく。 すまんねぇ。ヲチ板のスレdatに落としちゃって。 >>77 んー普通に小物メニューから起動ですが……。落ちますか? systemじゃなかったprocessか。syslog()の説明サンキューです。 小物メニューのシステムコンソールをダブルクリックするとプロセサ例外になりますた。俺だけ? システムコンソールって普通のコンソールとどのくらい違うの? あれ? システムコンソールって4専用っていうか共有オブジェクト使ってるのかな? ファイルサイズは、と… SYSCONSOLEは41918、CONSOLEは40468 うーむかわらん。わからん。 システムコンソールは普通のコンソールとほぼ同じです。syslog() できるようにデバッグポート(普通はシリアル経由の外部コンソール)への 出力を横取りして表示する追加機能があります。 &T000095; またまた教えてくらさいおながいします。 KDEとか使っててウィンドウのシェード(っていうのかな、タイトルバーを ダブルクリックするとウインドウがタイトルバーだけになるやつ)が便利 なので超漢字でもやってみたいんですが、フロントエンドプロセスから他の ウィンドウをいじろうとするとEX_WPRCで蹴られます。 まあウィンドウがよそからごちゃごちゃいじられると気分が悪いので 蹴られるのもわからんでもないんですが、フロントエンドプロセスから でもだめなものでしょうか? やりかたが悪いんでしょうか? やったのは、フロントエンドプロセスのイベントループの中で wget_evt(&ev, NOWAIT); switch (ev.s.type) { case EV_BUTDWN: if (ev.s.cmd == W_TITLE && wchk_dck(ev.s.time) == W_DCLICK) { W wid = wget_act(NULL); WDSTAT ws; WERR err; wget_sts(wid, &ws, NULL); ws.r.c.bottom = ws.wr.c.top + (ws.r.c.bottom - ws.wr.c.bottom); err = wrsz_wnd(wid, &ws.r); if (err < 0) syslog(LOG_ERR, "wrsz_wnd()=%d.", err >> 16); continue; } break; /* 中略 */ } wpas_evt(&ev); てな感じです。走らせてアクティブウィンドウのタイトルバー上でダブルクリックすると wrsz_wnd()=-289. と出ます。EX_WPRC です。 gsdp-MLに聞くしかないんじゃないの、EX_WPRCが返ってきてるならだめそうだけど 誰か一人くらい2チャンネラーであることカミングアウトして聞け なんなら今日のBTRON-Clubで聞け 皆さん頑張っているみたいで、嬉しい限りです。 しかし、これはちょっと難しいのではないかと思われます。 なぜかというと、BTRON3のアプリケーションは、他のプロセスが 自プロセスのウィンドウを変形したりすることを想定して つくられていないからです。その証拠に、ウィンドウの再表示を 要求するイベントはあっても、ウィンドウの変形を通知するイベントは BTRON3には存在しません。 でもいろいろ試してみるのはとてもよいことなので、 これにめげずに頑張って下さいね。 ruby -e 'print ">>93 \n\n官僚発見\n" 仮にだめだったとしたら次善の策はなんだろう ウィンドウをリサイズしたかのようなイベントを送るのか #include <bstdio.h> int main(void) { int i; TC msg1[] = {L"バーカ"}; TC msg2[] = {L"オマエのかーちゃん出べそ"}; char *msg3 = '>>96 '; for (i = 0; i < 3; i++) { printf("%s\n%S\n%", msg3, msg1); dly_tsk(400); } printf("\n%S\n", msg2); return (0); } ウインドウのリサイズを要求するイベントを仕様に 追加するしかないと思われ。 が、これもこのイベントに対応したアプリのウィンドウしか サイズを変更できない罠。難しいね。 すいませんお騒がせしてます。 うーむやっぱりだめですか。。。 でも、TASKボタンってありますよね。 http://www.eva.hi-ho.ne.jp/mitsuda/ あれは他のウィンドウを画面外に移動して隠しているとか。 残念ながらソースは出てません。 wrsz_wnd() ではないけれど wmov_wnd() かなと勝手に思っているのですが、 どうやっているのだろう。。。 >>102 手動でリサイズしたかのようなイベントを作成してそのウィンドウに sendってできないんだっけ >>103 俺もTASKボタン興味あるけどソースないね TASKボタンを起動してイベントをモニターしたらなんかわかんないかね と書いたもののイベントのモニターってできるんだっけ? ウィンドウ一覧もタイトルバーだけにはならないけどウインドウを小さく出来る。 でもソースはR1.0だけしか見当たらない。 >>104 なるほど、そういう手があったのか。目から鱗。 でもこれだと変形不可のウィンドウが(例えばシステム環境設定) があるときに変形のつもりが移動になって困るような。 ウィンドウ属性って他のプロセスから取り出せたんだっけ。 >>105 自作のアプリのウィンドウを最小化させるのは そんなに難しくないはずだよ。PMC謹製のevt_loop() を使う代わりに自分でイベントループをかいて、 タイトルバーがダブルクリックされたときに wmov_drg()の代わりにwrsz_wnd()を呼び出せばいいはづ。 >>106 >ウィンドウ属性って他のプロセスから取り出せたんだっけ。 仕様書を見る限りwget_stsにEX_PRCのエラーはないようだ。 これは65(90,103)が確認してくれることを期待しよう。 >>104 >と書いたもののイベントのモニターってできるんだっけ? いいこと考えた。ウィンドウ開いて受けたウィンドウイベントを全部書き出す プログラム作ってそれを起動しTASKボタンがそれにどんなイベント送ってくるか 見ればいいんだ。ついでにここまでやってくれんか>65 > 見ればいいんだ。ついでにここまでやってくれんか>65 はーい。 さっそく、つかまえたイベントを全部(EV_NULLとEV_NOMSG以外) ダンプするものを作って調べてみました。 来たイベントの生ダンプです。一行が一つのイベントです。 (ウィンドウを隠したとき) wev : 01 00 00 00 00 00 00 00 40 00 00 00 01 00 0e 00 05 00 01 00. wev : 01 00 00 00 1a e1 fe 00 fd ff e6 ff 03 00 0e 00 00 00 00 00. wev : 02 00 00 00 00 00 00 00 fd ff e6 ff 03 00 0e 00 00 00 00 00. (ウィンドウを出したとき) wev : 08 00 00 00 00 00 00 00 fd ff e6 ff 01 00 0e 00 04 00 01 00. wev : 01 00 00 00 16 5e 00 01 fd ff e6 ff 03 00 0e 00 00 00 00 00. wev : 02 00 00 00 00 00 00 00 76 03 09 00 00 00 09 00 00 00 00 00. ふうむ。。。 >>104 > 手動でリサイズしたかのようなイベントを作成してそのウィンドウに > sendってできないんだっけ それですね。 以降はあくまでもダンプ内容からの推測ですが……。 どうもTaskボタンは自分でwchk_dck()してるようです。 で、ピクトグラム上でダブルクリックしたときは EV_BUTDWN(1)→EV_BUTUP(1)→EV_BUTDWN(2)→EV_BUTUP(2) をwpas_evt()していますが、((1)(2)は区別のための番号です) ピクトグラム*以外*のウィンドウ枠(タイトル文字列を含む) をダブルクリックしたときは EV_BUTDWN(1)→EV_BUTDWN(2)→EV_BUTUP(2) をwpas_evt()しているようです。 このとき、EV_BUTDWN(1)の発生時刻を0にしており、 アプリケーション側でwchk_dck()したとき確実にW_PRESS となるようになっています。 通常アプリケーションはW_PRESSを検出するとwmov_drgを 呼ぶので、wmov_drg()実行中にPD位置を変えてしまうのだと 思います。 その後、もともと発生していたEV_BUTDWNを上記EV_BUTDWN(2) としてwpas_evt()し、さらにEV_BUTUP(2)をwpas_evt()して います。 ウィンドウの消去/描画はすべてwmov_drg()まかせだろう と思います。 ※PD位置を移動する際、set_pdp()を使っているとすると、 タブレットなどの絶対位置動作するものを使っていると エラーになってウィンドウが動かせない、ということは ないのかとちょっと心配。 ……というわけで、ウィンドウのハンドルをつまんで 同じようなことをすれば、なんとかなりそうです。 でもそれだとタイトルバーだけにはならない。残念。 ありがとう >65 気になっていたTASKボタンの謎がわかってうれしいよ。 >その後、もともと発生していたEV_BUTDWNを上記EV_BUTDWN(2) >としてwpas_evt()し、 wev : 01 00 00 00 1a e1 fe 00 fd ff e6 ff 03 00 0e 00 00 00 00 00. の(0xfffd,0xffe6)で右下隅座標に移動させてると思ったけど違うかな。 >でもそれだとタイトルバーだけにはならない。残念。 スクロールバーがあると完全にはつぶせないのか。惜しかったね。 ごめん wev : 02 00 00 00 00 00 00 00 fd ff e6 ff 03 00 0e 00 00 00 00 00. こっちだった。座標は同じだけど。 >>112 いえ、座標はH型なので、これはピクトグラムの左上かと。 ウィンドウをタイトルバーだけにできないのは、スクロールバーのせいというよりも アプリケーション側でウィンドウの変形限界値(最小面積?)を決めているせいのようです。 イベントを使ってウィンドウをずりずり引っ張っていく方式だと、当該アプリケーションに wrsz_drg()してもらうことになるので。 ともあれ、大きなヒントをいただきありがとうございました。 その後いろいろやってみましたが、どうも座標関係(描画環境というか)が理解不足なのと EV_BUTDWN/EV_BUTUPのタイミングがよくわからないのとで停滞気味。 半端者なのに色気はあるもので、ここ2〜3日ちょっと思い立って Wavaの移植を試みています。 WabasoftからGETしたWin32/CE用ソースをもとに、超漢字で動く ものをとりあえず力任せに作っています。素人なもので。 本当はPMCのevt_loop()を使うとかするのでしょうが、とりあえず ということでwget_evt()→MainWndProc()→DefWindowProc()という Windows風の流れで(内容は名称から推測できる程度のものです) 書いてみました。DefWindowProc()はデバイスの処理とかをしない いいかげんなものですが、とりあえずはいいかと。 まだnmbtron3_b.cまでしか書いていないので完全無能VMですが、 一応コンパイルが通ったところで起動してみると、基本的な クラスファイルがないせいか、いきなり "java/lang/String.class"を読むのに失敗して止まりました。 しかたないのでとりあえずWin32のJDKで作ったSun製String.class を与えてみると、これは読み進んで(まだメモリに読み込むだけで 解釈してないから当然)、次にObject.classも読み、さらに "java/lang/String$CaseInsensitiveComparator.class"を読もうとして、 どうもパス名のバッファ不足らしくエラー終了してしまいました。 まあバッファを拡大するのは簡単なのですが、Javaのクラスファイル のファイル名(パス名にあらず)って長いものが多い感じですよねえ。 ううむ、どうすべ。 unixemu風に無理矢理拡張しても34文字までで、足りない。 JAR/WRPにすればいいのかな? よさそうな気がする。でもWabaどころか Javaもよく知らないことに気がつきました。(遅い) Wabaの移植をしている人、Wabaに詳しい人、いませんか? Javaに詳しい人でもいいのです。解説きぼーん。 http://www.personal-media.co.jp/tron/developer/usrapid2.html の8000.c030.8000を参照のこと。 彼が暇ならSourceForgeのWabaリポジトリに加えてくれるんじゃないすか? ちなみに、warp 形式が大吉。流通させるときもファイル一個で済むし。 VMいじるんだったら、JLSとJVM仕様は知っておいたほうがいいかもね。 WabaVMには結構バグが残ってるし、java.lang.String 周りでトリッキーなことしてるし。 >>118 ありがとうございます。大変参考になりました。 >VMいじるんだったら、JLSとJVM仕様は知っておいたほうがいいかもね。 >WabaVMには結構バグが残ってるし、java.lang.String 周りでトリッキー >なことしてるし。 正直、まじめにやるのはツライ。。。Javaは素人がお手軽に相手するもの ではなくなっているかと。VMのコアをいじるのもまた同じで。 VMとかStringクラスの問題って移植と切り分けられるものではないので しょうか。(他のVMとかでも同じなのでは?=誰かが解決してくれる可能性 が高い? まあプロは使わんでしょうが) それとも、アプリケーションを書くとそれにぶつかるよということかな? さて、その後Wabasoftのサイトで解説を見たら、ちゃんとWARPファイルの 仕様もあって、なんだ簡単じゃんという感じです。失礼しました。 それにしてもWaba、もなかさんがもう2年近く前に移植されてるじゃない ですか。 ありがたく使わせていただくことにします。(まだ諦めない) とりあえずWARPファイルの読み込みは四の五の考えずもなかさんのコード をパクろうっと。 次はしこしことnmbtron3_c.cを書いていけばいいんでしょう。 でもここが一番コード量が多いか。Wabaの中身も知らんといかんし。 でもまあとりあえず必要なGraphicsDraw()はコピペでいいか。 >>119 ええとね、大抵のJavaアプリケーションでは、文字列の操作を行うわけですが、そのときに、コンパイラは暗示的にjava.lang.StringというFQCNを埋め込みます。 Wabaはあくまでサブセットなので、文字列クラスwaba.lang.Stringを用意していまして、これを使いたいわけですが、暗示的に埋め込まれたjava.lang.Stringを書き換えるわけにはいきません。 そこで、ちょっとしたトリックをVMの中に埋め込んでいます。 知っていれば、>>116 で引っかかったような所は回避できるはずです。 知らなくても、アプリケーションやVMの機種依存部は、書けます。 >>120 MM氏の作業は、例によって中途半端だけどね。 BtronFileInputStreamとTADをパーズするライブラリがあれば、案外使える開発環境になるかもしれない。超漢字上ならメモリの心配はしなくてよいし。 PnutsやJpythonのように、JVM上で対話型インタプリタを作れないわけでもないし。 トランスポート層よりも下に依存しないORBがあれば、旧態依然のイベントハンドラから開放されるし、Wabaくらいのサイズなら、かつてTCLやGuileが夢見たように、汎用のアプリケーション操作言語として組み込んでも、全体を圧迫しない。 TACLの夢を実現するには、案外手っ取り早い素材かもしれない。 彼は、IPAで簡易HORBサーバを作ったりWabaに傾倒したりで、要素を揃えるところまではやったけれど、いかんせんBTRONに飽きちゃったみたいなのね。 そんなわけで、65には大いに期待。 ええと、とりあえずコンソールから起動してメインウィンドウにHello World を表示させるところまでは行きました。waba.wrpは固定で読み込むことに して、アプリケーションのクラスファイル*.classとその他のクラスファイル classes/.../*.classは必要に応じて読み込む、という感じです。これに起動 メッセージの処理を付けていけば、仮身から起動するVMになりそうです。 まだだいぶバギーでエラー処理もほとんどしていないし、少し頭を整理 したいので、時間を割いて綺麗にしようと思います。 仮身から起動するときのクラスファイルの与え方なんかも研究の余地が ありますね。 >>121 ええと、後者はjava/lang/...をwaba/lang/...にすげ替える処理とかの ことですね。前者は何でしょう。いずれにせよちょっと今手が回らない 感じなので、落ち着いたらあちこち調べてみましょうか。。。 >>122 あー完成には前途遼遠というのはその通りですが、中途半端はちと 言い過ぎかもと思いましたです。。。とりあえずHello Worldを出した実績が あるだけでずいぶん勇気づけられました。 BTRON固有機能クラスを作るとなるとやはりBTRON上で動くコンパイラが 欲しくなってしまうでしょうね。Wabaで書いたWaba(Java)コンパイラって あるのでしょうか。 Javaで書いたJavaコンパイラはありそうな気もしますが。 >>123 優先順位をつけて、複数のwrpから読めるようにすると、面白いかなと思い鱒。 TACLの辞書構造っぽい。 Wabaで動くコンパイラは、無いみたい。移植するにも、例外が無いのが痛い。 バイトコードアセンブラくらいならスクラッチから書けるかもしれない。 > Javaで書いたJavaコンパイラはありそうな気もしますが。 多くのJavaコンパイラが、Javaでかかれてい鱒。 ところで、gcj がセルフ環境で動くなら、こいつを使うのも手。 (gcj は .class も吐けるよね。) しかしセルフ用gcjの実現…大変そう…。 >>124 ありがとうございました。 その後多少の精進を積んだ結果、仮身起動版が動くようになりました。 文章実身にオプションや起動クラス名を書いて、さらにクラスファイル (*.class, *.wrp)の仮身を置いてから保存し、その文章実身を指す仮身 からWabaVMを起動するというやり方です。 BTRON的にはクラスファイル等に実行機能付箋を貼り付けて起動すべき なのかもしれませんが、超漢字では付箋操作が面倒ですし、わずかに 入手できるアプリケーションのうち多くが*.wrp(か*.prc)なので。。。 いちおうWindow/MainWindow/FontMetrics/Graphicsのネイティブメソッド は実装したので、 http://www.cygnus.uwa.edu.au/ ~rnielsen/link/ ぐらいはだいたい動きます(ちゃんと遊べます)。 内部(特にイベントループ)のつくりがインチキなのを早いとこ直さない と。。。 >>126 すばらしい。 ところで、起動するwrp実身に付箋貼ってしまうってのは? MM氏版は、そうしていたような…とwaba.sourceforge.netを 見たけれど、あの馬鹿コードをcommitしてないのな。 小一時間問い詰めておきまつ。 >> 127 wrpから起動する場合は起動クラスの指定をどうするかが問題ですね。 BTRON的には付箋のオープン起動でパネルを出して指定してもらう だけの話で実装もたいして面倒ではないと思いますが、現状の超漢字 ではかなり面倒な操作となる予感。。。 MM氏版はサンプルなのでVMコンパイル時にクラスファイルを原紙に うめこんでいまつ。開発環境がないとHello World専用VM。 > BTRON的には付箋のオープン起動でパネルを出して指定してもらう 引数を同じ実身中の適当なレコードにぶち込むという手もあるかと。 通常は、一度設定したら変えないよね、引数って。 >> クラスファイルを原紙に 本命は(実行)機能付箋で、付箋イットなどと一緒に使用して ほしがっているような気がするのだが、いかが? 文章に埋め込んだほうが、使いやすいかもしれずとは思われ。 とはいえ、1wrpの実行に2実身を費やすってのも…ふむ。 >>130 > 引数を同じ実身中の適当なレコードにぶち込むという手もあるかと。 ええ、WinCE用で言えば*.wrpと*.lnkをそれぞれ一つのレコードにするん ですよね。確かにそれでたいていはOKですね。あ、引数を持つ*.lnkの方を TAD主レコードで実現すればいいのか。 BTRON上ではJavaコンパイラがないので、勢いどこかからアプリケーション をダウンロードしてくることになります。まあzipをほどくくらいは できるものとして、得られるバイナリ実身(を指す仮身)をちょいちょいと 操作して実行まで持っていきたいものです。*.wrpはバイナリのままでいい わけですが、*.lnkは起動情報を閲覧・変更可能なようにTADへ変換したい。 シフトJIS→TADをGUIでやる簡単な方法があるでしょうか。テストの時は euc2tadを使わせてもらってますが、一般ユーザーには障壁が高いでしょう。 FAT領域があればファイル変換を使ってもいいのかもしれませんが。。。 >>130 > 本命は(実行)機能付箋で、付箋イットなどと一緒に使用して > ほしがっているような気がするのだが、いかが? ごめんなさい、これちょっと意味がつかみかねます。教えてください。 > 文章に埋め込んだほうが、使いやすいかもしれずとは思われ。 今は*.lnk相当の起動情報をTAD文章データの第1段落に書くようにして 第2段落以降を無視するようにしています。 いくつもの起動情報とクラスファイル/WARPファイルをTAD文章データの中に ストックしておいて適宜第1段落を取り替えることで、キャビネットに似た ランチャーのような状態になっています。 >>130 > とはいえ、1wrpの実行に2実身を費やすってのも…ふむ。 とも思ったので、起動した仮身の指す実身にWARPファイル相当のレコードが 含まれているときは、問答無用でそれを読むようにしてみました。なるほど 使い勝手はいいようです。 しかしどういう形で原紙を用意するかがちょっと悩ましい感じ。。。 >>133 wrpにjarのマニフェストと同様の「何か」があればOK? Main-Class: my.application とかさ。 超漢字版以外でも役に立つと思いますた。 65の頑張り具合やghostscript移植の話を見てるとなんか嬉しくなってくるよ >>134 えっと、まず、KAKKOさんの「付箋イット」 http://homepage2.nifty.com/b-soft/btron/f-it/f-it_exp.html は、ご存知? VM配布者はWabaの実行機能付箋だけを配って、 ユーザは、実行機能付箋を「付箋イット」に入れておく。 ファイル変換で持ってきたwrp実身を「付箋イット」に 通して実行付箋をつける。 てな具合で原紙なしでも使える環境のできあがり、と。 いかが? ただし、この解のみでは、waba.exe への引数に 相当するものをどう与えるのかについては、 解決不可能であり鱒。 >>138 ありがとうございます。 付箋イットは愛用してます。(ありがとうKAKKOさん) 上で書いたように起動した仮身が指す実身のTAD主レコード(の第1段落) を使うのが簡単でいいような気がしています。 たとえば、ダウンロードしたバイナリに付箋を貼って使う場合は、 こんな感じの実身になります。 RecNo. RecType 内容 =============================================================== 0 31 HelloWorld.class他を含んだhelloworld.wrpそのもの 1 1 TADで「/w 0 /h 0 HelloWorld」などと書いてある 2 8 Waba処理系の実行機能付箋 3 8 基本文章編集の実行機能付箋 ありゃ、表が崩れました。失礼。。。 &T212121を使って整形してみます。環境によっては無意味ですけど。。。 RecNo. RecType 内容 =============================================================== 0 31 HelloWorld.class他を含んだhelloworld.wrpそのもの 1 1 TADで「/w 0 /h 0 HelloWorld」などと書いてある 2 8 Waba処理系の実行機能付箋 3 8 基本文章編集の実行機能付箋 起動情報をTAD主レコードとすることもあり、wrpそのものはタイプ31 とかのレコードにすることになりますが、あまり問題はないでしょう。。。 一方、原紙を使うときは、 (例) RecNo. RecType 内容 =============================================================== 0 1 TADで「/w 0 /h 0 HelloWorld helloworld.wrp」 1 8 Waba処理系の実行機能付箋 2 8 基本文章編集の実行機能付箋 3 0 helloworld.wrp(またはHelloWorld.class)へのリンク という感じになります。 どうもなかなかうまくいかないもので……。 今日しこしことImageクラスのネイティブメソッドを実装してみたのです が、コンパイルまでちゃんと済んでいるのに、リンクの段になって waba.o: In function `ImageLoadBMP': waba.o(.text+0x533a): undefined reference to `libimg_rea_bmp_bmp' collect2: ld returned 1 exit status waba.o: In function `ImageLoadBMP': waba.o(.text+0x533a): undefined reference to `libimg_rea_bmp_bmp' make: *** [bwaba.out] Error 1 と出て止まってしまいました。ん〜??? libimg_rea_bmp_bmp()をlibimg_rea_bmp()と書いてもだめだー。 コンパイルが通るってことはlibimg.hには従ってるはずなのだが。 ライブラリパス指定が間違っているのだろうか。でも、libapp.hがらみ はちゃんと通っているけれど。。。 Imageを書いているのはCoreTestを走らせたいからですが、肝心の CoreTest.classは起動するといきなり「Can't find field」とか言って 止まってしまいます。デバッグプリントしてみると、なんと public class CoreTest extends MainWindow { ... private void drawGrid(Graphics g) { int screenWidth = this.width; ... というところで「CoreTestクラスにはwidthというフィールドはありまへん」 という死に方をしています。うーむ、widthはControlクラスから継承する はずなんですけど。。。でも、この辺の処理(※)は私が書いたものじゃない せいかよくわからないなあ。。。 (※)getField()/getFieldByIndex() しかたがないのでscreenWidthとかを定数にしてから再コンパイルして 起動してみると、ちゃんと起動します(あたりまえだけど)。 しかし、Welcomeクラスとかは同じようにthis.widthとか使いまくってるのに エラーにならずちゃんと全部動作してるんだよなあ。……??? よくわかんないや。あと、あと。 で、定数に書き換えてみると Test #5 まではちゃんと動いてますね。 Test #6 でプロセッサ例外で止まりましたが、これはImageの実装が終わって ないからでしょう。 うーむImageが無事できればCoreTestは制覇できそうなのですが。。。 > 起動情報をTAD主レコードとすることもあり、wrpそのものはタイプ31 > とかのレコードにすることになりますが、あまり問題はないでしょう。。。 いいんじゃないすか。wrpはTADではないし。 > 0 1 TADで「/w 0 /h 0 HelloWorld helloworld.wrp」 TADに詳しい人々の一部は悶絶すると思われ…でも、いっか。 ソース公開の暁には、設定用パネルを作ってくれる人が出てくる だろうし。 >>65 リンク時の -limg -lapp のような既述を -limg -lapp -limg -lapp のように、二度読ませると通ったりしないか? ライブラリの依存関係のせい(?)でハマった経験あり鱒。 >>145 > TADに詳しい人々の一部は悶絶すると思われ…でも、いっか。 うーん。。。 やっぱり基本的には引数はパネルで設定することにして、それとは別にダウン ロードしたアプリケーションを実行するときのために *.lnk を読んで付箋の 固有データを書き込むユーティリティーをマイクロスクリプトで書いて添付 するのがまっとうかもしれないですね。 とにかく、ユーザーが引数を適切に設定できないのは困っちゃいますからね。 じゃあ、付箋に設定するっつーことで後で修正しようっと。。。 >>146 ありがとうございます。 $BD/appl/etc/makerules の中の LDLIBS=... に -limg -lapp を追加したら 無事リンクできました。標準では付いていなかったのね。。。 お騒がせしました。 さて、なんとかImageクラスも実装してWindows BMPが読めるようになり、 簡単なゲームとかなら動き出しました。 http://www.wabasoft.com/fungames.shtml のうち、次のものが動いています。 Link, Parski, WabaPoker(*1), WavingDuke(*2), ZOE(3D Tic Tac Toe), Roller, Cobra, Life *1 Fileクラス未実装のため保存は不可 *2 表示に一部問題あり(あまり実害はないが) もともとPMCのevt_loop()を使うつもりだったのですが、evt_loop()では EV_BUTUPがつかまえられないことに気が付きました(遅い)。画面上のボタン類 の表示が押されてひっこんだまま戻らない。。。ちぇ。 しかたなく自前のイベントループを組み立てて動かしてます。ひととおりの イベント処理はすませているはずですが、evt_loop()がやっている処理が正確 には把握できないのでちょっと不安。。。 たとえば EV_DEVICE なんかは oprc_dev() するだけでいいのかなあ? ま、とにかく、File, Catalog は実装していこう。残るのは SerialPort, Socket, SoundClip だけど。。。SerialPort くらいはできそうだなあ、 Socketは自分の知識では大変かも。。。まあいいや、必要なら誰かがなんとか してくれるだろー。SoundClip はもう無理っつうことでいいのかな??? そうだ、重要なことを忘れていた。 どうもあちこちでいただけるアプリケーションはPalm用が多くて、wrpよりも prcだかpdbだかの方が多いんだった。 pdbの形式をしらべなきゃ。。。 > たとえば EV_DEVICE なんかは oprc_dev() するだけでいいのかなあ? OKだったようにおもいまつ。 >>151 ,152 ありがとうございました。 PDBはwww.palmos.comでも詳しく説明されていたんですね。 さて、そんなわけでPDBの読み込みもできるようになりました。 これで、かなりの数のアプリケーションが動作するはず。 といっても、Wabaアプリケーションはそんなにないか。 WinCEの*.lnkファイルはテキストファイルのようなものなのであまり迷わない のですが、prcファイルはもっと多くの情報が入っているのでちょっと迷いま した。ま、ファイル変換で強引に文章データにして、それらしいところを コピペすれば終わりです。 /w 0 /h 0 /l (中略) Hoge Hoge.pdb と書けばOKですね。 The Palm Piano, Suck-O-Meter, TAKE, takecal(Koyomi), BarCode は問題なく動いています。しかし、SKeyとmajongがまだ動かない。 Frog Against The Machineも動きません。これははっきりとWabaVMに手を 入れているようなので(とりあえずVM.useKeyとかなんとかいうメソッドが みつからないと言ってエラーになってしまう)、よほど運が良くないと 将来的にも動かないでしょう。残念。majongはオープンソースのようなので いずれは動く可能性が大きいと思いますが。 ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!!ねぎマンセー!! そうそう、どなたかwbmという形式(Waba Bitmap ?)をご存じですか? Fileクラスに続いてCatalogクラスもネイティブメソッドを実装してみました が、まだテストが全く済んでいません。WabaPokerは相変わらず 「Write failed -1」と表示しているので、どこかバグってるはずですが。。。 いちおうソースを晒してみます。汚くても驚いてはいけません。 http://homepage3.nifty.com/linxs/ の下の方に(すいません)「Waba移植中」という仮身画像があるのでたどって みてください。画面例と今日のソースがあります。 誰かテストプログラムを書いてくれないかなあ。。。 >>158 コンパイルするのも面倒って人が多いから、バイナリあれば便利かも。 おぉ、動くねぇ。 昔のjavaプログラムを引っ張り出して移植でもしてみるか。 >>158 Wireless Bitmap かな?WAP で使われてます. ttp://www-6.ibm.com/jp/developerworks/java/011005/j_wi-wbmp.html >>158 MM氏から伝言。 ▼ #define WOBJ_FileRec(o) のようなことをしているようですが、対応するFile classのプロパティは 変更しましたか? 仮に、運良く動いているように見えたとしても、 classfileの別の領域が破壊されているかもしれませんよ。 それと、Catalogを作るとき、実身名の長さが制限を超えた場合の 処理が入っていないような気がします。勘違いだったらごめんなさい。 ▲ >>163 よろしこ〜。 >>164 ありがとうございます。調べてみますです。 >>165 ありがとうございます。>>158 はやっつけ実装だったせいか何カ所かで 核エラー(ER_ENDRとか)が帰ってきていたようでした。なおしたところ 動いているような感じです。 > 対応するFile classのプロパティは変更しましたか? がいまいち理解できないので(すんまそーん)ちと不安。。。 WabaPokerはFileでなくCatalogだけ使っているようなのでわからないけど。 それと、 > Catalogを作るとき、実身名の長さが制限を超えた場合の処理が入っていない は昨日(だっけ?)そのへんを書き換えてチェックするようにしました。 ご指摘ありがとうです。 >>166 つまり、 #define WOBJ_FileName(o) (objectPtr(o))[1].obj #define WOBJ_FileMode(o) (objectPtr(o))[2].intValue となっている[1]とか[2]とかっていうのは、ソースファイル ▼ public class File extends Stream { /** Don't open the file mode. */ public static final int DONT_OPEN = 0; /** Read-only open mode. */ public static final int READ_ONLY = 1; /** Write-only open mode. */ public static final int WRITE_ONLY = 2; /** Read-write open mode. */ public static final int READ_WRITE = 3; // READ | WRITE /** Create open mode. Used to create a file if one does not exist. */ public static final int CREATE = 4; String path; int mode; ▲ のフィールド出現順を意味するんすよ(static final 変数は除く。 また、extendsしたときは、superが持つプロパティの次につながる)。 ソースファイル(==クラスファイル)に存在しないエリアにアクセスすると、 とんでもないものを読み書きしてしまうかもしれないってこってす。 Javaと違ってチェックは激甘なのでつ。 アプリケーションプログラマの皆様も強引なクラスキャストをしないよう気をつけてくだ賽。 でwaba.sf.netのコード見てみたらFileHandleに問題発見…鬱。 >>167 ありがとうございます。 > #define WOBJ_FileName(o) (objectPtr(o))[1].obj > #define WOBJ_FileMode(o) (objectPtr(o))[2].intValue > となっている[1]とか[2]とかっていうのは、ソースファイル > : (中略) > String path; > int mode; > ▲ > のフィールド出現順を意味するんすよ(static final 変数は除く。 > また、extendsしたときは、superが持つプロパティの次につながる)。 > ソースファイル(==クラスファイル)に存在しないエリアにアクセスすると、 > とんでもないものを読み書きしてしまうかもしれないってこってす。 あーなるほど。。。それは怖いことですね。 しかし、nm???_c.c冒頭にある ClassHook classHook[] = ... ; の3列目(というか、classHook[?][2])にネイティブメソッドで使い回すための 領域の数をきっちり指定しておけば、その分だけVMが余分に領域をとってくれて ウマーなはず、かと。。。 WOBJ_FileRec(o)とかはhook varとしてカウントしてclassHookにも設定してある から問題ないと思いますが。。。 なにか根本的に勘違いしてるのかな??? > Javaと違ってチェックは激甘なのでつ。 むふう。。。ひょっとしてウ居留守みたいのも書けるかな?。。。鬱。 wbmはWireless Bitmapとは別物だった感じです。しかももうWabaではサポート しない形式だとか。。。結局詳細はわからへん。。。 あきらめてhttp://www.geocities.com/tennywoo/ からmajongのソースを入手。 画像ファイル名がハードコーディングされているので、bmpをwbmにリネーム して、extends Appをextends MainWindowに修正してから再makeし、wrpを 作ってみました。で、実行できたのですが。。。 牌が全部トーフやん。 うーむ追っかけてみてもbmpはちゃんと読めているし。。。 ハッ!!! これ、モノクロ用だった。てことは、ANDとORが逆効果? 超漢字用は当然カラーなので、モノクロアプリケーションを使うとき用の オプションを追加してしのぐことに。ああ、オプションが汚くなってゆく。 。。。やったできた。二人打ち麻雀が動くようになったぞ。 > WOBJ_FileRec(o)とかはhook varとしてカウントしてclassHookにも設定してある > から問題ないと思いますが。。。 うおソース誤読しますた。神の仰る通りです。首吊ってきます。 首吊ってきました。苦しかったdeath。 >>143 お詫びついでに、SF版WavaVMのgetfieldにバグ混入の予感。 143との関係は不明。でも濃。 SerialPortクラスのネイティブメソッド実装完了しますた。 テスト皆無ですがほとんどドライバが面倒見てくれるので大した問題はないかと。 ちなみに、現状ではウィンドウを複数開くことを考慮していません。 修正はそれほどたいへんではないはずですが。。。 そのかわり、任意のアプリケーションでの拡大表示機能を持っていたりします。 さてと、一段落したようなので、課題整理だ。とりあえず思いつくままに、 (1) 引数指定を付箋起動のパネルで行うように変える。 (2) ウィンドウを複数開く場合に対応する。 (3) 標準添付のwarp.wrp相当の内容を見直す。 (4) Socketクラスのネイティブメソッドを実装する。 (5) *.lnk/*.prcから起動オプション等を読み取って付箋に格納する ユーティリティをマイクロスクリプトで作る。 (6) PDB→Catalogコンバータを作るか、作業ファイル直下のPDBを Catalogとして扱うようにCatalogクラスを修正する。 (7) *.wbmという画像形式について調べ、読み込みを実装する。 (8) ついでに*.jpg, *.pngの読み込みもサポートする。 (9) UtfString関連を整理し、TRONコードを扱う準備をする。 (10) アプリケーションIDを取る。 (11) BTRON形式のマルチレコードファイルを扱えるクラスの 仕様を考え、ネイティブクラスを含め実装する、つーか それをやってくれる人を探す方がいいのだが。。。 (12) Unicode←→TRONコードの変換方法を考える。泥沼のヨカーン 。。。むー、結構たくさんあるなー。気づいていない問題もテンコ盛りだろうし。 あんまり大変じゃないご希望、ありますか? >all >希望、 とりあえず取説かな・・・。 何も手伝えませんが、このままがんがってください。 ふーSocketクラスのネイティブメソッドもなんとか実装が終わった。。。 HTTPアクセスができたのでちょっと感動。 >>174 そ、そうですね。取説。。。 しばらく無理っぽいので、サンプル実身を同梱して原紙にも説明を書いておくという乱暴な方法でしのぐことにしようっと。(酷) しばらく(だいぶ)お待ちください。。。スマソ Java/Wabaな方々、評価お願いいたしますです。お手柔らかに。。。 とか言っているうちに起動オプションをパネルで設定できるようになりました。 付箋起動もできるようになったし、起動方法についてはもうこんなものでしょうか。名前も変えたし。。。 Wabaに適用できるかしらないけどVMをDLLとして配付する、っているのはどう? 配付される実身は展開するとこんな感じ(数字はレコード番号) 16:Wabaバイトコード。べつに31番でもいいけど。 9:VM呼び出し。 7:WabaアプリのアプリID付きの機能付箋 このアプリID付きの仮身か付箋をダブルクリックなんかで起動させると 9番レコードのVM呼び出しプログラムが起動してVMをリンク、実行。 VM呼び出しコードはMAINに渡される起動メッセージを引数にVM側の 関数を呼び出す。 VM側のコードは渡された起動メッセージをもとに呼び出し側の付箋を 引数として16番レコードのWabaバイトコードを実行、という流れ。 どんなもんですか? >とろ吉 わかりやすいようにソースで説明してください。 >>178 んー、実行はどうやってするのでしょう? 仮身から実行するのならタイプ9の レコードは使えないですよね? WabaプログラムといえどもBTRON上で動かす以上、実行プログラムが前面に出 てきていいのかという問題意識は多少あって、普通の仮身/実身のように処理 対象データが前面に出るようにすべきかもしれません。 Wabaプログラムの入出力対象が実身のTAD主レコードか何かで、Wabaプログラ ム(バイトコード)はどこか別のところに蓄積されていて、付箋には起動クラス 名と起動オプションだけが入っている、とか。 たとえば、 起動する仮身--->作業対象実身 | +--TAD主レコード(hogehoge.classの標準入出力先) +--実行機能付箋 | +--起動クラス名(hogehoge.class) +--その他のオプション 適当な場所 | +--hogehoge.class +--fugafuga.class ... こうすると、VMをシステムへ登録するのとは別に、Wabaプログラムを登録する 手順が必要になります。まあ実行機能付箋の中にクラスファイルを入れてしま うという乱暴な手段もあるにはありますが。。。 >179さん ソースといわれても VOID MAIN(*msg) { vm_exe(msg) } こんなもんなんだが。 あとはWabaのMAINをvm_exeに変えてデータボックスを読むためリンクを絶対パス指定で取り出すようにするくらい。 >65さん そうそう。VMの他にWabaアプリもシステムに登録する必要がある。 で、適当な場所というのはもちろん「/SYS/$$PROGRAM.BOX/」。 >>177 Wabaの本質はVMなのでスレ違い。 バイトコードへのコンパイラが肌に合わないなら http://grunge.cs.tu-berlin.de/%7Etolk/vmlanguages.html 辺りを嫁。WabaVMが扱えるかどうかは知らんがな。 >186さん 超漢字4以外の環境を完全に忘れてました。 ついでに、WabaのライセンスがGPLだったことも。 この場合、アプリもやっぱりGPLにしないといけなくなるよなぁ。 // やっぱGPLでしょ VOID MAIN(*msg) { vm_exe(msg); } >189さん やっぱり。 これの元ネタってCygwinなんだけど、あっちもCygwin用ソフトを作るならGPLと矛盾のないライセンスを使うこと、になってるらしい。 アプリはすべてGPLにするなんてのは無理だよなぁ。 >>190 うーむ話が見えない。。。ちょっとわからないので教えてくなさい。 WabaVMがGPLだからといって、Waba/Javaで書いたアプリケーションも GPLで配布しなきゃいけないんでしょうか? さて、一応UnicodeのStringも表示できるようになりました。たぶん。 次は入力。libappにあるread_text()とかを使ってみました。 うーむ。普通に入力できるのだが。。。 変換中(未確定)文字列の表示がウィンドウの中にゴミとして残ってしまう。 これはなんとかしないとなあ。毎回再表示かけてたら死にそうだし。 >>192 190の真意は知らんが。 Wabaをshared libとした場合、 そのライブラリを使うアプリケーションはGPLに準拠する必要がある。 汎用のスクリプト拡張用ライブラリ(TCLとかGuileみたいなもの)として 使いたければ、ちょっと悲しい。 GPLの及ぶ範囲は同一プロセスということ*らしい*ので、BTRON3仕様OSなら サブプロセスを立ち上げてランデブポートでも使って通信すればよいのでは ないかと思われ。 実行されるバイトコードは影響ないはず。たとえば、gawkのスクリプトは GPLでなければいけない、なんて話は聞いたことない。 超漢字ghostscriptのパッチbtron_patch.tar.gzの中に超漢字用に 特化した描画関係のパッチが見つけられなかったんですがどこで やってるんでしょうか? >>195 ん? 超漢字用gsはPNG/JPEG形式のファイルを生成するだけじゃないんですか? で、BGVはそれを表示するだけ(という言い方はナンですけど)では? なるほどkn網走が表を作って表計算に表示させてるようなものですか。ありがとうございます。 >>198 よくわかりません。実際にはどう違うのですか >>199 knはソースコードを拝見させていただきました。プログラムの 中身はBTRONアプリケーションで、画面への表示は表計算に任せて (もたれかかって)いるようです。 gvの方はUNIXアプリケーションで、超漢字のUNIXエミュ環境のAPI だけを利用したプログラムです、btron_patch.tar.gzを眺めた限り では。 なので「たぶんぜんぜん違う」と私の脳内では響いています。 …… と、知ったかぶって書こうと思ったのだが、使ったことないから わからんのよね。要はknはBTRONアプリで、gvは中身はUNIXアプリ だと言いたかったようだ。 >>200 そういう意味でしたか。私はデータファイル作成担当と描画担当でアプリケー ションを分けているという点で同じようなやり方だという意味で書きました。 そもそもghostscriptは描画まで担当するソフトじゃないので描画関係が ないのは当然でした。使ったことないのでボケた質問してしまいました。 話の流れを断ち切るようで申し訳ないですが・・・ どこぞでガイシュツの http://homepage2.nifty.com/b-soft/btron/deep/deep.html にあるCygwinの方はうまくいかないです。←binutilのコンパイルが失敗するです。 病むをえず、使ったことも無い赤帽を用意したらなんとか 超漢字開発環境のサンプルをmakeすることができました。 そこで皆様にお伺いしたいのですが、 1)超漢字開発環境をどんな環境で浸かっているか?(りぬくす、空リス・・・) 2)何も考えずにインスコしたbinutilとgccは「クロス開発環境」と考えて良いか? 1)は単なる好奇心、2)は当方UNIXはからっしき素人なので今後困った時に調べる賭場口が欲しいからです。 どーぞおねがいします。 質問ついでにもうひとつ。 開発環境ではjperlが必要となってるんですけど、 今時のperlはjperlでできることが大抵できるとかで、 とりあえずmakerulesのjperlをかってにperl(5.6.0くらい)にしておきましたが、 皆様はいかがなさっておられるでしょうか? Mac OS X使ってるよ。以前はCygwin使ってた。ちゃんと動いてたよ。 おいらは仕様書とサンプルを読みながら書いて 脳内コンバートしてるよ。 >>200 近辺への自己レス。 Ghostscriptが描画を担当していないのは周知の事実ではないと思う。 氏の作業によって初めて知ったよ。 皆様どうもありがとうございます。 >>205 セルフってやつですね。セルフで充分でつか? >>206 Cygwinでもがむばって環境構築してみまつ。 Cygwinビミョーな変化早すぎ。ついていけてません。 Linux/FreeBSDはわざわざここで発表するほどでもないと・・・ Waba試してみたんだけどWaba用紙にサンプルとして書いてあるParski.wrpって どこにあるの? Parski.wrpって、メモリ増やさないと ゲーム開始直後になんか落ちるんだよね。 謎だけど。 まずは Hello world! したいのだけどどうすればいいの >>212 配布場所の画面例ページにリンクがありますよ。 >>214 ヒープかなんかが不足するようですね。超漢字ならメモリに余裕はあるので 適当に+10000くらい増やしてもまあいいのでは? >>215 Waba/Javaコンパイラはないので、Windows/Linux等の上でコンパイル する必要があります。残念。 ちょっと問題が見つかったのでCatalogクラスで生成する実身名のパッキング方法を 変更します。 Palm PDB→Catalog用実身コンバータを作ってみました。こっちは暫定版ですが説明書付きです。 Wabaアプリケーションの実行までの段取りについても作業例を書いてありますので、 当座の説明書にいかがでしょうか。 ただし、まだ付箋起動とかについては書いてません。超漢字では付箋操作が面倒なので。。。 そういう一から書くのが面倒な処理ってサンプルプログラムをコピペ→小変更、 ですませることって出来無いの? >>203 binutilsのビルドがこけるのはNLSが原因かも知れんな。 >>204 jperl -> perl で特に問題が起きたことは無い。 しかしもう rm -fr /usr/local/brightv して久しいので、 信憑性は低いかもsage。 >>204 自分は,だいぶ昔の Plamo 使ってまつ >>219 うーんと、私のことかな? 超漢字では付箋操作が面倒というのは、ユーザー側の操作のことです。 プログラムを書く側からは特に面倒ではないです。 実身操作‐管理情報の「付せん指定」ページでドラッグが可能になるだけでもだいぶ ラクになるような気がするんだけどなー。 皆様コメントありがとうございます。 >>220 >binutilsのビルドがこけるのはNLSが原因かも知れんな。 確認してみまつ。 >jperl -> perl で特に問題が起きたことは無い。 ではドキュメントを修正してもらいましょう。 >>221 >自分は,だいぶ昔の Plamo 使ってまつ 結局、「ならどこでも動く」ということで・・・ 粘着すみません。jperlよりperlを使えと書いてある文書をやっと見つけました。 Perl 5.8.0でないと完全にjperlを越えてはいないということですが・・・ http://www.cpan.org/ports/ これを元にドキュメントの修正を依頼しておきますた。 これってマイクロスクリプトで超漢字に実装出来ないかな〜。 ttp://www.crystalnewmedia.com/gridlock/gridlock.html 統合スレより。 >新規ID申請アプリ >Xbrush 名前からするとX上で動くソフトの移植かな。 >デジカメ画像閲覧 実身数65536個の壁は越えているのか? >Xbrush >http://homepage1.nifty.com/acry/xbrush.htm X-windowからの移植らしい。 gsdp-MLで実行プログラム実身の詳細構造を知りたいという質問があったけど PMCは特にドキュメントを用意していないとの回答ですた。プログラム実身に 詳しい香具師はフォローしる。 たしかオブジェクトファイルフォーマットはELFぢゃなかったっけ? http://www.globe.to/ ~oka326/archive/elf_doc_sgml_ja/elf_doc.html でも詳しいことは知らないんだよな… ELFっても、各種様々。 リンカスクリプトを追うしかないので輪。 これはもう読んだか? http://www.muppetlabs.com/ ~breadbox/software/ELF.txt これ詳しくていいですねえ。ありがとうございます。 大事に保存させていただきました。 Tさんはここ見ているのかな? とりあえずのELFの仕様書の新しいバージョンを貼付けておくよ。 http://x86.ddj.com/ftp/manuals/tools/elf.pdf ところで誰かgcc3使っていない? --target=i386-unknown-gnuで ビルドしてみたんだけどsample1をコンパイルしたらリンクエラーが出て 見事に失敗。やっぱ駄目かな… /usr/local/brightv/lib/i386e2/libmain.a(main.o): In function `_C_startup': main.o(.text+0x12d): undefined reference to `__initloading' /usr/local/brightv/lib/i386e2/libmain.a(cstartup.o): In function `_init_compi ler': cstartup.o(.text+0x5): undefined reference to `__callfini' cstartup.o(.text+0xf): undefined reference to `__callinit' collect2: ld returned 1 exit status make: *** [sample.out] Error 1 自己レス。nm使って調べてみたら__initloading等を /usr/local/brightv/lib/i386e2/crt1f.oで発見。 リンクしたらあっさりとsample1のビルドに成功。 しかもちゃんと動くし。おろろ… こんなんでいいのかしら。 誰かの参考になるかもしれないので一応報告。 ホストOS: Mac OS X 10.2.4 ターゲットOS: 超漢字 R3.000 binutilsのバージョン: 2.13.2 gccのバージョン: 3.2.2 gcc-3.2.2/configureのオプション: --prefix=/usr/local/brightv --enable-languages=c --host=powerpc-apple-darwin6.4 --target=i386-unknown-gnu --disable-threads --disable-shared --with-newlib gccにはhttp://estset.d.fiw-web.net/H8develop.html で発見したパッチを 手動で無理矢理当てました。 この後tagsamp1と2をビルド。2は問題なく動くが1を起動したら 「アプリケーションが実行できません」と怒られますた。嫌な予感… > --prefix=/usr/local/brightv --enable-languages=c --enable-languages=c,c++ じゃないか?確かめてないけど。 2.7.xでもlibgccの辺りが微妙にちがっていて特定のアプリが動かない という問題があったような。 .a を超漢字開発環境から上書きしてもダメすか? このところ気ぜわしくてすっかりご無沙汰してしまいました。。。 さてと、>>143 で「Can't find field」が出ていた件ですが、やっとわかり ました。つーか、Wabasoftサイトのアタマに書いてあるじゃん。。。 というわけで、各例題のmake.batの中の「javac」を「javac -target 1.1」 へ変更してmakeしたら、おー動く動く。もぞもぞ。 ん? Scribbleだけは落書きできない。そうか、PenEvent.PEN_DRAGが 発生しないからだな。ちぇー仕方ない実装するか。。。 >>237 c++をenableにするとgccのビルドの途中でこけるので今のところ とりあえずcだけ。tagsamp1はcで書かれているので大丈夫なはずなんだが。 >>238 おお、Iさんだ。早速libgcc.aを2.95.2のものに置き換えてみますたが、 未だにtagsamp1は動いてくれやがりませぬ。どこでエラーが出ているか 調べてきます。 <血液型A型の一般的な特徴>(見せかけのもっともらしさ(偽善)に騙されるな!!) ●とにかく気が小さい(神経質、臆病、二言目には「世間」(「世間」と言っても、同じA型を中心とした一部の人間の動向に過ぎないのだが・・・)、了見が狭い) ●他人に異常に干渉し、しかも好戦的でファイト満々(キモイ、自己中心、硬直的でデリカシーがない) ●妙に気位が高く、自分が馬鹿にされると怒るくせに平気で他人を馬鹿にしようとする (ただし、相手を表面的・形式的にしか判断できず(早合点・誤解の名人)、実際にはた いてい、内面的・実質的に負けている) ●本音は、ものすごく幼稚で倫理意識が異常に低い(人にばれさえしなければOK!) ●権力、強者(警察、暴走族…etc)に弱く、弱者には威張り散らす(強い者にはへつらい、弱い者に対してはいじめる) ●あら探しだけは名人級でウザイ(例え10の長所があってもほめることをせず、たった1つの短所を見つけてはけなす) ●基本的に悲観主義でマイナス思考に支配されているため性格がうっとうしい(根暗) ●単独では何もできない(群れでしか行動できないヘタレ) ●少数派の異質、異文化を排斥する(差別主義者、狭量) ●集団によるいじめのパイオニア&天才(陰湿&陰険) ●悪口、陰口が大好き(A型が3人寄れば他人の悪口、裏表が激しい) ●他人からどう見られているか、人の目を異常に気にする(「〜みたい」とよく言う、 世間体命) ●自分の感情をうまく表現できず、コミュニケーション能力に乏しい(同じことを何度 も言ってキモイ) ●表面上協調・意気投合しているようでも、腹は各自バラバラで融通が利かず、頑固(本当は個性・アク強い) ●人を信じられず、疑い深い(自分自身裏表が激しいため、他人に対してもそう思う) ●自ら好んでストイックな生活をしストレスを溜めておきながら、他人に猛烈に嫉妬 する(不合理な馬鹿) ●後で自分の誤りに気づいても、強引に筋を通し素直に謝れない(切腹するしかない!)●自分に甘く他人に厳しい(自分のことは棚に上げてまず他人を責める。包容力がなく冷酷) ●男は、女々しいあるいは女の腐ったみたいな考えのやつが多い(例:「俺のほうが男 前やのに、なんでや!(あの野郎の足を引っ張ってやる!!)」) ∧_∧∩ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ( ´∀`)/<先生!こんなのがありました! _ / / / \___________ \⊂ノ ̄ ̄ ̄ ̄\ ||\ \ ||\|| ̄ ̄ ̄ ̄ ̄|| || || ̄ ̄ ̄ ̄ ̄|| http://saitama.gasuki.com/shinagawa/ perl -e 'for ($i=1; $i<10; $i++) { printf "どうも\n"; }' >> 203 今更で申し訳ないですが、cygwin上での開発環境についてですが、 私の場合はcygwin 1.3.18でこんな感じでうまくいきました。 もしよろしければ試してみてください。 http://homepage2.nifty.com/yashiromann/progdiary/20030224.html 203じゃないけどホムペすごく参考になったよ。ありがとー >245さん いい! 面白いページです。また超漢字用プログラム作りに挑戦して見ようかな。 そうそう、mainの引数の型の違いは開発環境がセルフかクロスかってことだったと思う。 unix用のアプリを移植しやすくしてあったはず、セルフのは。 >>245 >>246 やってみた。うまくいったよ。これでやっと暇つぶしできるよ〜。 4月22日、プロジェクトXでTRONが出るみたい。←iTRONだろうが。 教授の横顔が予告編に出てた。 ・・・のでage >>248 確かmainの引数の型の違いはリンクするmainライブラリの違いじゃなかったかな。 セルフでもchar*argv[]とTC*argv[]のどちらでもできたような気がする。 >>251 あ、main(int argv, char **argv)でもよかったのですか。。。 main(W argc, TC **argv)でないとダメだと思いこんでいました。 そのくせコンパイルで「char **でないとだめよん」と出てくるのか〜、 と思っていたのですが。。。逝ってきます。 俺もあんまり自信ないんだけどlibumain.aとlibtmain.aってなかったっけ。 違ったらすまそ。 確認しますた。libtmain.aじゃなくてlibmain.aですた。 libmain.a: TC*argv[] libumain.a: char*argv[]とUNIX系関数一式 NHK「プロジェクトX挑戦者たち」2003年 4月22日放送予定 「逆転のトロン 世界に挑む」 時代はWindowsでもなければ、Linuxでもない。 これからはPLAN9と思わせといて実際はTRON最強である。 しかし下記事を読む限りYBBなどの関係者が番組潰しをする可能性あり。 禿を早急に国外追放する必要ありだ。 http://www.yomiuri.co.jp/genki/20020606.htm >>251 なるほど、そういうことだったのですね。 ありがとうございます! 早速試してみます。 >>256 トロンを潰し、世界最強の粗悪OS、Windowsを 日本で広め、私腹を肥やしたのはなにを隠そう孫正〇 だろ。 perl -e '$max=100; for ($i=1; $i<$max; $i++) { printf "あ、そう "; }' 前回知ったかぶった書き込みをした248です。 こりずに、今度はアプリのバージョンについて書くとこれは実行プログラムにつけた機能付箋のあるレコードのサブタイプIDです。 makefileで apd -t7.(バージョン) (アプリの名前) (付箋) てやってるはずだからそこを変えてみたらいいはずです。 バージョンナンバーが1.01なら-t7.1010だね。 16進数そのままなんで130Bなんてして、βバージョンと見せてるのもあるね。 http://www.asahi-net.or.jp/ ~vb7y-td/k4/1401271.htm [1]TRONが表舞台に立てなかった理由。 孫正義がTRON潰しを画策したのは事実だが、TRONがパソコン OSとして日の目を見なかった事は、アスキー(西和彦)とソフトバ ンク(孫正義)間の「パソコンビジネス競争の結果」と見るべき。 過去に色々な記事も出たが、孫の立場から見た経過が 「孫正義起業の若き獅子(講談社:1999年8月出版)P285〜P294」 に書いてある。興味のある方は読まれたい。 >>262 こんにちは。今回も問題点の解決に協力してくださって ありがとうございます。感謝感激です。 なるほど、サブタイプIDを使っているとは。そもそも機能付箋 について勉強が足りてないかも。助かりました。 >>239 は無事実装できWabasoft謹製examplesは全部合格です。 Fileクラスも若干修正し、UIGenも動きました。なんかやっと アプリケーションっぽくなってきた感じ。Palm風なフォント も作ったし。 さてと、以前問題になった、バイトコードを置く場所ですが。。。 とりあえず /SYS/$$CLASS.BOX を CLASSPATH として使う ことにして、ここにクラスファイルやWARPファイルを置いて 呼び出せるようにしてみました。 これだけではどのWARPファイルからクラスを読み込んだら いいのかわかりませんので、起動オプション設定パネルに WARPファイルのリストを記入する欄を設けました。 おかげで実行機能付箋のサイズが大きくなってしまいまし たが。。。 これでTAD主レコードが空いたので、そこを対象に入出力を する可能性が出てきました。ネイティブメソッドじゃない とだめですけど。 ダウンロードしたWARPファイルに直接付箋を貼って実行する 方式は残していますが、TAD主レコードにコマンドラインを 書く方式はやめました(CLIから起動することはできます。 この時はコマンドラインオプションが有効になります)。 ふう、そろそろかな。。。 というわけで、へっぽこながら説明書も書いてパッケージっぽくした ものをうpしてみます。 http://homepage3.nifty.com/linxs/bmw090.bpk ごめんなさい、またまた質問です。 超漢字に「見出し」というパーツがありますよね? (システム環境設定小物みたいな感じのやつです。 TRONWARE vol.43のp.77には図も載っています。) これなんですが、仕様書を見た感じでは載っていなさそうに 見えます。(PARSAMPでも使っていないし…。) http://www.personal-media.co.jp/tron/developer/doc/btron3/os_spec/shell/parts.html#ahq という感じなのですが、「見出し」パーツについてご存じの方、 いらっしゃいますか? もしよろしければ教えてください。 見出しはライブラリによって実現されています。 /usr/local/brightv/appl/tagsamp1 /usr/local/brightv/appl/tagsamp2 をみるがよろし。 >>271-272 おお、こんなところに。気づきませんでした。 早速何か書いてみようかな、という感じです。 ありがとうございます! 裏情報がある。これ、売ると金になる。後20個残ってるから、早い者勝ち。いいときには、一日で6.7個これを3000で売ると20000円くらい。お得です。まずは、http://morphism.tripod.co.jp へ 突っ込み遅くなって誤解が広がったかも。 >>262 レコードの場合は「サブタイプ」が正しい。「サブタイプID」は付箋だ。 それとそれはセルフの場合じゃなかったか。245は分かってたとは思うが。 >245 コンソールで「命令」+「p」押してみな。いいことあるから。 >>276 PMCの作っているMakefileではVERSIONという変数が はじめにあってそこで設定するみたいです。(なぜ気づか なかったのだろう。) 具体的にはmkbtfでBTRONファイルを作るときにレコードを組み合 わせる感じのようです。セルフの場合はもとからBTRONファイル なので、apdなのでしょうね、たぶん。 レコード関係はまだ勉強が足りていないので精進します…。 コンソールでCTRL+Pってまさか…できるのね、やっぱり。 素直にEmacsのキー操作にすればよかったのかぁ。 ありがとうございます。そのうちBTRON Tipsにでも 乗っけておくといいかもしれませんね。 >コンソールでヒストリー BTRON TiPSの2000年1月14日の記事にがいしゅつかも。 BTRON TiPSは検索機能もあるので、結構意外なTipが載っているのも見つかります。 >>256 「プロジェクトX」 いよいよ今夜放送。放送日変更になった模様。 ただし、BTRONは出てこないので注意。 >>280 出てきたよ。5秒ほど・・・・・・超漢字の画面が説明無しで。 >超漢字ノートR1は100台弱を用意していたということだが、15日中に注文がその数に達し、完売した。 たった100台完売でお祭りかよ(プ 一応兄弟スレ。 「BTRON仕様2chOS」 http://pc.2ch.net/test/read.cgi/os/1050476647/l50 またの名を「暇つぶしにBTRON互換レイヤープログラミングでもするかー」 SiS7018用のサウンドドライバ作る香具師いねえかなぁ。 >>293 YamahaのルータでITRON仕様準拠OS使ってるそうですが何か? 機能性能気にしないなら適当なITRON仕様OS拾って自作できるが意味無さげ。 ちなみに超漢字の腐ったスタックでは困難だったような気が。 // 300 記念 #include "troron.h" VOID main(W argc, TC **argv) { printf("どうよ\n"); 何か末尾が抜けた。。。 // 301 記念 #include "troron.h" VOID main(W argc, TC **argv) { printf("どうよ\n"); } 携帯ゲーム機"プレイステーションポータブル(PSP) このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。 画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。 この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。 任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。 >>302 禿げしく誤爆な気がするんだが(藁 まさかPSPってTRONベースって事なんか?Σ('□' ) ━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━― ∧_∧ ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。 =〔~∪ ̄ ̄〕 = ◎――◎ 山崎渉 __∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄ ∧_∧ ∧_∧ ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。 =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕 = ◎――――――◎ 山崎渉&ぼるじょあ (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン 移植にはバッドノウハウも結構重要だよ、と、誰とはなくつぶやいてみる。 >>313 このへんかな。まだ一般的な用語ではないんだね。 バッドノウハウと「奥が深い症候群」 ttp://www.namazu.org/~satoru/misc/bad-knowhow.html extern "C" は「奥が深い」とは違うレベルの話のような気がするなあ 高林哲っていいこといってんだけどなんか偉そげで好きになれない 哲タンにBadだの原人だの変人だのとけなされる辺りがオレの目標。 BGVの小田さんbtron-dev MLやめちゃったんだね。もっといろんな話聞きたかったのに 仮身セグメントのデータっていうのはデフォールト起動アプリの付箋データが 書き込まれる。 これにより、同じ実身を指す仮身Aと仮身Bで同じ画用紙として起動しても ウィンドウ位置、サイズなどを異なるものとして保存できる。 某MLでの話題なのですが、参加していないのでここに書いてみました。 ところで、こういうBTRON独自部分を分かりやすくまとめて解説する ことも必要に思う今日このごろ。 はて、ほかにどんなものがあったかな。 >>321 大昔はセルフ環境への道掲示板があったが、今は適当なのが ない状態。 誰かまったりした、初心者OKのWEB掲示板作って。後から参照 しやすく、なおかつ雑談だけは微妙にしづらい感じの。 >>322 の ○初心者 = プログラミング初心者とBTRONプログラミング初心者 ○雑談 = 某仮想対談みたいの MAIN(MESSAGE* msg)で始まるプログラムをつくる方法を教えてください。 MAIN(MESSAGE* msg) ; 形式のメイン関数でアプリを組むと、 /usr/local/brightv/lib/i386e2/libmain.a(MAIN.o): In function `Main: MAIN.o(.text+0xa2): undefined reference to main というリンカエラーがでます。仕様書の1.1.6節によると、W main(int argc, TC** argv); 形式はライブラリで実現すると書かれているので、そのmainがないということ だと思います。では、事前定義のMAINを消すにはどうしたらよいのでしょうか? >> 324 というのは間違いでした。単に、 extern "C" MAIN(MESSAGE* msg); と書けばリンクできました。 >>325 >extern "C" これ何なの? >>324-320 あたりで話題になっているけど、見慣れぬ書き方だが。 どこかで見たような気もするが、、、と思って今調べたらヘッダ系で 結構使われてるね。しかしわからん。 > extern "C" これはC++の関数がCの関数から呼び出される際には必ず必要だよ。 コンパイラはコンパイルの際に識別子(ここではMAIN)をリンカ用の シンボルに変換するんだが、CとC++では変換規則が違うんだよ。 まあC++のほうが言語としてはずっと複雑だから当然なんだけどね。 でも、このままだとCで作成されたオブジェクトとC++で作成された オブジェクトをリンクする際にシンボルの違いからリンクエラーが おきちゃうわけ。そのままだとこまるんで、 C++ の関数を宣言する際に extern "C" を指定してやれば、この関数の識別子は特別にCの変換規則に よってリンカ用のシンボルに変換されるようになっているんだよ。 で、>>324 の場合、MAIN(MESSAGE *msg) は libmain.a 内の main.o から 呼び出されるんだけど、元のファイルはCで書かれている。だから MAIN(MESSAGE *msg) を C++の関数として宣言する場合には必ず extern "C" を指定しないといけないわけ。わかった? でもよく考えたらPMCが extern "C" W MAIN(MESSAGE *msg); の一行を標準ヘッダにあらかじめつっこんで おいてくれればこんなことで悩まなくてもすむんだよな。 マイクロスクリプトの話題なんですけど、 文字セグメント(@入力フォーム)にKINPUTで文字を入力して、その文字を一文字ずつ取り出したいのですが 入力フォーム.TX[0] と指定しても最初の一文字が取り出せません。 どのようにすれば上手くいきますか? >>330 このスレ見てる人はC/C++系が強くて、マイクロスクリプトは不慣れのようですた。 >> 330 え、取り出せるよ。 ACTION entry(k:C) IF k=0x0a REPEAT 入力フォーム.TL LOG "%d: %02x (%c)", $CNT, 入力フォーム.TX[$CNT], 入力フォーム.TX[$CNT] ENDREPEAT ELSE LOG "--" ENDIF END とかするとどうなる? >>333 まちがえた。最初の行は ACTION entry(k:C) KEY だな。 >>333 さん。 返事が遅れてしまってすみません。 早速試してみたところ、取り出すことが出来ました。ありがとうございます。 また質問で恐縮なのですが、 入力フォームにもし「あ」が入力されたとして、それを判定するときはどのようにすれば宜しいでしょうか。 IF 入力フォーム[0] == "あ" 〜処理〜 ENDIF としても上手くいかなくて。。 >>335 > 入力フォーム[0] == "あ" を 入力フォーム[0] == 'あ' と修正。配列の要素は16ビットの数値なので、右辺も数値型にする。 文字列を比較するときは scmp() を使わないといけない。 このへんは C と同じ。 333さん。 おおっ、動きました! ありがとうございます。 あけましておめでとうございます。 さてと、がいしゅつねたのような気もしますが、教えてください。 実行機能付箋の中にある固有データを可変長にしたいときは、どうする のがいいのでしょうか。 (実行)機能付箋レコードの場合は固有データのサイズを変えても別に問 題ないでしょうが、TADデータの中に機能付箋セグメントを埋め込んで いる場合は、そのセグメントの大きさを勝手に変えてはまずいような気 がします。 キャビネット中に置いた実行機能付箋を付箋のオープン起動で開き、可 変長の固有データを編集してから保存したいのです。 今年もよろしく。付箋起動は使ったことがないのですが、 付箋の固有データの長さは変更しても問題ないと思います。 キャビネットは保存の際にoget_vob()で付箋の固有データの長さも 取得できるので、キャビネットの実装がよほど変でない限り大丈夫でしょう。 > oget_vob() > : > 仮身を実身内に格納する場合は、 この関数により最終的な > 仮身データおよび、仮身セグメントを取り出す必要がある。 http://www.personal-media.co.jp/tron/developer/doc/btron3/os_spec/shell/omgr.html OS Xでもじらを半日かけてビルドしたんだが、なんかバイナリが腐ってた みたいでインスコして立ち上げたらプロセッサ例外でちゃったよ(鬱 EIPの値も変で何が原因かわからん。 こんどはx86でもう一回試してみようっと。 >>340 なるほどそうでしたか。ちょっと安心しました。 改良しよう。。。 BTRON プログラミング リンク でググるとこのスレが一番目になってた・・・ http://www.geocities.co.jp/Milkyway-Cassiopeia/8028/nyoki_s.mp3 ☆あなたのこと きらいじゃないの うそじゃないわ ほんとよ ラ・ウスラ・デラ・ギポン・デ・リルカ・ニョキニョキ。(ニョキニョキ。) 夕焼けの街角で 初めて会ったとき ゆびさきから 白い糸を 紡いでたあなた。 うつむいた横顔が 寂しそうだったね ときめきさえ知らなかった あのころがフフフン。 四本目の指がなくなる頃 いつか見てた夢も終わるわ (☆繰り返し) ★ナナフシなら しぼったあとに 塩漬けするレシピよ ラ・ウスラ・デラ・ギポン・デ・リルカ・ニョキニョキ。(ニョキニョキ。) セリフ「うそでもいい…。夢でも…。鼻が7メートルになれば…。」 (☆繰り返し)(★繰り返し) トンピリピにおねがいして 土瓶蒸しつくったの トンマだなんて いわないでね くちぐせだけど。 コンサルタントみたいな 眼鏡好きよ大好き 文化包丁振り上げて 追い駆けるフフフン。 7本目の足が生える頃 ぬかりなくことが はこぶの (☆繰り返し)(★繰り返し)(☆繰り返し)(★繰り返し) http://pc4.2ch.net/test/read.cgi/swf/1074895000/ 暇つぶしにBTRONプログラミングでもしろよ、お前ら テスト用に使ってたマシンが今日電源入れたら死亡してたよ。 新しいのを早速注文したが出費がかさむ (;_;) デスクトップでないとSound Blasterが使えないのが痛いところだな。 BTRONってUNIXエミュレーターなしでパイプに相当する 機能って使えたんだっけ? メッセージと共有メモリを つかってエミュレートするしかないのかな。 >>349 知らないなぁ。 試しに作ってみて。それを参考にしたいので。 >>351 これは思いつかなかったよ。バイナリデータもRAWモードで扱えるみたいだね。 ありがと〜 >>350 プロセス間メッセージを使うんならそんなに難しくないよ。 プロセスAからBにデータを流す場合は、 (1) Aで共有メモリを確保して、データを格納。 (2) Aが共有メモリのアドレスをメッセージを介してBに送る。 (3) Bが共有メモリのデータをローカルメモリにコピー。 (4) BがAに共有メモリの解放をメッセージで通知。 (5) Aが共有メモリを解放。 こんなかんじかな。ソースは近いうちに公開するよ。 超漢字の実装ってBTRON3の仕様と結構違うんだな。 自分のプロセスがアクティブでないときにwget_evt()にWAITを渡しても EV_NOMSGを返してくるぞ。 > WAIT : > 非アクティブプロセスの時 : > メッセージが既に存在している場合は、そのメッセージを取り出し、 > 存在していない場合はメッセージ待ち状態となる。 こういうのは本当に勘弁してほしいな。 超漢字のプログラムからMMXやSSEって使えるの? これができると随分処理が軽くなるんだが。 MMXなしでMPEG2ビデオストリームをデコードさせてみたけど しゃれにならん重さだ。P4 2.6GHzでもDVDのデータを 再生するのは難しそう。相当チューンしないと性能はでないな。 新しく買ったマシンにはISAバスがついてなかったよ。。。 orz これじゃSound Blaster使えないじゃん! 結局USBスピーカー用のドライバを書くしかないのか。鬱だ。。。 >>354-356 がんがってください。 技術的なことはここで聞くといいかも。 ttp://www.bi.a.u-tokyo.ac.jp/~uaa/index-j.html 面白いコードがあったのでありがたくブクマクさせていただきますた。 いきなり掲示板で聞くのははづかしいので当分様子を見る事にします。 ■今日の進行状況(4月6日)■ 動画と音声データの分離(demux)はうまくいったので、 腹をくくってUSBドライバの作成にとりかかることにした。 www.usb.orgにいって"USB Device Class Definition for Audio Devices"その他の資料をゲット。 全部で200ページ近くある。鬱死。 BTRONのUSBマネージャにも目を通す。 http://www.personal-media.co.jp/tron/developer/doc/brightv.r4/device/usbmgr.html 「アイソクロナス転送はサポートしない」 「最初のコンフィギュレーションしか使用できない」 などという記述をみて激しく不安になる。 USBいじくるのははじめてなのでなんのことかさっぱりわからない。 とりあえずテスト用のドライバを書いてみることにする。 そのまえにデバッグ用にRS-232Cのクロスケーブルを 見つけなきゃいけないんだっけ。たしか押し入れのどこかに つっこんであったような。 libmpeg2はMMXを使わないと遅すぎるという結論に達したので、 あとで C genericなルーチンからx86用のルーチンに 切り替えることにする。うまく動くといいが。 >>359 確か昔B-softの日記にmpegが動いてると書いてありましたが掲示板あたりで聞いてみててはいかがでしょう。 >>360 もう試してみた人がいたんですね〜。 http://homepage2.nifty.com/b-soft/diary/200102.html 幸い今回はどうにかなりそうですが、 どうにもならなくなったらB-softの掲示板にいって聞いてきます。 >>359 ・・・(,,゚Д゚)† カミヨ359ヲタスケタマヘ ■今日の進行状況(4月9日)■ 昨日はドライバには手を付けずに資料を読みあさった。 どうやらUSBのアイソクロノス転送というのは データをリアルタイムで転送するための仕組みらしい。 これって音声データをバスに流すのに必要な機能 じゃないかなとも思ったが、深く考えてもしかたないので とりあえず作業を続ける事にする。 1BのころからそうだったがPMCはみえないところで平気で 手を抜いてくるので恐ろしい。くわばらくわばら。 今日は暇を見つけてテスト用のドライバをしこしこと書く。 brightv/driver/sampleにあったのRS-232Cドライバ ソースを切り貼りしたら骨組みは拍子抜けするほど簡単にできた。 「超漢字サウンドドライバ」のサンプルプログラムからも ちゃんと見えているようだ。 USBアンプにデータを送るところまでやりたかったのだが、 2、3日前にひいた風邪のおかげでダウン。 お楽しみは明日のためにとっておくことにする。 >>362 USBスピーカーで音が鳴るといいんですけどね〜 超漢字の制限でそれができないとなると最悪ボード一つ一つに ドライバを書かなきゃいけないんで激しくめんどくさいです。 ■今日の進行状況(4月9日)■ ここ数日間はUSBを理解する事に費やした。 ひたすら資料を読んでUSBアンプにデータを送ってその反応を 確かめることの繰り返し。おかげでUSBの仕組みがだいぶわかってきた。 未だに音を出すところまでこぎつけないが、気長にやることにする。 デバイスドライバはそろそろおなかがいっぱいになってきたので、 口直しにプレイヤー本体の作業に戻った方がいいのかも。 データをダンプする事ばっかやってたので頭がくらくらするYO! スレの流れとは関係ないが、こちらにもコピペ 「ソフトウエア開発55の真実と10のウソ」の目次 ttp://bpstore.nikkeibp.co.jp/item/contents/m_4822281906.html ■今日の進行状況(4月18日)■ 前回の報告の直後に超漢字とUSBスピーカーがお話できない ことが判明。エンドポイントに接続を試みるも、 必ずエラーが返ってくる。やっぱり超漢字がAsynchronous Transferに対応していなかったのが原因らしい。 PMCめ、またやってくれよったな、と悪態をつくが後の祭り。 経験上超漢字には妙な制限がてんこもりだということは 知っていたが、これは効いた。こんなとき超漢字がオプソだったらな とおもってみるが、まあどうにもならん。 T-Engine上の超漢字はなるべくソースをオープンにしてほしいな、 と期待してみる。 気をとりなおして、インテルのICH*用のサウンドドライバを 書く事にした。IntelのサイトにいってICHやAC'97の資料を 手に入れたが、これがUSBのに負けずとも劣らない分量。頭痛い。 alsaやFreeBSDのソースを参考にしつつ音を鳴らすための デバドラを組んでみたが、スピーカーからは何も聞こえてこない。 ミキサーのボリュームも設定したし、DMA用のメモリもちゃんと b_get_mbkで確保しているし、レジスタを見る限りではDMA転送も 行われているようなのでなにが原因なのかははっきりしない。 プレイヤーの方はけっこうできているのだが、 Sound Blasterののってたマシンが壊れたおかげで音関係の 最終テストは出来ていないので、なるべくなら あと2、3日で音をならすところまでこぎつけたい。 ■今日の進行状況(4月20日)■ ようやくオンボードのサウンドチップ(Intel ICH4)から音を 出させる事に成功する。しかしここまではまりまくるとは思わなかった。 Linux用のサウンドドライバのソースを読みまくっていろいろ ためしてみたが全然うまくいかず、かなり疲れた。妙なタイミングで レジスタがリセットされたりしたのには頭をかかえてしまった。 なんにせよこれで一山超えたのでほっとした。 あとはドライバを仕上げて動画と音の同期をチェックするだけ。 ■今日の進行状況(5月3日)■ ようやくICHサウンドドライバのバグ取りが終わる。 PMCのサウンドドライバについてきたサンプルプログラムと AC久後さん作のmp3playが動作する事を確認。音質も悪くないようだ。 必要最低限の機能しかないが、とりあえずはこれでよしとしてプレイヤー 本体の作業に戻ることにする。 まだ構想の段階だけどいずれは対応するサウンドカードをもっと 増やすつもり。とりあえず入手しやすくて構造も単純な Creative Ectiva Audio 5.1とCMI8738の載ったサウンドカードを検討中。 なんか希望があったら教えてください。 >>377 廉価なPCに載ってたSiS630STとかはダメですかねぇ? SiSのはICHとほとんどかわらないはずだからそのまま動く可能性大。 テストに協力してくれるんなら対応するよ。 ALSAのソースをざっと眺めてみたけど、ちょっとだけ変更が必要みたい。 でもまあたいしたことないよ。 >>379 対応してもらえるんなら、いくらでもテストに協力しますが。 これで、かなりのPCで音が鳴る。まさしく、神。 >>377 VIAのチップセットにのってるRealtekのは対応できませんか? ごめんごめん、VIAのチップセットのほうが重要だった。 VT82C686A/B/C, VT8233A/C, VT8235 多分このうちのどれかだと思うけど、ICHとはインターフェースが 違うみたいだからすぐに対応というわけにはいかないみたい。 ICHのドライバがそのまま動く可能性のあるチップはこれぐらい。 Intel ICH* SiS SI7012 NVidia nForce NVidia nForce2 AMD AMD768 AMD AMD8111 ALI M5455 あとは個別に対応しないと難しいね。 基本的には漏れがテストできる環境を持ってないと ドライバの作成は無理なので、オンボードのサウンドチップに 対応させるのは難しい。(そのたびにマザボを買う訳にもいかないし) 安いPCIのサウンドカードがあれば、対応しやすいんだけどね。 >>377 dmesgしてみた。 pcm0: <VIA VT8235> port 0xe800-0xe8ff irq 11 at device 17.5 on pci0 pcm0: <Avance Logic ALC650 AC97 Codec> nForceはメモリの相性が激しいと聞いたので見送ったが、失敗だったか。 因み同じチップセットがのったM/B(ttp://www.aopen.co.jp/products/mb/AK77-400.htm) なら貸し出せます。(w CMI8738、、確かどっかに有ったような、、 現在プロセス間通信の部分をしこしこと実装中。 もうそろそろ仕上げんとまずいな。 >>388-389 今日は暑かったですね。 お疲れ様です。 今となっては古いカードだろうと思いますが、 YAMAHA YMF7x4 の対応は難しいでしょうか。 低スペックマシンで動かしているユーザーも多いだろうから 需要はあるんじゃないかと思うんですが。 まずはどれかで動くことが先決かと。 対応デバイスはそれから増やせばよろしいのでは。 377さんにお願いがあります。 たぶん、プレイヤー実身の下に、動画実身が複数おかれて再生する実身を リストから選ぶような物になると思っています。 で、もしそうなら、再生するときの音量の設定をプレイヤー側でなく、実身側に 保持するようにしてもらえませんか? お願いします。 >>394 理由を説明してくれるとありがたいです。 TRON作法に則しているから? 理由です。 A実身の音量が8でB実身が12でちょうどいいとします。 それぞれが違うわけですからユーザーは再生時に変更する必要があります。 この適正な音量をいちいち再生ごとに変えるのはめんどうなので保存して 欲しいわけです。 これを、プレーヤー実身側で保持したとします。 再生時には問題はありません。ただ、別のプレーヤー実身へ移動したときに また、手作業で音量を設定し直す必要が出てきます。 次にプログラム実身がそれぞれの実身の適切な音量を保持する場合です。 このデータをプログラム実身直下においてしまえばバージョンアップとともに 消え去ってしまいます。(Mozillaが悪い例です) というわけで、移動、バージョンアップいずれの状況にも対応できる 「実身側への音量データの保持」をお願いしたいと思いました。 …しかし、この文書いていて思ったのですが、再生したい実身を リムーバブルディスクに入れて別のPCで再生させようとすると問題が ありますね。 この場合、デバイス側でも再生音量を設定できるようにしないと、 それぞれのPCで音量を変更しないといけなりますね。 最初の一度だけ、再生するPCそれぞれで設定すればいいのでしょうけど それも面倒に思えてきました。 とりあえずこんな声もあった、ぐらいで気にせず開発を続けてください。 ぐだぐだとすみませんでした。 >>396 実装最優先で、いずれは音量保存は両面でということで。 >>391 YMF7x4ののってるPCIカードは入手しやすいのでいずれ対応するよ。 >>394 GUIの作り込みは相当先になるけど、覚えとくよ。 ■今日の進行状況(5月16日)■ 一応動画の再生はできるようになったので細部の調整に入る。 やはりハードウェアアクセラレーションがないのはかなりきつい。 VGAサイズのMPEG2の動画を拡大させるとカクカクになる。 期待はしていなかったが、超漢字に拡大縮小を任せるのは無理なようだ。 これも自分で書かなきゃならんのかと鬱になる。 あと再生させる度に極端にスピードに差が出る、というバグにも 悩まされる。ランダムに大量のディスクアクセスが発生するのが 原因のようだ。最初に疑ったのはメモリリークによるスワップアウト だったが関係なかったようだ。これまではデータの読み込みは レコードをメモリに丸ごとマッピングして、プロセス間通信には Smalloc() で獲得した共有メモリブロックを使用して楽をしていたのだが、 バッファリングやメモリ管理も自分で面倒を見る必要があるようだ。 完成まではもうちょっとかかるみたい。 超漢字って機能が少ないから軽いけどOSとしての基本性能は うわなにするんだやめr ランダムでスピードが落ちる問題の原因を調べるために 画面表示とプロセス間通信を切ってデコーダだけ走らせてみる。 テストデータの大きさは 720 x 480 。 FPS 開始時の空きメモリブロック 1 52 46416 2 53 46400 3 38 46309 4 54 46327 5 40 46279 6 45 46265 7 14 46305 8 (遅すぎて測定不能) 9 43 46309 10 43 46337 11 50 46319 今回はディスクアクセスもほとんど発生していないし、 フレームバッファも使用していないのでますます意味不明である。 なんか原因は超漢字そのものかライブラリにありそうな感じ。 可能性があるのはmalloc()とfree()だけなので、とりあえずこれを 自作のものに置き換えてみることにする。 こんなときに超漢字がオプソだったら、とかまともなプロファイラが あれば、とか愚にもつかないことを考えるが、ま、仕方ないやね。 自分の出来ることに集中しなければ。 >>377 さんはObjective-Cの事を以前書いてた人でつか? そうだよん。あっちのほうはしばらく手をつけてないなー。 これが終わったらまたいじくるつもりだけどね。 込み入ったGUIを作ろうと思ったらシステムコールとPMCのライブラリ だけじゃきついからね。 やっぱりそうですか。 あっちの方、期待してまつ。がんがってください。 ■今日の進行状況(5月21日)■ 結局ランダムにスピードが落ちる原因は超漢字のメモリ管理に あることが判明。大量のメモリを使用したあとでプロセスが 終了すると全体の動作が極端に遅くなるようだ。 デコーダプロセスを常駐させ、メモリも最初に大量に確保 しておいて後から使い回すようにしたらだいぶましになった。 それにしてもせいぜい10MB程度のメモリを使ったぐらいで 動作がおかしくなる超漢字って一体。。。と思わされるが仕方がない。 あとでちゃんとバグレポートとしてまとめてPMCの メーリングリストに投げておかねば。 >>377 乙です。 所でSoundDriverだけでも先行公開ってできませんか? 幸せになる人が沢山いると思うんですが、、、、 >>408 サウンドドライバを公開したいのはやまやまなんだけど、 ちゃんとしたインストーラを作らなきゃいけないんで、 すぐにというわけにはいかないみたい。 今はプレイヤーの方に作業を集中してるから、 そっちが一段落ついたらドライバを公開することにするよ。 インストーラなしだったら今すぐうpできるけど、どうする? IMS経由かSTARTUP.CMD書き換えるなら自分でインストールできるよ。 >>410 とりあえずは、自分で出来る人間向けだけでもお願いしたいところ。 正式な物は、いつまででも待ってるんで。 ■今日の進行状況(5月24日)■ 週末はひたすらプレイヤーの動作を安定させることに費やす。 これまでdemux時のバッファリングや同期処理はかなり適当 だったのだが、これだとデータによってはうまく動作しないことが 判明したので、結局全部作り直した。あらたに同期処理のための プロセスを作り、フレームの開始時にタイマーイベントを 発生させるようにしたら、再生はかなりスムーズになった。 例のスピードが落ちるバグだが、ファイルをオープンした後に ウェイトを入れるようにしたら完全に消えてしまった。 これはたまたま見つけたのだが、偶然とは恐ろしい。 >>411 ごめんごめん、レスついてたの見落としてた。 じゃあ今日中にうpするね。 とりあえずうpしといたよ。 http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/IntelSoundDriver20040525.bpk http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/intelsounddrv20040525.tar.gz 対応チップセットは以下。 Intel 8xx (ICH) Intel ESB Intel 440MX NVidia nForce NVidia nForce 2 NVidia nForce 3 CK8S AMD AMD8111 AMD AMD768 Ali5455 ちゃんと動くか知りたいので動作報告よろしこ。 >>378 SiSのチップセットには近いうちに対応するよ。 >PMCのサウンドドライバについてきたサンプルプログラムと >AC久後さん作のmp3play はどこにあるの? PMCのサウンドドライバは、超漢字のオフィシャルサイトに。 (ただ、あれsb16だけじゃ…) >AC久後さん作 mp3play mp3play の仮身起動対応 ttp://brv-mp3rovo.sourceforge.jp/ アドレス間違えてるかもしれない。『mp3play の仮身起動対応』で、ぐぐればでてくる。 あと、『TURNのホームページ』 ttp://homepage3.nifty.com/ ̄tune/ で、公開されている、『TUNEあんぷ version0.9』と、組み合わせて使う。 サウンドドライバ、協力したいけど、ハードの方よく分からない… 動作報告! 機種:IBM ThinkPad X31 チップセット:Intel 835 鳴りました! 登録面倒なんでPMC純正をまず登録。 再起動後、コンソール起動。 cd .. rm sounddrv コンソール終了 ディスク集め小物起動 システムディスクに仮身一覧の付箋を張りつけて開く。 そんなかにintelsounddrvをクリックドラッグでこぴぺ。この時に 実身名をsounddrvに変更しておく。 仮身一覧を更新して終了。んで超漢字再起動。 出来れば、PMC版みたいにつかんでぽんで登録だと助かります>作者さん 私の環境でもうまく動きました。 チップセットはIntel 845GEを使用しています。 説明書きにもあったように、今のところ電源が落とせなくなるみたいです。 何だかとても世界が広がった感じがしました。作者さん、ありがとうございます。 私の持っているパソコンで、PMCのサウンドドライバに入っている再生プログラムを実行 させても音が出ませんでした。 チップセットは i815E です。 再生プログラムを実行させると、以下のメッセージが表示されます。 ICH does not support the variable rate mode a value has been written to DN_SDPCMENDOUT specifiedMaxCount = (数値) ドライバを登録したときには、 DeviceID 0x2445 PCI Configuration Address 0x00fd とでます。 ドライバのせいなのかまだちょっと判らないので、色々と試してみます。 >>377 >>391 ↓なんだか 7x4 対応でいぢってるらしい ttp://hp.vector.co.jp/authors/VA025950/pcisound/ みんな動作報告どうもありがとう。一応動いてるようなので安心したよ。 >>416 (つд⊂) >>418 インストールは「サウンド環境設定」小物を通して行う予定。 つかんでぽんも考えたけど、作り方がよくわからなかったので 勘弁ね。 >>421 ごめん、それこっちのミスだ。Intelの古いチップセットは サンプリング周波数が固定で周波数変換モード(variable rate mode)に 対応してないんでドライバで処理する予定だったんだけど、 うっかり忘れてた。今からちょっと直してみるよ。 新しいバージョンをうpしといたよ。 http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/IntelSoundDriver20040528.bpk.bin http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/intelsounddrv20040528.tar.gz 修正箇所は以下。 ・Intel以外のチップセットで起動しなかったバグを修正。 ・サンプリングレートの変換ルーチンを修正。 ・対応チップセットにALI M5451を追加。 ・バッファの排他制御を追加。 前のバージョンはじつはICH以外のチップセットを認識してなかったので、 前ので動かなかった人は試してみてね。 不動作報告 機種:IBM ThinkPad X31 チップセット:855PM TUNEあんぷは「PCM初期化エラー」と言って音を鳴らしてくれなくなりました。 PMCのサウンドドライバに付いている再生プログラムは「PCM機能が利用できません」 といってきます。これ以外のメッセージは出てないんですが。コンソールですか?>421さん それと、「サウンドドライバ導入支援」てのを作ってみました。 http://homepage2.nifty.com/DrLee/snddrvinst.bpk コンソール必要ないんで「人柱希望だけど、面倒」って人は使ってみてください。 (再インストールで前のバージョンに戻したら音が鳴ったので、これのせいではない、 と思うんですが、保証はできません) >>425 コンソールに表示されたものを書きました。 今回の新しいドライバの状況ですが、i815E でPMCの再生プログラムを実行 させると、ときどき(10回に3回ぐらい)音が出ます。 コンソールのメッセージは、 ICH does not support the variable rate mode のみ出ます。 >426 ありがとうございます、421さん。 もう一つ質問ですが、それはセルフコンソールですか? それとも外部コンソールでですか? 外部コンソールだとすると私の方ではこれ以上の情報は出せない状況です。 追加報告です。 どうも、ドライバ起動がうまく行っていないか、途中で終了してるみたいです。 システム終了時ちゃんと電源が切れる、っていうところからの勝手な推測ですが。 (まだ対応していないはずですよね) お役に立てず済みません>377さん >>418 教えてもらって助かったよ。パラメータの取得ルーチンを ちょっといじったのがまずかったみたい。 こっちではもう修正済みだから、次のバージョンでは 直ってるはずだよ。 >>426 音が出るときには途切れたりしないでちゃんと最初から最後まで出てる? 途切れてない場合はi815Eの初期化に失敗してる可能性があるね。 詳細よろ。 あと説明書きにIMSが必要と書いてたんだけど 普通のコンソールでも大丈夫みたい。デバッグ用のメーセージが 表示されないだけみたいだ。 >>427 ごめんなさい、小物のシステムコンソールの出力です。 >>429 音が出るときは最後まで出ます。 ただ、サンプルプログラムはどれもデータが短いので、「おそらく」という状況です。 追記です。 mp3play を使って、1曲分(3、4分)のデータを最後まで途切れずに再生できました。 不動作報告 PC Mebius PC-MM1-H1W チップセット ALI M1535 Linuxでは M5451用ドライバで動くようなので試してみました。 システムコンソール出力 ALI M5451 was found on the PCI bus. Vender ID: 0x10b9 Device ID: 0x5451 PCI Configration Address: 0x0030 ../src/main.c#1273:failed to reset AC'97 ResetICH() returned error code 0xfffd0000 以下省略 不動作報告 Mebius pc-cb1-m5 チップセット:ProSavage KN133 >>433 名無しじゃないのは無視しとくとしても、対応リストに載ってない石で 試してみてその報告を書くってのはどうよ? >>434 >>433 氏は熟年世代だから、その辺はお手軟らかに。 >>429 それはよかった。次のバージョンを楽しみに待ちます。 >>430 了解しました。 >>421 やっぱりAC'97 codecの初期化に問題があるみたいだ。 うちのsamba鯖にi810がのってたんでドライバを試してみたんだけど、 なぜか再生前のボリュームの設定で失敗してた。 AC'97のレジスタの書き込みに失敗してるっぽい。 日曜日を潰していろいろ試してみたんだけどうまくいかなかったよ。 >>432 M5451はIntel互換じゃなかったみたいだね。残念。 公開してみてわかったんだけど、ドライバの互換性を保つのは 予想以上に難しいね。まあのんびりやるか。 ■Intel 8xx チップセット用サウンドドライバアップデート■ http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/IntelSoundDriver20040531.bpk.bin http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/intelsounddrv/intelsounddrv20040531.tar.gz バージョン: 20040531 修正箇所: ・ソフトウェアから電源を切れるように修正。 ・初期化ルーチンを改良。 これでi815Eで動くといいんだけど。。。 >>433 対応リストに載っていないチップセットでは動かないので、 リストが更新されたらまたためしてみてね。 動作報告&問題報告 機種:IBM ThinkPad X31 チップセット:855PM 音は出ました。電源も切れるようになりました。しかし、大きなファイルの 再生には失敗していました。再生の途中で、止まってしまいます。 確認してみると、今回だけでなく25日版でも同じでした。 STARTUP.CMDに組みこまずにコンソール小物からkerext intelsouddrvで 起動したときには KEREXT intelsounddrv [15] c18c1000 - c18c9000 と出てました。 よろしくお願いします。 >>440 やっぱりでたか。こっちでも数回挙動がおかしい事があったんだよね。 バッファの排他制御をしていなかったせいかと思ってたんだけど、 違ってたみたいだ orz 参考までに、再生したときに使ったプログラムと、データの大きさを 教えてもらえる? 不動作報告 チップセット:i815E 症状:ドライバが組み込めませんでした コンソールのメッセージは、 Intel 8xxChipset Sound Driver (20040531) Intel ICH2 (82801BA) was found on the PCI bus Vender ID: 0x8086 Device ID: 0x2445 PCI Configuration Address: 0x00fd no audio codec detected ResetICH() returned error code 0xffd10000 InitializeICH() returned error code 0xffd10000 ../src/main.c#495:main() returned error code 0xffd10000 intelsounddrv: can't Loaded System Program -3080192 です。 うーん、残念・・・ デバイスIDと、チップセットの名前との対応が気になっていたのですが、 直っていますね。(笑) 状況が違うようなので、少し確認してみました。(こちらでは、毎回再生失敗してました) その結果、ドライバは無実と分かりました。申しわけないです。 「大きなファイルで再生に失敗する」のは毎回同じ場所でかならず、です。 ソフトは「仮身起動版mp3play(正式版Version1.000)」、「TUNEあんぷVersion0.9」 の2つです。 再生させたファイルはVOAnews.comのスペシャルイングリッシュのmp3ファイルで 900kから1Mくらいの物でした。 で、確認のため「MP3再生(010930版)」を試したところ、うまく再生できました。 (pオプションをつけないと倍速再生状態になり聞けたものではないですが) というわけで、当方(IBM ThinkPad X31、チップセット855PM)では ドライバは正常に稼働しております。 ありがとうございます。 >>442 やっぱりAC'97 codecの初期化でこけてるのか。。。 どうも以前のチップセットに共通する問題みたいだ。 うまくいった報告はICH4とICH5だけで、 ICH0、ICH2、440MXとちょっと前のは軒並み駄目だな。 ALSAのソースとかICHの仕様書とか目を皿のようにしてみてるん だけど解決方法は未だ見つからず。もっと資料を! >>443 よかったよかった。知らないところでバッファが壊れてたりしたら 直すの大変だからねえ。確認のためこっちでももうちょっとテストを 続けてみるよ。 これから1週間ほど出かけるんでしばらく返事は出来ないけど、 またなにかあったらここに書き込んどいてね。 ■今日の進行状況(5月24日)■ 旅行から帰ってきてからしばらくサウンドドライバをいじる。 なんとかi815で動かせないものか1週間ぐらい頑張ってみたが、 進展なし。今まではLinuxのドライバのソースを 参考にしていたが、これだとどうにもうまくいかなかったので、 FreeBSDのドライバのソースを拾ってくる。時間ができたら これをOSごとインスコして挙動を調べる事にする。 で、いつまでもドライバばかりにかまってるわけにもいかないので MPEGプレイヤーの製作に戻る。バッファリング等は スムーズになったが、そのおかげで音と絵が微妙にずれていた事が判明。 PVの再生中に口と歌があわなくなったりするとかなり間抜けである。 音が先に進みすぎているのが原因のようだ。だとすると問題なのは (1) オーディオデコーダプロセス(libmad) (2) サウンドドライバ のどちらか、ということになるのだが、データをWAV形式に変換して PMCの再生プログラムを使ったところちゃんと絵と同期していたので、 原因は(1)にあるらしい。これの原型はリハビリのために去年つくって 放ったらかしにしてたものなので今あらためて見るとかなり頭が痛いが 仕方がない。 ■今日の進行状況(6月18日)■ 前回は日付を間違えてたよ。。。結局同期に問題があったのは 間違えてサウンドドライバのバッファの中身を捨ててたことが 原因だった事が判明。これを修正した後プロセスの優先度を いじったらほとんど問題はなくなった。これ以上は ドライバの手を抜いてた部分を修正しないと無理なので 先に進む事にする。 残りは a. プロセス間通信の微調整 b. 拡大縮小の処理 だけである。これさえ終われば一応プレイヤーとしては動作するので テストを兼ねて公開する予定。えらく時間がかかったがもうちょいだ。 >>445-446 大したものだ。 ところで、Wavaでjtvは動かないだろうか? 識者の推測や挑戦者のカキコ求む。 >ところで、Wavaでjtvは動かないだろうか? これはスレの流れとは関係なし。ちょっと思いついたので… >>448 Wavaやjtvのことはよくしらんけど、Wavaはかなり限定された Javaのサブセットだから、難しいんじゃないかと。 個人的にはWavaは例外使えないので萎え〜 おそらくWabaの話をしているのだとは思われるが。 WabaをJavaの代わりとして用いるのはかなり厳しい。 クラスベリファイヤが無いのは用途次第では許せるとしても、 >>450 が言うとおりVMにathrowが無いのは致命的だね。 私は、プログラムの方、さっぱりなのだが、 goRUA -Gtk+ on Ruby User Agent for 2ch(Ruby/Gtkによる2chブラウザ) ttp://www.unixuser.org/%7Eharuyama/software/goRua/ ↑を、参考にするのは? 一応、超漢字にもRubyは、移植されていることだし。 ソースとかまったくみてないので、移植可能かなどの、技術的なことは、わかんないけど。 関係のない話だけど、モナーフォントを、一応、書体に登録して、 BBBの→表示→ユーザー設定→フォントで、Manaにしても、 なんかうまくいかない。多分、単純に書体を登録するだけではだめみたい。 mona.ttfのフォント設定で、ファミリをなんか設定しなければならないのか? >>446 一ヶ月ほどたったのですが、現在の進行状況はどんな具合でしょうか? 現在超多忙につき開発は停滞中。 なんで一日って24時間しかないんだろう。。。 お前らクレクレばっかり言ってないで 超漢字プログラミング入門 http://homepage2.nifty.com/yashiromann/memo/primer/ でも見てプログラムの勉強してください。おながいします。 >>467 は、おまえら勉強して超漢字用プログラムをつくってクレクレと 言っている。 >>467 ってたぶんY君本人だから、>>469 は的はずれ。 >>470 私がY君ですけれど、>>467 さんは私ではないですよ。 ついでなので書いておきますが、なかなか一人で書いていると、分かり にくい部分が分からなくなるので、コメントの方もよろしくお願いしますね。 とりあえずグループウェアとマルチプラットフォームライブラリのポーティングをよろしく。 >>472 >グループウェア WikiをB-rightに移植汁って意味か? >マルチプラットフォームライブラリ Mozillaのを使え。使い方を教えれ >>475 よくわかってないのに書き込みせんでもよろしい。もちつけ。 サウンドドライバ不動作報告 M/B Gigabite K8NPro Cipset Nvidia NForce3 150 CPU AMD Athlon64 3000AX+ メモリ 1G(512*2) 導入方法 PMCのサウンドドライバと置き換えた。(Dr.Lee氏のインストール支援) 結果。 認識せず。 試しにPMCの再生プログラム等も使ってみたが不動作。 ついでにMX440ののってる Panasonic LetsNotePro CF-B5XVも不動作。 結局超漢字開発環境のmallocにはバグがあるんでつか? >>478 困っている人がいないバグなんてどっちでもいいじゃん。 >>480 自分が最初の「困った」人になるのは嫌でつ >>482 じゃあ、絶対確実なことだけやってれば良いじゃないか。 漢ならばget_mbkとrel_mbkだけ使え。 mallocやB-right仕様コールを使うなんて邪道邪道・・ get_mbk/rel_mbkのサンプル。感謝しろよ。 #include <basic.h> // それ以外にも何かincludeするだろ void MAIN(M_EXECREQ *msg) { W i, j; B *addr; get_mbk(&addr, nblk, NULL); rel_mbk(&adr); ext_prc(0); } あとは482が485をベースにしてバグのないmallocライブラリを作れば完成な。 mallocにあるというバグを再現してみせるのが一番建設的なのだが >>490 その前に、正常な動作のサンプルソースが必要な予感 じじぃさんの日記から(ちょっと古いけど) Soopy ttp://soopy.sourceforge.jp 何年後かな? 超漢字ウィンドウプログラミング(TRONWARE81)のパネルマネージャーを参考にして コンソールから実行されるプログラムを作ってみたのですが、 http://dosv.s10.xrea.com/chokanji/data/dev/main002.C 実行してもパネルが表示されません。どうすれば表示されますか? >>494 printf("%d %d\n", panel_01.r.c.right, panel_01.r.c.bottom); すると、"-16424 -14448"と表示されていて、これが問題で見えないだけのようです。 gapあたりの初期化を忘れているのが原因かな、と思います。 >>495 おぉ! 動作しました! ありがとうございます。 TC型で文字列を初期化しようとしたらinvalid initializerってでます。 以下ソースです。 static TC str0[] = {L"文字列"}; なぜエラーになるのかが分かりません。教えてください。 >>479 ソースの拡張子を .c じゃなくて .C(だったっけ?)にしてる? >>498 拡張子 .C にして make での前処理で L"文字列" が変換されるようにしないとダメ >498 エラー取れました。どうもありがとうございました! >501 そうですね、次回があれば気を付けます。ありがとうございました。 一昨日書き込んだ者です。今度は別のエラーが出てしまいました。 ../src/scrtest-e.cpp:165: cannot convert `const wchar_t*' to `short unsigned int' in initialization というエラーがL"文字列"の行の全てに出ます。以下ソースです。 #include<basic.h> #include<stdio.h> #include<stdlib.h> #include<string.h> #include<tstring.h> #include <tcode.h> #include<btron/errcode.h> #include<btron/device.h> #include <btron/outer.h> #include <btron/dp.h> (省略) LOCALWscr_main(W type) { Wrv = ER_OK; LOCALTCstr0[] = {L"待機中"}; LOCALTCstr1[] = {L"音声を入力して下さい"}; LOCALTCstr2[] = {L"確認して下さい"}; (以下処理が続きます) 拡張子を.Cにしたり.cppにしてみたりしたのですが、このエラーは変わりませんでした。 教えてください、お願いします。 補足 make のログに perl hogehoge/wch2hex -t ../src/scrtest-e.CC -o scrtest-e.cc みたいのが出ているか?(この前処理で L"文字列" を short unsigned int 配列に変換するはず) 出ているのにうまくいかないなら生成された scrtest-e.cc の L"文字列" の行はどうなっているか? 507> CCでやってもダメでした。ログを見てみましたらその前処理ができていませんでした。 しかし作業の始めのころはその処理を通っていました。いつの間にか通らなくなってしまったようです。 507> 別の方法で文字列を変換することにしました。 助けていただいてありがとうございました。 >>509 よかった。でもどうして前処理を通らなくなったんだろう。Makefile の書き方の問題? >>508 > しかし作業の始めのころはその処理を通っていました。 というところから考えると、確証はないですが、 $ touch ../src/scrtest-e.CC $ make clean $ make でうまくいきそうな気がします。(うまくいかなかったらごめんなさい…) >>508 >>511 その辺の汚れ作業って情報があまりないよね。 >>511 と同意見だが、別案。 rm scrtest-e.* もありかも。 間違えて scrtest-e.CC を消さないようにね。 >>492 3ヵ月・・・・・orz というか、超漢字用MPEGプレイヤーをつくる話が最初に出てから半年以上たって るんだよね・・・・・。 http://homepage2.nifty.com/yashiromann/chokanji/ http://homepage2.nifty.com/yashiromann/chokanji/test04.tar.gz 実身操作をしたくてプログラムを動かしてみたのですが、うまく動きません。 sample.outはコンソールで、sample.bzは小物に登録してみたのですが 前者はExit:-1769472。後者は実行しても反応無し。クズ実身を調べても実身は作成されてません。 どうすれば作成されるのでしょうか。 >>515 一応確認ですが、"test"という名前の実身がコンソールで起動した場所にありますか? # あるならば、具体的にシステムの返り値を拾ってみないと何とも言えなさそうです。 >>516 こちら側のミスがあったようで動作しなかったみたいです。ごめんなさい。 もう一度最初からコンパイルし直したら無事に実身が作成されました。 生成される実身の名前を変えたくてmain.kをmain.Cに変更して"output"を"新規実身"に変更。 Makefile内のSRC=main.cをSRC=main.Cに変更してコンパイルしたのですがコンパイルできません。 /usr/local/brightv/etc/wch2hex -t ../src/main.C -o main.c main.c:4: warning: return type of 'main' is not 'int' main.c:4: warning: second argument of 'main' should be 'char **' main.c: In function 'main': main.c:9: warning: passing arg 1 of 'b_get_lnk' makes pointer from integer without a cast (以下略) 名前を変えただけなのに…どうしてなのでしょうか。 >/usr/local/brightv/etc/wch2hex -t ../src/main.C -o main.c この行の意味はお分かり? >>518 main.C内のL"文字列"が変換されるんですよね。 俺もコンパイルしてみたけどうまく動かない。 名前かえる前はうまくいってましたか? >>520 はい。test04.tar.gzを何も変更しないとコンパイルできて、実行もうまく動きます。 ◯ 変更無し ◯ 拡張子だけを変更(main.k→をmain.Cに。Makefileのmain.cをmain.Cに) × 実身名を変更(L"output"をL"新規実身作成"とか) >>520-521 気になるので私の方でもコンパイルして調べてみました。test04は http://homepage2.nifty.com/yashiromann/chokanji/Program05.html に書いてあるようにwch2hexではなくmkpを使っているので、ちょっとソースを変更する必要があります。 具体的には、 ・src/main.cは削除しておく (←依存関係で問題が出ます) ・src/main.kはsrc/main.Cとリネーム ・Makefileのmain.cをmain.Cに変更 の他に、 ・src/main.CのL"output"のようなものは、(TC[]){L"output"}と修正(L"test"の部分も同様) が必要になり、この部分を修正するとコンパイルが通ります。 >>522 解りやすく教えて戴いてありがとうございます。 無事に動作できました。 ぱりおたん降臨希望。忙しいって一言だけでも安心するんで。 i815E で、377氏のサウンドドライバが動きました。 ソースの 1310行目からの WaitForICHIOAccessCompletion() のところを static void WaitForICHIOAccessCompletion() { W i; for (i = 0; i < ICH_IO_ACCESS_TIMEOUT; i++) { if ((ichInB(ICH_REG_CAS) & 0x01) == 0) return; WaitUsec(1); } ++ichIOAccessTimeoutCount; } としましたら、ボリューム設定なども通ります。 ウィンドウに表示させる文字の大きさを色々変更してみたくて FSSPEC fontspec = {{TNULL}, FTC_DEFAULT, 0, {16,16}}; を最初に指定。 プログラム途中で FSSPEC fontspec = {{TNULL}, FTC_DEFAULT, 0, {64,64}}; などにするとコンパイルできません。 http://dosv.s10.xrea.com/chokanji/data/dev/src/main016.C (TABを利用しているのでブラウザで見るとずれてしまいます。すみません) どうすれば良いでしょうか。 また、フォントサイズを変更したいとき、この方法以外でお勧めの方法ありますか? >>528 たぶん、 fontspec = (FSSPEC){(TC[]){TNULL}, FTC_DEFAULT, 0, (SIZE){64, 64}} のような感じで、型キャストを多用すれば何とか代入できると思います。 # 間違っていたらごめんなさい。 でも、単純に、 fontspec.size.h = fontspec.size.v = 64; のように部分的に値を設定したほうが、代入のオーバーヘッドは 少ないと思います。 >>529 fontspec.size.h = fontspec.size.v = 64; のように記述したら無事に動作できました。どうもありがとうございます。 質問ばっかりしないように精進しないとな… ここしばらくスケジュールがめちゃくちゃで プログラミングは放ったらかしになってたんですが、 最近ようやくめどがついたのでひっそりと作業を再開しました。 MPEGプレイヤーはちゃんと完成してから公開するつもりだったんだけど、 ずるずるひっぱるのもなんなんで、開発途中のバージョンをサルベージ したものをソースと一緒に置いときます。 一番新しいのはどっかにいっちゃったんでとりあえず再生しか できないうえにバグだらけですが、あしからず。 http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/movieplayer/movieplayer20041205.bpk.bin http://www.eden.rutgers.edu/ ~miyazawa/pariosoft/movieplayer/movieplayer20041205_src.tar.gz ソースはbrightv/applで展開して、movieplayerを一番最後にビルドしてください。 そっちも全然進んでませ〜ん。 いつまでもANSI CではきついしC++は好きじゃないので なんとかしなきゃいけないんですけどね... >>421 これずっと分からなかったんで、ほんとに助かりました。 こちらでも動作を確認済みです。次のバージョンでは直ってるはずです。 >>524 なんか心配かけてしまったようで申し訳ないです。 大ピンチでしたが、なんとか生きてます。 >>531 VirtualPCの上の超漢字でMPEG1が再生できたよ。ありがとうございます。 PMCがUSBサウンドデバイスを作ったみたいだから面白くなってきましたね。 >>531 こちらでもMPEG再生できました。 手持ちにMPEGファイルが余りなかったのですが、以前に友人からデジタルビデオで 撮ったのを変換した物が有ったのでそれを使ってみました。 ただし、DVDからMPEGに mpleyer で変換した物は再生できず。 最初の1コマは表示しますが、メニューの再生欄が選択できませんでした。 変換が上手く行かなかったのか調べてみます。(Windows では再生できましたが) >>531 movieplayer-libmpeg2 のコンパイル時に、 no such 386 instruction: `movntq' というメッセージが出ました。 ちょっとほぐってみます。 >>537-539 動作報告ありがとうございます。 DVDから作成したMPEGが再生できないのは仕様で〜す。 音声データはMPEG1 layer 1/2/3にしか対応してません。 大抵のMPEGデータはこれで十分なのですが、 DVDのオーディオストリームはAACか生PCMなので mpegplayer-libmadがこけてしまいます。 GPLなデコーダがあるので対応すること自体はかんたんですが、 プロセス間通信周りをもうちょっとすっきりさせてからにします。 mpegplayer-libmpeg2でワーニングが出るのは GCCがi386-unknown-gnuでconfigureされてるからじゃないかと思います。 libmpeg2内ではMMXとか平気で使われてるんですが コンパイルとおっちゃってるのでとりあえずこのままにしておきます。 PMCがわざわざUSBスピーカー用のドライバ作ってくれたそうで めっちゃ嬉しいです。やっぱいろいろやってみるもんですね。 できればGPLでソースを公開してもらえると参考になって 有り難いんですが、これは無理を言い過ぎかもしれないですね。 ドライバが公開され次第対応する予定です。 377氏のソースを参考にしてVT82C686用のドライバを作ろうとしたんだけれども、 はっきり言ってうまく行かない。 チップの初期化や各種設定は通るけれども、いざスタートコマンドを送るとフリーズ してしまう。 たぶんDMA関連が原因だと思うんだけれど・・・ alsaのサイト以外にチップの資料ってないですかね。 VIAのチップって資料少ないし。 わーい、仲間がふえた! ドライバかいてると理不尽なことが多いんだけど、 めげずにがんばってね〜 で、alsaのサイトの資料ってこれのこと? ftp://ftp.alsa-project.org/pub/manuals/via 「SoundBlaster Pro Hardware and Direct Sound Ready AC97 Digital Audio Controller 」 なんて書いてあるからSBPBase設定する以外は SoundBlaster Pro と一緒じゃないのかなあ。 alsaとかFreeBSDのソースは参考になると思うよ。 気をつけなきゃいけないのはDMA用のバッファを獲得してから バッファの絶対アドレスを書き込むところぐらいかな。 あと割り込みまわりね。というかここが一番怪しい予感。 >>543 >で、alsaのサイトの資料ってこれのこと? >ftp://ftp.alsa-project.org/pub/manuals/via そう、それです。 120ページぐらいあるんですが、AC97サウンド関連はあまり詳しく書かれて無いし。 377さんのソースもFreeBSDでもAC97で動いていましたので、それで進めていたのですが。 DMAテーブルの中身にDMAの物理アドレスを入れて、そのDMAテーブルの物理アドレスを チップに送って(いるはず)、スタートコマンドを送るとフリーズ。 全然原因がわかりません。 DMAテーブルを読み終わった後の割り込みまで行っていないみたい。 InterruptHandler()へ入って来ていないし。 > InterruptHandler()へ入って来ていないし。 これってどうやって調べてるの? 超漢字でネットワーク関連でをローカルインタ フェースのアドレスを取得するAPIってあるの? 仕様書見てもさっぱり。Unixのように/proc/net/arp なんかのファイルがあるかなぁ .... 試して見たことないけど、ネットワークデバイスからrea_dev()で直接読み込めるかも。 > DN_NETADDR : > ネットワーク物理アドレス (R) > data: NetAddr > typedef struct { > UB c[6]; > } NetAddr; > ネットワークアダプタに設定されているイサーネット物理アドレスを取得する。 http://www.personal-media.co.jp/tron/developer/doc/brightv.r4/device/network.html >>546 普通に(?) printf を突っ込むとか、入った直後にストップ コマンドを送ったりしてみたのですが、全然反応が無いのでこ こには来ていないのだと。 >>549 ああ、やっぱり。確か割り込みハンドラのなかではprintf()は使えないんだよね。 よく覚えてないんだけど、printf()呼び出した時点でこけちゃうはず。 調べたい時にはvolatileなグローバル変数を使うのが無難じゃないかな。 割り込みハンドラ内でフラグをセットするなりなんなりして、 ドライバがrea_dev()やwri_dev()で呼び出された時に printf()でステータスを表示する、とか。 >>550 え、intel 用のドライバでは割り込みハンドラの中に printf を入れてもちゃんとコンソールに 表示したので「ああ、表示するする」とおもったけれど・・・ まあ、でも止めた方が良さそうですね。 >>548 なるほど、デバイス制御編にあったのかぁ ..... これから詳しく見て見ます。 今は手持ちのソースを色々と移植中だけど iostream関連が全滅なのが、ちょっと痛い感じ ネットをうろうろしてたらこんなの見つけたよ。 パーソナルワークス・トロン工作室 http://hp.vector.co.jp/authors/VA036176/?12031848 USBモデムドライバとかカシオペア用のPDドライバが置いてある。 超漢字用のデバイスドライバ作ってる人っているんだねえ。 最近VAIO type Uを手に入れてタッチパネル用のドライバ書きたいと思ってたんで、 参考にさせてもらいま〜す。 type U用のタッチパネルのドライバ作ってるけど、うまくいかん。 usbIoPipe()使ってNOWAITモードでデータを読み込んだら メールボックスにメッセージが届くんだけど、USB_ERR_STALLばっかだ。 うがが。。。 色々テストしてみました。 残念ながら今のところ再生不能です。 http://it.nikkei.co.jp/it/column/review.cfm?i=20040225c5000c5 の std.mpg がダメなのは377の理由ですよね。 http://www.airranger.jp/info/info.html の cm_y.mpg や http://page.freett.com/p_out_01/ の pout_1_1s.mpg も同様の症状です。 http://www2.edu.ipa.go.jp/gz/p-rek1/index.htm や http://www.jafmate.co.jp/mate-a/missuse/rep2.html の映像を再生すると、ウィンドウは開かずにディスクを読みに行ったままになります。 当方の環境は、MMX Pentium 233MHz, メモリー160MB, CHIPS 65555 Super VGA, ビデオメモリー2048KBです。 再生可能だったファイルがweb上にもしあれば教えてください。 テスト協力ありがとうございます。ほんとに助かります。 動作しない理由はこれらのデータにプレイヤーが 対応していないからです。(とほほ。。。) 今帰省中でテストできる環境が手元にないのですが、ざっとみてみたところ、 std.mpg、cm_y.mpg、pout_1_1s.mpgはストリームの形式に 対応してなくて、ipa.go.jpやjafmate.co.jpのデータには オーディオデータがない(たぶんビデオストリームのみ)のが 原因だと思われます。ここらへんはオーディオビデオ分離ルーチンを 賢くしてやれば対応可能です。 テストにはこれなんかがちょうどいいです。 http://mztv1.broadbandgw.co.jp/mangazoo/cloud_m.mpg >>531 のバージョンではバグが残ってて音と映像がずれてしまいますが、 いちおう再生は出来るはずです。 最近こんなの読んだんですけど、ほんとですねえ。 > It is a cliche in our business that the first 90 percent of the work is easy, > the second 90 percent wears you down, and the last 90 percent - > the attention to detail - makes a good product. 原文はこっちです。中断されたプロジェクトを続けるために 元派遣プログラマがAppleの本社に忍びこんで半年間ただで 開発を続けた、というお話です。凄いとしかいいようがありません。 http://www.pacifict.com/Story/ >377様 557のデータも駄目なようでした。 ウィンドウは開くけど真っ暗のままでした。 ハード的な縛りはあるのかな? あー、サウンドデバイスが見つけられないとこけちゃいます。 サウンドドライバがちゃんと動作しているなら大丈夫なはずですが。 メニューの再生の項目は灰色のままですか? TADから画像を読み出してウィンドウ上に表示させたいのですが、 超漢字で作成した画像は解るんですけど(gdra_linとかgfra_ovl) Windowsからファイル変換で持ってきた画像(写真等)はどのようにすれば表示できるのでしょうか。 また、画像処理に関するソースを公開しているサイトはありますか? TAD画像セグメントを表示させたいなら セグメントをもとにBMP構造体のデータを作って ウィンドウの描画環境にgrst_bmpしてやればいいよ。 jpgやpng形式の画像ならlibjpegやlibpng使うんだろうけど、 こっちはまだためしたことはない。 ソース公開してるサイトは知らないなあ。 >560 マイクロスクリプトは たしか下記のようだったと思います。 |本製品は、以下のライブラリを使用しています。 | |*libpng-1.0.9 Copyright (c) 1998-2001 Glenn Randers-Pehrson | |*zlib-1.1.3 Copyright (c) 1995-1998 Jean-loup Gailly and Mark Adler | |*libjpeg(6b) Copyright (C) 1991-1998, Thomas G. Lane. | Based in part on the work of the Independent JPEG Group. >559 PMC純正のサウンドドライバではだめですか? これは正常動作しているようなのですが。 質問ばっかりですみません。 >>560-561 確かめていないのだが、超漢字Mozilla0.9.3のコードに含まれてなかったっけか? >>561-562 grst_bmpですね。早速試してみます。 >>564 ダウンロードしようとPMCのサイトに出向いたら 「超漢字4サンプルアプリケーションプログラムソース集」を発見。 画像系のプログラムもあったので参考にしてみます。 皆さんありがとうございました。 > PMC純正のサウンドドライバではだめですか? 昔のバージョンでは動いていたんですが、 現在は純正のドライバが使える環境が こっちにないのでよくわかりません。 後で調べてみないといけないですね。 > 質問ばっかりですみません。 全然問題ないですよ。 >>567 こんな感じになりました。 http://dosv.s10.xrea.com/chokanji/data/dev/src/main030.C (適当に組んだので読みづらい&TABを利用しているのでブラウザ上だとずれて表示されます) とりあえず画像は表示できますが、数万個の配列にデータを代入することになるので 表示されるまで数秒かかります。しかも画像により表示されたりされなかったり… まだ改良が必要です。。 って、、思いっきり勘違いしてるし……なにやってるんだか。。 >>567 「画像スライド表示」というプログラムのソースを紹介していただけたのですね。 ありがとうございます。とても参考になります。 >>563 &566 私の所も似た様な環境でウィンドウが開いたまま真っ暗になりますよ。 PMC純正のサウンドドライバは正常に動作してます。 機種はFMV-BIBLO 5200NA8/Xです。 メニューの制御項目は[再生][停止][一時停止]が灰色のままです。 [繰り返し再生][開いたらすぐに再生]は黒いですがクリックしても反応しません。 他にも[表示][終了]が灰色のままなので、[Shift]+[Break]で強制終了させる必要があります。 デバイスドライバ作ってたらブートしなくなっちゃいました。 STARTUP.CMDが実行される前に外部コンソールを使って CLIを動かす方法ってありますか? 要はSTARTUP.CMDが実行されないで直接IMSに落ちてくれればいいんですけど、 どんなもんでしょう。 結局STARTUP.CMDを無効にする方法がわからないまま自己解決しました。 今度からは外部コンソールからドライバを無効にできるように 工夫しないといけないですね。 最近はテスト用の環境をVMwareで動かしています。 http://l4ka.org/tools/vmwaregateway.php これを使うとシリアルポートがなくてもtelnetで デバッグメッセージが表示させるので便利です。 ようやくVAIO type U上の超漢字でタッチパネルが使えるようになりました。 VMware使ってるけど、けっこう快適に動いてます。 600x800でT-Engineみたく縦画面にして使ってるんだけど、 これがかなり便利。無線LANも使えるので当分この環境でいくつもりです。 手順は、 (1) タッチパネル用のドライバを作成。 (2) Windowsからタッチパネルを無効にする。 (3) VMware上で超漢字をインストール。 (4) ドライバをインストール。 (5) VMwareのメニューからVM -> Removable Devices -> USB Port 1 -> Unknown USB Deviceを選んでタッチパネルを接続。 でおしまいです。 タッチパネル自体はUSB接続でUSB HID仕様書に準拠してると 聞いてたから簡単にいくかと思ったが、実際にははまりまくりました。 仕様書だけ見てつくったら全然うまくいかなかったので、 結局Windows上でタッチパネルを動かしながら USB Snifferを使ってプロトコルを解析して解決。 USBアナライザ買おうかと本気で考えてたので ソフトウェアだけで済んで一安心。 今のところはキャリブレーションを手でやってたりしてるので ドライバは公開できる状態じゃないけど、また時間が出来たら いろいろまとめてうpします。 おーーーーー!!!!それが解決できるのであれば俺もやりたい!! Tipoのかわりが欲しいんだ! 無知なんでごめんなさい。 VMwareてのを使わないと実現できないものでしょうか? タッチパネル使えるのなら、いまからバイオU買うのですが、、 >>578 576>ドライバは公開できる状態じゃない >>578 type Uでは直接超漢字は動かないので、VMwareがどうしても必要です。 これのおかげで多少遅くなってしまうんですが、まあ仕方がないですね。 高速化のためにVMware用のディスプレイドライバも作りたいんで、 いまXfree86のソースを調べてるところです。うまくいくといいんですが。 >>580 ありがとうございます。 なるほど、、、VMwareは必須なのですね。 DEVCONFに書き込むときって やっぱ全部自分でやらなきゃいけないのかいな。 なんつーめんどくさい、ライブラリで面倒見てくれりゃいいのに。。。 DEVCONFへのリンクはどうやって獲得すればいいんだ。。。 本スレでも報告したけど、VAIO type Uのタッチパネルのドライバが完成したよ。 http://pario-software.com/typeu/ 今度のドライバにはインストーラがついてたりDEVCONFをいじってたりするので ドライバ作りたい人は参考にしてちょうだい。 一つ聞きたいんですけど、超漢字でフォーマットしたUSBメモリやCFは VMware上の超漢字では、やっぱり使えませんかね? キーボードと同時でなければいいんならUSBディスクは使えるよ。 CFは無理っぽい感じ。 動画再生 ・IPCの見直し。 ・demuxerの修正。 ・AAC/PCMへの対応。 ・音声のないデータでも再生できるようにする。 ・GUIの改良。 サウンドドライバ ・PMCのサウンドドライバとの互換性の向上。 ・Sound Blaster 16 PCIを購入したのこれに対応させる。 とりあえずこんなところかな。 >>586 > キーボードと同時でなければいいんならUSBディスクは使えるよ。 > CFは無理っぽい感じ。 サンクスコ これは、VaioUの時ですよね。 VMWareはPCカード系に対応していないのかな。 念のため、しつこいですけど 「BTRON形式」 のUSBディスクを認識してデータの読み書きが出来る ということですよね? ファイル変換を使ったりせずに。 つまり、超漢字をアップデートするのに、仮想ディスクにコピーする際 FATでフォーマットされたUSB接続のディスクでなくてもよいということですよね。 以前VirtualPCでガッカリしたことがあるもので。 すみません。 さっきああ書いちゃったけど実はまだ試してないんだよね。。。 でも原理的には可能なはずだよ。VMwareのUSB周りの処理は Virtual PCより柔軟だからね。仮想マシン上の超漢字と USB機器が直接やりとりできるので、超漢字さえ対応 していればどのUSB機器でも動くはず。あとでUSBディスク 超漢字形式でフォーマットして試してみるよ。 あとVMwareはPCカードは全然駄目みたい。残念。 >>588 サウンドドライバに対応してない機種での動画再生も追加希望。 やっぱ、絵だけでも見たいんで。 >>589 >念のため、しつこいですけど >「BTRON形式」 のUSBディスクを認識してデータの読み書きが出来る >ということですよね? >ファイル変換を使ったりせずに。 わしはトライアル版で試したのだが、USBメモリカードはカード自体は 認識しているようだが、見えてこなかった。しかし、オリンパスのUSB のMOドライブはばっちり見えた。しかし、ちょっとタイミングによって は変なときもある。 >>590 > Virtual PCより柔軟だからね。仮想マシン上の超漢字と > USB機器が直接やりとりできるので、超漢字さえ対応 > していればどのUSB機器でも動くはず。あとでUSBディスク > 超漢字形式でフォーマットして試してみるよ。 ほう。割と進化してますね。 レポートお願いします。 >>593 > わしはトライアル版で試したのだが、USBメモリカードはカード自体は > 認識しているようだが、見えてこなかった。しかし、オリンパスのUSB > のMOドライブはばっちり見えた。しかし、ちょっとタイミングによって > は変なときもある。 > 微、微妙。 もう少しバージョン上がったら試してみようかな。 レポサンクス USBフラッシュドライブ買ってきて 試してみたけど認識してくれんかったよ orz FATでフォーマットされてても駄目だったんで 多分VMwareの問題なんだろうな。 でもデバイスによっては問題ないみたい。 後でVMware Workstation 5.0 RC1で試してみるよ。 サブセットC ver 1.501 http://yashiromann.sakura.ne.jp/prog/index.html なかなかみんながんばってるね。 超漢字用のちゃんとしたスクリプト言語ほしいよな〜 MSは機能が限られてるしVisual Basicの悪夢が蘇って 生理的に受け付けないんだよな。残念。 ちょっと前に豊福さんがRuby移植してたけど、 あれはUNIXエミュレーターが前提だったのがなあ。 いじったらエミュレーターなしで動くようになるのかな。 今日は各プロセスの状態遷移図を描く。 これでちょっとは楽になるかな。 >>598 ご紹介ありがとうございます。注意書きに書いたように、どこかでメモリ破壊が 起きているらしくて、再コンパイルを繰り返すとINT14が飛んできてしまうので、 悲しい…のですが。 超漢字用のまともなスクリプト言語欲しい、というのは私も全く同感で、 今、こういうの↓を作っています。いつになったらできるのだろう…。 http://yashiromann.sakura.ne.jp/memo/transtad/ 良いアイディアがありましたら教えてくださいね。 > all >>596 > USBフラッシュドライブ買ってきて ワザワザありがとう。 > でもデバイスによっては問題ないみたい。 > 後でVMware Workstation 5.0 RC1で試してみるよ。 お願いします。 >>602 TransTADのプレゼンみてみたよ。とりあえず気づいた点をいくつか。 ・TRONコードはWTCに変換すると処理が楽。 ・仮身セグメントはLINK構造体とセットで扱えば出力のときに 対応がくずれることはない。 ・GCC 3.xは自分でコンパイルすれば超漢字で使える。 ・外部コンソールがあると楽。 期待してるんで頑張ってね〜 >>603 いや、遠慮しておきます。。。 >>604 RC1でもうまくいかんかったよ orz VMwareは買ってきたUSBフラッシュメモリをSCSIデバイスと 認識してるみたいだからそれと関連があるのかもしれない。 一番手っ取り早いのは使えるデバイスを探すことかも。。。 個人的にはTADレコードの処理にはLISP系の言語が 向いてると思うんだけどね。レコード全体を 巨大なリストとして扱えばいいわけだし、 仕様が小さい上に言語そのものの記述能力が高いから ライブラリが揃ってなくてもなんとかなりそうな感じ。 OOPLはちゃんとしたライブラリがないことにはなんとも。。。 パイプ・リダイレクトの代替になるような枠組みを含めて TAD処理用にうまいこと拡張できんか考えてるところだよ。 でも実装は相当先になりそうだな。 type U付属のキーボードに我慢できなくなったので Bluetooth CFアダプタとStowaway BT Keyboardを買ってきた。 http://www.pario-software.com/images/chovaio02.jpg (右に出っ張ってる青いのがBTアダプタのアンテナ) キーボードはワイヤレスでタッチ感もいいしコンパクトに 折り畳めるのですごい便利。付属のスタンドもちゃんと使えた。 タッチパネルは保護カバー付けてるので直接指でさわってる。 快適すぎてもう以前の環境には戻れんな。。。 肝心の「動画再生」は相変わらずリファクタリング中。 将来の拡張に向けてプロセス間通信周りを見直してるんだけど 思った以上にめんどくさい。これが終わったら さっさとGUIの整備とデコーダの拡張に移りたいんだが。。。 >>605 > >>604 > RC1でもうまくいかんかったよ orz > VMwareは買ってきたUSBフラッシュメモリをSCSIデバイスと > 認識してるみたいだからそれと関連があるのかもしれない。 SCSIって対応してないんじゃ? でもファイル変換できるんですね? > 一番手っ取り早いのは使えるデバイスを探すことかも。。。 ですね。気になるのは、試してくれたのが素の超漢字で使えるのかということなんですけど。 >>609 フォーマットしてるんだからつかえるわな。 FATも駄目だったんですね。そのストレージの問題かな。 ■手持ちのUSB接続のデジタルカメラ 実機上の超漢字: O VMware上の超漢字(FAT): O VMware上の超漢字(超漢字フォーマット): O ■買ってきたUSBフラッシュメモリディスク 実機上の超漢字: O VMware上の超漢字(FAT): X VMware上の超漢字(超漢字フォーマット): X ということなので、たぶんVMwareの問題だよ。 VMwareは買ってきたディスクをSCSIディスクとして 認識してるから、超漢字そのものがSCSIに対応していれば ちゃんとVMware上の超漢字から使えるのかもしれない。 っていうことは、超漢字用のSCSIドライバ書けば大丈夫ってことなのか。 >>605 ありがとうございます。非常に参考になります。 > ・TRONコードはWTCに変換すると処理が楽。 これはその通りですね。TransTADの内部では std::basic_string<T> を WTCで特殊化してそれっぽい char_traitsを入れたものを使っています。 正規表現の部分もWTC[]に変換して、Onigurumaを使っています。 でも、システムコールはTC*なので、すべての文字列処理をWTC[]に変換して 作業してTC[]に直すというのは効率的でないので、なるべくTC[]で処理できる ライブラリをPMCさんには用意して欲しいなー、と思っています。(←他力本願) > ・仮身セグメントはLINK構造体とセットで扱えば出力のときに > 対応がくずれることはない。 パターンマッチベースの処理なので、仮身セグメントを特殊扱いするのは 個人的には嫌なのですが、いい方法があったらそのようにしたいと思っています。 > ・GCC 3.xは自分でコンパイルすれば超漢字で使える。 この前 GCC 3.4.3 のコンパイルを試みたのですが、libstdc++-v3あたりの configureで失敗して先に進めませんでした。どうすれば良いのでしょう…。 あと、LISPも候補としては考えたのですが、lambda closureの実装とかGCとか継続 周りを考えると、どう考えても私の力ではLISPの実装は現実的でないので やめることにしました。 あと、型ももうすこしきつくないと、TADのようなバイナリフォーマットなものは扱いにくい気がします。 >>611-612 > ということなので、たぶんVMwareの問題だよ。 そう、なの? デバイスで違う認識てのはそれが特殊なのかなと。 デジカメの方は何て認識されますか? > VMwareは買ってきたディスクをSCSIディスクとして > 認識してるから、超漢字そのものがSCSIに対応していれば > ちゃんとVMware上の超漢字から使えるのかもしれない。 対応してないと思います。 >っていうことは、超漢字用のSCSIドライバ書けば大丈夫ってことなのか。 実機も対応機器が増えて幸せに成れますね。 >>614 >>っていうことは、超漢字用のSCSIドライバ書けば大丈夫ってことなのか。 >実機も対応機器が増えて幸せに成れますね。 ま、これは今後の課題だね。。。対費用効果のことを考えると すぐ手を出す気にはなれんなあ。 >>613 > 正規表現の部分もWTC[]に変換して、Onigurumaを使っています。 こりゃおもろいね。正規表現使うときにはぜひ使わせてもらうよ。 > なるべくTC[]で処理できるライブラリをPMCさんには用意して欲しいなー どっちかっていうと内部処理は全部WTCで統一してほしいんだけどね。。。 どうせディスプレイプリミティブやフォントマネージャの内部では 文字列はWTC[]で扱ってるんだろうから、いちいちTC[]に変換するのは 無駄っぽい気がする。 > この前 GCC 3.4.3 のコンパイルを試みたのですが、libstdc++-v3あたりの > configureで失敗して先に進めませんでした。 たしかそんな感じだったかな(うろ覚え)。 Cの標準ライブラリはPMCのは窓から投げ捨てて 自分でnewlibをビルドしたような記憶があるよ。 当然付属のMakefileは使えないから自分で作ったんだけど。 ない関数は適当にスタブを作って、gccをconfigureするときに --with-newlibオプションで逃げたような。 >>616 > こりゃおもろいね。正規表現使うときにはぜひ使わせてもらうよ。 確かに、この部分の有用度は高いので、なるべくこっちだけでも先に 公開できるようにしてみますね。 # とりあえずその前に明日のテストかな(笑)。 > > なるべくTC[]で処理できるライブラリをPMCさんには用意して欲しいなー > どっちかっていうと内部処理は全部WTCで統一してほしいんだけどね。。。 確かにその通りだと思います。ただ、システムコールを変えるとなると、 実身数/名前長制限の解決の苦労と同じくらいの覚悟はしなければいけないはず なので、しばらくはなさそうですね…。 > Cの標準ライブラリはPMCのは窓から投げ捨てて > 自分でnewlibをビルドしたような記憶があるよ。 > 当然付属のMakefileは使えないから自分で作ったんだけど。 > ない関数は適当にスタブを作って、gccをconfigureするときに > --with-newlibオプションで逃げたような。 やっぱり結構大変なんですね。次にまたチャレンジするときにいろいろ 質問させてください。(←お手数おかけします…) ぱりお氏のソースを使って作ったVIA用のサウンドドライバから音が出ました。 半分諦めていたけれども、なんとかなりました。 フリーズする現象も、どうやら割り込みルーチンをまともに作っていなかった のが原因みたいです。 VIAチップ(VT82C686)用のサウンドドライバです。 VT823xでも動くかもしれません。 http://homepage1.nifty.com/acry/VIASoundDrv20050415.bpk http://homepage1.nifty.com/acry/viasounddrv20050415.tgz VT823xは、実機を持っていないのでテストしていません。 その為余りお勧めしませんが、もし試した方がいましたら 報告お願いいたします。 ここも書き込み少なくなったけれど、全然動き無いの? 初心者スレでちょっと話が挙がっていたので、思い出したように質問なんですが、 今のセルフ開発環境をmake用紙から使うことはできますでしょうか? 昔のセルフ環境ではucliを使っていなくて、今はucliを使っている、とかその辺の関係で、 確かルールを書き換えたりしただけではうまくいかなかったように思います。 今ちょっと試してみた感じでは、gmakeを/SYS/binにコピーして、gmake自体が見つからない 問題は回避できますが、makefileが見つからないということになって異常終了してしまうようです。 なにかこの辺のノウハウをご存じの方、いらっしゃいますか? あげないとと識者が来ない。 あげると荒らしが来る諸刃の剣。 おまいら、Nスペで国産OS TRON の出番ですよ。 NHK総合 8/28(日)午後9:00〜 NHKスペシャル 日本の群像 再起への20年 「第4回 極小コンピューター 技術者たちの攻防」 1984年、誰もが簡単にコンピューターを使えるようにと 東京大学の坂村健氏が開発した基本ソフト「トロン」。 しかし、無料提供を目的にしたトロンは、 89年にアメリカから貿易障壁のリストに挙げられ、 普及中止に追い込まれる。 結局、90年代のパソコン市場は、 世界標準を握ったアメリカ製の基本ソフト 「ウィンドウズ」に支配されることになった。 …… http://www.nhk.or.jp/special/topics/top2_0503a.html ここでの質問でいいのかわからんのですけど、小物の「ねこ」 ってどんな感じで作ってるんでしょうか? おそらくSCREEN上 を描画環境にしているのでしょうけど、他のウィンドウの描画 環境との干渉とかないのでしょうか。 試しにSCREEN上を描画環境にテストしてみたんですが、他の ウィンドウに写り込んじゃったりしてどうもうまくいかんです。 動作を見ていると、イベントを取得してそのイベントに応じて 描画環境の削除、作成をしているようにも思えるんですけど、 そうすると、他のウィンドウ上にゴミが残ったりしないんだろう けど、FEPとかならイベントを取得するのは簡単ですけど、ねこは ウィンドウを持たなくて、FEPでもないようですし。 >>628 いや、ちょっと調べてみたところ、FEPみたいですよ。 適当にあらかじめ4つ別のFEPを立ち上げてみてから起動してみたら、 「フロントエンドプロセスとして登録できません」というエラーパネルを 表示して、異常終了しました。 >>632 あらっ、ほんとだ。(^_^; 私もFEPを4つ立ち上げてから確かめたつもり だったんですが、メニューから「ねこ」を選ぶと、パネルがちゃんと出る もんですから、てっきりFEPではないと思いこんでいました。 そういや、FEPからはパネルを開くことはできませんから、まずパネル を開いてから、「遊ぶ」ボタンを押すことによってFEPを起動しているん でしょうね。ウィンドウは画面外とかに配置してるんだ、きっと。 ってことはイベントの取得とかは簡単にいけるから、SCREEN上を描画環 境にしていてもイベントの状態に応じて、描画環境の削除、作成をして画面 上にゴミが残らないようにするってことも可能なわけだ。 >>245 さん,thanks! >>629 PMCの商用アプリでソースを公開しているのは、手帳ぐらいではなかった っけ? >>633 ちょっと自信ないのですが、FEPならウィンドウを開かずにイベントループを 回してしまえば、ウィンドウを画面外に開かなくてもいけるような気がします。 少なくとも「ウィンドウ一覧」アプリケーションではウィンドウが拾えて いないので、おそらくウィンドウは開いていないような気がします。 # 不確かな情報でごめんなさい。 >>634 >FEPならウィンドウを開かずにイベントループを >回してしまえば、ウィンドウを画面外に開かなく >てもいけるような気がします。 FEPだとウィンドウを開かなくてもうまいこといくんでしょうか。 まだ試したことがないんですが。FEPじゃない場合で、ウィンドウ を開かないでやってみたらとんでもないことになっちゃったので。 >>635 火炎龍さんの「移動追従」では、ウィンドウを開かないでFEPでイベントループを 回しているみたいですね。なので大丈夫みたいです。 ↓ソースも同梱されているので、かなり参考になると思います。 http://www.vector.co.jp/soft/dl/other/tron/se361339.html BTRONプログラミングしろよ、お前ら。 ところでマイクロスクリプトの資料やサンプルってどこかネットにありま せんか? それと、マイクロスクリプト入門とBTRONマイクロスクリプトを一冊だけ 買うとしたら、どちらがお薦めでしょうか? 本は、プログラミングのスキルで違ってくると思う。 言語仕様見ただけで把握できるレベルなら後者(青本)がいいだろうが、 一からなら入門(黄本)がいいかも。入門でも一通り説明してる。 まあ、(本買わずに)資料はOSのヘルプ参照でもいいかもしれんが。 サンプルはOS添付かネットでフリーウェアを見れ。 WideStudio は開発環境でコンパイラは含まれてないだろ >WideStudio のサポートプラットフォーム >超漢字4版(パーソナルメディアセルフ開発環境必須) だそうで… CodeWarrior はボツになったしな。 結局、GCCだけか。 全国に600万人以上の会員数を誇り 『ほしのあき』『よゐこ』 『中川翔子(しょこたん)』 『ギャル曽根』『にしおかすみこ』 『アッキーナ』『藤原紀香』…などなど 芸能人も多数登録しており信頼のある完全無料サイト『モバゲー』 正規アプリ並みの高品質な無料ゲーム100種類!!(なんとウイイレも!) デコメ、画像、着うたも取り放題!! 自分のブログ、サークル、アバターも作れる!! 趣味の合う友達を増やそう!! こんなに至れり尽くせりなのに『完全無料!!』 (変なメールも一切来ません!!) 暇つぶしにも是非!! http://mbga.jp/AFmbb.XxVA79d00d/ ※気に入らなければ即退会できます★ TADが直接読める言語処理系が欲しいな。 コンソール開きたくないし、パス名なんて不細工なものも使いたくない。 Maestroなき今、どんなのがあるんだろう。SchemeとかFORTHとか、昔から名前だけは聞いているような気がするんだが、動いているものを見たことがない。 >>651 >TADが直接読める言語処理系が欲しいな 既存のLLで地道に作れば出来るのでは。 >コンソール開きたくないし 贅沢だなと思ったが、それが普通なのかもね。 >Maestroなき今 これ忘れた、というか触ったことない。どんなのだったの? >SchemeとかFORTHとか、..動いているものを見たことがない Schemeは(aaa (bbb ccc(ddd)))な感じの言語で、FORTHは PostScriptの親戚なのでGhostScriptで試せるのでは。 どちらにしても、単に移植しただけでは一般の人に楽しいことは なく、地道に作り込まなければ何も出来ないけど。 Campus LISPってのが処理系が小さいんで勢いで移植してみた。 S式をTADというかTRONコードで書けるというだけなら造作もない。原紙アプリケーションにしたのでLISPでバッチファイルを書く感じ。 MaestroではS式を(コンパイルして?)実行機能付箋に入れたように聞くが、それはまあ後でなんとかなるだろう。 せめて仮身くらいは扱いたいが、どんなモデルにしたものか。 (setq *standard-output* [仮身]) くらいはできると、それっぽいのだが。 gdgdスマン >>654 >Campus LISPってのが処理系が小さいんで勢いで移植してみた。 へー、そんなのあったのか。 >MaestroではS式を(コンパイルして?)実行機能付箋に入れたように聞くが MaestroとはLisp/Scheme系だったということね。 >せめて仮身くらいは扱いたいが、どんなモデルにしたものか。 実身/仮身を扱うのを作るのは難しいよ。BTRON関係の最難関です。 それに関する資料がPMCの出してるものしかないし。 実身/仮身を扱う処理系作成についての資料自体はないかも。 PMCのPerlも実身/仮身のレイヤーはないと思った。 うーん割り切りが必要なんだろうなあ。 仮身って結局LINKだって決めつければ、ソースに仮身を置くと パースの段階で勝手にLINK構造体(を模したS式でもいいが)を 作ってくれる、という感じかな? そうするとファイルI/Oくらいにしか使い道はないけど。 Maestroは結構評判がよかったようだけれど、一体どの程度の 仕様だったのか、誰か知らないかな? (ああ、もなかさんは もちろんご存じで……) ファイルI/Oだけじゃ意味なくて、TADの操作やプロセス管理、 文字/画像表示や描画くらいはできてほしいところだが。 あ、あとTCP/IPね。 >>657 2003年からストップしたままだけど Ruby で実験しているのが http://homepage2.nifty.com/1to100pen/btron/boshuu.txt http://hpcgi2.nifty.com/1to100pen/wiki/wiki.cgi?p=Btron の「BTRON版 Ruby 今後の予定と抱負」 字句解析段階で仮身見つけると "TronLink.new(ファイルID)"的文字列に変換してるだけです。 余裕と根気があればIO以外もやりたいんだけど。 >>657 ・実行機能付箋の中に埋め込まれたスクリプトをランタイムが実行. ・スクリプトはS式.Schemeっぽい文法だけれど,末尾再帰であっさりスタックが溢れる.(w ・atomには,仮身型とかTC型とか…がある. ・BTRON APIを意識した組込み関数がある. ・実身の中身から,リスト化したTADを作る関数がある. ・TADの操作はcarとかcdrとかcadrとかcddrとかして頑張る. ・リストからTADを構成して実身に書き戻す関数もある. 糞便のにおいの充ちた土間で、両手を縛られ、一年中全裸で過ごす女性がいます。 女性の名は孫桂芝。黒竜江省に生まれました。彼女は、いまから15年前、21歳のときに2000元という値段で、 当時50歳の男性、馬学義に売られたのです。 http://blog17.fc2.com/c/chiquita/file/80722a.jpg 7月15日、読者からの通報をうけた助D坊新聞の記者は、山東省の安丘市石埠子鎮孟家旺村へと向かいました。 それらしき家に到着すると、裏では14歳になるという馬学義の息子が、椀にもられた昼飯を夢中でかき込んで いました。屋根の低い粗末な小屋をのぞくと、全裸の女性が枠のみの窓から外をながめています。今年65歳の 馬学義が取材に応じました。 15年前に馬学義は人買いから女性を買いました。馬によると女性は彼のれっきとした妻だといいます。 女性を買って暫くたってから、おなじ石埠子鎮の孝仁泉村にて結婚の登記もしたそうです。そのとき届け 出た女性の名は程玉蘭。もちろん偽名です。 馬学義は、彼女を手に入れるとまずは全裸にし、両手をナイロンの紐でしばってその先に数十キロの 重石を括りつけました。縛ったのは馬にいわせると、彼女がものを壊すため。また全裸にむいたのは 大小便をさせるのに便利なため。 冬でも丸裸で過ごす彼女は、小屋に一頭だけいる羊に体を寄せて暖をとるのだそうです。それでも あまりの寒さから昏倒したことがあり、そのときには隣近所の村人が彼女のために火をおこして やったこともあったそうです。 (略) 彼女は字が読めました。村人の話によると、連れてこられたばかりの頃は若く美しく、精神も正常 だったといいます。しかし取材のなかでみた彼女はすでに目に光がありません。その白い手と足は 蚊にくわれた跡で埋め尽くされています。馬は「こいつは蚊にくわれることなんぞ気にしとらんよ」と笑います。 両親と孫大軍という兄が1人いたという彼女。村人によると、その兄がいつの頃か、ごく近くまで妹を 探しにきたこともあったそうです。しかし兄は、この馬の土間にはたどりつくことなく、孟家旺村を後にしました。 http://chiquita.blog17.fc2.com/blog-entry-3409.html BTRONっていうのは、無料ではダウンロ−ドできないの? そこまで暇じゃないよ。あほくさ。 日本語からしておかしいと思っていたが。やっぱりだな。 一方じゃ超漢字とかって商品まででたし。 少なくともBTRONは終わりだな。もう救いようがない。こんな発想じゃ 結局、一般ユーザーは永遠に無理だわ。 商品だったらWINDOWSで充分だもの。 国民の望みは、ブラックボックスじゃないOSを望んでいたんだよ。 こんな発想なら、WINDOWSに勝てっこないよ。 国民はブラックボックスでない無料のOSを欲しがっていたんであって、 OSの仕様を欲しがっていたんじゃない。根本的間違ってるよ、この発想は。 そら、財団主導にせよ政府主導にせよ仕様の標準化は必要だとおもうけどさ。 ブラックボックスで方式で、MSに勝てるビジネス用OSを日本の企業が 作れるわけないじゃないのよ。民間が先に出していたら、もはや政府自体が 本気で開発するなり本腰入れて「ブラックボックスでないOS」のために 財団法人に開発援助したくてもできないよ。 OSっていうのは国家防衛の観点で捉えられるべきものという一面もあるのだ。 それが一企業のために、国家防衛のための国家規模の開発が阻害される ことは国民にとって迷惑なんだよな。 >国民はブラックボックスでない無料のOSを欲しがっていたんであって 80年代にか? それはあり得んだろうw >>667 今時Windowsに勝ったとか負けたとか、 そういう考えをする時点で負け組決定なんですが。 ここはたしか、「暇つぶしにBTRONプログラミングでもする」スレだったはず。 //なになにBTRONプログラミングで暇つぶしが人気急上昇の兆し? 超漢字4から超漢字Vに移行したのだが、いろんなものがめちゃくちゃ早く なっている。とくにマイクロスクリプトはすごい。 TADでソースが書けるセルフ環境にもどってもいいかなと思っている。 東京大教授・坂村健「『初音ミク』 http://uni.2ch.net/test/read.cgi/newsplus/1327812961/ ステマK−POPに対抗するネットのシンボルとして皆が共感する存在になった」 どっちも同レベルのアジア系ネット民によるゴリ押しじゃねーか、って アメリカからもヨーロッパからも笑われてるけどな。 取り敢えず >>687 が事の顛末を碌に知らずに書いてるのは解った 顛末? 「アメリカからもヨーロッパからも笑われてる」という現実には目を瞑るのが「顛末」かw BTRONプログラミングしている人はもうおらんのかねぇ。 なんでBTRONではGIMPのようなものはうまれなかったの? 基本画像ソフトがそこそこ便利だったというのと、画像形式のTAD化にお金を回せなかったからじゃないの? JPEGはTADじゃないし。 TIFFならともかくJPEGなんて単なる符号化イメージでしょ?何で取り込めないの? GIMPまでのものじゃないけど、よのひととか、すえのひととか、やりかけてなかったっけ? 絵を描くものならもっとほかにもあったよね。 >>695 アプリ指定付箋で取り込めばなんでもできるけど、 単にバイナリのかたまりとして読み書きできる、以上のことではないからね。 ベクトルエディタという黒歴史もあるがw >単にバイナリのかたまりとして読み書きできる、以上のことではないからね。 UNIX以来のファイルなんてそういうものでしょ、中をみて判断するしかない。 それこそ規格団体にアプリID振れば解決するような気がするけども。 BTRONのTADはあえてバイト列よりアプリ寄りのレイヤの標準化を狙ったわけだから ぶっちゃけ情報交換性がないデータ構造なんて単なるレジストリだよね。 http://www.vector.co.jp/vpack/browse/person/an041415.html こんな感じ?グラフィックソフト? コダックのフォトCD規格をTRON協会が取り込もうとしたけど、フォトCDの存在自体がもうないよね。 256色とそれ以上で断層が起きるのが不思議なんだよな。 国産機なら総天然色をサポートするグラフィックソフトがあった筈なんだけど、 それらは進化が叶わずに、たまたまMacに乗っかったソフトだけが生き残ったみたいな。 > コダックのフォトCD規格をTRON協会が取り込もうとした へぇ、そんな話あったん? >>703 もう10何年以上前だし、TRON協会自体消えてしまったので。 結局モノは表に出ていないような。 TRONクォータリか何かに1ページぐらい構想が載っただけとか? 動画とかのコンテナは新方式が来ても問題ないけど、あれも書庫のバイト列なのだろうか? っていうか、MH圧縮には対応ってなんか単に古い規格に合わせただけって感がするんだよな。 TIFFなんかは後からLZとかJPEG対応したような気がするけど、あれはどうしてできたんだろ? >>705 利用に関する協定を結んだと新聞か日経の雑誌に小さく載ったのは間違いないんですけど、ソースが出てきません。 まあ、あの時点でなんでフォトCDよ?とか思いましたけど、コダック相手の特許対策だったのかなあ? あれだ、フロッピーのフォーマットなんて定義してるんだから フォトCDと言わずHD DVD辺りを取り込んじゃったらどうだろ? BTRONのフロッピーのフォーマットの定義は、論理フォーマットの定義だから、 なんかレイヤが違う気がするけど。 むしろ、論理フォーマットが良かったんじゃなかったっけ?あれって 誰でも簡単にネットで稼げる方法など 参考までに、 ⇒ 『半藤のブブイウイウレレ』 というサイトで見ることができます。 グーグル検索⇒『半藤のブブイウイウレレ』 SZMIQIALUG 家電メーカーアイリスオーヤマが、同社初のノートPC「LUCA Note PC」を発売すると発表しましたが、「ドンキPCのほうがマシ」など、スペックの割に高すぎるとの意見が多くソーシャルメディア上で見かけられます。 5万円でメモリ4GB、ストレージ64GB 文部科学省は、2023年度を目標に小学生から高校生までの1人1台の学習者用端末の導入や校内LAN整備の標準化、緊急時における家庭でのオンライン学習環境の整備への実現を提唱しています。 アイリスオーヤマは、文科省の推進するGIGAスクール構想に対応するため、「省電力かつファンレスで静音」「画面も見やすく持ち運びも便利な大きさ」「大きくタイピングのしやすいキーボード」の3つを特徴としたノートPC「LUCA Note PC」の発売を発表しましたが、ソーシャルメディア上には「スペックの割に高すぎる」との意見が溢れています。 「LUCA Note PC」のスペック詳細は、以下のとおりとなっています。 OSWindows 10 Pro 64bitディスプレイ14インチ フルHD (1920×1080)CPUインテル CeleronプロセッサーNシリーズ Gemini Lake 4コアメモリLPDDR4 4GB無線LANIEEE 802.11 a/b/g/n/acインターフェースUSB3.2 Gen1 Type-A×2 Type-C×1/miniHDMI×1(HDMI 2.0対応)/ 3.5mmオーディオジャック×1/microSDカードスロット×1カメラ/マイク/スピーカーインカメラ:100万画素/内蔵マイク/ 8Ω 1Wx2内蔵製品サイズ(mm)約W323.15×D219.4×H19.3( 突起部除く)重量約1.3s付属品電源ケーブル、ACアダプター、取扱説明書、保証書、 WPS Office 2 ダウンロード版 Standard Edition参考価格(税抜)49,800円発売日2021年3月25日 [クライシスアクター」「豊島保養所」←画像検索&拡散! 他スレに丸ごとコピペよろしっく!!!!! ネットでできる反レプティリアン・反イルミ活動です!!!!! 動画サイトのコメ欄もねらい目だぞ!!!!!!! read.cgi ver 07.5.4 2024/05/19 Walang Kapalit ★ | Donguri System Team 5ちゃんねる