日記 (2006年7月)。
$Id: 200607.php,v 1.45 2009/05/22 04:54:27 isaki Exp $
≪ 2006年6月 | 2006年8月 ≫

2006/07/01 (土)
今月から NetBSD 日記もこっちにマージしてみるテスト。 もともと NetBSD/x68k で遊んでたことを書き残すメモから 派生した NetBSD 日記と、もともと独り言を書き残すメモから 派生した(普通のほうの)日記は、全く趣が異なってたから 無理なく共存できてたんだけど、 どうも最近は境界がなくなりつつあるので… (あと二つあると管理も面倒だし)

2006/07/04 (火)
おうちのメインPCは 5年前に組み立てた PentiumIII/1GHz のマシンで 最近さすがに遅く感じてきてたのと CPU ファンが無駄にうるさいので、 新調することにして最近いろいろ調べ中。 意味はないけどどうしてもデュアル構成にしたかったのと、 静かで熱くないやつにしたかったので、Core Duo を中心に考え中。
えーっと、68030 えみゅは MMU のうち、 実装しなくていい後回しってことでよいのかな? (嘘)

2006/07/06 (木)
ヤクルト戦。6-7 で勝利。4点差を逆転したのが今季初だってのも どうなん?って気が…。

2006/07/07 (金)
巨人戦。4-2 で勝利。 勝ってて余裕があったってのもあるんだけど、終盤、 代打で(木村)拓也が出てきた時は球場全体から拍手だった。 その打席はレフト前にクリーンヒットを打ったけども それでも拍手。そのままライトの守備についても拍手と 拓也コール。 うーむ、ずっとカープにいて欲しかった。
で、ライトを守る木村拓也。

2006/07/08 (土)
巨人戦。デーゲームでミッキー君も登板するのに、あいにくの小雨。 晴れてたら超満員だっただろうに相変わらずツキがないな。 まあこっちはこのくらいのほうが広々と観戦できるからそれはそれで いいんだけど。 試合は 3-1 で勝って3連勝。
その帰り、デオデオでお買い物。 店員が詳しいおねーちゃんだったので、わりと言われるまま。 今日買ったのは CPU、マザボ、メモリ、HDD。
家に帰って気づいたけど電源がないね。orz
とりあえず、すでに 68020 まで対応しててわりとべったりとした C で 書かれていて読みやすい musashi コアを 68030 対応にしてみようとかいう 夏厨のような行動に出る。 いやあ夏だねえ。

2006/07/09 (日)
近くのパソコン屋で、電源と WindowsXP (DSP版ってやつ) を購入。 ついに Windows なんぞをお金出して買ってしまったのが負けた気分。 ケースはその店舗になかったので取り寄せ。明日納品予定。

2006/07/10 (月)
休暇中。
ケースも来たのでようやく組み立てる。 AT互換機のメインPC としては 3代目になるかな。
CPUIntel Core Duo T2500 (2.0GHz)
メモリ1GB (512MB DDR2 533 x2)
マザーボードGigabyte GA-8I945GMMFY-RH
HDDSeagate SATA-II 160GB
光学ドライブIO-DATA DVR-ABM16G
電源WATANABE DENGEN 400W
ケースパソコン工房オリジナル?
まあ何がすごいって、音がほとんどしない。 隣の24時間稼動のサーバマシンのほうがうるさいから 電源入ってるのか切れたのかが音では分からなくて 電源ランプを確認しないといけない。 ある意味不便なくらい。 やっぱりこいつはそのうちサーバにしよう。
あ、このケース、小ささに惹かれて決めたけど、リセットボタンが ついてないタイプなのな…。orz
あ、945GM ってば Core Duo つまり主にモバイル向けだからか知らんけど オンボードのグラフィックチップは 1024x768 までしかサポートしてないのねん。 うーん、しまった。今時そんなことがあるとは思わんかったな。 普段 1280x1024 で使ってるのでちょいと画面が狭い。 後でグラフィックボード買ってくるかなあ。 やっぱりどう考えてもグラフィックボードなしでサーバ用途だな。

