/var/log/hdk.log

2016 年 6 月上旬


01 (水)

%1 6 月

微妙に気温が下がった気がする 6 月。 気象庁アメダスによれば東京府中では 20 時時点で気温が 19.2 度、数字上もちょっと冷えてる感じ。

%2 マイカリー食堂

去年、松屋が閉店してカレー屋がオープンしたのは知っていたが、どこか松屋っぽさが漂っていて一度も入ったことがなくて、今日初めて入った。 予想通り、松屋系列だ。 どうやら以前渋谷にあったものが移転してきて、全国でここだけらしい。 食券販売機といい、出てくる食券といい、松屋らしさ全開だし、店内の座席配置も前の松屋のままだ。 さすが、松屋フーズの本社ビルから 100m も離れていないだけのことはある。(関係ない。)

辛さが 3 種類、それぞれ「無料」と書いてあるのがおもしろい。 辛口にしてみたが、そんなに辛くない。 グリコの LEE でいえば 5 辛ってところだ。 ビーフカレーか何かそういうのを食べたが、味自体は悪くはない。 松屋のカレーよりおいしいのではないか。

カレー屋というと、牛丼屋やハンバーガー屋とは違って少し落ち着いて食べるような印象があったが、ここは違う。 座席は少ないがとにかく回転が速い。 辛さを聞かれてから 1 分くらいだったか、あっという間に出てきた。 まるで都市部の立ち食いそばのようだ。 もしかすると松屋の牛めしより早かったりして... さすがにそれはないか?

この近辺では、草の実というカレー屋さんがよかったが閉店してしまった。INDRA というインド料理のカレー屋さんの小さな店もあったが、別フロアでの火災により閉店してしまった。 カレーうどん・カツカレーうどんをやっていた、とよくにといううどん屋さんも閉店してしまった。 線路を越えれば、クラウンというところの田舎カレーっていうのもあったが閉店してしまった。Bam Bou deux 3 丁目という店にカツカレーがあったが閉店してしまった。 ココイチはあるがココイチだ。 最近よく食べるカレーは、福家というトンカツ屋のカツカレー程度である。 これはこれでホテルカレー風の感じでなかなかのうまさである。

2016/06/01 のコメントを読む・書く


02 (木)

%1 うでわ

そういえば、Android Wear な腕時計 Gear Live は、一泊二日を充電無しで乗り切れた。 といっても、一泊の時に電源を切っておいたが、それだけ。

%2 JX

PCjr の DOS などのディスクイメージは、なんと QEMU でも動作する。 それなら JX (日本語環境) でも動かせるんじゃないの、と思うわけだが、ひとつは signature のチェック内容が違うので動かない。55 aa ではなく、"IBMJ" というキーワードで行われている。

もうひとつは、というかそれがひとつなのかどうかもわからないのだが、INT 17h (プリンター?) のところでメモリーがぶっ壊されてうまく動かない様子。 何これ、BIOS の呼び出し仕様が違うのか? いや、なにやら、JX の BIOS はプリンター用のデータを置くのにセグメント 120h を使うらしいぞ。 確かに制御コード変換などずいぶん特殊な機能を持っているが、まさかこんなところを作業領域にしていたとは。 そして DOS は起動時にプリンターに何かを送信していたんだな。

で、まぁ、INT 17h を乗り切ってもその先が動かない。 意外と差があるんだなぁ... おっと、ビデオ BIOS INT 10h がスタックセグメントに 1a0h を使っているぞ。 すげぇ大丈夫じゃない予感 (笑) INT 10h は単にスキップするわけにはいかないしなぁ。

というわけで、BIOS のインターフェイスは同じでも、メモリーの使い方がだいぶ違うので、DOS を動かすのさえも難しいのかも知れない。 まして、グラフィック画面を扱うソフトに関しては、VRAM がどこから割り当てられるかが違ってくるので、全然動かなくても不思議ではない。 ま、そのために英文モードカートリッジがあったということだ。

