日記 (1998年文月)

日記の表紙前月(水無月)翌月(葉月)
1998年7月1日(水)
o パッチの commit どもです >ま ね きさん

o 10時。ファイルサーバが直ったみたい。

o core な thorpej 氏からお返事。紙に書いて air mail しろってか?

o 東芝の新ノート、全部ねおまじっく(号泣)。そういう意味では Lib70 の後継は無いなあ。

マグネシウム合金は塗料が乗りにくいんじゃないかとニラんでいるのですが、 本当は?

1998年7月2日(木)
o お、パッチの当たったコードが流れてきた。 コンパイルできるはずだが、com と zs は動かないかも。

o 初めて PAR AVION な mail を送る。床屋さん模様の封筒持って郵便局に遠征。暑い…。

「さんふらんしすこ」でなくて「きゃんべる」("p" は黙字)になってた。110円。

o ここに投げると誰が読むのかな、と telnet mail.*.org smtp して ehlo して expn するも、502 unimplemented を喰らう。まあいいか。

o 某アドレスに公開鍵を送る。ちょうどこの前 ssh を使えるようにしておいたから簡単。

o お、またなんかファイルサーバ落ちてる。このところ、毎日だな。 どうでもいいけどアナウンスすれ。

1998年7月3日(金)
寮の部屋は夜中でも 30℃。でも寝る(笑)。

o ウチの大学の公式ページダメ認定をお願いしますー(笑)。

o curses は、vi の端末制御コードを汎用に使えるようにしたものだと どこかで見たような…。SunOS で ldd vi しても curses 出ないし。

あのびるくんは、user interface の設計は上手だけど(csh とかも)、 謎のバグがいっぱいあったりして、コードの質は今一だなあ。

o PC Watch のバイオチップの記事って、何か勘違いしていないか? 微細化技術の代替になりそうには見えないんだが。 ちゃんと読んでないだろ…。

o NetBSD の lib/libc/db のコードで、いつの間にか pread(2)/pwrite(2) を使うようになっていた。SunOS 4 にはない…というわけで fake する。

o 昨日のトラブル以降 news サーバが死んだまま。

1998年7月4日(土)
風強し。

o ガビーン、にやられてるっ。

o UVM 化した NetBSD/x68k を、最もヘビーに使っていたと思われる人物にぜひ試してもらいたいんですけど、ダメ?

o abbrev の使い方。私のオレエディタ(改造しまくり xvi)では、

	ab #in #include
	ab #In #include
	ab #en #endif
	...

とかしてます。本物の vi では # が含められないみたいだし、普通の xvi では abbrev が未実装なので、世界中で私しか使ってないのかも。

でもこれも本来の abbrev の使い方じゃないような…。

o あ、finger をログしてるのね。 sup@某 に finger して終っているのを確かめてから sup …ってのは cron 起動のスクリプトで自動でやっているので、メイルされても人は寝てます(笑)。

それはそうと、○ ね ○さんて寝てるんだろうか…。

o む、反応ないぞ。vm 溢れた? sup できん…。ぶちするか?

o news サーバが復活?

1998年7月5日(日)
o うーむ、やはり sup 起きんな…。

o vi に転びましょう。control 使わないわけではないけど。

o 某漫画で(自明?)、ロンドンブーツだ!!(©ぐ^H ガサ入れ)、1号、2号 とかいうネタがあって、訳が分からず web 検索で調べたのは内緒。TV 見ないの。

o 外し方がよく分かんなかった。

1998年7月6日(月)
o CGI と SSI とでは、SSI の方がセキュリティ・ホールを作りやすいという問題があるようです(参考資料)。

# Small Scale Integrated circuit に見えてしょうがない(笑)。

o 確かに日本語を入力しようとすると、状態がさらに増えて厄介かも。 私は skkfep を、「ESC を押すと日本語モードを解除して、さらにエディタに ESC を送る」設定にしているので、結構快適だったりしますけど。