2006/07/11 (火)
今日は NetBSD をインストール。と思ったけど 3.0 のカーネルだと オンボード NIC が認識できないのねー。うーむ。 USB のやつがあるからまあそれはいいんだけど、 あとここに生活環境をまたインストールせなあかんのかと思うと 気が遠くなってきて、逃避中。
Pen3 でコンパイルするより Core Duo 上の VMware で NetBSD 上げて コンパイルしたほうが速いんちゃうかと思って (何を?)、 Windows に VMware Player をインストール。 インストール方法は この辺 参照。 で、今日2回目(論理2台目)のインストール。
VMware 3 の頃の仮想 NIC は NetBSD では lnc デバイスに見えていたが (2007/12/21追記。lnc(4) は FreeBSD でのデバイス名。 NetBSD では pcn(4) に見える)、 VMware 4 くらい以降からあるらしい vmxnet っていうデバイスは NetBSD では認識できないっぽい。 VMware Player のデフォルトも vmxnet になっていて、このままだと ネットワークにつなげられない。 vmx ファイル (VMware の仮想マシンの設定ファイルみたいなやつ) で
ethernet0.virtualDev = "vmxnet"
っていうところを e1000 にすると 82545EM をエミュレーションする ようになるので NetBSD ではお馴染みの wm0 に見える。 ちなみに省略すると従来通りの lnc0 (2007/12/21追記。同じくここも NetBSD では pcn0) になるらしい。

2006/07/12 (水)
思い直して NetBSD に syssrc と pkgsrc を展開。。。 してて気づいたけど、ATA コントローラもサポートしてなくて pciide0 に見えてるのな。どおりで tgz の展開が激遅だと思ったよ。 こら大変だな。 ちなみに GENERIC カーネルでの dmesg。
NetBSD 3.0 (GENERIC) #0: Mon Dec 19 01:04:02 UTC 2005
	builds@works.netbsd.org:/home/builds/ab/netbsd-3-0-RELEASE/i386/200512182024Z-obj/home/builds/ab/netbsd-3-0-RELEASE/src/sys/arch/i386/compile/GENERIC
