29-Nov-2008
[食事メモだけ。]

28-Nov-2008: 朝昼:いつもの。夕:妻にお任せ(トースト、27-Nov-2008の残り)。

29-Nov-2008: 朝昼:某所にて。夕:焼きうどん。

休日は自宅警備したいお。混んだ場所に行くのは嫌だお><(23:25)

27-Nov-2008
[食事メモだけ。]

26-Nov-2008: 朝昼:いつもの。夕:妻にお任せ(惣菜類色々、パン)。

27-Nov-2008: 朝昼:いつもの。夕:妻にお任せ(白飯、牛肉と野菜の炒め物、他一品)。(22:15)

25-Nov-2008
[Yahoo!オークションの]

特定のキーワードでチェックを欠かさずにやっているんですが、広告的な出品にちょっと釣られてみました(って、買った訳ではないんですが…)。

エムエーアイ電子は日本一安いSH4ボードを作っています、とあるんですけど、実際のところどうなんでしょうか。実はよくわかりません。

SH3辺りだと、TACが真っ先に思いつくのですが…

でもSHやARMって、どうも趣味でいじるというよりかはお仕事で使うもの、という意識が抜けないんですよね(ICE無しで起動用コードが書き込めるかどうか、というところが分水嶺か)。実際に、こいつら載せた基板が仕事場に転がってるからというのもあるのですけど。

どうもねえ、趣味人程度にゃこの程度のマイコンで十分だろおらおらおらおら、的な雰囲気が嫌なのですよ。メーカーも商売やってる以上、お金にならない領域にはそう良いモノを出してはこないのでしょうけど。

俺としては、いろんなモノを薄く広くいじりたいというのがあるので(単に飽きやすいだけです)、選択肢が限られている状況って結構嫌なんですよね(飽きるから)。限られているように思い込んで、周り見てないってのもあるんですが。

しかし、なんでET2008やってる時期に案件が飛び込んでくるかなー。行けなかったよorz

24-Nov-2008: 朝:寝てた。昼:即席ラーメンとパン。夕:カレーライス(実は久し振りに作った)。

25-Nov-2008: 朝昼:いつもの。夕:白飯、菜物、刺身、即席味噌汁。(21:40)

23-Nov-2008
[ああもうヤケですから。]

以前作ったテスト用のコード(主にBASICを使用)をベースにやってみたんですが、異常に遅いのと、30分以上FDDが回りっぱなしになるせいかなんとなく嫌な雰囲気になってきたので、アセンブラを使ってMSX-DOS用に書き直すことにしました。※スロット1専用です

漢字ROM吸い出し用のコードがあったおかげで、かなり楽にできあがりました(と書いているものの、実はきちんと動くまでに3時間掛かっています)。ありがとう過去の俺。

3時間の原因ですが、久々にZ80を使ったので利用可能なレジスタの制約に四苦八苦していたのが半分です。残り半分は、DB 01H, 00H, 00H, 00HとDB 01H,00H,00H,00Hとの違いにハマっておりました。

…ひょっとして、ZASMは,の後にスペースを入れてはいけないのかな?…と思って調べてみたら、ZASMのバージョンが古かったことが発覚(使っていたのは1.56、最新版は1.64)。

一度、開発環境を見直さないとダメかもしれませんね…

朝:寝てた。昼:妻の作ったスパゲティ。夕:実家近くの弁当屋さんの弁当。(23:55)

22-Nov-2008
[展開してみた。]

展開用のコードが付いてる以上、それをCで書き直せばいーだけの話じゃんって言われたような気がしたので、やってみましたよ

一ライン上のデータとの差分を記録してるっていうのは、上手いことやってるなーと思いました。

いつの時代であっても、他人のコードを読むのは勉強になりますなあ…

とりあえず、データの読み方が分かったのでこの案件はここで終了…全データの吸い出しとFONTX化等の細かい作業は後日気が向いたときにでもやる予定(やらない予定もある)。

朝:寝てた。昼:妻にお任せ(トースト、ゆで卵)。夕:以前作っておいたスープ、温野菜のサラダ、白飯、納豆。(21:10)

21-Nov-2008
[でも、]

生データ吸い出して自力でコンバートの方が、現実的です。というのも、実機上で展開した場合、そこから運び出す手間が増えるのです。2DDのメディアを何度も抜き差しなんて、面倒でしょ?