なお、オーストラリア版の JX などは、YouTube で見つけた動画を見る限り、BIOS は PCjr に近いものになっているように見えたので、この特殊事情は日本版 JX に限られたものであろう。

2016/06/02 のコメントを読む・書く


03 (金)

%1 C extern

C で複数のソースファイルでグローバル変数を共有する場合:

$ cat a.c
int a=100;
$ cat b.c
extern int a;
main(){return a;}

みたいな感じで extern で外部参照を宣言して使うのが普通だが、実は extern はなくても動くという話。 もちろん、この例でいうと a.c がなくても動くようになってしまうけど。

$ cat a.c
int a=100;
$ cat b.c
int a;
main(){return a;}
$ cc a.c b.c
$ ./a.out ;echo $?
100
$ cc b.c
$ ./a.out ;echo $?
0

これは C FAQ 1.7 にも書かれているように、C の文法としては何も間違っていないのだが、長年 extern を当たり前のように使ってきたために、今更こういうのを見せられると、そういえば昔見た何かの C の本にそういうのが書かれていたんだっけなぁ、みたいな、そんなぼんやりした記憶の中であった。 長年っていっても、C をそれなりに使い始めてからまだ 20 年ぐらいだけどね。

ちなみに、ひとつのファイル中で、後のほうで初期値を設定する書き方も可能だ。

$ cat a.c
int a;
main(){return a;}
int a=100;

こうしてみると、どこか関数のプロトタイプ宣言に似ている感じがする。 これも、最初の宣言に extern をつけても OK だ。 そういえば、関数のプロトタイプ宣言にも extern をつけても OK だな。 何の役に立つかと言えば、以下のような初期化をしたければ必要になる、といっても、これも初期化のない宣言はわけて、extern をつけるのがよいか。 いや、そもそも、こんな初期化が必要になる機会はないと思う。

void *q, *p=&q, *q=&p;

なお、ちょっと試してみたところでは、C++ では extern をつけない書き方は許されないようだ。

2016/06/03 のコメントを読む・書く


04 (土)

%1 レンタルカート

藤野。3 回乗ってベストタイムは 40.2 秒ぐらい。

%2 どようび

10 時過ぎに中央道で藤野へ向かうも、結構混雑していて時間がかかった。 圏央道の合流の先で少しよくなったものの、小仏トンネルを過ぎても引き続き混雑しており、事故もない割には何かの連休のような混雑だ。9km 20 分の表示のところ、バイクの小ささを活かして車線変更しまくって 15 分であった。 適切な渋滞情報であったといえよう。

12 時過ぎに中央道・首都高で秋葉原に向かう。 外苑-三宅坂 JCT の渋滞 2km という表示を見て、ちょっと引っかかる程度かなと思ったが、工事渋滞でひどいことが判明。 途中で諦めて都心環状線の逆回りに入って神田橋、昌平橋経由であきば食堂に寄って昼食。 一方通行の道をぐるぐる回ったので、ドスパラ秋葉原本店横の T-ZONE・ドスパラ跡地が更地になっているのも確認した。 噂によるとここにアパホテルが建つんだってね。 しかし、このあたりは観光地で歩行者が多く車はほとんど通らないので、皆歩行者専用道と勘違いしているかのようで非常に通りにくいのだが、あきば食堂の前の道は歩行者も少なく、異空間にワープしたかのようでいつ来てもおもしろい。

14 時過ぎに首都高で渋谷へ向かう。 首都高は神田橋が近いのかと思っていたが、Google Maps は 5 号線に案内した。 これはこれでわかりにくい道のりだった。 しかも乗った直後にジャンクションで車線変更が必要ってね。 都心環状線の途中で Google Maps はいつの間にか一般道と勘違いし、渋谷方向へは一般道が併走しているため勘違いが解消されないまま。 渋谷で来週の祭りのボランティアの説明会に参加。 警備担当らしい。 警察・警備員のお手伝いってとこかな?

