31-Oct-2010
[…]

28-Oct-2010: 朝昼:いつもの。夕:忘れた。

29-Oct-2010: 朝昼:いつもの。夕:市内某所にて。

30-Oct-2010: 朝:寝てた。昼:カレーとパン。夕:焼きそば。

31-Oct-2010: 朝:寝てた。昼:冷凍ピラフのすごい奴。夕:白飯、とろろ、焼き魚。58.8kg(23:45)

27-Oct-2010
[…]

やー、バタバタしてたので食事メモは一切省略です。

18-Feb-2010に導入した大光電機のDCH-54071(3灯)とDCH-54072(6灯)、付属の電球がぶちぶち切れてきたのでナチュラル色の電球型蛍光灯を付けてみたんですが…

before after

これが見事に合ってません。写真だとマトモそうに見えるんですが、ガラスの雰囲気をかなり削いでます。だからと言って電球に戻してしまうと色温度が低すぎて自分にとって非常に居心地が悪くなるので、電球色蛍光灯辺りが妥協点になるんでしょうかねえ。

LED電球は気になりますが、今売られている物ではこの手のガラスシェードのランプとの相性が非常に悪いので困ります。技術が進歩して、電球の完全な代替品になってくれると嬉しいのですけど。

蝋燭、ガス灯、白熱灯、蛍光灯、水銀灯、ナトリウムランプ、LEDランプ等と色々な照明を人類は手にしていますが、照明の出す光の波長がヒトの性格にどの程度の影響を与えるかというのはちょっと気になります。もっとも…一歩間違えるとアッチ系の科学に御招待という気がしなくもないのですが。59.7kg(22:10)

19-Oct-2010
[食事メモだけ(偽)]

やー、仕事場にカード会社から電話が来たので正直参りました。前にも支払い限度の上限に指定できない金額(10万円単位で指定する必要があった)を指定してしまい、そこそこしつこく電話がかかってきたことがあったのでマークされてるんですよ。

今回は、カードの不正使用食らってるよという内容でした。おそらくあの辺から抜かれた可能性が高そうですが、たかだか16桁+3桁の数字なので他の経路から抜かれた可能性も否定はできません。書面による連絡を受け取っていた以上、その時点で手を打てば防げた問題でもありますから、こちらにも落ち度があります。

金銭的な被害はおそらく無いかある程度は抑えられているはずだとは思いますが、それよりも「アイツはカード会社とよく揉める」というイメージを仕事場の人間に持たれてしまうのがキツいですな。あと、カード番号を変更することに伴う各種の事務作業およびカードを止めている間に支払いができなかったことによるサービスの停止とか…

何にせよ、カード会社が不正使用をしっかり見抜いたことにびっくりしています。流出元から予め連絡があったからかもしれませんし、そうでなくても見抜くのが仕事だよと言われてしまえばそれまでですが。

17-Oct-2010: 朝昼:忘れた。夜:とろろそば。

18-Oct-2010: 朝昼:いつもの。夜:白飯、焼肉、炒めたモヤシ。

19-Oct-2010: 朝昼:いつもの。夜:妻にお任せ(カレー)。58.3kg(23:45)

16-Oct-2010
[うーん…]

12-Oct-2010で疑問に思っていたエリアは、Google mapsの航空写真が2007年の物と2010年の物が混在しています。おそらく、地図も曖昧な状態になっているのかもしれません。国土地理院の地図は2008年10月とのことなので、ますます混乱中です。

愛川変電所へ行って見てみりゃ分かるさと思って実際に行ってみたものの、一番大事な部分を見落としました。ギャラリー送電線鉄塔の愛川線(ファイル名に漢字、しかもShift-JISを使ってるのでブラウザの設定次第では表示できません)には14-1号鉄塔で留められているとあり、これを見ておく必要があったのですが…それに気付いたのは家に帰って日記を書くために色々調べている時です。

※愛川線(中津変電所から愛川変電所を結ぶ路線で、中津変電所側が若番)の鉄塔の写真は塔マップに置いていますが、Exifを消した状態で上げてしまいました(9, 10, 11, 14, 15)。

