昔の最近の出来事(2002.03)

2002/03/31

いいとも増刊号時間に起きたり。

先日の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

前にLinuxのコンパイルをした時に、gccやbinutilsなどのツール類を --prefix=付きでインストールする事を覚えたので、それっぽく入って いたりします(笑 で、-maltivec付きでmegapovをコンパイルしてみたのですが、普通に書かれた ソースではaltivec命令は出てこない模様。

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.

うーむ、まだまだこれからって感じ?それとも書き方がダメ?

食料調達に外に出たら雷を伴う雨に。ついてねー。

雷波の最終回特番とかみたり、サイヴァリアやったりラクガキ王国を進めたり。 ラクガキ王国の方は、現在持ち金は40万ゴールド。そのほとんどをこの前描いた SMねぇさんが稼ぎ出していたりして(^^; 恐るべし。それにしてもガラクタ ギャラリーで対戦すると、今まで出てこなかった対戦キャラ(ラクガキの方で はなくゲーム中に出てくるキャラの方)が続々と出てきて割と楽しめたり。 一人、ねえさんのようなキャラで「負けたら私の相手をしてもらうわよ」 って、 「いったい何の相手をするのですか?!」とか色々(^^;

gslとかnewlibとかしばらくチェックしてなかったら今年に入って少しバージョン アップ版がリリースされていたりしたのでダウンロード。

うぅ、今日は朝早起き(そうか?)だったので眠いです......

2002/03/30

帰って来て寝て起きて出社(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


なんだか以前よりも実行 命令数がほんの少し増えているような予感。うーむ。実行時間も5%程度 悪くなっています。これがFDC関連の網かけによるものかどうかは不明。

電波少年の特番を見ながらだらだらと過ごす。矢部タロー、なんかすげー。
ラクガキ王国を進める。エンディング到達。最後のボスにベコベコにやられて 泣きそうになったり。次の使命は100万ゴールド集める事らしい。

2002/03/29

今日は飲みのため19:00過ぎに離脱。

恵比寿駅で待ち合わせ。KOJIさんと連絡を取り誘導されて行くと、 KOJIさんとはじめましてのたぼさんが既に到着していました。 けいさんは会議が長引き少し遅れるという事で駅で少し待ち。 ほどなくして、けいさん登場で移動。たぼさんお勧めのお店で、 雰囲気の良いバーでした。流石、金曜日という事もあって店の中は 人でいっぱい。待っている間に飲み物が飲めたので、飲みながら 待っていたら、なにやら今日はBACARDIという酒のキャンペーンだか なんだかで、いつもは居ないらしいおねいさんがウロウロしてました。 そのおねいさんが、スクラッチカードを引けというので、引いたところ アタリを引いてTシャツゲットしてみたり(^^;。そして席が空いた所 で移動。彩の話やら3DCGの話やら会社の話やら色々。食って飲んで話して。 シシカバブがうまかったり、イモを食いつくしたり。つーか、朝の 5:00(日付はかわって3/30)までいたのですからそれはもう(^^;;; そんな感じでたぼさんKOJIさんとは恵比寿駅でお別れ。けいさんと 一緒に早朝電車で帰り。どうもお疲れさまでした(^^)。
P.S. KOJIさん写真の転送よろしく(ぉぃ;

多分絵日記を後で補完の予定(笑;

やっと補完(汗; 写真資料を元にしたらこんな感じに!(ぉ;

BACARDIS

2002/03/28

起きたらまた凄い時間に。今週はダメダメっす。結局、臨時休業。

ラクガキ王国を進める。ついに予選を勝ち抜き、帝国の城の中に潜入。 でも、敵が強過ぎて死亡。

幸いに今日は「PSYVARIAR -COMPLETE EDITION-」の発売日だったので、 買ってみました。ついでに「鉄拳4」も。サイヴァリアの方は 完全移植って感じ。記憶が曖昧なのか我が家のディスプレイが悪いのか PS2だからか、ポリゴンのガビガビ感が少し減っているように思いました。 ゲームの方はディスプレイが小さいのと縦長縮小表示のせいで、弾の 隙間が見えない見えない(^^;。それでも、PS版「怒首領蜂」などと 比べると縮小時の絵が綺麗なので、なれると結構遊べるかも。コンティニュー 無限なのでエンディングを見るのは簡単なのですが、 やっぱ如何に死なずにどこまで進めるかが面白さのポイントなので、 エンディングが見れるだけだとあまり嬉しくはないかも。所で、 「MEDIUM UNIT」のエンディングロールで、メインプログラマが 「SUPER ORE」さんとなっていましたが、X68kで動作していたオリジナル 画像圧縮プログラムであるところの「ICE」の作者さんが同じ 名前だったように思いますが関係あるのでしょうか。

そして鉄拳4。個人的にバーチャよりも鉄拳の方が好きなのですが、 鉄拳の方はキャラ交代が激しいのがたまに傷。2では風間準に入れ込み 過ぎて、3では使うキャラが無かったり(風間仁を使うのは却下。理由は 一部明瞭、男だから(汗;)したのですが、4も例外ではなく、結局カポエラ 姉さんにしました(3に引き続き4でも居るXaoyuじゃないのは、3の時は 子供だったから使わなかった(ぉぃ;)。あぁ、歳のせいか、技とか全然 覚えられませんよ(T_T)。オープニングムービーは、アーケード版に いくつか新カットが挿入されています。絵の方はどんどん進歩するので、 もう凄い所がどこなのか判らないくらいになっています。それでも、 一番好きなのは2のオープニングムービーかも。

2002/03/27

丁度日付け越え。

ラクガキ王国を進める。SMねぇさんを描いたところ、こいつぁつえぇや! ってな感じのパラメータになったのでご満悦(なんのこっちゃ)。 そんな感じで「武器」パーツが描けるようになりました。どうやら描ける パーツはこれで全部らしい。
あぁ、今日は眠くてダメっす。

2002/03/26

起きたら凄い時間に(滝汗;;;;; そんな感じで臨時休業。

しかたないのでラクガキ王国を進めてみたり(ぉぃ;「はね」パーツが 描けるようになりました。
そんな感じで描けるライン数も長くなってきたので、人体モデリングを して遊んでみました。基本的に胴、足、腕、頭を配置するだけなのですが、 流石に簡単ではありませんでした(^^;

ラクガキ王国で遊ぶ2

うーむ、本当はイメージ図と実際の絵との強烈なギャップ(^^;を楽しんで いただきたい所なのですが、ゲーム画面を取り込む術が無いため、 ギャップも想像で御覧いただけるとありがたいです。マヂでキャプチャボード を買って、ラクガキ王国コンテンツを作ろうかと画策中です。
.......つーか、作っちゃいました。てへっ(ぉ。画像は無いけど 面白そうさ加減が伝わると良いなぁと思います。

本屋に行ったら「電子ブロック復刻版(見本)」が置いてありました。 そんだけ。

2002/03/25

日付け越え。

ラクガキ王国を少し進めてみたり。「まわる」と「ふにゃ」のパーツが 描けるようになりました。「まわる」は描くとグルグル回るパーツなので、 車輪などに使えるのですが、回転軸が思ったようにならなかったりして。 タケコプターを描こうとしたらプロペラが軸と90度ずれた方向に回ったり して大笑い。

そういや今日で、へっぽこ実験室が二周年を迎えました。 ふにゃふにゃだらだらしたページですが、これからもよろしく お願いしますm(_'_)m

2002/03/24

昼頃起床。

平成のよふけに、SONYの土井利忠という人が出てました。CDやAIBOを 考えて作った人なのですが面白いおっさんでした。話の中でAIBOの発想の 原点の話をしていたのですが、MITで開発された単純な反射応答ロボット (反射応答するだけで何の役にも立たなかったので見た目6本足なのと 合わせて番組の中でゴキブリ(程度の)AIロボと呼んでました)を見て、 役に立たないモノに役に立つ事をさせようとするからうまくいかない のであって、役に立たないモノには役に立たないことをさせるのが良い という発想で試作品を作ったというのに驚きました。だって、言って いる事は判りますが、役に立たない事しかできないと判っているの ですよ?普通その時点でダメだと思うのですが、そうでない所がスゲー なと思います。取りあえず一匹作って(実際に最初の試作品を作ったのは 土井氏ではなく技術的に腕の立つ別の人)とお願いして、材料を東急ハンズで買って 来て作ったというから最初は本当になんでも無いものだったのでしょう。 技術者内では最初の一匹目の試作で面白いと思って本格的にプロジェクト として立ち上げたようですが、ハタから見ると役に立たないものを作って いるようにしか見えないのですから、風当たりも強かったようです。 それが実際に製品になって、3000台がインターネットのみ予約で25万 円という価格にも関わらず18分で完売したのですから、凄いなぁと 思います。なんだか少し刺激を受けた日曜の午後って感じでした。

ラクガキ王国を 進めてみたり。模様が描けるようになりました。他、ペンをいくつか 買い揃えたりいろいろ。へっぽこクロッカーなので、パーツの付け方が 良くないせいか、色々付けてもあまり強くならなくなったりして、うーむ。

本屋に。電撃大王を査収。そういや、サイヴァリアリビジョンの事を すっかり忘れていましたが(そもそもこれの為に早々にPS2を買っていた) 今度の金曜日発売らしい。

2002/03/23

昼頃起床。そして休出。

ラクガキ王国を少し進めたり。頭とプリン(動きに合わせて振える部品で シッポなどに使えるっぽい)が描けるようになりました。
何気にppcsimにブレークポイントの削除コマンドを追加したり。

密かにラクガキ王国と一緒に買っていた「トゥームレイダーDVD」を ほとんど寝ている状態で観てみました。あぁ面白かった。そんな感じ (<ってそれだけかい)。ララ役のアンジェリーナ・ジョリーが見た目 はまり役なのが良いですが、それ以上にアクションの方がちゃんと していたので「代役もちゃんとしてるなぁ」などと思って観ていたの ですが、後になって特典映像ディスクのメイキングを観ると アクションの方も全て演じていたという事を知ってちょっとビビった。

2002/03/22

日付け越え。

帰るのが遅過ぎた為、何もせずに死亡。

2002/03/21

昼頃起床。そして休出(T_T)。

「ラクガキ王国」をゲットしました。これ、なんか凄いですよ。
くるっと描いた丸などがそのまま立体に。足やら腕やらという定義の もとにへろっと描いた棒がそのまま足やら腕になるのです。つーか、 ボキャブラリが貧困過ぎて意味不明?(^_^; 機会があれば是非店頭デモなどで確認してみて 下さい。描いた絵はそのまま立体化されて対戦キャラになり、 相手を倒したり大会予選に通過したりすることで色やパーツが増えて 行きます。今のところはパーツは胴と腕と足と硬い飾りのみ。 色数は少し増えましたが、それぞれの量は少なかったりするため、 TANEのモデルで、右足と左足の色が違ったり色々(^^;

ラクガキ王国で遊ぶ

これから増えるパーツが楽しみです。ただ、ゲーム自体には少し不満 もありまして、対戦するのにいちいち競技場に行かなくてはならない とか、町のキャラとかがフルボイスでしゃべってくれないとか、 ロード時間が少し長いとか色々。でも、ホント、マジで凄いっすよ。これ。

2002/03/20

日付け越え。
帰りにコンビニに寄ったら、ラクガキ王国が置いてあったのですが、 持ち合わせが無くて買えず。

眠くて何もせずに死亡。

2002/03/19

日付け越え。

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()にどこから ジャンプしているかはこれから更に追跡が必要です。なんか深い.......

2002/03/18

日付け越え。

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を表示するような網をかければ簡単に見つかるかも。 プログラムを読んでいる感じがしないのがアレですが(^^;

2002/03/17

昼過ぎに起きて洗濯やら掃除やら。いい加減暖かくなってきた所でエアコンの フィルタ掃除などやってみると、かなりなホコリ(約1年分)がひっかかって ました(^^; 季節の変わる前に掃除しておけばよかったとか思ったり。

ちょっこり出社。

本屋へ。ふと画集の棚に目をやると、近藤善文氏の画集であるところの 「ふとふり返ると」を発見!これ、二年以上前に猛烈に欲しくて探していた のですが、あまりに見つからない為、ほとんど忘れてた状態で現在に 至るって感じでした。近藤氏については、私ごときが説明するまでもないの ですが一応簡単な説明をしておきますと、その筋では有名なアニメータさんで、 スタジオジブリ作品の原画や作画監督などを多く手がけていました。 「耳をすませば」で初監督を行い、これからの活躍が非常に期待されたの ですが、1998年に47歳の若さで病気のため他界されました。
で、中の方ですが、四季を通して町の中の風景のある瞬間を絵にした.... って文字で説明を書くとイマイチしょぼくなってしまうのがもどかしい のですが、色鉛筆で着色された柔らかい色合いがとても素敵な絵本のような 画集です。見る機会があれば是非とも。とも。

KOJIさんと電話で小一時間ほどお話。花見の週くらいに飲みに行きたい のぅ、などと色々。

floppy調査。もう一度、ちゃんと網をかけて、どこまで通っているのかを 確認。で、ずっこけているのがコマンドを発行するとか以前にあったため、 その辺を絞り込み。drivers/block/floppy.c:wait_til_done()の中をよく 追っかけてみる必要があり。command_statusの値が、非同期動作のプロセスで セットされるような動きになっているっぽいので、追いかけるのが大変そうな 予感。

2002/03/16

夕方頃起床(汗; 疲れてるのかなぁ

先日拾った資料を読み。そして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

800003f0から800003f7の間にメモリアクセスがあった場合にそのデータの 内容を表示してみました。 0x800003f4は強制的に0x80にしています。理由は後述。 そして先日のポート資料を付き合わせてみますと、

% 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)

FDCのイネーブル制御とDMAの設定などを行っている様子?
800003f4へのアクセスはSTATUS_READYをチェックしていましたので、 これかと思い0x80で強制的にREADYにしてみました。でも、何も変わらず(T_T)。 これ以降、カーネルがパニックするまでポートアクセスは行われないよう なので、これだけの操作で何か起こる事を期待している予感がしなくも ありませんが、イマイチよく判らず。

色々Webを見ていると、フロッピーコントローラであるところの NECのμPD765の制御体系は事実上世界標準となっているようでした。 と、なにげに「Inside X68000」を手に取ってパラパラと眺めた所、 オートイジェクト関連は別にして、その他のコマンドや result statusレジスタなどは全く同じという事を発見しました。 ちょろっと読んでみたのですが、コマンドポートとFDCのレジスタ のポートとの関連がよく判らなかったりして。0xe94001や0xe94003を READするとステータスレジスタが読めて、WRITE時はコマンド ポートになるって事なのかしら?
そう読みかえると、

% 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

になりそうですが、それだといまいちコマンド発行手順が余るような 足りないような。うーむ。

ランク王国を観ていたら、「ラクガキ王国」の画面がちらり。密かに 期待しているソフトだったりして。番組CGキャラのラルフが モデリングされていましたが、見た目は本当に少しヘボいラクガキ って感じだったのですが、きちんと表と裏にテクスチャが張られていて、 しっかりモーションしていたので、侮れないような感じがしました。

2002/03/15

日付け越え。

色々ダウンロードしてみたりコンパイルしてみたりうまくゆかずにへこりと してみたり。先日のフロッピードライブの資料として、 こんな感じのを見つけました。かなり読みにくくて言葉少なく 書かれていますが、一番知りたいレジスタ仕様が書かれているのが 重要な気分。もうひと声、説明が付いていると嬉しいところですが、 文句は言うまいとした所でしょうか。。
しかしアレですね、FDのハード資料なんてのは腐るほど置いてある のかと思ったのですが、探してみると意外と見つからないものだと 思いました。普段FDなんてのはOSの向こう側に隠れていて、 直接操作をする事が無い分、その資料については少なくなる という事なのでしょうか。逆に、SCSIやIDEのディスク資料を 漁ったほうが良いかもとか思ったりして。

2002/03/14

日付け越え前に帰着。

FD動作追っかけの続き。
色々網を張りながら調査。reset_fdc()辺りからヘッダを追いかけて、 FD制御レジスタポートの場所が判った気分。以下メモ。

関連ソース
include/linux/fdreg.h  : FD制御レジスタport,コマンドなど
include/linux/fd.h     : drivers/block/floppy.cで使用しているFD抽象レイヤー?
include/asm/floppy.h   : アーキテクチャ依存制御

include/asm/floppy.hからFDCポートは一個のようですが、FDCの数は 「#define N_FDC 2」で2個、ドライブは「#define N_DRIVE 8」で8個って 感じ?FDCのポートが一個なのにコントローラは2個あるとはこれ如何に? fd_inb(),fd_outb()でIOアクセスを行っているようなので、この辺から 物理アドレスの何番地が何ってのは判るような気がしますが、コマンド などを送った場合にどう振舞われるのかは、ハードの仕様がよく判らない 今の時点ではイマイチ不明。FDCのハードスペックを探してみる必要 があり?
多分、wait_til_ready()で待っているような気がするという事が判った 感じ。

2002/03/13

日付け越え少し前に帰着。

何気に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;

うーむ、何故ppcだとFLOPPY0_TYPEのデフォルトが6なのかしら?
FDのrootマウントNGの調査。 追っかけたところ、user_reset_fdc()内でFDC(FloppyDiskController?) にリセットがかかっていない状態になっている (当然ですが)ため、待ちに入っている模様。その後WAITは抜けるようですが、 リセットに失敗しているためhave_no_fdc状態のままとなり、結果として 「no floppy controllers found」となるようです。ふーむ。

2002/03/12

日付け越え。連絡できなくてすんません(>KOJIさん)

彩のバグ再現。選択のバグと言っていたものの再現ができました。 正しくはマスク選択ではなくて、マスクを「レイヤーに変換」した時 に左から16pixel分変換されない領域ができてしまうというものでした。
再現は非常に簡単で、

  1. 起動後、何も無いキャンバスにマスク自動選択を実行。全面マスクで塗られます。
  2. 「レイヤーに変換」を実行。
  3. 変換されたレイヤーの左端16pixel分が透明なままになっている。

です。マスク選択だと思い込んでしまった過程は謎(^^; メモリリークなど の類では無さそうなので、リソース消費とは「無関係」の確率は非常に大だと 思います。

2002/03/11

日付け越え。

日付けが狂ってました(^^; つーか、丸一日分、何があったか全然思い出せない し(汗;

なる。私の場合、まともにconfigureの通る環境がいきなりNetBSD-X68k とかになってしまってた為、これはこれで非常に厳しかったです(選べと 言われても「どっちもイヤ」って感じです)。NetBSDでconfigureを実行すると 通ることは通るのですが、時間の方はHumanの数倍がかかったのと、 なんだかNetBSD-1.0のhumanfsでディスク書き込みするとファイルが少し 壊れてみたり(Humanのfsck.xを実行すると必ずファイルが一つは消える)と かなり危険だったので、面倒臭いと言いながらツールを揃えていたら、 最終的に、結構通るようになったのが幸いでした。
確かに、本物のUNIXシステムコールは持たなくても、UNIXでない環境に ついてはCygwinのような形で、システムでUNIXコンパチAPIレイヤーを 持つことができれば、コマンドライン系ツールはポートが簡単だし、 少なくともconfigureが通るというのは大きいですね。

2002/03/10

起きたら夕方。処置無し(-_-;;

先日何気に買った「ゆず(須藤真澄)」の文庫本を読んでみました。須藤作品は 電気ブランとかいう初期作品集のようなのを読んだ事があるっきりで、代表作 である「ゆず」は初めて読んだりします。電気ブランは正直、あまり面白いと は思いませんでしたが、ゆずの方はなんとなく判りますよ。人気があるという のもうなずけます。

彩Onlineの方でリソース消費の方を再現調査。でもリソース消費は起きず。 代わりにマスク選択のバグを発見。先日の調査中にも出てたのですが、 光学マウスの動作が怪しかったりしたので、ヘンな傷が付いていたのかと 詳しく調べてなかったのですが、どうやらそれと同じもののようです。 現象的には左辺から32dotくらいのところに縦線があるように選択されて しまいます。先日のデータも512×512からサイズを変更したキャンバスで 起こったので、データサイズに問題があるのかも知れませんが、マスク 選択自体を0.8.3になって使っていなかったので、サイズには関係無いかも 知れません。

今回は領域選択&移動を使わなかったのですが、 キャンバスサイズより大きいレイヤーサイズになることを許していると いう部分が危なそうな感じがするので次はそれを狙ってみますか。

2002/03/09

起きたら夕方の6:30 を過ぎててビックリした(滝汗;;;;

何もせずに一日終了(汗;;
しかたないので「これマジ」など観てみました。フライングフィッシュって、 単に虫の飛ぶのが速くてブレているだけなんじゃないの?って感じ。高速度カメラ とか使えばちゃんと映りそうな感じがしなくもありません。それよりも手品の タネ明かしで、トランプの枚数を指先の感覚だけで数るっての。タネが 判ってもマネできるか〜〜っ!って感じ(^^; プロは凄いです。

彩の方。レイヤーを増やしたり色々やってみましたが、レイヤーを増やした時に 若干リソースが減る場合はありましたが、何もしなくてもそのうち回復したので、 問題無さそう。うーむ。

使っていて気になったのですが、マスク自動選択で「全表示レイヤーから選択」を チェックしていて、且つカレント選択レイヤーが非表示だった場合に、マスクの 自動選択が実行されないようです。「全表示レイヤー」ならばカレント選択 レイヤーの表示状態は無視する方が正しいと思いますが、御検討の方をお願い します。

やっぱOnlineの方で再現を試みた方が早いか?

2002/03/08

日付け越え。

だらだらと起きていたら眠くなっていつのまにか寝てしまいました。

2002/03/07

日付け越え。ふぅ。

ちょこっと彩のリソース消費問題の再現調査。ファイルをひたすら開いて みましたが、リソース消費はせず。ただし彩以外のアプリは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文化はどちらかというと無くなって欲しいと思っているの ですが、どうにかならないものなのでしょうかね?

2002/03/06

だいぶ良くなった気がするのですが、頭が痛くてもう一日休むことに。 でも、起きていて30分しないうちに背筋が寒くなって横になり、という ことをしばらく繰り返してました。出社しても仕事にならなかったかも。

彩Onlineで落描きをしていたのですが、途中で画面が固まっちまいました。 余計なプログラムを順に殺していた所が操作をミスって画面が出なくなって しまい結局死亡。スキャンディスク40分コース。余計なプログラムを殺す際に 「リソースが極端に消費されています」みたいなメッセージが出ていたので、 もしやリソース消費問題の再現か?とか思ったり。Onlineでない方で再現を 試みようとしたのですが、少し触った所では問題出ず。うーむ。

2002/03/05

本格的にダメになった模様。 寝過ぎで頭が痛い感じなのですが、起きては座っても居られなくて結局 一日中寝て過ごす。

2002/03/04

調子が悪くて日付け越え前に帰着。ついに強力な奴にかかってしまった 感じ。早々に寝る。

2002/03/03

寝てて突然、腹が痛くなること二回。起きたら昼過ぎ(なんじゃそら)。

カーネルのバージョンを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..

のような感じ。
ここで確認。root=romfsと指定したときやfloppyをconfigで含まない時のroot=ramfs 指定では、「I have no root and I want to scream」のメッセージが出力 されましたが、 その他の場合は「VFS: Cannot open root device.....」となります。いずれの メッセージ出力もfs/super.c:mount_root()で行われていて、前者の方が手前 でNGだった場合に出力されるようです。で、cramfsの指定でその先を調べて みた所、最終的にfs/block_dev.c:get_blkfops()に行きついたのですが、 このときの引き数 majorが0となっていて、それだと戻り値がNULLとなって しまって、fs/block_dev.c:blkdev_get()のbdev->bd_opが!=0で呼び出し元 であるmount_rootが失敗するという仕掛けのようです。うーむ。
完全にデバイスアクセスに失敗した場合は「I want to scream」になりそう で、デバイスの応答が無いもしくはconfigでfsサポートを外したときは 「VFS: Cannot open ....」となるようです。しかし、なんだ、 「I want to scream」なんてメッセージを出されても何が悪いんだかさっぱり 判らないっちゅうのがアレです。むしろこちらの方が「ムキーーー!」 って気分ですよ(笑。

食料調達ついでに本屋に。「おとなのしくみ(4)」を買ってみたり。いきなり 最終巻だとは(^^; まだ全部読んでませんが「ドリームキャストハード製造 中止のしくみ」での、ハードをやめるか否かの選択を迫られた一コマでの 「じゃドリームキャストと心中する?」のセリフが強烈に痛く感じました。

表紙絵チェンジ。

2002/03/02

朝、消防車のサイレンの音に起こされました。「あぁどこかが火事 なのだなぁ」と夢うつつで聞いていたのですが、左耳から右耳にステレオ でサイレンが移動した所で音が止まりました。つーか、それって家の 直ぐ前なんですけど(激汗;; 流石に心配になったので外を見てみた所、 少し離れた所のアパートの上の階が思いっきり燃えてますよ(@_@;;;; 幸いにして直ぐに消えたようですが、ちょっと焦った。

調査の続き。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=ramfsとした時点で floppyの方をマウントしにいくようです。
んじゃ/dev/romfsの指定がNGだったので、

root=romfs

とかやってみてもダメ。恐らくROMアドレス空間だとシミュレータ上、 物理メモリが割り当てられていないので、アクセスした瞬間にシミュレータ 側でエラーが検出される予定でした。仮にromfsのマウントに失敗した後 floppyの方に行っていると考えたとした場合、romfsマウント時にマジック ナンバーをチェックしているので、それっぽいエラーメッセージが出ても 良さそうなのですが、それが無いのでromfsは全く触りに行っていない気分。 うーん、なんで?

「めちゃ2イケてる」とか久しぶりに観てみたり。最近結婚会見をした 極楽とんぼ加藤の会見までに至る実録って、この番組いつも仕込みが 大掛かりでスゲーなと思う事が多いのですが、遂にここまでって感じが しました。来週が少し楽しみだったりして(^^;

ppcsimに少し手を入れてリリース。御参考まで。

2002/03/01

日付け越え前に帰着。TRICK2を少しだけ観れた。

調査の続き。ページアドレス変換からみの部分を調査。先日見直した ハズのSR操作がらみの命令を見直しているとしつこく間違っているの を発見。先日まではSRに値は入っていましたが全然正しく入っていません でした。なんかボロボロ。でもやっぱりダメ。
あとはPTEの張り方が怪しいのを調査。SDR1の指す物理アドレスを 先頭にページアドレス変換テーブルをOS側で予め用意しておく必要が あるのですが、そのテーブル領域がall0になっていているのが謎でした。 とかそうして調べているとページアドレス変換の操作が間違ってる のが発覚。修正したけどやっぱダメ。

眠くて死亡。


TOP PREV