16 時頃から一般道経由で帰宅。246 号線もかなりの混雑でいまいち、登戸経由より二子玉川経由がいいかと思ってみたがそれもいまいち、新宿出て甲州街道のほうが早かったかなぁ。 いや、首都高に乗ってしまったほうが早かったに違いない。

2016/06/04 のコメントを読む・書く


05 (日)

%1 にちようび

梅雨入りだとか! 九州はきのう、関東はきょう。 まぁ先週の土日の鹿児島の天気はすでに梅雨っぽかったけど。

JX エミュレーターに PCjr カートリッジのイメージの代わりに本物の PCjr の ROM イメージをそのまま突っ込んでもなんと動くらしいのだが、拙作のエミュレーターは、ソフトウェアから読み取れない CG1 (キャラクタージェネレーター1) の ROM の代わりに CG2 の ROM を代用しているので、そこのところのフォントがちゃんとしていないと文字がちゃんと出ないとか。 そんな話なので、BIOS のフォントを読み取って埋めるプログラムを作ってみた。PCjr の BIOS にフォント読み出しのインターフェイスがあったかどうか、互換性を考えると面倒なので、2 色グラフィック画面に BIOS で文字を表示させて、それを VRAM から読み出すという風に作った。VRAM の構造が 1 行ごとに交互に別のアドレスに飛んでるやつで、そんなんだったっけ。 まぁいい。 そういう作りなので PC 互換機なら何でも動くわけだが、驚いたことに、QEMU や dosemu などの仮想環境で実行しても、実機 (JX) と全く同じデータが得られるのだ。 たった 256 文字とはいえ、もともと IBM の ROM に入っていたものと全く同じものが QEMU やら何やらの BIOS イメージとして世界中に流通しているということみたいだ。 いいのかどうかは知らない。

さて、目の前にある、IBM からの流れをくむであろう Lenovo ThinkPad X201 でフォントの読み取りを試したところ、微妙に異なるデータが出てきた。 スペード、クローバー、音符、クォーテーションなどの記号から数字・アルファベットに至るまで、全体的に細部が異なる文字が多い。 へぇー。

%2 Windows 10

自宅の Windows 10 PC がいつの間にかご機嫌斜めになっていて、スリープ後、数分でなぜか復帰し画面も表示されないまますぐに休止状態に移行するという状態になっていた。 イベントを見ても「システムがスリープ状態になります。」の項目に「スリープの理由: スリープ状態から休止 - 固定タイムアウト」という意味不明なログがあるのみ。 スリープ後に指定時間で休止状態に移行するという、そういう設定項目は確かにあるのだが、その設定はオフのままだ。 再起動しても同じ状態で、理由がわからないままで、休止状態をオフにしよう、と思ったが、GUI で休止状態をオフにできるのは Windows XP あたりまでか?

探すと powercfg コマンドで設定できることがわかったので、それで休止状態をオフにしたところ、謎の復帰挙動はなくなったっぽい。 どうせハイブリッドスリープはオフにしていたはずだし、高速起動にも興味はないので休止状態はオフでよい。

2016/06/05 のコメントを読む・書く


06 (月)

%1 げつようび

職場で聞こえる不良 HDD らしき不穏な音。 あれこれ自分のマシンからじゃねーかw 幸いカーネルのエラーログがひとつあっただけで SMART にも何も残ってないという状態ではあったが、状況が悪化する前に対処しなければ。

たまたま rsync で気づいたんだけど、ひょっとして -S (--sparse) つけてても、ゼロデータはネットワークを流れるのかね? ひたすら ssh プロセスの CPU 使用率があがってたということはそういうことなのかなぁ。 なんかいまいち。 そして rsync プロトコルにしたら ssh よりも遅くなってますますいまいち。