愛川変電所付近の航空写真よりもギャラリー送電線鉄塔の情報の方が新しいため、キャタピラー上溝線の分岐は今は存在していないと考えています。運転の方に神経を使っていたのであんまりアテにはなりませんが、自分が県道54号線を走った際には、上空を横切る送電線は無かったように記憶しています。

愛川変電所を実際に見ても疑問の山は残ったまま、それもどんどん高くなる一方です。とりあえず、以下の点は分かっていません。

なんとなく、愛川変電所の隣にある旭硝子相模工場(1972年に操業を開始)と関係があるような気がしますが…気のせいかもしれません。

timgp9466.jpg timgp9485.jpg timgp9501.jpg

この辺りは調べれば調べるほど終わりが見えなくなるので、キャタピラー上溝線から分岐しているものが無ければそれで良し、ということにしておきます。

朝:寝てた。昼:即席ラーメンとパン。夕:白飯、肉野菜炒め。59.3kg(23:40)

15-Oct-2010
[とりあえず動く、では色々と困りますので…]

原因はある程度把握しておきたいところです。同じことを繰り返して生産性を下げている余裕はありませんし。

裏でmemcpy()を呼んでいると昨日の日記で書きましたが…逆アセンブルしたものをほけーっと眺めていた時に気付いたので、ここでも晒してみることにしましょうか。左には動かなくて困っていた07-Oct-2010の物、右にはちゃんと動く昨日の物を。動かない方のバイナリはここに置いときます。


00000240 <_usermain>:
     240:       6d f4           mov.w   r4,@-r7
     242:       6d f5           mov.w   r5,@-r7
     244:       79 03 ff fa     mov.w   #0xfffa,r3
     248:       09 37           add.w   r3,r7
     24a:       79 02 00 06     mov.w   #0x6,r2
     24e:       79 01 21 0c     mov.w   #0x210c,r1
     252:       0d 70           mov.w   r7,r0
     254:       5e 00 1e 88     jsr     @0x1e88:24
     258:       18 dd           sub.b   r5l,r5l

00000240 <_usermain>:
     240:       6d f4           mov.w   r4,@-r7
     242:       6d f5           mov.w   r5,@-r7
     244:       79 03 ff fa     mov.w   #0xfffa,r3
     248:       09 37           add.w   r3,r7
     24a:       79 02 00 06     mov.w   #0x6,r2
     24e:       79 01 20 50     mov.w   #0x2050,r1
     252:       0d 70           mov.w   r7,r0
     254:       5e 00 1d ee     jsr     @0x1dee:24
     258:       18 dd           sub.b   r5l,r5l

usermain()の頭からmemcpy()をJSR命令で呼び出す辺りまでの抜粋、です。ぶっちゃけた話、番地が違う以外にやってることは同じですね。void *memcpy(void *dst, const void *src, size_t len)に従い、R0にdst, R1にsrc, R2にlenを設定してJSR命令で飛んでいます。

さて…これに対するmemcpy()も見ておかないといけません。抜粋でも構わない気がしますが、全部出しておきます。


00001e88 <_memcpy>:
    1e88:       6d f4           mov.w   r4,@-r7
    1e8a:       6d f5           mov.w   r5,@-r7
    1e8c:       6d f6           mov.w   r6,@-r7
    1e8e:       0d 06           mov.w   r0,r6
    1e90:       0d 14           mov.w   r1,r4
    1e92:       6f 70 00 08     mov.w   @(0x8:16,r7),r0
    1e96:       6f 71 00 0a     mov.w   @(0xa:16,r7),r1
    1e9a:       89 ff           add.b   #0xff,r1l
    1e9c:       91 ff           addx    #0xff,r1h
    1e9e:       98 ff           addx    #0xff,r0l
    1ea0:       90 ff           addx    #0xff,r0h
    1ea2:       79 02 ff ff     mov.w   #0xffff,r2
    1ea6:       1d 20           cmp.w   r2,r0
    1ea8:       46 04           bne     .+4 (0x1eae)
    1eaa:       1d 21           cmp.w   r2,r1
    1eac:       47 1a           beq     .+26 (0x1ec8)