1-chip MSX使ってSDカード上で頑張れば良いという選択肢はあるでしょうけど…悩むのも飽きたので、生データ吸い出し用のコードを試しに書いて、読み出しがうまくいくかどうかを確認してみることにしました。

20081121.jpg

とりあえず、ROMの先頭64kbyte分をVideo-RAM上に書き出してみました。多分大丈夫かもしれません。

なんとなく、0x0000〜0x7fff辺りは展開用のコード(領域余りまくってるけど)、0x8000〜0xf1ffは書体データへのオフセット、0xf200〜は書体データ本体ってところまでは分かったんですが…書体データにはしーっかり圧縮が掛かってるんですよね。

実は圧縮の類も苦手科目だったりするので、吸い出すだけ吸い出してお終いにしちゃおうかな、と考えています。

朝昼:いつもの。夕:白飯、鮭と野菜の炒め物。(23:00)

20-Nov-2008
[うーん…]

A=8(bit3='1'となる任意の値), BC=フォント番号, HL=ワークエリア(320byteくらい)の先頭アドレスを設定して、4023Hをコールするとワークエリアの先頭288byteが書体データ、かな…エラー発生時はCy=1で。

生データ吸い出し+自力デコードはかなり辛そうな気がする。というか、なんか面倒そうなので素直にBIOS使わせて…

こういう時に限って、手元にZ80マシン語秘伝の書が無いっていうのも、キツいよなあ。

朝昼:いつもの。夕:白飯、キムチ味の野菜の煮物、納豆。(23:05)

19-Nov-2008
[やっぱ一筋縄ではいきませんね]

いきなりコードを書くのではなく、SUPER-X使ってまずは様子見なのです。

…で。

表題の通りということで。

48×48ドットの文字は、1dot=1bitで計算すると1文字につき288byte消費するんだけど…JIS第一/第二水準を乱暴に見積もって8192文字とすると、288×8192=2359296だから2.25Mbyteになる。

で、こいつを1Mbyte(8Mbit)のROMに押し込むには…圧縮するしかありません。しかし、データ全体を見渡せる状況ならともかく、まだ入口(かどうかすら怪しいけど)を見つけただけなので、何がどうなっているかも分かりません。

24×48ドットのフォントを横方向に拡張して使っているというオチだと楽なのですが、世の中そこまで甘くはないと思います。

もうちょいあれこれいじれると良いんですが、WindowsXPは2DDのディスクアクセスがアレだし、OpenBSDもなんか2DDのディスクアクセスがアレなので、なかなかうまく進みません。

こういう時のために、Linux環境残しとくんだったと激しく後悔しています。orz

朝昼:いつもの。夕:妻にお任せ(納豆、白飯、水餃子を使った野菜スープ、モツ煮)。(22:10)

18-Nov-2008
[えーとすみません]

今日は分解写真館ということで勘弁してください。

tdscf1576.jpg tdscf1578.jpg tdscf1579.jpg tdscf1580.jpg tdscf1581.jpg tdscf1582.jpg
tdscf1598.jpg tdscf1601.jpg tdscf1604.jpg tdscf1605.jpg tdscf1609.jpg tdscf1610.jpg

上段はCASIO GZ-50MというMIDI音源。H8/329が使われている。

下段はFS-SR023という、FS-4600F用毛筆書体ROM。8MBitsというだけあって、4MBit ROMが二つ載ってる。

で、どうしましょう(何を)。

昔、BGMを聴きたいという理由でFM-PACのROM吸い出しをやったことがあるんですが…あれって64kByteのROM載せてるんですよね。で、7FF7Hに値を書き込むことでバンクを切り替えるんです。こんな風に。

20081118.png

FS-SR023も松下電器製ですから、同じ方法…以前作ったツールを少し手直しする程度で済むといいなーと思っています。実際にどうなるかは試してみないと分かりませんが。

※.basはMSX実機/エミュレータ向けのバイナリファイルです。Windowsであれば、MSX-BASIC-LISTビューワを使うのも良いでしょう。

朝昼:いつもの。夕:白飯、納豆、八宝菜(キット使用)、昨日の温野菜の残り。(23:05)