o const は storage-class specifier ではなくて、type qualifier です。type specifier と type qualifier は、(semantics 上問題がない限り)任意の順序で書けます。

type specifier
char, unsigned, void, ...
type qualifier
const, volatile
storage-class specifier
auto, extern, register, static, typedef

storage-class specifier が先頭にあるべしってのは ISO/IEC 9899:1990 (ISO C) の 6.9 Future language directions の記述 (6.9.3)が根拠でしょう。現在は先頭でなくても間違いじゃないけど。

storage-class は「型」ではないので、仲間外れなんでしょうね。

なお、ANSI X3.159-1989 (ANSI C) と ISO C は、ページがずれているだけで同じものだそうです。JIS X 3010:1993 (JIS C) はその日本語訳なので、同じもののはずです。

o ダメ認定。にや。

o 2130 コンソールに行って、ぶち。Solaris 2.4 におちょくられているような気が…。

1998年7月7日(火)
七夕。薄曇り。

o usr.bin/fstat: errx() 使うなら <err.h> 読まなきゃ。 usr.sbin/lpr: 配列 host の宣言/定義の不整合。

o 新 Let's Note は 2キーロールオーバ…。ぺけろくのようだ。 悲しすぎ。そういうところで手を抜くマシンじゃないと思ったのになあ。 デザイナが違うんだろうか。 せめて 3つ目が入ったら無視するとか(黒 NeXT みたいに)してくれないと。

既に買っちゃったひとは、マトリクス調べてソフトでがんばるしか。

o 某助手に、自転車のタイヤ交換を依頼。 チェーン全体にカバーがかかっている旧式なやつだったり、 さびさびで歪みまくりだったりで、謎の苦労をしつつ、 18時過ぎから始めて1時間位で無事終了。 ま、しばらくは動くでしょう。ありがとうです。

o 満開製作所

1998年7月8日(水)
o ロボいきなさい!に捕捉されていた。どもです。

o MI な z8530* を使った zs な console は、sun3, mvme68k 他で実装されているようです。configure 前の console は、softc を使わずに、割り込みなしで動作させるみたい。

o インタフェース変えちゃっても、大して文句出ないような…。 そんなにユーザがいるとは思えん(笑)。

そういえば、ディスクのパーティション数を 16にしたら便利な気がするけど、さすがにそれははまりそう…。

そういえば Human68k のパーティション管理方法では 16GB が越えられないだっけ。 だれか拡張してない?

o Solaris 2.4 の /usr/ccs/bin/lorder って作業ファイルを消しそこなうみたい。ううむ。

↑ Solaris 2.5.1 では直っていた。やはり OS バージョンアップも仕様に書かないと。

o 某ダメページが学内 news で問題にされてる。ぴんち(←?)。

o ぎゃふん。bus.h を使っていないのは、 Z8530 はポートのマッピングが規定されていない(Z8030 では決まっている)からかな。

o いやなに、情報源が「ある方」だったりして、 もしかしてえらい人にこのにっきバレてるかも(汗)って思っただけなんですが、想像を逞しくする書き方でしたね。

ま、公式ページには我々はノータッチということで…。

1998年7月9日(木)
o 複数の free list を持てるようになったらしい。 実メモリを、DMA 通るか、とかで区別して持てるのね。 あ、UVM だけだな。Mach VM の方はもうメンテされないのか?

block special を mmap(2) できるようになったらしい。あまり意味ないけど。

o c (ディスク全体)を入れて 16になるからちょうどいいかと。 OpenBSD はパーティション数が 16になったとか聞いたような気がするけど、さすがに major は変えたのかな。

o 教育というより学習してくれというか…。 「この間同じような失敗をしたので」って、またやってりゃ世話ないや(笑)。

1998年7月10日(金)
曇り。

o 廊下の蛍光灯の一部(階段/非常階段の前、曲がり角)がホタルックになっているのは、非常時のため? 廊下には非常灯がないからなあ(階段にはある)。

o panic: trap (謎汗)。