total memory = 1015 MB
avail memory = 985 MB
BIOS32 rev. 0 found at 0xfac10
mainbus0 (root)
cpu0 at mainbus0: (uniprocessor)
cpu0: Intel Pentium Pro, II or III (686-class), 1995.11 MHz, id 0x6e8
cpu0: features bfe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu0: features bfe9fbff<PGE,MCA,CMOV,PAT,CFLUSH,DS,ACPI,MMX>
cpu0: features bfe9fbff<FXSR,SSE,SSE2,SS,HTT,TM,SBF>
cpu0: features2 c1a9<SSE3,MONITOR,VMX,EST,TM2,xTPR>
cpu0: "Genuine Intel(R) CPU           T2500  @ 2.00GHz"
cpu0: using thermal monitor 1
cpu0: Enhanced SpeedStep running at 1200 MHz (1356 mV)
cpu0: unknown Enhanced SpeedStep CPU
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: Intel product 0x27a0 (rev. 0x03)
vga1 at pci0 dev 2 function 0: Intel product 0x27a2 (rev. 0x03)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
azalia0 at pci0 dev 27 function 0: Generic High Definition Audio Controller
azalia0: interrupting at irq 5
azalia0: host: 82801GB/GR High Definition Audio Controller (rev. 2)
azalia0: host: High Definition Audio rev. 1.0
ppb0 at pci0 dev 28 function 0: Intel 82801GB/GR PCI Express Port #1 (rev. 0x02)
pci1 at ppb0 bus 1
pci1: i/o space, memory space enabled, rd/line, wr/inv ok
ppb1 at pci0 dev 28 function 1: Intel 82801GB/GR PCI Express Port #2 (rev. 0x02)
pci2 at ppb1 bus 2
pci2: i/o space, memory space enabled, rd/line, wr/inv ok
Intel product 0x109a (ethernet network) at pci2 dev 0 function 0 not configured
uhci0 at pci0 dev 29 function 0: Intel 82801GB/GR USB UHCI Controller (rev. 0x02)
uhci0: interrupting at irq 7
usb0 at uhci0: USB revision 1.0
uhub0 at usb0
uhub0: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
uhci1 at pci0 dev 29 function 1: Intel 82801GB/GR USB UHCI Controller (rev. 0x02)
uhci1: interrupting at irq 11
usb1 at uhci1: USB revision 1.0
uhub1 at usb1
uhub1: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub1: 2 ports with 2 removable, self powered
uhci2 at pci0 dev 29 function 2: Intel 82801GB/GR USB UHCI Controller (rev. 0x02)
uhci2: interrupting at irq 3
usb2 at uhci2: USB revision 1.0
uhub2 at usb2
uhub2: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub2: 2 ports with 2 removable, self powered
uhci3 at pci0 dev 29 function 3: Intel 82801GB/GR USB UHCI Controller (rev. 0x02)
uhci3: interrupting at irq 5
usb3 at uhci3: USB revision 1.0
uhub3 at usb3
uhub3: Intel UHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub3: 2 ports with 2 removable, self powered
ehci0 at pci0 dev 29 function 7: Intel 82801GB/GR USB EHCI Controller (rev. 0x02)
ehci0: interrupting at irq 7
ehci0: BIOS has given up ownership
ehci0: EHCI version 1.0
ehci0: companion controllers, 2 ports each: uhci0 uhci1 uhci2 uhci3
usb4 at ehci0: USB revision 2.0
uhub4 at usb4
uhub4: Intel EHCI root hub, class 9/0, rev 2.00/1.00, addr 1
uhub4: single transaction translator
uhub4: 8 ports with 8 removable, self powered
ppb2 at pci0 dev 30 function 0: Intel 82801BAM Hub-PCI Bridge (rev. 0xe2)
pci3 at ppb2 bus 3
pci3: i/o space, memory space enabled
Texas Instruments TSB43AA23 IEEE 1394 Host Controller (Firewire serial bus, interface 0x10) at pci3 dev 7 function 0 not configured
pcib0 at pci0 dev 31 function 0
pcib0: Intel product 0x27bd (rev. 0x02)
pciide0 at pci0 dev 31 function 2
pciide0: Intel product 0x27c4 (rev. 0x02)
pciide0: bus-master DMA support present, but unused (no driver support)
pciide0: primary channel wired to compatibility mode
pciide0: primary channel interrupting at irq 14
atabus0 at pciide0 channel 0
pciide0: secondary channel wired to compatibility mode
pciide0: secondary channel interrupting at irq 15
atabus1 at pciide0 channel 1
Intel 82801GB/GR SMBus Controller (SMBus serial bus, revision 0x02) at pci0 dev 31 function 3 not configured
isa0 at pcib0
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
pckbc0 at isa0 port 0x60-0x64
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pms0 at pckbc0 (aux slot)
pckbc0: using irq 12 for aux slot
wsmouse0 at pms0 mux 0
pcppi0 at isa0 port 0x61
midi0 at pcppi0: PC speaker
sysbeep0 at pcppi0
isapnp0 at isa0 port 0x279: ISA Plug 'n Play device support
npx0 at isa0 port 0xf0-0xff: using exception 16
isapnp0: no ISA Plug 'n Play devices found
azalia0: codec: 0x10ec/0x0880 (rev. 8.0)
azalia0: codec: High Definition Audio rev. 1.0
azalia0: playback: encodings=1<PCM>
azalia0: playback: PCM formats=e0560<24bit,20bit,16bit,192kHz,96kHz,48kHz,44.1kHz>
azalia0: playback: max channels=8
azalia0: recording: encodings=1<PCM>
azalia0: recording: PCM formats=60160<20bit,16bit,96kHz,48kHz,44.1kHz>
azalia0: recording: max channels=2
audio0 at azalia0: full duplex, independent
Kernelized RAIDframe activated
wd0 at atabus0 drive 0: <ST3160812AS>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 149 GB, 310098 cyl, 16 head, 63 sec, 512 bytes/sect x 312579695 sectors
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
atapibus0 at atabus1: 2 targets
cd0 at atapibus0 drive 0: <MATSHITADVD-RAM SW-9587S, , PDE5> cdrom removable
cd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 4 (Ultra/66)
boot device: wd0
root on wd0a dumps on wd0b
root file system type: ffs
musashi で遊んでるほうが面白いので、NetBSD 環境整備は放置。 Core Duo な Windows の VMware 上の NetBSD でもストレスなく コンパイル出来るもんなあ。

2006/07/13 (木)
あれ、MMU 動いた?

2006/07/14 (金)
同じことになってる人を発見。 うちのマザーは Gigabyte であちらは ASUS だけど構成はほぼ同じ。
N4L-VM DH を NetBSD 3.0 で使う
ってことで早速、遅くて仕方がない ATA コントローラを対応してみる。 デバイス名は適当。
piixide0 at pci0 dev 31 function 2
piixide0: Intel 82801GBM Serial ATA Controller (ICH7) (rev. 0x02)
piixide0: bus-master DMA support present
piixide0: primary channel wired to compatibility mode
piixide0: primary channel interrupting at irq 14
atabus0 at piixide0 channel 0
piixide0: secondary channel wired to compatibility mode
piixide0: secondary channel interrupting at irq 15
atabus1 at piixide0 channel 1
 :
wd0 at atabus0 drive 0: <ST3160812AS>
wd0: drive supports 16-sector PIO transfers, LBA48 addressing
wd0: 149 GB, 310098 cyl, 16 head, 63 sec, 512 bytes/sect x 312579695 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 6 (Ultra/133)
wd0(piixide0:0:0): using PIO mode 4, Ultra-DMA mode 6 (Ultra/133) (using DMA)
ついでにマルチプロセッサ対応にしてみる。 GENERIC.MPACPI を見ながら カーネルコンフィグに以下を追加。
options         MULTIPROCESSOR
options         COM_MPLOCK