00001eae <.L4>:
    1eae:       0d 63           mov.w   r6,r3
    1eb0:       0d 25           mov.w   r2,r5

00001eb2 <.L10>:
    1eb2:       6c 4a           mov.b   @r4+,r2l
    1eb4:       68 ba           mov.b   r2l,@r3
    1eb6:       0b 03           adds    #1,r3
    1eb8:       89 ff           add.b   #0xff,r1l
    1eba:       91 ff           addx    #0xff,r1h
    1ebc:       98 ff           addx    #0xff,r0l
    1ebe:       90 ff           addx    #0xff,r0h
    1ec0:       1d 50           cmp.w   r5,r0
    1ec2:       46 ee           bne     .-18 (0x1eb2)
    1ec4:       1d 51           cmp.w   r5,r1
    1ec6:       46 ea           bne     .-22 (0x1eb2)

00001ec8 <.L2>:
    1ec8:       0d 60           mov.w   r6,r0
    1eca:       6d 76           mov.w   @r7+,r6
    1ecc:       6d 75           mov.w   @r7+,r5
    1ece:       6d 74           mov.w   @r7+,r4
    1ed0:       54 70           rts

00001dee <_memcpy>:
    1dee:       6d f4           mov.w   r4,@-r7
    1df0:       6d f5           mov.w   r5,@-r7
    1df2:       0d 05           mov.w   r0,r5
    1df4:       0d 14           mov.w   r1,r4
    1df6:       0d 21           mov.w   r2,r1
    1df8:       47 14           beq     .+20 (0x1e0e)
    1dfa:       19 00           sub.w   r0,r0

00001dfc <.L4>:
    1dfc:       0d 52           mov.w   r5,r2
    1dfe:       09 02           add.w   r0,r2
    1e00:       0d 43           mov.w   r4,r3
    1e02:       09 03           add.w   r0,r3
    1e04:       68 3b           mov.b   @r3,r3l
    1e06:       68 ab           mov.b   r3l,@r2
    1e08:       0b 00           adds    #1,r0
    1e0a:       1d 10           cmp.w   r1,r0
    1e0c:       46 ee           bne     .-18 (0x1dfc)

00001e0e <.L2>:
    1e0e:       0d 50           mov.w   r5,r0
    1e10:       6d 75           mov.w   @r7+,r5
    1e12:       6d 74           mov.w   @r7+,r4
    1e14:       54 70           rts

動かない方は、dst(R0), stc(R1)をきちんと受け取っているものの、lenはR2ではなくスタックの上に積んでおいてほしいと言っているようです。しかし、スタックの上に積まれているものは…実際に見た訳では無いので何とも言えませんが、@(R7+0x8)はusermain()の戻り番地、0x0258が積まれているはずです(ノーマルモードなのでPCは16bitです)。

memcpy()内部ではlenの値をR0:R1のペアで表していますから、len=0x02580000程度の値を指定されたようなものだ、ということになりますか。間違いなく、2kbyteのメモリを吹っ飛ばすのに十分な値ですね。

GCC付属のbuilt-in functionを使う場合には起こらない問題だと思いますが、自前でライブラリを用意する場合はこの手の問題に遭遇する可能性があるかもしれない、程度にまとめておきます。

朝昼:いつもの。夕:とりいちの弁当。58.9kg(24:00)

14-Oct-2010
[とりあえず動くようになったんですが…]

ビミョーな話の続きです。H8/300(L)でμT-Kernelを動かしてみようという。今回のブツはこちら

テスト#3が動かなかったのは、usermain.cの以下の部分が原因でした。