o vi (本物)は : コマンドの最後は ESC でもいいのね …って遊んでいたら core った。ダメぢゃん >Bill Joy。

o 19時。どしゃぶり。久々の雨。

o fj.kanji (7/1)より。 CP/M86 では間隔を 0x2020 で表すらしい。

ESC $ B と ESC $ ( B は同じだが、現在は ESC $ B だけみたい。 @, A, B だけね。読むときは両方受け付けるのが無難だな。

1998年7月11日(土)
雨模様。

o 4.4BSD では、setsid(2) して session leader (というか orphaned process group) になると、SIGTSTP, SIGTTIN, SIGTTOU は無視されますよね。 フロントエンドプロセッサのような pty を使う(fork(2) して子は setsid(2) して制御端末を取り直す)プログラムで、子プロセスの suspend を捕捉して親ごと suspend できると便利なので解法がないか調べたところ、

  1. fork(2) して setsid(2) したのち、さらに fork(2) して孫(?)が setpgrp(2) する。最初の子は signal の中継のみをする。
  2. ptrace(2) する(ぉぃ)。
位しか見つからず、どちらもあまりに牛刀なのであきらめました。 なんかいい手はないのかな。 仕方ないので :map ^Z :!exec kill -STOP 0^M してますが(← vi 使い)。

おっと、全然関係のない話だな。

1998年7月12日(日)
o xvi いじり。ちったあましになったか?

o X68030 をバラして、MPU にゲタを履かせて FC2 を非接続にする。 ついでにデジカメで撮影したりなんかして。開けるの面倒くさすぎ。

o メモリスイッチが 4MB 設定のまま NetBSD のフロッピーから boot しようとしたら、real mem の行を表示して固まった。メモリ不足?

メモリスイッチを書き換えて、BOOT MENU と apr_keep.dat (笑)を SRAM に転送。

o で、X のバイナリをもらってきて展開して startx する。 panic: MMU fault (ぉぃ)。grfon + 0x20 で落ちてる。また NULL ポインタにさわってるのか? continue したら cpu_reboot + 0x54 で panic: MMU fault (爆)。ダメじゃん(汗)。

o MACHINE_NONCONTIG を外すと、base memory (12MB 以下の部分ね)だけを使うはず ……あれ?

o いつも思うのだが、なんで投票所があんな危険な所にあるんだ。 歩道はないわ、車びゅんびゅんだわ。こわすぎ。

1998年7月13日(月)

o typo って、DEFAULT の綴り間違いは私のせいじゃないです。

i386 は、コンベンショナルメモリと拡張メモリ(っていうのか?) とが必ずあるので(640KB じゃ BSD は動かん)、常に NONCONTIG なんでしょうね。 MACHINE_NEW_NONCONTIG でないときは、vm/* で MACHINE_NONCONTIG を見てるので必要だったみたいですが。

o 、「さま」はけんと様の専用敬称(拒否権なし)なので、適当に変更をお願いします。

o NetBSD/m68k に ELF が追加された関係で、user land 絶賛コンパイル不能中。

o たんぽぽ ひとりごと。に捕捉されていた。どもです。

1998年7月14日(火)
o DDB を信用せずスタックダンプを解析。fp がつながっていないと見えないのね。本当に落ちているのは iteoff + 0x4e だ。iteoff() の先頭で得ている ip が NULL だ。NULL ポインタという予想は当たり(苦笑)。

要するに、struct cfdriver の cd_ndevs は、attach されている unit 数ではない、ということだな。

grf1 の grfon() から ite1 を iteoff() しにいく(ite1 はない)のは、どうすればいいのかな。何もしなくていいのかな?

o というわけで書き換えて再起動。startx 今度は落ちないが…同期取れない。デフォルトのモードがそれかい。

X68kConfig を書き換えて……おお、動く。かんどー。遅いー(笑)。

o m68k 版の lesstif-0.85.3 と mozilla-19980603 をもらってくる。 libX11.so.6.1 も gdb で書き換える。おお、動く…っていうのか?

  1. 12MB メモリでは、20MB ほど swap する。UVM のおかげでなんとか動く。
  2. レンダラ遅すぎ。68030 25MHz では、back しただけで表示まで待たされる。
というわけで、動かして喜ぶ程度にしか使えませんな(笑)。

o NetBSD に USB サポートが入ったみたい。

1998年7月15日(水)
o あう、振られてるー。アナログや分布定数はよく分かんないので…。 経験豊富そうな雛姫さんあたりに 301 丸投げ(謎) してしまおう(笑)。

データ線はバス接続で「重い」ので、タイミング的に厳しくなりがちってことかな? でも太くしたからといって、同じ回路でバンド幅が増えるわけでもないし、なんか変。

o trace に frame が指定できるですか。 でも、今までのところ、一番良く使ったのは落ちたとき trap() で見つける pc の値なので、これをシンボリックに出してくれるだけでいいかも。

o 11時頃よりネットワーク工事。

o むむ、68040 では動かんのか。0x0turbo を GET すべきか? (←おねだり?)

1998年7月16日(木)
日付が変わったあたりから雨。

o 岐阜市長森は、帰省時に通るなあ。 私より西の方の出身者の方がよく知っているはず。 高山線は、未電化で単線で、当然本数も少ないので待たされるかも。

o 著作権は財産権なので、財産をどう処分するかが所有者の自由であるのと同様に、 権利の行使(黙認することも含む)は著作権者の裁量にまかされるらしいです。

o 投票率の話。政治家の給料や政党助成金には投票率を掛け算する、 とかすれば命懸けで投票を呼び掛けるだろうな。あ、かえって投票率下がるかも(笑)。

o そこ、Xってゆーなー(汗;)を今朝見たら "一日平均:1.0アクセス" だったような気がしたが、夜に見たら 66.0 だった。謎。

1998年7月17日(金)
o あう、某 ML で L なひとに暴露されてる。 "NetBSD" とか "x68k" とかは基本的に省略されるので、文脈で読んでね。

o libbfd が コンパイル不能なのは、並列 make をしていたためらしい。依存関係が足りん。

o ついでに libbfd.a の中に libbfd.c を入れてしまうのをなんとかしようと思って make を調べていたら、マニュアルにない .INVISIBLE というのが使えるみたい。にや。

つうわけで、久々の pr 書き。

o 単に sort されているようなので、もっと若い(文字コードが)人を 「だったのに」化(謎)すればいいのでは。

o 尖端(ぉぃ)に来てたっすか。いなかへようおこしやす(ぉぃ)。

1998年7月18日(土)
o はうンな人々が北の方に集結しているらしい。ところで「はうン」ってどういう意味?

o にや

もじら 5.0b1 は、起動時、タイトルバーに "Netscape Navigator 5.0b1" と表示される(微笑)。速いマシンだと一瞬で消えて見えないかも。 また、何かするたびに 2回ずつ redraw されるようだ。これも速いマシンだと分からないかも。

遅いマシンはソフトウェアの質を高めるのに役立つらしい(苦笑)。

o あ、あの程度はどうってことないですけど(汗)。 (いまだに、いちおう秘密のつもりらしい(笑)。)

o おや、lannet さんとこが Not Found だ…。

1998年7月19日(日)
曇り。

o ほう、NCSA httpd は index.{html,cgi} のないディレクトリに README ファイルがあると、ディレクトリリストに README の内容を付けてくれるのか。知らんかった。

爆睡。

1998年7月20日(月)
おや、なんで今日休みなんだ?

o a.out を Human68k の .x に変換する手抜きプログラムを書いてみたりして。 Human68k の NEmacs はロードアドレスを変えて差分を取るとか聞いた覚えがあるので、 アイデアだけいただき。

o …はいいが、startup やライブラリが要るな。startup は拙作のがあるので asm2gas で MIT syntax に変換…fpsp & 060sp 以外は完全には変換してくれないのね。

1998年7月21日(火)
薄曇り。

o gas の jbsr は -mc68000 のとき bsrs → bsr → jsr; -mc68020 のとき bsrs → bsr → bsrl.

020 用の gcc + gas で 68000 なコードを吐くためには、 -m68000 -Wa,-mc68000 が必要。

o 偶然見つけたが、PD libc 1.1.32 の _dos_hendspsp() (src/sys_dos/hendspsp.s) バグってるー。8 じゃなくて 9 だ。 <sys/dos_i.h> の方は正しいみたい。

BUS_ERR() って _dos_memcpy() なのか。…そうなんだけど、何か違う…。 _dos_bindno() で 0 積んでるのは何?

o ガビーン。Solaris 2.4 の chown(8) は owner:group とか owner.group とか書けない。2.5.1 のは書ける。

o THUNDER CEPTOR? ナムコばっかりだし。

1998年7月22日(水)
o お、いきなり当ててしまった。 オールドナムコぽいことや忘れるほどマイナーなこと(私は見たことないです(笑)) が文脈から読めたのと、まるで正弦波のようなあの音(謎)とが勝利の鍵(?)ですね。

o NetBSD の i18n 化。とりあえず curses ですか(ぉぃ)? (← window(1) を使ってみたいらしい(笑)。)

1998年7月23日(木)
o alpha だとコンパイル通らんのか。

↑ -current じゃなくて 1.3 だかららしい。

o 0420 おや、SDB 死んでる? shonan.ne.jp のトラブルかな。そこ、 09/20 03:26 ってゆーなー。

5時過ぎの更新で直ったみたい。

o ATOK12 にはSKK の「数をパラメータとする表現の入力」、「読みのコンプリーション」 に相当する機能が実装されているらしい。

1998年7月24日(金)
昼夜逆転(ぉぃ)。

o あ、お楽しみを横取りしてしまったようで申し訳ない(笑)。

o ううむ、やはり資料として DECstation (Ultrix)も確保しておくべきだったかも。 たまたま自作 coroutine ライブラリ(preemptive でないので thread ではない)に残っていたので分かったけど。

IRIX は endian の分かるマクロを定義してくれないみたい。

o 0315 寮ネットワークで怒涛の ICMP echo の broadcast が。重いからやめれ。\ "receiver ring buffer overrun" って何事かと思ったよ。

o なぜか NetBSD/alpha を upgrade する必要に迫られて、binary snapshot をもらってくる。フロッピーで起動……やっぱり DEC 3000/300 が入ってないんですけど…。 TURBOchannel なマシンにフロッピーが付いてる訳ないと思われているのか?

面倒なので、1.3 のときのフロッピーでやる(笑)。scc ドライバがばぐばぐだ。

1998年7月25日(土)
o NetBSD/alpha 1.3F で SysV shared memory を shmdt(2) すると、なぜかスタックのマッピングが消えてしまって SEGV 喰らいまくり。謎。 SysV IPC なんか嫌いだ。

あ、UVM 付きだと shmdt() ってバグってるやん。やっぱり SysV IPC なんか嫌いだ(←やつあたり)。くっそー。 pr 書き(おまけ)。

このへん、mmap() とかに書き直せないの?

前者の pr は一瞬で close された。ソープ氏、暇なんだろうか(笑)。

o 怖くて今まで誰も火入れしていなかった某基板を動かす。 なんだ、動くやん。びっくり(おい)。

o で、SS20 が召し上げになったので、IPX を使ってみたり。私の使い方では、気にするほど遅くないな。

1998年7月26日(日)
o 某所のにっき見てたり、某ソース見てたりして、「SCSI コマンドー外伝 (以下略)」 てのが脳裏をかすめるが、寒すぎるのでだまっておこう。

o 散財部は、日本経済を支えているのでは(笑)。

o 最近 NetBSD はコンパイル時に lint するようになったようだ。 コンパイル時間がかかるのはともかく、ウチのクロス lint はすぐ core るんだな(汗)。

1998年7月27日(月)
雨後曇。蒸し暑い。

入試やってる。

o クロス lint が Solaris 2 (sparc) で core るのは:

  1. long double (8byte)は 8byte で align する必要がある。
  2. malloc して未初期化の領域を使っている。
かららしい。後者は xlint のバグだな。pr 書き。前者はクロス環境全部でやると m68k との互換性でそこはかとなく不安が漂うので xlint だけ ALIGNBYTES=7 した。

o SPARC Classic は sun4m だと、一応ツッコんでおこう(笑)。 sun4c はカーネルアドレスがそのまま I/O から見えるので便利なんだが(誰が?)、速度的には不利だったんだろうな。

o Alpha AXP asm と格闘したりして。RISC はアーキテクチャだけでなく、 コンパイラの動作(レジスタの使い方とか)も理解しないと書けないなあ。

で、アセンブリ化しなくても動かないんですけど…。

1998年7月28日(火)
o 深夜に蚊と格闘。素早い。囮作戦尽く失敗。

o 変更が多くて、クロス環境を追随させるのが大変だった。

しかも const まわりの不整合でコンパイルできないやん。

o LCD の I/O が書いてないのは、もしかしてソフトウェア制御で平均で ±0 になるように交流駆動しないと電気分解してしまうとか、そういう理由だったりして。

1998年7月29日(水)
o またしても深夜に蚊と格闘。昨日のやつとは種類が違うみたい。

o DOS コールはほぼ機械的に生成するようにした。 IOCS コールも欲しいが、こっちはレジスタ渡しだから面倒そう。

ちなみに Human68k の gcc と BSD の gcc とでは、関数で壊してもいいレジスタが違う。-fcall-used-REG するという手もあるが。

o IOCS も一部機械的に生成。レジスタ渡しなので、全組み合わせを書き下す(汗)。

PD libc で move.q #$ff,d0 して and.l d0,xx している所があるが、 move.q は 8bit→32bit に符号拡張されるから無意味だよな。

1998年7月30日(木)
o 昨日の 22 時頃 home のファイルサーバが死亡。今日の 1123 復旧。 お、ちゃんとアナウンスがあった。

o DEC (ってまだあるのか?)漁っていたら、NetBSD の misc/dec-docs/ に無い Digital UNIX Calling Standard for AXP Systems てのがあった。 PostScript も置いあるし。これでアセンブリもバッチリか?

o dynamic link なプログラムで、shared library にあるのと同名の関数を定義しているとき、その shlib を dlopen(3) してその symbol を dlsym(3) すると、どちらの関数のアドレスが得られるのが正しい?

o 現実の世界では、確率が 0 のできごとが平気で起こりますよね。 例えば私がこの時刻にこの座標にある確率は、座標を連続量とすれば 0 と言っても構いませんよね(←仮定が間違ってる?)。

o mnews 1.20 (だっけ)以降なら、投稿時に NNTP が切れていたら再接続するんじゃなかったかな…。

1998年7月31日(金)
ようやく梅雨明けらしい。

o sd0 から順に探して最初に見つかった所から起動するようになっているのは、1.3 では sd の struct cfdriver から SCSI ID が得られなかったからですよね。 -current では struct sd_softc の定義が別ファイル(sdvar.h)に分離されているので、 その気になれば sd_softc から scsipi をほじくって SCSI ID を見つけることが可能みたい。

# やっていいかどうかは謎。

o NetBSD で NFS v2, v3 のどっちで mount しているか知りたい、という話題が。statfs(2) で分かるんではと思ったのだが、 statfs ではマウント時に指定したフラグがそのまま返ってくるだけだ。 sys/nfs/nfs_vfsops.c:nfs_statfs() では現在の flag を渡しているよなあ。……あ、 sys/kern/vfs_syscalls.c:sys_statfs(), sys_fstatfs() で上書きされてる。 うーむ、仕様? バグ?

日記の表紙前月(水無月)翌月(葉月)
ITOH Yasufumi