ioapic*         at mainbus?

options         MPACPI          # configure CPUs and APICs using ACPI
                                # (acpi at mainbus must also be enabled)
acpi0           at mainbus0
SMP キタ━━━━(゚∀゚)━━━━!!
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel Pentium Pro, II or III (686-class), 1995.11 MHz, id 0x6e8
cpu0: features bfe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu0: features bfe9fbff<PGE,MCA,CMOV,PAT,CFLUSH,DS,ACPI,MMX>
cpu0: features bfe9fbff<FXSR,SSE,SSE2,SS,HTT,TM,SBF>
cpu0: features2 c1a9<SSE3,MONITOR,VMX,EST,TM2,xTPR>
cpu0: "Genuine Intel(R) CPU           T2500  @ 2.00GHz"
cpu0: using thermal monitor 1
cpu0: Enhanced SpeedStep running at 1200 MHz (1356 mV)
cpu0: unknown Enhanced SpeedStep CPU
cpu0: calibrating local timer
cpu0: apic clock running at 166 MHz
cpu1 at mainbus0: apid 1 (application processor)
cpu1: starting
cpu1: Intel Pentium Pro, II or III (686-class), 1995.00 MHz, id 0x6e8
cpu1: features bfe9fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR>
cpu1: features bfe9fbff<PGE,MCA,CMOV,PAT,CFLUSH,DS,ACPI,MMX>
cpu1: features bfe9fbff<FXSR,SSE,SSE2,SS,HTT,TM,SBF>
cpu1: features2 c1a9<SSE3,MONITOR,VMX,EST,TM2,xTPR>
cpu1: "Genuine Intel(R) CPU           T2500  @ 2.00GHz"
cpu1: using thermal monitor 1
cpu1: Enhanced SpeedStep running at 1200 MHz (1356 mV)
cpu1: unknown Enhanced SpeedStep CPU
あ、さっきの piixide0 のハックは同じことが -current には入ってるね。
3.0 の GENERIC カーネルのビルドにかかる時間を比べてみた。 ビルドは make depend と make -j4 を time(1) で計って足したもの。
CPU時間 [秒]
(1) PentiumIII/1GHz1004(16分44秒)
(2) CoreDuo T2500 (2.0GHz)194(3分14秒)
(3) CoreDuo over VMware422(7分2秒)
(1) は今まで使ってた PentiumIII/1GHz の NetBSD でコンパイルしたもの。 (2) が今回買ってきた Core Duo T2500 上の NetBSD でコンパイル。 (3) は同じ Core Duo マシンの Windows 上に入れた VMware 中の NetBSD でコンパイルしたもの。

今まで使ってたやつより5倍くらい速いよ。 あと VMware で NetBSD を動かしても PentiumIII 実機より2倍以上速いよ。 うーん、時代の流れを感じる…。

阪神-中日戦で、町田が今季初打席で代打ホームラン。 自身のもつ代打ホームランのセリーグ記録を20に更新。 まだ行けるぞ。 ちなみに、一昨日の二軍の試合では代打逆転サヨナラ満塁ホームランを 打ってるそうな。

2006/07/15 (土)
あれ、musashi はバスエラーを実装してないのか…。orz
えっと、100歩譲ってもらって、自分の能力で 実用的な 68(!EC)030 コアのエミュレータが書けたとして、 入れ物のほうの X680x0 本体のエミュレータが書けないので意味がないわけだが。 で、X68000 エミュレータなら非常に完成度の高い XM6 が既に存在していて しかもソースまで公開されてるわけだが、私は C++ は読めないわけで。 C++ くらいは勉強するとしても、MFC が分からないわけで。 おまけに仮に Windows 上で開発しようと思うと VC++ とか数万円するときてるし。 かといって XM6 を UNIX に移植しようにも元の MFC も C++ も NASM も読めないわけで。 あとそれらが読めたとしてもウィンドウプログラミングもできなくて X Window に gtk で Hello World の窓を開くのがやっとなわけで、どっちみち…。 鬱病になりそうだ。orz

うーん、MMU の動作が垣間見えたこの辺が限界か。 たぶん X68030 の IPL ROM 食わせると、最初のほうにある MMU 搭載判定はパスすると思うくらいには動いてると思う。 未確認だけどね。正常系だけなら何でも簡単なんだよね。 てことで、 いい夢見させてもらったよ! ←死語?