EXPORT	INT	usermain( void )
{
	ER	err;
	T_DINT	dint = {
		.intatr = TA_HLNG | TA_RNG0;
		.inthdr = interrupt_handler;
	};

何気なく変数を宣言していますが、実はこの裏でmemcpy()が動いています。という訳で、memcpy()を調べる→include/stdtype.hで__size_tがunsigned longになっていた→こいつをunsigned shortに直して解決。

usermain()の中にprintf()(正確にはtm_putchar())を仕掛けて、ここに到達していなかったという理由でusermain()を呼び出す前のコードばかり調べていたのですが…まさかこういう場所に虫が潜んでいたとは。

朝昼:いつもの。夕:茹で野菜、ハンバーグ、白飯。

12-Oct-2010
[終わっていない…?]

Google mapsを見ていたんですが、例のキャタピラー上溝線、山の中で分岐しているような雰囲気です。これを書いている時点では、国土地理院の地図にはまだ載っていない(こちらは2008年10月現在のデータらしい)ので、この数年の間に事情が変わったのだろうとは思いますが…

(Twitterでつぶやいたネタでもありますが)分岐した路線をGoogle mapsで追いかけていくと、地図と航空写真が一致していない箇所がありました。ひょっとすると、この路線は新しいのかもしれません。

分岐した路線は愛川変電所に向かっているように見えます。路線名、および鉄塔の順番(変電所側が若番か老番か)、そしてその先はどこへ向かうのかが気になります。

この手の道楽は原チャが非常に便利なのですが、無い以上は車と自転車で、無理しない範囲でやることにします。今のところ、行こうと思えばすぐに行ける範囲にありますし…とは言え、桂川線の除却が二年くらい前という話を聞いていると、あんまりのんびりやっている場合でもなさそうなのですが。

今まで見た鉄塔の類は、可能な限り写真付きで塔マップに載せておきました。備忘録として便利ですし、埋めていく楽しみがありますが…対価としてごっそり時間を持っていかれますね。

このマップは地元にどんなのがあるかをチェックするのにも役に立ちますが、米軍補給廠(正式な名称は在日米軍基地相模総合補給廠、とやたらと長い)の中にある送電鉄塔の情報には非常に驚いています。

補給廠周辺も、地図と航空写真が一致していませんね…

相模原(旧)市民なら多分よく知っている話だと思いますが、補給廠の中に入るのはかなり難しいです。正直な話、キャンプ座間や横田基地の方が定期的に開放しているのでまだ中に入りやすい、という認識です。

12-Oct-2010: 朝昼:いつもの。夕:白飯、野菜と鶏肉のスープ。

13-Oct-2010: 朝昼:いつもの。夕:白飯、刺身、湯豆腐もどき。58.2kg(23:25)

11-Oct-2010
[鉄塔祭り。ふたたび]

という訳で、キャタピラー上溝線5号鉄塔と、4号鉄塔を再び撮ってきました。相変わらず、山の深い緑色+明るい空を撮るのは苦手です(数打ちゃ当たる式に撮っているので、腕が全然上がらない…)。

timgp8981.jpg timgp9076.jpg

4号鉄塔に近付くための道は、近くで農作業をしていた人に教わりました(地図で見てはいたのですが、マムシも出るとのことなので…知らずに入っていたら大変な目にあったと思います)。この場を借りてお礼申し上げます。

timgp9156.jpg timgp9180.jpg

最後に、この看板でこのシリーズは締めておこうかと思います。

timgp8828.jpg

…すみませんでした。

11-Oct-2010: 朝:コンビニのパン。昼:丸亀製麺にて。夕:白飯、焼いた鶏肉、茄子の味噌炒め。

これ以前の食事メモは省略。59.5kg(20:40)

11-Oct-2010
[んー、おわびの類って]

どこかのweb pageの中に画像で含めるんじゃなく、テキストなりPDFなりで一つのドキュメントとして記し、きちんと残しておくべきだと思うんだけど、どうなんだろう。例えば、弊社図書館システムにおける個人情報の混入及び流出について(お詫び)のプレスリリースのように。もっとも、プレスリリースを出してもMDISは許さないけど。

20101011.jpg

※スクリーンショットはリサイズしています

一応、お詫び画像にはこんなことが書かれたALT属性が付いていたから、引用しておこうか。

10月6日放送の「かんさい情報ネット ten!」の中で
今年のノーベル化学賞を
京都大学教授の北川進氏が受賞されたと放送しましたが、
正しくは、
北海道大学の鈴木章名誉教授と米国パデュー大学の根岸英一教授の
日本人2人を含む3人が
受賞されており、北川教授は受賞されていませんでした。

番組では、誤りに気づいた後、直ちに
放送内容を訂正したうえ、正しい受賞者名を放送しました。

北川教授御本人はもとより、京都大学、関係者の皆様に
御迷惑をお掛けした事を、深くお詫びするとともに
番組として、2度とこのような事の無いよう、
再発防止に努めます。

選挙速報じゃないのだから、もう少し慎重に報道しろよとは思うけど…間違ったなら仕方がないし再発は防ぐよう努力はするべきだろう。しかし、こういうweb pageの作り方で、誠意が伝わるとは思えないんだなあ。

謝罪文を画像化している
画像としてこの手の文章を書いてしまうという時点で、検索避け(これ以上の恥をかきたくない)という意図が透けて見える。IMGタグにALT属性を付けても無駄。
番組のトップページの一部に、謝罪文の画像をちょこんと差し挟んでおく
謝罪文をプレスリリースのように「残しておく」資料として扱っていない。「どうせすぐ消す」→事実を事実として残さず、風化させることを狙っている。

…穿った見方であることは間違いないんだけど、そういう解釈ができてしまう以上、それを防ぐように謝罪文を出さなきゃ余計に叩かれるんじゃないかな。ただでさえ、(謝罪文を書くような事態をやらかした以上、それを狙って)叩きにくる連中が湧く状況なんだから。(18:10)

07-Oct-2010
[ビミョー。]

アレに関しては、あっちゃこっちゃで32bitの値を使っているので、素直にH8/300Hのまま使った方が良さそうです。全てを16bitで通している場合に限り、H8/300(L)向けにビルドするのも手かもしれない、程度のユルい話でオチをつけておきます。

多少は動くのですが、27-Dec-2007のテスト3だけが動いていないので、割り込み処理の周辺に何かバグが残っているような感じです。

H8/300(L)にはTRAP命令が存在しないので、サブシステム(拡張SVC)周りはごそっと削っています。どうせH8/3664をH8/300(L)に見立てる以上、TRAP命令を使うことはできるのですが…作業量が増える割に得る物が無いので、削ることにしました。

という訳で、互換性検証を通す以前にあの名称が使えません。何と呼べば良いのか分からないので本気で困っています。とりあえず、作業途中のモノを置いときます

05-Oct-2010: 朝昼:いつもの。夕:白飯、茹で野菜、焼肉。

06-Oct-2010: 朝昼:いつもの。夕:白飯、野菜スープ、焼魚。

07-Oct-2010: 朝昼:いつもの。夕:うどん、スーパーで買ったサラダ。58.5kg(23:35)

04-Oct-2010
[んむー。]

H8/3664の上に載せてみたμT-Kernelで、実行中のメモリの様子をなんとなく見てみたくなったので見てみることにしました。使用したのは、TRAPA命令を使わない実験(18-Apr-2009)に少し手を加えた物。

KOZOSと比べてメモリ消費量が少ないように見えますが、動いているタスクの数が1個なので全然比較になっていません(あちらは確か2つか3つは動いてたはず)。

μT-Kernelに手を入れて、H8/3664はH8/300L向けのバイナリで動かすべきかどうかを一年近く悩んでいるのですが、どうしましょうか…実際にいじってるなんて話も聞きませんし、別に現状のままでも良くね?とは思うのですが。

03-Oct-2010: 朝:寝てた。昼:妻にお任せ(チヂミ)。夕:白飯、麻婆茄子(キット使用)、湯豆腐もどき。

04-Oct-2010: 朝昼:いつもの。夕:白飯、刺身、即席味噌汁。57.9kg(23:05)

02-Oct-2010
[鉄塔祭り。]

本調子ではありませんが、多少は体調が良くなってきたので、宿題を一気に片付けることにしました。

まずは八ツ沢線96号鉄塔/川尻変電所から。前の時とは別のアングルで撮っているので、配線が外されている部分が多少は分かりやすくなっているかと思われます。配線の残っている左側が、川尻線として橋本変電所に向かいます。

timgp8601.jpg timgp8605.jpg

谷ヶ原浄水場内にある、八ツ沢線93号鉄塔。下から見上げた物と(右上が92号鉄塔へ向かう)、この付近から八ツ沢線92号/桂川線100号鉄塔を撮った物。晴れたり曇ったりで、露出はめちゃくちゃです。

timgp8635.jpg timgp8626.jpg

同じ浄水場内にある、桂川線100号/八ツ沢線92号鉄塔。こちらは鉄柵の内側に植物が茂っており、鉄塔の足元はよく見えません。また、カメラは八ツ沢線93号鉄塔を向いています。

timgp8687.jpg

都留線241号鉄塔。県道510号線から撮った一枚と(ここは交通量が多いのと見通しが悪いので路上から撮るのはかなり危険)、可能な限り近付いて撮った二枚。上の六段で都留線/城山線が合流し、下の三段でキャタピラー上溝線を渡しています。

timgp8704.jpg timgp8723.jpg timgp8733.jpg

キャタピラー上溝線5号鉄塔と、4号鉄塔と思われるもの。どちらも左側がキャタピラー方面です。

この二本は畑の中を通過しないと鉄塔に近づくことはできず、5号鉄塔は135mmのレンズでどうにか判別できたものの…4号鉄塔は標識が見えなかったために(写真も酷いし)未確定という扱いにします。

Google mapsを見て気付いたのですが…キャタピラー上溝線4号鉄塔、一本手前の道から撮ってしまったようです。orz

timgp8780.jpg timgp8800.jpg

農業振興地域につき、一般車両の立ち入りが制限されている場所なので、邪魔にならぬよう自転車で行ってみましたが(自転車も車両だから本当は良くないんだけどさあ)…以下の理由により、見学には注意が必要です。正直、お勧めはしません。

路線図も書き直してみました。

t20101011.png

01-Oct-2010: 朝昼:いつもの。夕:パンと野菜スープ。

02-Oct-2010: 朝:妻にお任せ(辛いスープ)。昼:冷凍庫に入っていたハンバーガー。夕:白飯、昨日の野菜スープの残り、味噌田楽。58.2kg(21:05)

11-Oct-2010補足:キャタピラー上溝線は4番で始まっていることを確認できたので、路線図を修正しました。古いのはこちらに置いておきます。撮り直した写真は11-Oct-2010を見てください。

02-Oct-2010
[H8/3664を使う時に]

TRAPA命令の使えるH8/300として使うべきか、H8/300Hとしてフルに使うべきかちょっと悩んだので、KOZOSを移植して比較してみることにしました。

なお、この移植はあくまでも実験を目的としています。H8/3069の代用品としてH8/3664を使うためのものではない、ということは強く主張しておきます。

ソースコードはこちらで、オリジナルに対してどんな修正を加えているかに関してはKOZOS友の会に投げたメッセージを参照してください。

ビルドによって得られたオブジェクト(elf), ROMイメージ(mot), マップファイル(map), メモリダンプのログ(log)は以下の通りです。ここでは便宜上、H8/300として使用する場合を16bit, H8/300Hとして使用する場合を32bitと記述します。

マップファイルに記された、_etextの番地がおおまかなコードサイズです。使用するメモリ量は…メモリの末端から、予め書き込んでおいた値(0xdead)がどこまで壊されているか(KOZOS自体が使用する、intrstackの分量)で判断することにします。

bit_etext値が壊れ始める番地
160x11e80xff36
320x137c0xff16

コードサイズの増加は、コンテキスト保存/復帰に関係する部分よりも、関数の出入り口で使われるmov.l er6,@-er7/mov.l @er7+,er6のペアが効いているようです。また、関数をネストした場合のスタック消費量も、この部分が関わってきます。

なお、コンテキスト切り替えが発生した場合は、レジスタの内容は各タスク毎のスタックに保存されます。よって、レジスタ数が増えた場合は各タスク毎のスタックサイズに注意を払う必要があります。

H8/3664の場合、敢えてH8/300縛りを使う手も「あり」なのではないかと考えています。もちろん全てにおいて万能という訳ではなく、CFLAGSに-mint32を指定しない等の条件はあるでしょうが。

…って、実はこれってH8/3664を使う上での基本的な事項だったりします?(GCCではなくHEWだったらもう少しマシな対応になるのでしょうか)

食事メモは後日。(17:45)