17-Nov-2008
[ムズぃょ。]

慣れてないっていうのもあるんだけど、ちょっとお手軽にいじってみるっていう範疇超えてませんかコレ?

どうしろって言うんですかとか、泣いてもいいよね?ダメ??

朝昼:いつもの。夕:妻にお任せ(白飯、餃子、温野菜、即席スープ)。(22:00)

16-Nov-2008
[シリアルポートの操作に]

rxtx-2.1-7r2とかいうのが必要らしいので、ビルドに挑戦してみました。

OpenBSDなんて知らねえなあと言われるので、とりあえずこんな風に修正。export PATH=$PATH:/usr/local/jdk-1.5.0/bin; ./configure; gmake; gmake install。インストール先は/usr/local/jdk-1.5.0/jre/lib/amd64。

…で、動きません><

ProcessingのserialEvent()のサンプルを試しているのですが、println(Serial.list());で何も得られない状態です。

何を間違えたか調べるにしても、どこから手を付ければ良いのか全然見当が付きません。どうしましょうか。

WindowsXP機にもProcessing突っ込んでみたんですが(こっちは同梱されてるrxtxが有効になるみたい)、Serial.list()でCOM1は見えてるものの通信はできない…ハイパーターミナルでは問題なく通信できる相手なんだけどなあ。むぅ…

ちなみに、Examples→Libraries→OpenGL→Esferaも動きません。Exception in thread "Animation Thread" java.lang.UnsatisfiedLinkError: /home/uaa/processing/build/openbsd/processing-0157/libraries/opengl/library/libgluegen-rt.so: File not found (Possible cause: architecture word width mismatch)だそうです。orz

…どうする俺。

13-Nov-2008: 朝:寝てた。昼:即席ラーメンとおにぎり。夕:アジア風かけごはんもどき。

14-Nov-2008: 朝:寝てた。昼:アジア風かけごはんもどきの残り。夕:白飯、野菜炒め、焼いた肉。(21:20)

ちょっと悔しいので、rxtxのソースを調べてみました。Javaなんて触ったことないんですけどねえ…

RXTXCommDriver.javaのregisterScannedPortsが怪しそうですね。ここ、if(osName.eruals("なんとかOS"))の羅列なので…明日、ちょっといじってみましょうか。

I2CImp.c, RS485Imp.c, RawImp.cのJava_gnu_io_RXTXCommDriver_IsDeviceGood()では、デバイス名の正当性チェックをやっていますが…これは気にする必要はなさそうに見えます。というのも、不正なデバイス名を指定した場合にエラーを返すコードが、Linux/FreeBSD/NetBSDでは有効になる(他のOSなら無効になる)というだけなので。(23:05)

14-Nov-2008
[これだからx86のアセンブラは…]

リアルモード(16bit)の状況で、

した時の結果が同一かどうか、いまいちよーわからんので調べてみました。DOS辺りでささっと書いても良いのでしょうけど、例によってlibmikeos使ってます。

…で。

リアルモードだし、EBX持ち出しても上位16bit側を無視して0000:0000辺りを読んでくるんじゃないかと思ってたんですが…しっかり0000:000c0000(c000:0000)読んでくれますね。ふむふむなるほど。

ちなみに実機でもQEMUと同じように動いているので、多分大丈夫だと思いたいです(弱気)。

libmikeosなんですが、やることもやったしメンテナとして活動できる時間がちょっと取れなさそうな予感ってことで、俺の担当はここで終了です。引き継ぎも済んでいますから、今後も大丈夫でしょう。

こんなところに日本語で書くんじゃなく、MLで英語で書けよと突っ込まれそうですが…良い経験になりました。色々ありがとうございました。Tシャツ、マジで記念に欲しいです。MikeOSSOekiMの両方とも。

…って書くとMikeOS sceneから立ち去るように見えますが、ユーザとして多分居残る予定です。構わないよね?←って誰に聞いているんだ

朝昼:いつもの。夕:白飯、白菜と肉団子のクリーム煮(キット使用)、納豆。(21:20)

17-Nov-2008補足:INTEL 80386 PROGRAMMER'S REFERENCE MANUAL 1986(リンク先はucla.eduのサーバにあるPDF)には、