2006/07/16 (日)
あぁっ惜しい。昔作った嘘 X68000 エミュレータの残骸の 俺様 MPU コア部分を、 今回作った嘘 MMU 付き musashi に取り替えて X68030 の IPL ROM 食わせたら、MMU 搭載判定のところで、MMU が PC のアドレスを あさっての方向に変換しちまって、即死しただよ。 エミュレータだから厳密には即死つっても、知らないアドレスに 書いてある ORI.B #$0, D0 を実行し続けるってやつだけど。
横浜戦とかで実況してる石川顕っていうアナウンサーがうざい。 常に上から目線、自分は何でも知ってるというような偉そうな喋り方、 隣にいる解説者や選手を見下して喋るので非常に不愉快になる。 解説者でも聞いてて不愉快なのはたくさんいるけど (東尾とかデブ大久保とか)、 一応彼らは元々喋ることが本業ではない訳だから情状酌量の余地はあるが、 喋りが本業のアナウンサーがこれだと気分の悪さが格段に違う。
俺様 68030 コアとよそ様の 68020 コア + 俺様改造版の 2つがほぼ同じ入れ物の中で動くようになったので、 並べてステップ実行しながら比較してみた。

どっちも結構バグがある…。orz

いや、こっちのにバグがあるのははなから承知なわけだが、 musashi にもこれだけバグがあるとなると話は別だな。 こっちのは CMP で V フラグの挙動がおかしいみたい。 つーかどういう動作するんか知らねえ…。 musashi は LSL で C フラグの挙動が違うような気がする。 あと musashi は不当命令例外でスタックに積んだ PC が 次の命令を指してる。不当命令の時の PC は当該命令の位置だよね。 うーん、これじゃ 1 + 1 が 1 未満って感じ。

あー、MMU があさっての方向に変換したのは、 アーリターミネーションを実装してないからか。 うひょ。

2006/07/18 (火)
musashi の LSL は C フラグの挙動が違うんじゃなくて、 表示する時に間違えてただけなのね。スマンカッタ。
アーリターミネーションをでっちあげてみたら、 X68030 IPL の MMU 搭載判定をパスしたみたい。

2006/07/19 (水)
友人2人とその友人の女の子とで、メイドカフェ。
musashi とは別に、 XM6 の vm 部分が UNIX でコンパイルできたらいいなーと思って 以前からちょこちょこ直して遊んでたんだけど、今日やっとリンカも通ったので、 仮想マシンのスケジューラをでっちあげて VM を呼び出すように してみた。 5000サイクルくらい消費した付近で SEGV でコアダンプした。うーん。

2006/07/20 (木)
あー、windrv いらないからと思って外してたんだけど、 core_asm.asm あたりで仮想デバイスにスタティックに番号が 割り振ってあるから勝手にデバイス減らすと MemInitDecode あたりでジャンプテーブルにゴミが書き込まれるのね。 だから SEGV なのか。
あー、クラスのどのメンバが何バイト目に置いてあるっていうのが アセンブラ (core_asm.asm) にハードコードしてあるよ。 そりゃ動かんわ。orz
あー(今日3回目)、違うな。 そもそもアセンブラとリンクしてるっていう時点でそれ以前の問題だな。 もっと早く気付けよ。orz
フレッシュオールスターで新井弟(中日) が2点適時打。 しかし構え方までよく似とるな。
XM6 の中身をお勉強ちう。 仮想デバイスは登録された順にリンクリストに繋げられる(vm.cpp)。 0xc00000 〜 0xefffff へのアクセスをデバイスに振り分けるため、 この空間を 8KB ごとに区切ってそれぞれデバイス番号を割り当てた テーブルをコンパイル時に用意しておく。 それが core_asm.asm の MemDecodeInit。 実行時、メモリの初期化の際に、デバイスのリンクリストをその順序のまま 配列にしかえたものを用意し(memory.cpp::InitTable() の devarray)、 アセンブラ (core_asm.asm の MemInitDecode) でジャンプテーブルを作成する。 MemInitDecode ルーチンでは、 MemDecodeInit 表のデバイス番号で devarray 配列を引いて クラスのアドレスを取り出している。 例えば MemDecodeInit[320] は 0xe80000 〜 0xe81fff の 8KB に該当し デバイス番号は 3 であるので、devarray[3] を取り出す。 devarray[] は vm.cpp で登録した (Memory 以降のデバイスの) 順番なので devarray[3] はめでたく CRTC になる。 で、なぜこれをアセンブラでやってるかというと、このクラスの中の ReadByte などのメンバの番地を覚えておいて CPU の メモリアクセスルーチン (core_asm.asm の ReadByteC など) が このメンバ関数に直接ジャンプするため。

っていう構造になっているので、そら別の環境で無理にコンパイルだけ通しても 動かんね。