近所を歩くと結構一戸建ての新築分譲が建っている。 どこかの一戸建てがなくなったと思ったら、土地が半分になって分譲が、どこかのアパートがなくなったと思えば土地が半分になって、そしてどこかの会社の建物が取り壊され始めて、みたいな感じで、意外と変化している。 だいたい 4000 万前後のものが売れ残り、しばらく売れないとちょっと値下げされて、みたいなパターン。 しかしこれ、いくら霊園が近くても東京都内なわけで、場所柄半分以上土地代なのではって感じ。 このあたり中古物件でも 2000 万以上という感じだもんなぁ、駐車スペースがあるような一戸建ては。

2016/06/06 のコメントを読む・書く


07 (火)

%1 インドカレー

カレーが食べられるお店が閉店しまくった話を書いたのは記憶に新しいが、火災で閉店したカレー屋さんがあったところの隣にインドカレー屋ができていた。 そういえば最近チラシ配ってたんだよなー (ぉぃ)。 前に別の飲食店が入っていて何回か入れ替わっていた場所で、そこそこ広いし、カレーは美味しかった。 ナンのついているランチセットはちょっと多いくらいだ。

%2 かようび

朝までは降るかもみたいな、曇りの天気予報だったが、Yahoo! の天気情報の実況を見れば、全力で (?) 雨らしいことはわかった。 ひどい雨ではなかったけど、結局、霧雨みたいな感じのやつが昼過ぎまで続いていて、全力で梅雨っぽい。

中央道が集中工事だそうで一般道にも渋滞の影響があるという、京王バスの掲示を見かけて、ふうん。 調べてみたら車線規制かな、それで一般道に迂回する車がどれだけあるかといえば、微妙な気がするけどねぇ。 朝の甲州街道なんて、普段からあまり流れがいいほうではないと思うし。 今日は、おそらく中央道というよりは雨の影響でかなり混雑していた。

%3 フォント

JX のフォントは 16x16 でも左端が 1 ドットあいているデザインである。 何となく探してたら東雲フォントの 16 ドットゴシックがちょうど左端が 1 ドットあいているデザインみたいだ。 へぇー。

半角文字はというと、罫線のところは 8x16 めいっぱいで隙間がないが、制御文字を除く JIS X 0201 の部分は左端が 1 ドットあいているように見える。 東雲フォントの 16 ドット版だと ASCII の部分でも 8x16 めいっぱいにデザインされている記号もあるし、アルファベットなどは右端が 1 ドットあいているように見える。 ちょっとデザイン方針が全角文字とは違うのかも知れない。

16 ドットビットマップフォントで好きなデザインは jiskan16 で未だに KTerm のデフォルトとして使っているのだが、コイツは 16x16 めいっぱいのデザインである。 権利関係で SONY がどうのこうのというのを思い出したがそれは 8x16 のほうで、16x16 はどうやら一般的にパブリックドメインと認識されているようである。

なお、フォントのプレビューはこんな強引なコマンドでやってみた:

zcat /usr/share/fonts/X11/misc/shnm8x16r.pcf.gz | dd skip=5 |
convert -size 32x4096 -depth 1 gray:- png:- | display -

2016/06/07 のコメントを読む・書く


08 (水)

%1 PCjr

ibmpcjr rom で検索すると...!?

拙作 JX エミュレーターに PCjr の BIOS で起動するモードを実装してみた。 オーストラリア等で売られたという JX はこういうスタイルだったのかな。JX 用に改変された BIOS を使っていたのか、JX でオプションになっている RS-232C カードが標準装備された上で PCjr の BIOS をそのまま使っていたのか、どうなんだろうか。 あと、PCjr は BASIC カートリッジがあったらしく、DOS から BASIC を立ち上げるにはそれが必要だったらしい。 日本版の JX の英文モードカートリッジは、再起動等の処理に一部変更の加わった PCjr の BIOS と BASIC カートリッジが一緒になったものということのようだ。

