いいとも増刊号時間に起きたり。
先日のgccのヘッダファイルなどを眺めていると、altivec関連マクロが
追加されていました。因みにgccのバージョンは以下。
gcc> /usr/local/powerx/bin/powerpc-powerx-elf-gcc.exe --version powerpc-powerx-elf-gcc.exe (GCC) 3.2 20020323 (experimental) Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. gcc> /usr/local/powerx/bin/powerpc-powerx-elf-gcc.exe --target-help 2>&1 | egrep 'altivec|:' Target specific options: -mno-altivec Don't use AltiVec instructions -maltivec Use AltiVec instructions PowerPC options: -maltivec generate code for AltiVec
vector> cat vec_test.c #include <altivec.h> vector int vad(vector int a, vector int b) { return( vec_add(a,b) ) ; } vector> /usr/local/powerx/bin/powerpc-powerx-elf-gcc -maltivec -S vec_test.c vec_test.c: In function `vad': vec_test.c:5: unrecognizable insn: (insn 8 6 38 (set (reg:V4SI 116) (mem/f:V4SI (plus:SI (reg/f:SI 67 ap) (const_int 8 [0x8])) [0 b+0 S16 A128])) -1 (nil) (nil)) vec_test.c:5: Internal compiler error in extract_insn, at recog.c:2131 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
帰って来て寝て起きて出社(T_T)。でも計算機が止まるという事を
すっかり忘れていたので、結局すぐに帰ってきたり(^^;
最新gccのコンパイルテストを3/28の夜から行っていましたが、
仕掛けていたmegapov on ppcsim実行が終ってました。
megapovdemo/photons/threelens.pov Statistics, Resolution 320 x 240 ---------------------------------------------------------------------------- Pixels: 77120 Samples: 107168 Smpls/Pxl: 1.39 Rays: 871792 Saved: 30 Max Level: 5/5 ---------------------------------------------------------------------------- Ray->Shape Intersection Tests Succeeded Percentage ---------------------------------------------------------------------------- Box 4138368 803343 19.41 CSG Intersection 4138368 521142 12.59 Sphere 8276736 1472132 17.79 ---------------------------------------------------------------------------- Calls to Noise: 0 Calls to DNoise: 1671794 ---------------------------------------------------------------------------- Shadow Ray Tests: 3046164 Succeeded: 222438 Reflected Rays: 180596 Total Internal: 17714 Refracted Rays: 157762 Number of photons shot: 426266 Surface photons stored: 261137 Priority queue insert: 2851189 Priority queue remove: 820296 Gather function called: 209890 Gather radius expanded: 170733 ---------------------------------------------------------------------------- Smallest Alloc: 12 bytes Largest: 327688 Peak memory used: 5360261 bytes ---------------------------------------------------------------------------- Time For Parse: 0 hours 0 minutes 10.0 seconds (10 seconds) Time For Photon: 3 hours 13 minutes 56.0 seconds (11636 seconds) Time For Trace: 6 hours 46 minutes 7.0 seconds (24367 seconds) Total Time: 10 hours 0 minutes 13.0 seconds (36013 seconds) =========== 実行命令サマリ =========== sum mulli = 102711592 subfic = 168896939 cmpli = 18666973 cmpi = 526701471 addic = 3533515 addic. = 188696 addi = 3069330316 addis = 913806247 bc = 6823511171 sc = 5554 b = 700138245 rlwinmi = 8354524116 ori = 16312218 oris = 47489959 xori = 28909858 xoris = 20665561 andi. = 108538207 andis. = 16576868 lwz = 1997297742 lwzu = 311910457 lbz = 61083402 lbzu = 2086049 stw = 1540512771 stwu = 616164626 stb = 4299958 stbu = 77173 lhz = 6693179 lhzu = 393216 lha = 1278371 sth = 754867 lmw = 42608001 stmw = 42608001 lfs = 184451912 lfsu = 1725592 lfd = 1521502095 lfdu = 26748704 stfs = 61925104 stfd = 655420915 stfdu = 4374 mcrf = 310401 bclrx = 337333212 crnor = 3 crxor = 6821097 creqv = 14 cror = 50578310 bcctrx = 25578509 cmp = 3415470834 subfcx = 2403488223 mulhwu = 6811 mfcr = 1271869420 lwzx = 154580301 slw = 674548 cntlzw = 101780 and = 4487561070 cmpl = 11721352 subf = 2434163383 andc = 786990 mulhw = 426267 lbzx = 4179114 neg = 1304098115 nor = 261341 subfe = 1206116186 adde = 1203558937 mtcrf = 6419693 stwx = 39130933 subfze = 351 addze = 166038486 stbx = 460186 addme = 3567 mullw = 1703689 add = 8798326443 lhzx = 17443979 xor = 21558801 mfspr = 183238195 lhax = 10094961 sthx = 596553 or = 2461469540 divwu = 203566 mtspr = 250287112 nand = 15 divw = 2001 lfsx = 160724906 srw = 152674 lfdx = 172718695 stfsx = 721010 stfdx = 96858799 sraw = 938301 srawi = 231254084 extshx = 12610 fdivs = 11894 fsubs = 3686310 fadds = 3812507 fmuls = 10024801 fmadds = 4019915 fcmpu = 412253621 frsp = 42052037 fctiwz = 9855597 fneg = 3627674 fmr = 401959890 fabs = 17743800 fdiv = 38588556 fsub = 256418482 fadd = 108600178 fmul = 405309554 fmsub = 4565095 fmadd = 469249227 fnmadd = 801809 Total_count = 61132680330 ============================================================================= povray31/scenes/advanced/fish13/fish13.pov Statistics, Resolution 640 x 480 ---------------------------------------------------------------------------- Pixels: 307840 Samples: 559528 Smpls/Pxl: 1.82 Rays: 823555 Saved: 3 Max Level: 5/5 ---------------------------------------------------------------------------- Ray->Shape Intersection Tests Succeeded Percentage ---------------------------------------------------------------------------- Box 621300 331121 53.29 Cone/Cylinder 77791 11814 15.19 CSG Intersection 1891531 259071 13.70 CSG Union 919854 171071 18.60 Plane 1434952 795404 55.43 Quadric 3326437 843687 25.36 Sphere 25858063 4925454 19.05 Clipping Object 190712 181889 95.37 Bounding Box 20246387 11366519 56.14 Light Buffer 33633434 19954957 59.33 Vista Buffer 11050953 8219227 74.38 ---------------------------------------------------------------------------- Calls to Noise: 600327 Calls to DNoise: 1582444 ---------------------------------------------------------------------------- Shadow Ray Tests: 2921565 Succeeded: 85220 Reflected Rays: 250601 Total Internal: 31 Refracted Rays: 13258 Transmitted Rays: 168 ---------------------------------------------------------------------------- Smallest Alloc: 12 bytes Largest: 12828 Peak memory used: 1259858 bytes ---------------------------------------------------------------------------- Time For Parse: 0 hours 0 minutes 34.0 seconds (34 seconds) Time For Trace: 13 hours 31 minutes 41.0 seconds (48701 seconds) Total Time: 13 hours 32 minutes 15.0 seconds (48735 seconds) =========== 実行命令サマリ =========== sum mulli = 49824303 subfic = 300737567 cmpli = 61029581 cmpi = 1127634181 addic = 4840752 addic. = 36807 addi = 4385355374 addis = 967793622 bc = 7797035551 sc = 2497 b = 1119783147 rlwimi = 6376 rlwinmi = 8343540627 ori = 55428357 oris = 62319567 xori = 561362 xoris = 20946058 andi. = 120591879 andis. = 1386116 lwz = 4044963101 lwzu = 361729396 lbz = 30778555 lbzu = 8932311 stw = 2883374508 stwu = 880205467 stb = 7463460 stbu = 18568 lhz = 109193456 lhzu = 1769472 lha = 36690764 sth = 2674414 lmw = 43290089 stmw = 43290089 lfs = 249939995 lfd = 3029668037 lfdu = 25319104 stfs = 49179035 stfd = 1030852945 stfdu = 568294 mcrf = 87 bclrx = 597945827 crnor = 6808260 crxor = 15480067 creqv = 68 cror = 9708619 bcctrx = 63028098 cmp = 3477824180 subfcx = 2348385798 mulhwu = 8895 mfcr = 1283935433 lwzx = 172572188 slw = 3257832 cntlzw = 102 and = 4401676140 cmpl = 175561372 subf = 2246826555 andc = 6872120 mulhw = 2 lbzx = 13351864 neg = 1241589844 lbzux = 3473 nor = 1854 subfe = 1180128251 adde = 1174985842 mtcrf = 11256022 stwx = 100835577 subfze = 554 addze = 324411244 stbx = 1638840 addme = 1 mullw = 30925 add = 8604380043 lhzx = 31150512 xor = 31309911 mfspr = 352216771 lhax = 13604103 sthx = 2794761 or = 3230218228 divwu = 549 mtspr = 505866584 nand = 2205 lfsx = 6997852 srw = 168109 lfdx = 343952763 stfsx = 1352587 stfdx = 239450139 sraw = 10062891 srawi = 152275333 extshx = 13878 fdivs = 13457 fsubs = 8041778 fadds = 10644952 fmuls = 7759449 fmadds = 854412 fcmpu = 490770515 frsp = 28544621 fctiwz = 13220949 fneg = 7492049 fmr = 430699887 fabs = 8259399 fdiv = 114809333 fsub = 327765130 fadd = 257666973 fmul = 680133628 fmsub = 3419506 fmadd = 1070335859 Total_count = 73103129834
今日は飲みのため19:00過ぎに離脱。
恵比寿駅で待ち合わせ。KOJIさんと連絡を取り誘導されて行くと、
KOJIさんとはじめましてのたぼさんが既に到着していました。
けいさんは会議が長引き少し遅れるという事で駅で少し待ち。
ほどなくして、けいさん登場で移動。たぼさんお勧めのお店で、
雰囲気の良いバーでした。流石、金曜日という事もあって店の中は
人でいっぱい。待っている間に飲み物が飲めたので、飲みながら
待っていたら、なにやら今日はBACARDIという酒のキャンペーンだか
なんだかで、いつもは居ないらしいおねいさんがウロウロしてました。
そのおねいさんが、スクラッチカードを引けというので、引いたところ
アタリを引いてTシャツゲットしてみたり(^^;。そして席が空いた所
で移動。彩の話やら3DCGの話やら会社の話やら色々。食って飲んで話して。
シシカバブがうまかったり、イモを食いつくしたり。つーか、朝の
5:00(日付はかわって3/30)までいたのですからそれはもう(^^;;;
そんな感じでたぼさんKOJIさんとは恵比寿駅でお別れ。けいさんと
一緒に早朝電車で帰り。どうもお疲れさまでした(^^)。
P.S. KOJIさん写真の転送よろしく(ぉぃ;
多分絵日記を後で補完の予定(笑;
やっと補完(汗; 写真資料を元にしたらこんな感じに!(ぉ;
起きたらまた凄い時間に。今週はダメダメっす。結局、臨時休業。
ラクガキ王国を進める。ついに予選を勝ち抜き、帝国の城の中に潜入。
でも、敵が強過ぎて死亡。
幸いに今日は「PSYVARIAR -COMPLETE EDITION-」の発売日だったので、
買ってみました。ついでに「鉄拳4」も。サイヴァリアの方は
完全移植って感じ。記憶が曖昧なのか我が家のディスプレイが悪いのか
PS2だからか、ポリゴンのガビガビ感が少し減っているように思いました。
ゲームの方はディスプレイが小さいのと縦長縮小表示のせいで、弾の
隙間が見えない見えない(^^;。それでも、PS版「怒首領蜂」などと
比べると縮小時の絵が綺麗なので、なれると結構遊べるかも。コンティニュー
無限なのでエンディングを見るのは簡単なのですが、
やっぱ如何に死なずにどこまで進めるかが面白さのポイントなので、
エンディングが見れるだけだとあまり嬉しくはないかも。所で、
「MEDIUM UNIT」のエンディングロールで、メインプログラマが
「SUPER ORE」さんとなっていましたが、X68kで動作していたオリジナル
画像圧縮プログラムであるところの「ICE」の作者さんが同じ
名前だったように思いますが関係あるのでしょうか。
そして鉄拳4。個人的にバーチャよりも鉄拳の方が好きなのですが、
鉄拳の方はキャラ交代が激しいのがたまに傷。2では風間準に入れ込み
過ぎて、3では使うキャラが無かったり(風間仁を使うのは却下。理由は
一部明瞭、男だから(汗;)したのですが、4も例外ではなく、結局カポエラ
姉さんにしました(3に引き続き4でも居るXaoyuじゃないのは、3の時は
子供だったから使わなかった(ぉぃ;)。あぁ、歳のせいか、技とか全然
覚えられませんよ(T_T)。オープニングムービーは、アーケード版に
いくつか新カットが挿入されています。絵の方はどんどん進歩するので、
もう凄い所がどこなのか判らないくらいになっています。それでも、
一番好きなのは2のオープニングムービーかも。
丁度日付け越え。
ラクガキ王国を進める。SMねぇさんを描いたところ、こいつぁつえぇや!
ってな感じのパラメータになったのでご満悦(なんのこっちゃ)。
そんな感じで「武器」パーツが描けるようになりました。どうやら描ける
パーツはこれで全部らしい。
あぁ、今日は眠くてダメっす。
起きたら凄い時間に(滝汗;;;;; そんな感じで臨時休業。
しかたないのでラクガキ王国を進めてみたり(ぉぃ;「はね」パーツが
描けるようになりました。
そんな感じで描けるライン数も長くなってきたので、人体モデリングを
して遊んでみました。基本的に胴、足、腕、頭を配置するだけなのですが、
流石に簡単ではありませんでした(^^;
うーむ、本当はイメージ図と実際の絵との強烈なギャップ(^^;を楽しんで
いただきたい所なのですが、ゲーム画面を取り込む術が無いため、
ギャップも想像で御覧いただけるとありがたいです。マヂでキャプチャボード
を買って、ラクガキ王国コンテンツを作ろうかと画策中です。
.......つーか、作っちゃいました。てへっ(ぉ。画像は無いけど
面白そうさ加減が伝わると良いなぁと思います。
本屋に行ったら「電子ブロック復刻版(見本)」が置いてありました。
そんだけ。
日付け越え。
ラクガキ王国を少し進めてみたり。「まわる」と「ふにゃ」のパーツが
描けるようになりました。「まわる」は描くとグルグル回るパーツなので、
車輪などに使えるのですが、回転軸が思ったようにならなかったりして。
タケコプターを描こうとしたらプロペラが軸と90度ずれた方向に回ったり
して大笑い。
そういや今日で、へっぽこ実験室が二周年を迎えました。
ふにゃふにゃだらだらしたページですが、これからもよろしく
お願いしますm(_'_)m
昼頃起床。
平成のよふけに、SONYの土井利忠という人が出てました。CDやAIBOを
考えて作った人なのですが面白いおっさんでした。話の中でAIBOの発想の
原点の話をしていたのですが、MITで開発された単純な反射応答ロボット
(反射応答するだけで何の役にも立たなかったので見た目6本足なのと
合わせて番組の中でゴキブリ(程度の)AIロボと呼んでました)を見て、
役に立たないモノに役に立つ事をさせようとするからうまくいかない
のであって、役に立たないモノには役に立たないことをさせるのが良い
という発想で試作品を作ったというのに驚きました。だって、言って
いる事は判りますが、役に立たない事しかできないと判っているの
ですよ?普通その時点でダメだと思うのですが、そうでない所がスゲー
なと思います。取りあえず一匹作って(実際に最初の試作品を作ったのは
土井氏ではなく技術的に腕の立つ別の人)とお願いして、材料を東急ハンズで買って
来て作ったというから最初は本当になんでも無いものだったのでしょう。
技術者内では最初の一匹目の試作で面白いと思って本格的にプロジェクト
として立ち上げたようですが、ハタから見ると役に立たないものを作って
いるようにしか見えないのですから、風当たりも強かったようです。
それが実際に製品になって、3000台がインターネットのみ予約で25万
円という価格にも関わらず18分で完売したのですから、凄いなぁと
思います。なんだか少し刺激を受けた日曜の午後って感じでした。
ラクガキ王国を
進めてみたり。模様が描けるようになりました。他、ペンをいくつか
買い揃えたりいろいろ。へっぽこクロッカーなので、パーツの付け方が
良くないせいか、色々付けてもあまり強くならなくなったりして、うーむ。
本屋に。電撃大王を査収。そういや、サイヴァリアリビジョンの事を
すっかり忘れていましたが(そもそもこれの為に早々にPS2を買っていた)
今度の金曜日発売らしい。
昼頃起床。そして休出。
ラクガキ王国を少し進めたり。頭とプリン(動きに合わせて振える部品で
シッポなどに使えるっぽい)が描けるようになりました。
何気にppcsimにブレークポイントの削除コマンドを追加したり。
密かにラクガキ王国と一緒に買っていた「トゥームレイダーDVD」を
ほとんど寝ている状態で観てみました。あぁ面白かった。そんな感じ
(<ってそれだけかい)。ララ役のアンジェリーナ・ジョリーが見た目
はまり役なのが良いですが、それ以上にアクションの方がちゃんと
していたので「代役もちゃんとしてるなぁ」などと思って観ていたの
ですが、後になって特典映像ディスクのメイキングを観ると
アクションの方も全て演じていたという事を知ってちょっとビビった。
日付け越え。
帰るのが遅過ぎた為、何もせずに死亡。
昼頃起床。そして休出(T_T)。
「ラクガキ王国」をゲットしました。これ、なんか凄いですよ。
くるっと描いた丸などがそのまま立体に。足やら腕やらという定義の
もとにへろっと描いた棒がそのまま足やら腕になるのです。つーか、
ボキャブラリが貧困過ぎて意味不明?(^_^;
機会があれば是非店頭デモなどで確認してみて
下さい。描いた絵はそのまま立体化されて対戦キャラになり、
相手を倒したり大会予選に通過したりすることで色やパーツが増えて
行きます。今のところはパーツは胴と腕と足と硬い飾りのみ。
色数は少し増えましたが、それぞれの量は少なかったりするため、
TANEのモデルで、右足と左足の色が違ったり色々(^^;
これから増えるパーツが楽しみです。ただ、ゲーム自体には少し不満
もありまして、対戦するのにいちいち競技場に行かなくてはならない
とか、町のキャラとかがフルボイスでしゃべってくれないとか、
ロード時間が少し長いとか色々。でも、ホント、マジで凄いっすよ。これ。
日付け越え。
帰りにコンビニに寄ったら、ラクガキ王国が置いてあったのですが、
持ち合わせが無くて買えず。
眠くて何もせずに死亡。
日付け越え。
ppcsimにメモリの参照&更新を監視するためのメモリプローブ機能を
付けてみたり。単純にアドレス比較を行って一致してればメッセージを出す
だけの機能です。
順に追いかけていくと、まず generic_done()でcommand_status=0となり
続いて、do_wakeup()でcommand_status+=2された後、
wait_til_done()で参照されるという順になっていました。で、
結果として先日の通りFD_COMMAND_ERROR==2の為、エラーという事に
なりました。FD_COMMAND_OKAY==3なのでgeneric_done()で1がセット
されると丁度良い感じになりそうですが、generic_done()にどこから
ジャンプしているかはこれから更に追跡が必要です。なんか深い.......
日付け越え。
floppy調査。先日の続きでdrivers/block/floppy.c:wait_til_done()の中を
追いかけてみました。結果、command_statusに非同期でFD_COMMAND_ERROR
が入り、最終的にFD_COMMAND_OKAYでない為、-EIOを返してしまう
user_reset_fdc()の実行結果は失敗という事になっている様です。
次は誰がFD_COMMAND_ERRORを書いているかを追跡する必要がありそうです。
メモリアクセス監視機能を付けて、command_statusへのストアアクセスを
行った命令のPCを表示するような網をかければ簡単に見つかるかも。
プログラムを読んでいる感じがしないのがアレですが(^^;
昼過ぎに起きて洗濯やら掃除やら。いい加減暖かくなってきた所でエアコンの
フィルタ掃除などやってみると、かなりなホコリ(約1年分)がひっかかって
ました(^^; 季節の変わる前に掃除しておけばよかったとか思ったり。
ちょっこり出社。
本屋へ。ふと画集の棚に目をやると、近藤善文氏の画集であるところの
「ふとふり返ると」を発見!これ、二年以上前に猛烈に欲しくて探していた
のですが、あまりに見つからない為、ほとんど忘れてた状態で現在に
至るって感じでした。近藤氏については、私ごときが説明するまでもないの
ですが一応簡単な説明をしておきますと、その筋では有名なアニメータさんで、
スタジオジブリ作品の原画や作画監督などを多く手がけていました。
「耳をすませば」で初監督を行い、これからの活躍が非常に期待されたの
ですが、1998年に47歳の若さで病気のため他界されました。
で、中の方ですが、四季を通して町の中の風景のある瞬間を絵にした....
って文字で説明を書くとイマイチしょぼくなってしまうのがもどかしい
のですが、色鉛筆で着色された柔らかい色合いがとても素敵な絵本のような
画集です。見る機会があれば是非とも。とも。
KOJIさんと電話で小一時間ほどお話。花見の週くらいに飲みに行きたい
のぅ、などと色々。
floppy調査。もう一度、ちゃんと網をかけて、どこまで通っているのかを
確認。で、ずっこけているのがコマンドを発行するとか以前にあったため、
その辺を絞り込み。drivers/block/floppy.c:wait_til_done()の中をよく
追っかけてみる必要があり。command_statusの値が、非同期動作のプロセスで
セットされるような動きになっているっぽいので、追いかけるのが大変そうな
予感。
夕方頃起床(汗; 疲れてるのかなぁ
先日拾った資料を読み。そしてppcsimにポート監視ルーチンを付けて
アクセスを監視してみました。結果、以下のような感じ。
800003f0 800003f7 ↓ ↓ FDC(pc:c00841cc,ad:800003f2) = 00 00 04 00 80 00 00 00 FDC(pc:c007bc08,ad:800003f2) = 00 00 0c 00 80 00 00 00 FDC(pc:c0084248,ad:800003f2) = 00 00 0c 00 80 00 00 00 FDC(pc:c007bf20,ad:800003f4) = 00 00 0c 00 80 00 00 00 FDC(pc:c007ea00,ad:800003f2) = 00 00 08 00 80 00 00 00 FDC(pc:c007ea68,ad:800003f2) = 00 00 0c 00 80 00 00 00
% FDC Digital Output Register at 3F2h (all systems) |7|6|5|4|3|2|1|0| port 3F2h (write only) | | | | | | | | | | | | | | +-+---- floppy drive select (0=A, 1=B, 2=floppy C, ...) | | | | | +-------- 1 = FDC enable, 0 = hold FDC at reset | | | | +---------- 1 = DMA & I/O interface enabled (reserved PS/2) | | | +------------ 1 = turn floppy drive A motor on | | +-------------- 1 = turn floppy drive B motor on | +---------------- 1 = turn floppy drive C motor on; (reserved PS/2) +------------------ 1 = turn floppy drive D motor on; (reserved PS/2) % FDC Main Status Register at 3F4h (all systems) |7|6|5|4|3|2|1|0| port 3F4h (read only) | | | | | | | | | | | | | | | +---- floppy drive 0 in seek mode/busy | | | | | | +------ floppy drive 1 in seek mode/busy | | | | | +-------- floppy drive 2 in seek mode/busy (reserved PS/2) | | | | +---------- floppy drive 3 in seek mode/busy (reserved PS/2) | | | +------------ FDC read or write command in progress | | +-------------- FDC is in non-DMA mode | +---------------- I/O direction; 1 = FDC to CPU; 0 = CPU to FDC +------------------ data reg ready for I/O to/from CPU (request for master)
% Sense Drive D7 D6 D5 D4 D3 D2 D1 D0 % Status command byte 0: 0 0 0 0 0 1 0 0 command byte 1: ? ? ? ? ? HD US1 US0 result byte 0: status register 3
日付け越え。
色々ダウンロードしてみたりコンパイルしてみたりうまくゆかずにへこりと
してみたり。先日のフロッピードライブの資料として、
こんな感じのを見つけました。かなり読みにくくて言葉少なく
書かれていますが、一番知りたいレジスタ仕様が書かれているのが
重要な気分。もうひと声、説明が付いていると嬉しいところですが、
文句は言うまいとした所でしょうか。。
しかしアレですね、FDのハード資料なんてのは腐るほど置いてある
のかと思ったのですが、探してみると意外と見つからないものだと
思いました。普段FDなんてのはOSの向こう側に隠れていて、
直接操作をする事が無い分、その資料については少なくなる
という事なのでしょうか。逆に、SCSIやIDEのディスク資料を
漁ったほうが良いかもとか思ったりして。
日付け越え前に帰着。
FD動作追っかけの続き。
色々網を張りながら調査。reset_fdc()辺りからヘッダを追いかけて、
FD制御レジスタポートの場所が判った気分。以下メモ。
関連ソース include/linux/fdreg.h : FD制御レジスタport,コマンドなど include/linux/fd.h : drivers/block/floppy.cで使用しているFD抽象レイヤー? include/asm/floppy.h : アーキテクチャ依存制御
日付け越え少し前に帰着。
何気にlinuxカーネルの起動についてのページを検索してみたのですが、
これといったものは見つからず。
linuxカーネルのフロッピーデバイスについてコード読み。以下メモ。
----- include/asm-ppc/floppy.h:#define FLOPPY0_TYPE 6 ----- drivers/block/floppy.c:config_types(void) 352 static struct { 353 struct floppy_drive_params params; 354 const char *name; /* name printed while booting */ 355 } default_drive_params[]= { 356 /* NOTE: the time values in jiffies should be in msec! 357 CMOS drive type 358 | Maximum data rate supported by drive type 359 | | Head load time, msec 360 | | | Head unload time, msec (not used) 361 | | | | Step rate interval, usec 362 | | | | | Time needed for spinup time (jiffies) 363 | | | | | | Timeout for spinning down (jiffies) 364 | | | | | | | Spindown offset (where disk stops) 365 | | | | | | | | Select delay 366 | | | | | | | | | RPS 367 | | | | | | | | | | Max number of tracks 368 | | | | | | | | | | | Interrupt timeout 369 | | | | | | | | | | | | Max nonintlv. sectors 370 | | | | | | | | | | | | | -Max Errors- flags */ 389 {{6, 1000, 15, 8, 3000, 4*HZ/10, 3*HZ, 10, SEL_DLY, 5, 83, 3*HZ, 40, {3,1,2,0,2}, 0, 390 0, { 7, 8, 4,25,28,22,31,21}, 3*HZ/2, 8 }, "2.88M" } /*3 1/2 ED*/ : 3637 if (!UDP->cmos) 3638 UDP->cmos = FLOPPY0_TYPE;
日付け越え。連絡できなくてすんません(>KOJIさん)
彩のバグ再現。選択のバグと言っていたものの再現ができました。
正しくはマスク選択ではなくて、マスクを「レイヤーに変換」した時
に左から16pixel分変換されない領域ができてしまうというものでした。
再現は非常に簡単で、
日付け越え。
日付けが狂ってました(^^; つーか、丸一日分、何があったか全然思い出せない
し(汗;
なる。私の場合、まともにconfigureの通る環境がいきなりNetBSD-X68k
とかになってしまってた為、これはこれで非常に厳しかったです(選べと
言われても「どっちもイヤ」って感じです)。NetBSDでconfigureを実行すると
通ることは通るのですが、時間の方はHumanの数倍がかかったのと、
なんだかNetBSD-1.0のhumanfsでディスク書き込みするとファイルが少し
壊れてみたり(Humanのfsck.xを実行すると必ずファイルが一つは消える)と
かなり危険だったので、面倒臭いと言いながらツールを揃えていたら、
最終的に、結構通るようになったのが幸いでした。
確かに、本物のUNIXシステムコールは持たなくても、UNIXでない環境に
ついてはCygwinのような形で、システムでUNIXコンパチAPIレイヤーを
持つことができれば、コマンドライン系ツールはポートが簡単だし、
少なくともconfigureが通るというのは大きいですね。
起きたら夕方。処置無し(-_-;;
先日何気に買った「ゆず(須藤真澄)」の文庫本を読んでみました。須藤作品は
電気ブランとかいう初期作品集のようなのを読んだ事があるっきりで、代表作
である「ゆず」は初めて読んだりします。電気ブランは正直、あまり面白いと
は思いませんでしたが、ゆずの方はなんとなく判りますよ。人気があるという
のもうなずけます。
彩Onlineの方でリソース消費の方を再現調査。でもリソース消費は起きず。
代わりにマスク選択のバグを発見。先日の調査中にも出てたのですが、
光学マウスの動作が怪しかったりしたので、ヘンな傷が付いていたのかと
詳しく調べてなかったのですが、どうやらそれと同じもののようです。
現象的には左辺から32dotくらいのところに縦線があるように選択されて
しまいます。先日のデータも512×512からサイズを変更したキャンバスで
起こったので、データサイズに問題があるのかも知れませんが、マスク
選択自体を0.8.3になって使っていなかったので、サイズには関係無いかも
知れません。
今回は領域選択&移動を使わなかったのですが、
キャンバスサイズより大きいレイヤーサイズになることを許していると
いう部分が危なそうな感じがするので次はそれを狙ってみますか。
起きたら夕方の6:30 を過ぎててビックリした(滝汗;;;;
何もせずに一日終了(汗;;
しかたないので「これマジ」など観てみました。フライングフィッシュって、
単に虫の飛ぶのが速くてブレているだけなんじゃないの?って感じ。高速度カメラ
とか使えばちゃんと映りそうな感じがしなくもありません。それよりも手品の
タネ明かしで、トランプの枚数を指先の感覚だけで数るっての。タネが
判ってもマネできるか〜〜っ!って感じ(^^; プロは凄いです。
彩の方。レイヤーを増やしたり色々やってみましたが、レイヤーを増やした時に
若干リソースが減る場合はありましたが、何もしなくてもそのうち回復したので、
問題無さそう。うーむ。
使っていて気になったのですが、マスク自動選択で「全表示レイヤーから選択」を
チェックしていて、且つカレント選択レイヤーが非表示だった場合に、マスクの
自動選択が実行されないようです。「全表示レイヤー」ならばカレント選択
レイヤーの表示状態は無視する方が正しいと思いますが、御検討の方をお願い
します。
やっぱOnlineの方で再現を試みた方が早いか?
日付け越え。
だらだらと起きていたら眠くなっていつのまにか寝てしまいました。
日付け越え。ふぅ。
ちょこっと彩のリソース消費問題の再現調査。ファイルをひたすら開いて
みましたが、リソース消費はせず。ただし彩以外のアプリはCareTaker9x
のみ。
便乗になってしまいますが、私がHumanでconfigureを通していた
ときは、unameやexprなどはsh-utils(日立のSHとは関係無し)をポート
して使用してました。ただし、全てのツールを手放しでコンパイル
できなかったので、exprやuname他、本当に必要になったものだけ
選んでmakeした覚えがあります。
execdはgccをコンパイルした時に、実行ファイルに拡張子を付ける
MS-DOSやHumanのようなシステムでは面倒事に遭遇したため、拡張子
無しで実行できる様に使っていましたが、色々含めた記憶の範囲内では
configure時に必要になるケースってのは無かったように思います。
......あ、glibcがそうでもなかったかも......忘れた(ぉい;
configureがcsh系で書かれていたら、fishを使えばほとんど苦労すること
なく通す事ができただろうにとconfigureでひっかかる度に思ってました。
しかしながら、実際のmakeよりも時間がかかったり、システムによっては
通すこと自体が困難だったり、通らないとMakefileすらできなくて、
移植の壁を無意味に高くしたりしている感じのしなくもない
configure文化はどちらかというと無くなって欲しいと思っているの
ですが、どうにかならないものなのでしょうかね?
だいぶ良くなった気がするのですが、頭が痛くてもう一日休むことに。
でも、起きていて30分しないうちに背筋が寒くなって横になり、という
ことをしばらく繰り返してました。出社しても仕事にならなかったかも。
彩Onlineで落描きをしていたのですが、途中で画面が固まっちまいました。
余計なプログラムを順に殺していた所が操作をミスって画面が出なくなって
しまい結局死亡。スキャンディスク40分コース。余計なプログラムを殺す際に
「リソースが極端に消費されています」みたいなメッセージが出ていたので、
もしやリソース消費問題の再現か?とか思ったり。Onlineでない方で再現を
試みようとしたのですが、少し触った所では問題出ず。うーむ。
本格的にダメになった模様。
寝過ぎで頭が痛い感じなのですが、起きては座っても居られなくて結局
一日中寝て過ごす。
調子が悪くて日付け越え前に帰着。ついに強力な奴にかかってしまった
感じ。早々に寝る。
寝てて突然、腹が痛くなること二回。起きたら昼過ぎ(なんじゃそら)。
カーネルのバージョンを2.4.17から2.4.9変えて調査。cramfsサポートを入れて
ビルドして実行したところ、こちらはエラーしませんでした。怪しく思い
.configを確認したらCONFIG_ZLIB_FS_INFLATEの項目自体が無い
(なのでvmallocも実行されない)のですが、大丈夫なのかしら?
ともかくroot=cramfsを指定したところ、
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize VFS: Cannot open root device "cramfs" or 00:0c Please append a correct "root=" boot option Kernel panic: VFS: Unable to mount root fs on 00:0c Rebooting in 180 seconds..
朝、消防車のサイレンの音に起こされました。「あぁどこかが火事
なのだなぁ」と夢うつつで聞いていたのですが、左耳から右耳にステレオ
でサイレンが移動した所で音が止まりました。つーか、それって家の
直ぐ前なんですけど(激汗;; 流石に心配になったので外を見てみた所、
少し離れた所のアパートの上の階が思いっきり燃えてますよ(@_@;;;;
幸いにして直ぐに消えたようですが、ちょっと焦った。
調査の続き。PTEがちゃんと張られないのを調査。SDR1に入れる元の値
は先日の通りarch/ppc/mm/ppc_mmu.c:MMU_init_hwで行われていますが、
その後のセットをちゃんと行っているのかを見てみました。カーネル
ソース内では変数Hashを使用して設定しているようなのですが、どうも
イマイチ正しく設定されているようなそうでないような。少し追っかけて
みたのですがよく判らず。うーむ。
デバッグしていてふいに思ったのですが、vmalloc()(実体はkmalloc())は
物理アドレスでのメモリ割り当てを行う関数のような気がしますので、
そもそもページアドレス変換の行われる領域には置かないような気がして
きました。因みにBATアドレス変換は0xc_______を0x0_______に
変換していて、カーネルが自分自身を0x00000000にコピーして実行した
後は、常にこの変換が行われています。真意のほどは定かではありませんが、
こうすることで、物理アドレスが変わる事を意識することなくコーディング
ができるような気がします。ただ、実際にはSDR1の様に物理アドレスと
実効アドレスの違いを知らないと変換できない部分がありますので
(これに以前はまった)、完全な方法という訳ではなと思いますが。
ちょっとギブアップ気味になってきたので、cramfsのコンフィグレーションを
外して再びromfsブートにチャレンジ。bootとrootの用語の違いがあることを
最近知ったので、カーネルコマンドラインを
mount=romfs root=ramfs
mount=/dev/romfs root=ramfs
root=romfs
日付け越え前に帰着。TRICK2を少しだけ観れた。
調査の続き。ページアドレス変換からみの部分を調査。先日見直した
ハズのSR操作がらみの命令を見直しているとしつこく間違っているの
を発見。先日まではSRに値は入っていましたが全然正しく入っていません
でした。なんかボロボロ。でもやっぱりダメ。
あとはPTEの張り方が怪しいのを調査。SDR1の指す物理アドレスを
先頭にページアドレス変換テーブルをOS側で予め用意しておく必要が
あるのですが、そのテーブル領域がall0になっていているのが謎でした。
とかそうして調べているとページアドレス変換の操作が間違ってる
のが発覚。修正したけどやっぱダメ。
眠くて死亡。