2006/07/21 (金)
あら、鎌田さんのところ から捕捉されてしまった。 しかも面白くなってて笑った。
XM6 の star.c 〜 core_asm.asm 〜 memory.cpp に至るところを 速度無視のコードに書き直してみたところ、 CPU コアから C++ の仮想デバイスまでのアクセスは出来たっぽい。 ほんまかいな。 でも、動いているのか動いていないのか知る手段がないね。 あぅあぅ。
会社の UPS が焦げた。朝行くと、会社の人が 「なんか分からんけど焦げ臭いから窓を開けてる」と。 どこをにおってみても発生源が分からんので昼すぎまで放置してたけど、 さすがに焦げ臭いまま週末に突入するわけにもいかんので、部屋中 嗅いでみたら、UPS だったと。 電池が入ってる部分が目玉焼きならできそうなくらい ちんちんに熱くなってたので、あわててシャットダウンした。 しばらく自然冷却させてみたが、とてもじゃないけど (夕方帰るまでという) 現実的なスパンで安全と思える程度まで冷えそうにはなかったので、 扇風機2台で空冷する。2時間くらいで無事冷えた。恐い恐い。

2006/07/22 (土)
あ、XM6 を UNIX で動かそうはいいけど、今自分、Windows で生活してるわ…orz。 Windows に VMawre Player で NetBSD 入れて、そいつに向かって telnet して コンパイルしてて、今までは何も動いてなかったからコンソールだけで よかったけど、 さて「とりあえず gtk で窓でも開いてみっか」と思ったら、目の前の環境が Windows だったんでびっくりした。

仕方なく VMware の中の NetBSD に VNC サーバをインストールして、 Windows の RealVNC から呼び出して使うことにする。 UNIX の VNC は遥か昔に触ったことがあるけど、 デフォルトではいつもの見慣れた環境ではなく twm + xterm がぽつんと 開くので途方に暮れる。 当時は twm が使えなかったし、VNC の動作があまりに遅くて 使い物にならなかったので VNC ごとすぐに諦めたが、さすがに 今どきのマシンでの VNC は速い。それと今は twm でも最低限生活できるだけのキーバインドは設定してあるので、 twm が開いても大丈夫。ってことでこれはかなり使える。 VNC を窓最大にして使ってると UNIX 端末の目の前にいるのと大して変わらんね。

で、いい加減ウィンドウマネージャを今の qvwm から gnome あたりの ナウいやつ(死語) に変えたいと何年も思ってて、再挑戦してみる。 ビルドに4時間くらいかかった。gnome-session を呼び出してみるけども キーボードのバインドが死んでるのか何か足りないのかまともに入力 できなくなった (Enter 押すと空白が出る、^C 押すと d って出る、等)。 うーん、分かんね。つーか4時間かかってこれがオチか… orz。
うひょ、なんか出た。でも gtk で再描画のしかたが分からん。orz
キタキタキタ━━━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(゚ )━(∀゚ )━(゚∀゚)━━━!!

自分ところで使ってる SxSI が入った SRAM を食わせてみたところ、 テキスト VRAM あたりにアクセスに行ったっぽい挙動が見えたので、 とりあえずテキスト VRAM を表示させてみた。 しかも本当に何か表示されてるかされてないのか見てみたいっていうだけなので、 色は無視して4プレーン全部を勝手に OR して、 有りか無しかの二値だけで表現してみた。 パレット見てカラー描画する版も書いたんだけどそっちは 座標の計算間違えてるみたいで インターレースみたいな画面になっちゃうのよね。あと出来たとしても カラー表示君の出番はしばらくなさそうだけど。

とりあえず gtk のお勉強のほうが先なので、 スレッド使わず gtk のタイマー呼び出しで VM を実行している。 スケジューラとか仮想時間とか無視して、ただただタイマーで 呼ばれるたびにちまちま VM を実行して時々描画してみるっていう 原始的な感じ。 だからだと思うけど激遅い。1MHz で動いてるのかと思うくらい。 それでも、これだけ動くんだからやっぱり XM6 ってすごい。


2006/07/23 (日)
最近の pkgsrc は options.mk なるものでオプションを切り替えたりしてる らしい。うちは Canna を使ってるので kinput2 に wnn4, sj3 サポートは いらないので、以前は
make USE_CANNA=yes USE_WNN4=no USE_SJ3=no install
みたいにしてた (と思う) けど、今はどうやら
make PKG_OPTIONS.kinput2="canna -wnn4 -sj3" install
のようにするらしい。
make show-options
とすればサポートしているオプションの一覧と今有効になっている オプションが表示される。kinput2 の場合 cann, wnn4, sj3 はデフォルトで 有効になっているので、不要なのを "-" をつけて外すっていう書式らしい。
make PKG_OPTIONS.kinput2="canna -wnn4 -sj3" show-options
ってやれば事前に確認できる。
と思ったんだけど、日本語入力モードに入るキーバインドが RealVNC から kterm まで渡ってないみたい。ああややこしいな。 そういや RealVNC がフォーカスしてると PrintScreen も効かなかったし。
あら、pthread で動いた。しかも軽っ。 思ったよりはトラブらなかったなー。
CS で今月頭から始まってた「パッパッパッパッパッパッPerfume」を見る。 タイトル長いし、昔やってた「PaPaPaPa Puffy」とかぶってるし、 あーちゃんは東京でも広島弁全開で「ほいじゃけぇ」とか言うとるし。