あとテキストモードの 16 色がちゃんと出ない & ブリンクしないつくりになっていたのでなおした。 ビデオのところではないが、変な workaround 的なものがノーコメントで混ざっているとか、我ながらいい加減な実装である。 早く何とかしないと。 と、15 年前から思っている。

PCjr では Ctrl-Alt-Insert で再起動をかけるとテストモードみたいなのに入れるらしい。 そういえば JX でも BIOS のコードにそういうような記述があったっけ、JX にはそのテストモードみたいな機能はないんだけど、Ctrl-Alt-Insert でも再起動するようにはなっていた。

%2 原付

原付にしばらくぶりに乗ると、後輪ブレーキを離した時にぺたぺたというような音がする。 ブレーキシューがひっつく? しばらくブレーキを使えばぺたぺたしなくなり、普通になる。 ききが悪いわけでもないし、ドラムブレーキだからそういうこともあるのかな。

前輪ブレーキはだいぶ鳴くが、ドラムブレーキなので仕方が無い。 しばらくぶりに乗ると最初だけいわゆるカックンブレーキと呼ばれる症状が激しいキーキー音とともに極端に出るが、ドラムブレーキなので仕方が無い。 しばらく使ってればだいたい落ち着くけど、もし路面が濡れていたりしたら、どこまでブレーキをかけたらタイヤがロックするのかまったく読めない。 そんな安定性のなさも、ドラムブレーキなので仕方が無い。 原付でも前輪にディスクブレーキを採用している車種も多いが、その理由は自動二輪にも乗る今ならよくわかる。 車重が軽い原付は雑な運転操作でも乗れるけど、前輪ドラムブレーキってのは逆に雑な操作を強要してくるというか、精密な操作をしたくてもディスクブレーキよりも難しい感じ。

2016/06/08 のコメントを読む・書く


09 (木)

%1 JX

JX の ROM カートリッジの仕様を眺めると、ROM のアドレスはピンで指定するようになってるんだな。96KB (96KiB) までで、32KiB ごとのチップが 3 つ載った絵が時代を感じさせる。

試しにテストプログラムを書いた。 前に作ったブートセクターにおさまるゲームを移植。 ふんふん。CRC が必要なのだが一般的な CRC-16-CCITT らしい。 へぇー。

それで作れたはいいが、ゲームオーバーの時の表示がおかしいぞ? あれ? QEMU では期待通りに動いているけど... これは何のバグだ? BIOS の挙動が違うのか? それとも CPU のエミュレーション? ('A`)

そうそう、どうやら ROM カートリッジは D0000h 以降を使うようで、その手前の、C0000h からの部分には拡張カードの BIOS などが置かれて、チェックサムがあっていれば初期化ルーチンが呼び出される仕組みがあるらしい。 あるらしい、っていうか、これって PC/AT 互換機で未だに VGA BIOS などが置かれているのと同じ仕組みじゃないか? そして、JX にも HDD が搭載できたという話を見たことがあるが、それもこの領域を使っていたに違いない。 なるほど納得。 なお、この拡張カードの ROM 部分は、GA-08 とかいう JX ならではのアドレス・デバイスマッピングの仕組みは通らず、メモリーアクセスは直接カードに届く仕掛けのようだ。

%2 原付

いつの間にか、中古購入時からのオドメーター一周、10,000km 走行していた。 ここまで来てもあんまり状態は変わっていないことから、購入時点で一周していた可能性も否定できず、ほんとの走行距離はもはや不明だ。 相変わらずエンジンだけはまだまだいけそうなものだが (スーパーカブと同じエンジンだし)、車体はどうだか。 普通のベルトドライブのスクーターとは違って、ドライブチェーンが伸びるという地味な症状はあっても、ドライブベルトが切れるっていう派手なイベントはないしなぁ。

2016/06/09 のコメントを読む・書く


Powered by Tomsoft Diary System 1.7.4

/var/log/hdk.log コメント一覧

トップ / 日記索引 / 日記 (2016 年 6 月上旬)

Hideki EIRAKU