Unlike the 8086 and 80286, 32-bit effective addresses can be generated (via the address-size prefix); however, the value of a 32-bit address may not exceed 65535 without causing an exception. For full compatibility with 80286 real-address mode, pseudo-protection faults (interrupt 12 or 13 with no error code) occur if an effective address is generated outside the range 0 through 65535.

という記述があるので、動くかどうかを試すこと自体が「してはいけないこと」というオチでした。

13-Nov-2008
[libmikeos-0.1.2]

libmikeos-0.1.2、リリースです。

とりあえず、これで前からやってみたかった↓をMikeOS上でできるようになりました。

rdmsramd

実は、これをやるのがlibmikeosの目的だったりします。DOS版で試した結果と、比較してみてください(って、Errata対策済みと同じ結果でなければ困るんですが)。

wrmsr周辺のテストで気づいたのですが、一部のPentium4ではECX=0x10によるTSCの書き換えがうまくできないようです(64bitの値のうち、上位32bit側が常に0として扱われてしまいます)。

これはIntel(R) 64 and IA-32 Architectures Software Developer's Manualにきちんと書かれている話なのですが、どう見てもバグを仕様だと言い張っているような…うわなにs

rdmsramd rdmsramd

まあ、TSCは基本的にrdtscで読み出すものであり、書き換えるものではないってことなんでしょうけど。

朝昼:いつもの。夕:煮込みうどん。(22:45)

12-Nov-2008
[OpenBSD-4.3/amd64でProcessing-0157]

NetBSDでProcessing動いてるって話を見たので、俺も挑戦してみました。

subversionとJDK-1.5をportsで用意し、svn co svn://processing.org/trunk/processingで取ってきたソースコード(これを書いている時点ではrelease 0157)の一部を適当にごにょごにょして、make.shを実行。

now building...

dist.shの方はいじってないので、これを実行するとどうなるかは知りませんが…run.shで一応こんな画面を拝む程度には。

Processing 0157 beta

全ての機能がちゃんと動くかどうかも知らないので、試してみてね♪(と投げやりに)。

…これで、GAINERを試すための第一歩を踏み出せたかな?

朝昼:いつもの。夕:白飯、野菜スープ、妻が買ってきたフライドチキン。(22:00)

13-Nov-2008補足:dist.shも直して、patch -p1 < ほげふがな形式のパッチに仕立ててみました。Linux用のファイルをそのまま使ってるのがアレですけど。

パッチ適用後、chmod +x dist.sh, make.sh, run.shで実行可能な状態にしておくのを忘れないようにして下さい(sh なんとか.shで実行してはいけません)。

あと、原因はよー分からんのですが、Examples→Basics→Arrays→ArrayObjectsを実行すると、FileNotFoundException: /usr/local/jdk-1.5.0/jre/lib/zi/Japan (No such file or directory)なんてのも出ます。

11-Nov-2008
[ふぬおお]

処理が追い付いてません。(23:20)

10-Nov-2008: 朝昼:いつもの。夕:実家でもらった惣菜、焼きそば。

11-Nov-2008: 朝昼:いつもの。夕:野菜炒め、スーパーの精肉コーナーで売ってたハンバーグ(自分で焼く奴)、白飯。

09-Nov-2008
[食事メモだけです]

07-Nov-2008: 朝昼:いつもの。夕:近所の焼肉屋にて。

08-Nov-2008: 朝:食べてない。昼:友人の挙式にて(一次会)。夕:友人の挙式にて(二次会)。

09-Nov-2008: 朝:食べてない。昼:妻の実家にて。夕:俺の実家にて。親戚周りも大変なのですよー。(21:50)

06-Nov-2008
[進捗状況。]

I/O関連はこれで全部、かな。特に問題が無ければこれをlibmikeos-0.1.2にしようと思ったんだけど…うん、修正しなきゃいけない箇所があるね。mikeos_defs.hのLIBMIKEOS_MINOR_VERSIONとか、テストプログラムの微妙な強化とか表記の間違いの修正とか。

05-Nov-2008: 朝昼:いつもの。夕:白飯、納豆、酢豚(キット使用)、妻が買ってきた、焼いた鶏肉。

06-Nov-2008: 朝昼:いつもの。夕:妻にお任せ(白飯、納豆、刺身、酢豚の残り、温野菜)。(22:20)