2006/07/24 (月)
先週 (広島ではたぶん東京より1週遅れ) の 「たけしのコマネチ大学数学科」のソファー問題は 「ソファー問題」で日本語ページをググっても番組の感想しか出てこないけど、 「Moving sofa problem」でウェブ全体からググると少しは出てくるらしい。 見ても全然分からんけど。 つーかハマースレ−型がなぜ通り抜けれるのかすら理解が怪しい。
えっと、XM6 はマルチメディアタイマーとやらで 1msec 単位で 動いてるようなんだけど、 tick が 10msec な普通の UNIX で 10msec より細かい粒度で 呼ばれて飛び出る方法なんてあったっけか。
ビジーウェイトループにでもしない限り 10msec の倍数程度の粒度しかないので、 スケジューラを先に固める必要性はないような気がしてきた。 今のところ十分それなりに動いてるように見えるので とりあえず困るまでは放置しておこう。

2006/07/25 (火)
鎌田さんの日記にて、 Javascript によるソファー問題のハマースレー型の実演。 これだけ気が済むまで繰り返せて任意のところで一時停止できると、 もはやどこを切り取って見ても疑問の持ちようがないくらい分かりやすいです。

今度はそれよりも、 ハマースレー型が通路を通り抜ける実演をやろうと思ったり、 しかもそれを Javascript でやろうと思ったり、 しかもそれがさくっと出来てしまうあたりが益々理解できない (^_^;。

XM6 は、フロッピードライブ0の「開く」オペレーションを用意して Human68k のシステムディスクを 入れてみるとほんとに Human68k が起動した。 キー入力を仮想キーボードデバイスにつないでみるとほんとに文字が入力できた。 switch.x とか timer.x とかがほんとに動くのねー。 中身が完璧に出来上がってるってほんとにすばらしい。 でも、GTK+ 1.2 ってばキーのプレスとリリースは拾えるくせに 物理キーコードを取得する手段がなさげな予感がしてて (X のイベントを拾わないといけないらしい)、そのため 「シフト押しながら」のようなキーが入力できない。 おまけに NetBSD 3.0 だとなぜか文字化けするし。 ってことで GTK+ 2.x を検討中。

2006/07/27 (木)
GTK2+ (GDK2) の物理キーコード取得は VNC 経由だとうまく拾えないのな。 GNOME を入れた時にキー入力が出来なかったのと同じような症状、 つーか GNOME も GDK2 使ってるはずだから同じ症状だろうね。

2006/07/28 (金)
暑そう。
その1。18:20 電車通り(相生通りっていうんだっけ?)。 市民球場に行くには電車通りていう東西真っ直線の大通りを 15分ほど 西に向かって歩くんだけど、なんかの遺跡の春分の日かと思うくらい 真正面から夕日が当たってたので、撮ってみた。 この状況なのでどこまで歩いても日陰に入れない。
その2。18:50 下のほうは少しずつ蔭ってきたけど 二階席はまだ拷問に近い一塁側内野席。 市民球場は 50年ほど前に突貫工事で作ったので いつまでたってもホームチーム側に西陽があたる素敵な設計。 お金払って座る席じゃないよね。
で、試合のほうは後半戦初のホームゲーム、横浜戦。 1回裏に嶋の2ランで 2-0 になってて、球場に着いたのは2回裏。 そっから7回まで1本のヒットも出なくて、どうしようかと思った。 黒田が 8回0点に抑えてくれたので、なんとか 2-1 で勝ち。
いつも見に来てる人が誰かと電話で喋りながら 「今日が(観戦)1000試合目なんすよ」と言ってた。 1000試合観戦もすごいけど、それを数えてたほうがすごいと思う。

2006/07/29 (土)
フロッピーとキーボードを VM につないでみたので、システムディスクを 入れて switch.x を起動してみた様子。 テキスト画面は自家製でパレット、輝度、コントラストに対応してる。
しかし、VNC 経由だとキー入力が出来ないし、 かといって、古い実マシンは NetBSD 2.0 ベースとちょい古いので GTK2 が古くて知らんって言われて起動できんし、 結局 VNC 元の VMware で X 立ち上げてキャプチャした。 写真をキャプチャできる環境にたどり着くほうが時間かかったな。
元カープの長谷川良平さんが亡くなった。 1950年のカープ創設の年に入団し、1970年に中日のコーチを引退している ので、自分は解説者としての長谷川さんしか知らないが、 伝説の投手だということは小さいころから叩き込まれて育っている。 以下 Wikipedia - 広島東洋カープ より引用。
1952年シーズン開幕前には、当時7球団だったセ・リーグの日程が 組みにくいという理由のため、同年シーズン勝率3割を切った球団は 解散という取り決めがされた。設立より2年連続最下位だった広島が 解散の最有力候補であったが、長谷川良平と杉浦竜太郎の2人でチーム 勝利数(37勝)の過半数(20勝)を稼ぎ勝率.316で解散を免れた (松竹ロビンスが最下位・勝率.288)。
この年のシーズンオフに松竹ロビンスは大洋と合併したので、 長谷川さんがいなければカープは 50年前に消滅してたと言っても 過言ではない。ご冥福をお祈りします。
早っ。 Wikipedia - 長谷川良平 が更新されてる。
今日も見にいかなかったら、ブラウン監督が、 明らかな自打球(ファウル)をフェアと判定した審判団に 抗議して退場するし。 うーん、ブラウン監督退場の勇姿は見たかった。
とりあえず、広島人はこれを読め。
われらカープ(びと)」 (中国新聞 1999年, 球団創設50年特集)
長いので1話(下のほう)から初優勝の16話まででもいいから読め。 ティッシュ片手にね、泣くから。

2006/07/30 (日)
これまでは VM が動いてることを確認するためにとりあえず 用意したお手製のレンダラを使ってたが、これを XM6 のレンダラを使うように書き直してみる。 XM6 の VM のレンダラが出力したバッファを GDK 用に変換して 表示してるだけなので、X68000 の複雑なビデオ処理を何も知らなくても ほぼ XM6 並みのいい感じのエミュレーションが出来てるはず。 まだ画面サイズの変更とかには対応してないけど。 Windows API の知識が(も?)皆無なので XM6 内でのイベントの呼ばれ方とかの構造を把握するのに結構苦労したのと、 見た目動いてるように見えるのが何故動いてるのかは実はよく分かって なかったり(汗。 それでも動く XM6 のエンジンはすごいということで。

グラフィック画面が動いた記念に(?)、 鎌田さんの 2003年10月24日の日記 と同じ 楽しい幾何学模様を描いてみる。

調子に乗って、「男弾(オトコダマ)」のディスクイメージを入れてみたら OTOKO.X を実行し始めたくらいで、sysport あたりの ASSERT で落ちた。 うーん、まだそんな低レベルなルーチンのバグ (自分が書き換えたところのことね) が残ってるのか…。
高校野球の選手の中に何人も「竜」の字がついてるやつがいる。 一回りしたのか…。orz
一ヶ月くらい前に、黒地のTシャツで背中というか肩のところに 「キタ━━━━(゜∀゜)━━━━!!」の顔のところ、括弧の中が キティちゃんの顔になってて、 「キティ━━━━(●)━━━━!!」 (●がキティちゃんの顔ね) って書いてあるのを着てる女の子を見た。めっさ笑った。
高橋犬って書いて「まけいぬ」って読むんですよ。 5-4 で1点負けてる9回表一死満塁で高橋犬が出てきて 三連続タイムリーでわけなく5点取られた。その裏はあっさり三者凡退。 日曜日のしかも9時半回ってこういう試合されると 見に行っててもさすがにむかつく。 今日は見に行くつもりだったけど、 朝必要以上に早く目が覚めてしまいだるかったので行かなかったけど、 行かなくてよかったかも。
てことで、7月は市民球場であった8試合(6勝2敗)中 4試合見て4戦全勝。 今季通算も10勝4敗。 こんなに勝率高いのも珍しいな。

2006/07/31 (月)
gdb がコア吐いて落ちた...。このコアを gdb に掛けたらええんかしら。orz
% gdb xm6
GNU gdb 5.3nb1
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386--netbsdelf"...
(gdb) break Scheduler::Exec
/autobuild/netbsd-2-0/src/gnu/dist/gdb/gdb/gdbtypes.c:515: gdb-internal-error: m
ake_cv_type: Assertion `TYPE_OBJFILE (*typeptr) == TYPE_OBJFILE (type) || TYPE_S
TUB (*typeptr)' failed.
An internal GDB error was detected.  This may make further
debugging unreliable.  Quit this debugging session? (y or n) y

Create a core file containing the current state of GDB? (y or n) y
Abort (core dumped)

≪ 2006年6月 | 2006年8月 ≫
井崎のホームページへ戻る
isaki@NetBSD.org