04-Nov-2008
[んで、魔女狩りで思い出したんだが]
  1. A氏によって、組み込みOS「Z」が作られる。
  2. 「Z」はありとあらゆる製品に組み込まれ、使用される。
  3. A氏はその妻Bを殺害し、逮捕される。
  4. 「Z」の組み込まれたありとあらゆる製品は破棄され、どの街でも焼却処分。
  5. 焼却される製品を囲み、民衆は叫ぶ。「Aは死ね!」「Aは死ね!!」「Aは死ね!!!」

…多分今の日本人だったら、これくらいは普通にやりそうな予感。ていうかやるだろう。(21:35)

04-Nov-2008
[魔女狩りktkr]

説明不要だと思うし、もうネタとして取り上げるのもバカバカしいんだけど…

また、音楽配信につきましては、全曲配信停止することを決定いたしました。

こういうことを言う連中こそ、活動を停止すべきだと思いますね。今すぐに。

上の例を「魔女狩りメソッド」と書くなら、下の例は「カッコワルイメソッド」…は発音しづらいから「イケてるメソッド」とでも言うのでしょう。

timg462.jpg timg985.jpg timg986.jpg

…こういうのを見る度に、もう少しマトモなメソッドを使える大人になりたいと思うんですよね。

おまけ。

timg794.jpg timg978.jpg

なんつーか、広告作った人間の上から目線っぷりが、透けて見えます。

職に就いていようと就いていまいと、不愉快だと思うんですが。

この手の広告は企業名を晒すのが筋だと思いますが(広告なのですから)、とりあえずボカしておきます。

余計な心配と画像加工をせにゃならんというのも、嫌なもんですが…こちらも狩られたくありませんのでね。

恨むのであれば、魔女を狩る人間を増やし過ぎてしまったことに対して恨んで下さい。明らかに狩られる側より狩る側の方が多すぎますので。

朝昼:いつもの。夕:白飯、納豆、茄子の炒め物(キット使用)。(21:00)

03-Nov-2008
[ぜはー…]

八王子から橋本まで、旧16号沿いに走るのは流石に辛いです。なんなんですかあの坂道。

…これで思い出したのが、クロスバイクの改造。これって実際にできるんですかね。

今乗ってるのがGIANTのCS-3200で、ギアを3×7速に入れた時(←この表記方法が正しいか分かんないんだけど、要するにフルスピード出した時)の速度が物足りないんですよ。「君ならもっとデキるはずだよね?」って思うくらい。

ギア比が低いらしいなんて話もある以上、ここを何とかすれば改善されるのかなと。

もっとも、速度を上げる以上はブレーキも変える必要はあるでしょうし、他の部分(機械的な部分だけでなく、ライダーの技量もありますよね)も色々改善する必要がありますが。

八王子の坂の多さ(キツさ)を考えると現状の方が良さそうなんですが、もう少し平坦な土地に移る予定があるので…手を入れるなり他のモデルへの買い替えが必要なのかなと思うのですよ。

02-Nov-2008: 朝:寝てた。昼:お茶漬け。夕:新宿の某ライブハウスにて、梅チャーハン他。

03-Nov-2008: 朝:トースト。昼:ガストにて。夕:野菜炒めと焼肉と白飯。(23:15)

01-Nov-2008
[なにしろ手書きなものですから]

ぃゃぁ、今の今まで先月の日記が2008年9月になっているだなんて、全っ然気付きませんでした。ていうか知ってたんだったら教えてくれたっていいじゃないですかと逆ギレしてみたり。

結局、gcc-4.2.4とnewlib-1.16.0を使うことにしました(h8300-hmsはbinutils-2.16.1, h8300-elfはbinutils-2.18を使います)。

本当はCortex使えるようにしておきたいという理由で、gcc-4.3を入れたかったんですけどねえ。←実際に使う予定あんの?という質問は無しの方向でお願いします。

30-Oct-2008: 朝昼:いつもの。夕:吉野家にて(ちなみに豚丼派)。

31-Oct-2008: 朝昼:いつもの。夕:妻にお任せ(キムチ鍋)。

01-Nov-2008: 朝:妻にお任せ(トーストとゆでたまご)。昼:大戸屋にて。夕:妻にお任せ(昨日の鍋物の残りで作ったおじや)。