2009年4月アーカイブ




今日も大掃除の続き。途中で挫折して最後はまた押し入れに押し込むことになっ
た。本棚が足りない。


懐しいのがいっぱい出てきた。もっと残しておけばよかったな。

残ってたのから。これは最古の90HSP第二戦の予選だ。当時のレースノートを 見てみたところ、決勝はS字で転倒してしまい、再スタートで10位だったようだ。
当時の日記からすると、ギヤが2速に入ってたのは、この二戦だった。もうちょっ と日記に書いておいてくれれば...44秒入らない焦りだけは伝わってくる。

そしてこれは時は流れて93の関東選手権8戦筑波。予選落ち、ウェイティンググ リッドです。ウェイティンググリッドから帰る時の慘めさはたまらないよ。
当時の日記見ると泣いてます。7月の中盤まで落ちこんでるし。

これは同じく93関東選手権11戦那須予選。那須を走ったのはこれが最初で最後 だ。この頃は弟にヘルバーしてもらっていた。「那須って日光の先だろ?」く らいの気持ちで行くとやたら遠い。運転は弟だから楽チンだったけど。
前日の特走から快晴のいい天気で暑かった。避暑地那須といえども、夜も暑く て参ったのを覚えてる。
予選は最後の最後で池田健介に抜かれて、これがチャンス!と必死でがんばって 自分的にスーパーラップ出てなんとかクリア。うれしかった。

決勝はまったく覚えてない。決勝後に飲んだアクエリアスがとにかくうまかっ た。500mlを何本飲んだかな。飲んでも飲んでも飲み足りなかった。
帰りも弟の運転だから助手席で御機嫌。すごいラピュタみたいな雲があったんだ。 楽しかったな。



大掃除をしました。ちょっと歪んでいるNSR50のフレームは二つ捨てることに。
それでもまだ一個予備で残ってるし。QICとかDATなんかも捨てました。



そして押し入れの奥から雑誌を...これはたまらない! 当時の熱気がムンムンと 伝わってくる。どの写真も空気感がいい。これはノスタルジーによるものなの だろうか?

バリバリマシン'88 9月号の北海道特集。この写真は手稲山常連s。みんなほと んど忘れてしまった。
僕の上でハングオンしてるのがシバッチ。真後がさおとめさん。左がナカチャ ン。さらに左斜め上の女の子の隣が、ホットロードの1KTに乗ってた人。隣がラー マ、イケチャン、ミスター、下段、左から二人目の人の名前が思いだせない。 NSの人。よくしゃべってたんだけど...

これは北海道ローカルのレース雑誌。レースブームの当時でも創刊してしばら くして休刊してしまった。当時、レーシングビートという全国紙のレース冊子 もあったのだけど、これも続かなかったな。ちょっと当時でもマニアック過ぎ たか。

HSP選手権のお祭りは最終戦の後に開催される二時間耐久。この前年(88)、ま だ手稲山を走っていたころ、大西選手(現オーニシヒートマジック社長)に誘わ れて、大西選手のご両親と共に観戦、「俺もここに来たい!」と決心したんだ。
これは89。予選は15位、決勝は上位陣の転倒に助けられてなんと4位!うれしかっ た。翌年の90耐久は、予選は3位! しかし決勝は...思いっきり転倒しました...TT

Do Bikeもあったよ。

マーカー引いてるし^^。よっぽどうれしかったらしい。こう見てみると首の傾け 方は昔から変わってないね。

こんなモータスポーツの雑誌も当時ありました。とってあるからには俺が載ってるに違いない...。

これか...90の3戦だ。23が嫌なのはこれなんだ。一生に一度のレースと考えて 参戦した89のSP250だったのだけど、どっぷりはまってしまった。どうしてもレー スがしたいということで、ちょっとコストの低いGP125にしようとした。87の RS125あたりなら10万くらいからあったので、それを狙っていたところ、親父が、 レースやるなら買ってやると言ってくれたのだ。それで新車の90RS125 Rを買っ てもらい、参戦したこのシーズンだった。
初戦で4位でNA昇格。2戦は雨、ヨコハマレインのおかげでそこそこだった。
そして向かえた3戦。タイムは伸び悩み、予選は沈んでしまった。そしてこの レースには、家族旅行で東京から観戦に来ていた。そして大学の女の子もね。
スタートは大失敗。ウォーミングアップラップで1速まで落としてなかったのだ。 この時のトラウマで未だに3回くらい1速のチェックする。
とにかく抜いて抜いて...3コーナーでアウトからかぶせたところでイン側の 転倒にまきこまれて転倒。ふざけんなっと頭に血昇ってそのままコース復帰、 バックストレッチを全開で走って、S字の前。
ブレーキレバーがない。
ブレーキペダルもひしゃげてしまって踏めない。
なんとかスリップダウンに持ちこまなきゃ(この前年、ストレートエンドで 焼き付いて真っ直コースアウトして窪みでジャンプして3コーナーのバリアに 激突して亡くなってしまった先輩がいたので、これだけは最後に思った。)
気がついた時には全レース終わって、フロントぐっしゃりのRS125が...。
この後、遠征に西仙台にもエントリーしてたんだ。とても楽しみにしてたのに それもオジャン。夜になって病院に親父がやってきて、事の顛末を話してるう ちに、どうにも耐えられなくなって4人部屋なのにオイオイ泣いたよ。
これ以上ない体制で望んだシーズンだったのにね...。

バリバリマシンも86-94まで年代順に整理。これも見はじめるとキリがないよ。

ガルルは86から3冊ほどあった。当時はMTX50Rだったからね。この時代は熱いよ。

これはXL250にスズキのGF250を乗せてしまった車体。あと、DT200にTZR250を乗 せたのもあったのだけれど、残ってなかった。

バリバリマシン見てるとありましたよ。藤巻選手。ぶっちぎりA2か...負けた。

僕はぶっちぎりA止まりだ。実を言うとこの頃ツナギが欲しくて、ぶっちぎり A3を狙って投稿したんだよね。これは京浜島。当時はまだ羽田が古い滑走路だっ たから、真上に落ちてきそうな飛行機が見えた。それを見るのが結構楽しかっ た。

掃除はぜんぜん進んでません。



前に親父からもらったロガーを動かしてみました。これはグラフテックの
WR-7300。サーマルアレイコーダというのは「感熱紙を使ったレコーダ」という
グラフテックの商品名。何がThermalなんだろう...と悩んだ。Arraycoderという
名前もよくわからない。



いろいろいじってみると、紙の送りは60mm/secから0.1mm/minまで。入力電圧は 50mV〜200Vまででレンジを選択。フィルターは50Hzと200Hzが選べる。というよ うに、ゆるやかな電圧の変化を記録する機械のようだ。
RS-232Cのポートがついている。



MCの前日、土曜のS枠の写真。すまぐるta-1さんの撮影です。ありがとうござい
ます!


ロスマンズスペンサー、ツナギの色と合ってカッコイイ!

この日はタンポポが満開で綺麗でした。この1コーナーはあまりないけれど、1 ヘアのタンポポ畑がよい。

このショットいいな。

バックショットは「あぁこんな感じでみんなに見られてるのか...」と興味深い。 背中、もっと派手にしたい。あともうちょっとウエストを...絞れませんかね...。

トマトです。トマトはあまり水をあげない方がいいということで、あげなかっ たらしおれてしまったので慌てて水をあげました。調節がわからない。

スイカは本葉の二つ目が出てきたところ。



菜園状況です。ジャガイモの発育がすごい。種芋を植えた時に余ったのを適当
なところに埋めておいたのがあるのだけど、それは目に見えて発育が悪い。
やっぱり土と肥料は重要なのね。

ネギを植えかえ後不調だったのは水が足りなかったみたい。ネギは水やりが 足りないと、タマネギみたいな根になってしまうらしい。確かに植え替えの 時もそうだった。エシャロッテみたいな形だった。
初期の育ちが悪いのはどうがんばってもだめみたい。細いままそのまま育って いく感じだ。でもまだ半年ある。がんばれ!

泥まみれだったハイエースも洗車(水洗いのみ)。

ネギは中耕して鶏糞をちょっと入れて、芽の分け目まで土寄せしました。

x86はなんとかブートローダまで作り終わって、フロッピーからブートしてハー ドディスクにインストールできるようにまでしました。家のマシンにインストー ルしてみると、いろいろQEMUではでなかったバグ(DS設定する前にデータを書き こんでいたり、リアルモードとプロテクトモードを繁雑に繰り返すとリブート する(←これはまだ未解決。繁雑にならないようにした)で苦労した。
x86はこのあたりにしておいて、DRO01(フライス用)の入出力ユニットに戻りた い。x86はいくらやっても終わらないし。


x86続き。
ブートローダまででは保護モードに移行しても1Mの範囲内に納まっていたので
BIOSのコールは単にリアルモードに変更するだけで可能だった。1M以上にロー
ドしたカーネルからでもBIOSを使いたい。

なので1M以下の部分にBIOSを呼ぶルーチンを置いておき、それを呼ぶことにした。
ROM領域(0xa0000-0xfffff)ではないところで、0x80000からの64KBにした。
そこに置きたいオブジェクトファイルをldscriptに入れて配置した。

OUTPUT_FORMAT ("elf32-i386")

MEMORY
{
	lma16	: o = 0x80000,	l = 0x10000
	vma16	: o = 0,	l = 0x10000
	vma32	: o = 0x100000, l = 0x100000
}

SECTIONS
{
	_stack_start = 0x7fff0;

	.realmode :
	{
		mode16_longcall_subr.o
		bios_console_vga.o
		bios_console_serial.o
		bios_int13_rw.o
		bios_int13_rw_ext.o
		bios_service.o
	} > vma16 AT > lma16

	 .text :
	 {
	 	 *(.text)
		 *(.rodata*)
		 . = ALIGN (4);
	 } > vma32

	 .data  :
	 {
	 	 data_start = .;
		 *(.data)
		 . = ALIGN (4);
		 data_end = .;
	 } > vma32

	 .bss  :
	 {
	         bss_start = .;
		 *(.bss)
	 } > vma32
	bss_end = .;
}


こうすると

ELF entry point 0x1004c0
# of program header: 2
[0] vaddr=0x0 memsz=0x1ec paddr=0x80000 offset=0x1000 filesz=0x1ec
[1] vaddr=0x100000 memsz=0x6a10 paddr=0x100000 offset=0x2000 filesz=0x57c4

のように配置される。重複はしなかった。最初のプログラムヘッダーの部分は
このようになる。

kernel.elf:     file format elf32-i386

Disassembly of section .realmode:

00000000 <__lcall16_subr>:
   0:	55                   	push   %ebp
   1:	89 e5                	mov    %esp,%ebp
   3:	56                   	push   %esi
   4:	57                   	push   %edi
   5:	53                   	push   %ebx
   6:	66 bb 30 00          	mov    $0x30,%bx
   a:	8e db                	mov    %ebx,%ds

なので、これを呼ぶにはセグメントを切り替える必要がある。

この領域を保護モードから呼ぶためのセグメント(CODE32_BIOS, DATA32_BIOS)
と、リアルモードのリミットを設定するだけのセグメント(CODE16, DATA16)を用意。
(この場合、Dビットの違いしかないので、CODE32_BIOSを設定すればそれだけで済む
ので蛇足)

struct gdt_config gdt_config [] = {
  // 4G flat.
  { 0x0, 0x100000, SIZE_UNIT_4KB, CODE_32, CODE_SEGMENT, "CODE32" },//0x08
  { 0x0, 0x100000, SIZE_UNIT_4KB, CODE_32, DATA_SEGMENT, "DATA32" },//0x10
  // For Real-mode.
  { 0x80000, 0x10000, SIZE_UNIT_1B, CODE_32, CODE_SEGMENT, "CODE32_BIOS" },//0x18
  { 0x80000, 0x10000, SIZE_UNIT_1B, CODE_32, DATA_SEGMENT, "DATA32_BIOS" },//0x20
  { 0x80000, 0x10000, SIZE_UNIT_1B, CODE_16, CODE_SEGMENT, "CODE16" },//0x28
  { 0x80000, 0x10000, SIZE_UNIT_1B, CODE_16, DATA_SEGMENT, "DATA16" },//0x30
};

----------------------------------------------------------------------
BIOSを呼ぶ一番最初は512Kからのセグメントにジャンプするところから。
----------------------------------------------------------------------
// int __lcall16 (int (*)(int, int), int, int)__attribute__((regparm (3)))
// call real-mode subroutine from protect-mode with segment switch.

FUNC (__lcall16)
	ENTER_32
	// suspend interrupt.
  ここでcliを使わないのは、呼ばれた時の割り込み状況をそのまま保持してリ
  ターンしたいため。callee savedの%esiにとっておく。
	pushf
	movl	(%esp),	%esi
	andl	$~0x200,(%esp)
	popf

  BIOSが割り込みを使うので、IDTをリアルモード用に戻しておく。0x0-0x3ff。
	// Install Descriptor for real-mode.
	// Real-mode IDT
	lidt	realmode_lidt_arg

  現在のスタックをcallee savedの%ediにとっておく。
	movl	%esp,	%edi
  データ/スタック領域のセグメントを0x80000からの64KBのセグメントに変更。
	movw	$GDT_DATA32_BIOS, %bx
	movw	%bx,	%ss
	movw	%bx,	%ds
	movw	%bx,	%es
	movw	%bx,	%fs
	movw	%bx,	%gs
	// Change stack.
	movl	$0xfff0, %esp
  コードセグメントの変更と同時にサブルーチンコール。
	lcall	$GDT_CODE32_BIOS, $__lcall16_subr
  元のコードセグメントに戻すために即座にロングジャンプ。
 ljmpのフェッチまではベースが0x80000のセグメント。
	// Return to current segment.
	ljmp	$GDT_CODE32, $1f
 ここからはベースが0x0のセグメント。
1:	movw	$GDT_DATA32,	%bx
	movw	%bx,	%ss
	movw	%bx,	%ds
	movw	%bx,	%es
	movw	%bx,	%fs
	movw	%bx,	%gs
	movl	%edi,	%esp
  このIDTはプログラムで設定した保護モード用もの。
	// Restore IDT
	lidt	protectmode_lidt_arg
	// Resume interrupt
	pushf
	orl	%esi,	(%esp)
	popf
	LEAVE_32
	ret
	.section .data
	.balign 4
realmode_lidt_arg:
	.short	0x3ff
	.long	0x0

----------------------------------------------------------------------
0x80000にあるBIOSを呼び出すところ。
----------------------------------------------------------------------
	.code32
FUNC (__lcall16_subr)
	ENTER_32
リアルモード用のリミットの設定。
	// GDT set segment limit for real-mode.
	movw	$GDT_DATA16,	%bx
	movw	%bx,	%ds
	movw	%bx,	%es
	movw	%bx,	%ss
	ljmp	$GDT_CODE16,	$1f	// Load CS descriptor for real-mode.
1:	.code16

 ここからDビットが落ちているのでアドレス解釈が16bitモードになる。CPUは
32bit モード。 Dビットはpush,popのサイズの違い、IPかEIPか(ここではもう
64KB以内になるようになっているのでどちらでも同じになる)、レジスタアクセ
スの幅が変わる。CR0の1bit目を変更するだけなので、どちらでも同じになる。
これをやるのは、コードセグメントのリミット値の設定の目的だけ。

	// Change to real-mode.
	movl	%cr0,	%ebx
	andl	$~1,	%ebx
	movl	%ebx,	%cr0
ここではじめてリアルモード。
	ljmp	$REALMODE_CS,	$2f	// Load real-mode CS with pipeline flush.
2:
	// Set real-mode DS,ES,SS
REALMODE_CSは0x8000。スタックはリアルモードと保護モードで共用できる設定
にしてあるのでセグメントの変更だけでいい。
	movw	$REALMODE_CS,	%bx
	mov	%bx,	%ds
	mov	%bx,	%es
	mov	%bx,	%ss
	// Now Real-mode.

	// Setup argument.
	mov	%ax,	%bx
	mov	%dx,	%ax
	mov	%cx,	%dx
	// Call requested function.
	call	*%bx

	// Return to Protect-mode.
	movl	%cr0,	%ebx
	orl	$0x1,	%ebx
	movl	%ebx,	%cr0
まずここで、0x80000がベースのセグメントに戻る。
	ljmp	$GDT_CODE32_BIOS, $4f	// Load CS with pipeline flush.
4:	.code32
	// Load SS
	movw	$GDT_DATA32_BIOS,%bx
	movw	%bx,	%ss
	LEAVE_32
	lret

これでBIOSコールが使えるようになった。(ここまではVGA直書きでデバッグ)

LBA 136 -> track 3, head 1, sector 11
bios_fdd_read: drive 0 sector 136 (T3/H1/S11)
LBA 137 -> track 3, head 1, sector 12
bios_fdd_read: drive 0 sector 137 (T3/H1/S12)
ELF entry point 0x1004c0
# of program header: 2
[0] vaddr=0x0 memsz=0x1ec paddr=0x80000 offset=0x1000 filesz=0x1ec
[1] vaddr=0x100000 memsz=0x6a10 paddr=0x100000 offset=0x2000 filesz=0x57c4
stack_start: 0x7fff0
data: 0x104ee0-0x1057c4 2276byte
bss: 0x1057e0-0x106a10 4656byte
EFLAGS=0x6
IDT: base=0x0 limit=0x3ff
IDT: base=0x105d60 limit=0x7ff
board_main arg=330
app0_thread: arg=abcdef90
IRQ0
IRQ0
IRQ0
IRQ0
IRQ0




体調がなかなかよくならない。熱っぽいし、腰は痛いし。

一週間程前、猫にいたずらされて折られてしまったネギ。復活してきた。

折られた先も土に差しておいたら、これもまだいけそうな雰囲気。強い!




ピストン状況。ちょっと内側のOリング溝が浅い/狭いかな。シリンダも問題な
し。ここで問題が出たら泣けるけど。

ちょっと二次圧縮落として、もうちょっと、13800rpmくらいまで廻るくらいま でにしてみたいと思ってる。今の二次圧縮は上げれる限界なんだ。

カウル、チェーン、キャブ、クランク、ブレーキキャリパー洗って走行後メン テ終了。
リアサス見たら、残スト1mmだった。練習では7mmまでだったのに、レース気合い 入ってたね〜。




ジャガイモの芽かきをしました。これは芽かき前。いいのだけ残して2本にしま
した。



チンゲンサイは間引き。去年はこのあたりから毎日、幼虫の餌になってしまっ ていた。

トウモロコシの苗を植えつけしました。まずは、ちょっとハイポネックスを溶 かした水につけておいて、その間に畝を耕し直して

植えつけ。ちょっと苗間が狭いです。ポットの中は、根が張り巡らされていて、 株を分離するのが難しかった。隣り合ってしまったようなのはかなり根がちぎ れてしまった。

トマトは双葉の頃から、夜になると葉が閉じていたのだけど、本葉も夜になる と閉じるのだ。これはびっくりした。




昨晩は9時に就寝。ちょっと早めに寝たのがよかったのか、4時に起きてみると
いい感じだ。ユンケル(ロイヤル)を飲んで出発。

予選は8:14から。気温は18℃弱くらいで申し分ないけれど、予選時間が9分なの でベストを尽くすのがなかなか難しい。ここぞのクリアラップでタイムを出す 気合いは、昔の現役時代の予選を思いだす...。
タイムは9.6と出なかったものの、みんな出なくて予選は1位。久々だ...。
トランポに戻ってきて早速、トマトチリヌードルを食べる。カップ麺の塩分の 多さとカロリーの多さが、実はレース前に食べるのにちょうどいいんじゃない かという考えで最近の定番。そしてユンケルファンティー(3000円)。 ハイポガブ飲み戦略です。
そして決勝。ウォーミングアップラップは二周あるので、ウォーマーはなし(体 力的な余力も考えて)。できる限り急減速、急加速で暖めました。
スタートは普通くらいだけど、藤巻選手と池野選手には前に出られてしまう。 これはいつも通り。あの二人にスタートで勝ったことがない。
3周目くらいでトップになるも、バックストレッチで池野選手にあっさりパス されてしまう。2ヘア立ちあがった時に後を見て、「これならエンドで並び かな...」と思ったら200mで並ばれた。ショック。
最終ラップ。インフィールドできっちりつけて2ヘアを真後で立ちあがる。これ で並べんで...と思ったのだけど、スリップ位置なのに出れない。0.122差で2位 でした。今回は勝てるチャンスだと思ってたのに..。
とはいえ。一年振りの表彰台でうれしかったです。

久々のブリヂストン帽子。これを被れるのがまたうれしい。

いいレース日和でした。


2009/04/19/124222.jpg
緊張してきた。
2009/04/19/091842.jpg



また体調を崩して熱を出してしまいました。なんとかいけそうなので筑波に。
10時と12時のS枠。土曜のS枠って久々かも。タイムはなんとか9秒を切るのがやっ
と。このあたりがいつも壁なんだよね。もっと調子を上げれると思ったのだけ
ど...。

一本目で練習用タイヤのフロントが異常摩耗して終わってしまったので、二本 目は本番タイヤにしました。

帰りはハイエースに給油。776.1km/58l=13.2km/l。
明日に向けて、ナラシ済みの新シリンダー、新ピストンに交換。プラグは新品 のB95EGV。アンダーカウル洗って...というところで体力の限界。ユンケル二本 飲みながらがんばったけれど、もう無理。チェーン洗いとアッパーカウル洗い はあきらめて積み込み。
明日が不安だ...。

9:50 D.alt.101m 17.2℃ 62.8% 1015.0hPa うす曇り
MJ168 SJ45
3枚60℃
4l 残1l (20周)
1.8/1.8
best 8.8

11:50 D.alt.145m 17.6℃ 59.5% 1012.9hPa 晴
MJ168 SJ42 (SJ45から42に。 いい感じ)
3枚65℃
4l 残1l (20周)
残スト 7/7 (リアイニシャル114.5mm (←115.3mmから変更)


トマトの芽から本葉が生えはじめてきたので、ポット上げします。



ポットの土はこの前筑波の帰りに買ってきておいた、サカタのスーパーミック スA。腐葉土を探してたのだけど、みつからなかったので適当に買ってきてみま した。

トマトの根が結構深い。わかりにくいけれど6cmくらいある。移植に気をつかい ました。ちょっと不安。

トウモロコシは10cmくらいまでに育ったので、間引き。せっかくここまで育っ たのに...という気持ちでなかなか気の進まない作業。でもしかたない。

チンゲンサイには虫よけのネットを張りました。

ついでにスイカもちょっと早いのだけど、ポット上げ。種が大きいのは歩留りが いいので、あまり蒔かなくていいかも。ちょっと多すぎて困惑気味。

野菜と牛肉のワイン煮、できました。前のカレー煮に較べると今一つなんだよ ね。といって、あまり手を加えるとまずくなるし。

CR整備。ブレーキフルードを交換して、リアサスのイニシャルを115.3mmから 114.5mmにしました。整備終了。




土曜の練習に行くか、いきなりレースにするか迷ってたのだけど(体力的な問題
で)、土曜から行くことにした。腰上は練習用で組んで、練習用タイヤで。今年
はMCFAJの申し込みを最後まで迷ってギリギリに出したのでゼッケンは希望のが
とれず、22。

あと、リアサスを気持ちだけイニシャルかけよう。
ちょっと熱っぽくて体調が不安。

日曜に仕込んでおいたのを煮込み開始。これはすごいアクが出るのでアク取り が大変。




CR85整備。サイレンサーのグラスウール交換です。新品から二年目、かなり飛
び散っていた。




前からすぐに抜け落ちてしまうリベットがあったのだけど、下穴がずれていた。 これじゃだめだ。組み立ての際は本体側の穴を45度ずらして開け直しました。

カレーの完成。このタマネギがトロトロになっててうまいんだ。これが食べた くて作ってるようなもの。うっかり食べ過ぎた。週末までにちょっとでも絞り たいのに。

以前MonotaROのエイシンの倒産処分市で買っておいたエアーリベッターの出番。 これはとても楽に確実にリベット打てて気持ちがいい。

サイレンサーのワイヤリング。岡山はこれが必須。




この前、筑波の帰りに買ってきておいた型枠用コンパネで、堆肥枠を作りまし
た。90cm四方で高さ60cm。普通のベニヤ板は1820mm x 910mmだけど、型枠用は
1800mm x 900mmなのね。



外側は腐らないようにキシラデコールで塗装しておきました。

ジャガイモがやっと芽が出てきた。

今週は一人なので、カレーでも作っておくことにしました。美味しんぼラーなので カレーは鰹だし。

煮込み前提で具はこの大きさ。タマネギは最後までこの形にしておきたいので できる限り下と上は切りません。

バターを2cm厚くらいで落として、おいしいとこまで塩コショーして、このまま 弱火で4時間煮て、一度スープだけとってルーを混ぜて、戻して1時間また煮て できあがり。なのだけど、今日は間にあわなくてラーメン食べにいった。

ついでに仕込み。牛肉と適当に野菜入れてワイン一本入れて冷蔵庫に。




朝、サーバのML115G1がNMIくらってpanicした。リブートするとtlpが認識しな
い。96のDE500だし..とvgeに交換しても認識しない。隣りのスロットに差すと
認識するものの、アクセスするとフリーズ。その後は認識しなくなった...。

ついでだからとエアブローしてみると、すんごい木工粉塵。木の香りがした。 やっちゃったかも。PCI-Expressのスロットに望みをかけて、新宿までいって買っ てきて、まずはx8に差す。認識はしてアクセスしてもハングはしないけれど動 かない。x16に差してみたら、ここは生きてた。これが今の状況。やばいかも。
木工部屋を負圧にするような集塵装置を入れたい。作業中は扉を閉めていても 隣の部屋まで粉塵はうっすらと積もるんだよね。
デルS2009W20インチワイドTFT液晶モニタが2000円引きなので買いました。 送込み14375円なら失敗してもいいやと思って。やっぱり失敗かな。1600x900 って辛いかも。今は1280x1024なのだけど、124の違いが結構狭いし。ちょっと 目が痛い気もする。ということで、いきなりガレージ用になりました。
やっぱり本気用はEIZOじゃないとだめかな...。

ここ最近調子悪くなってしまったCDプレーヤー(LDプレーヤー)の様子を見まし た。とりあえずエアブローしてレンズ洗ってみたのだけど、だめ。これがだめ になってしまうとLDはもう見れないのか...とLDをかけてみたら普通に動きだし た。その後はCDも普通に再生できるように。軽いものばっかし廻していて調子 悪くなったのかな?
開けてみてちょっと驚いた。今となってはこれは高い作りだな。

アンプはもっと古く。DENONのPMA-500V。これはメタルによく合うんだ。




ちょっと体調を崩してしまった。苗状況。今のとこいい感じです。



スイカの双葉はいかにも双葉でかわいい。



マシン整備はチェーン、キャブ、クランク室を洗ったところまで。



筑波行ってきました。久々のベストコンディションで大満足です。



走行前日は、いつも通りの酒量を飲む。ちょっと色気づいて酒量を減らすと眠 りが浅いからだ。久々にちょっと焼酎一杯減らしてみたらやっぱり眠りが浅かっ た...。酒は抜けてるけれど、眠い。
一本目はA1 8:00。新品シリンダ、ピストン、チェーン、ブレーキパッドのナラ シを30分みっちり。ヘルメットも新しく買ったロスマンズスペンサーに。前に 被った時の印象が悪くて、その後使ってなかった。そう悪くない。やっぱりラ パイドにくらべて上方視界が悪い気がするんだけど...。しかしカウルから頭を 出した時の安定性はいいかも。首が疲れない。
中一時間で、シリンダーとピストンを古いのに交換。ヘッドは新作。時間ぎり ぎりだった。MJ170はさすがに濃くなってきた感あるのでMJ168に。
二本目はS1 9:30。さて新作ヘッドのフィールは。すごい無難。パワーバンドは フラットにトルクフルだ。思ったより上が伸びなかった。4速で13500rpm、5,6 は13300rpm。6速に入れた時に前に出る感じがいいかも。
他のS80マシンと較べてもバックストレッチは遜色ないし、安心しました。
リアサスの伸び減衰を強くしてみたら、CXの切り返しで車体の動きが鈍くなっ てとても乗りやすくなった。この回は、ひっぱってもらえる機会に恵まれて、 7.6まで。
中一時間半、タイヤを(オイルをぶちまけてしまった)新品の方に交換。これが 使えることの確認もしておきたい。MJは試しにMJ165まで絞ってみた。 旧シリンダのリードバルブも新品にしたので、一度外してビスのチェック。 去年は決勝でリードバルブ外れて悔しい思いをしたからね...。
三本目はS2 11:30。なぜかタイム出ない。ずっと一人旅だし。スローダウンし て待ってみても来ないし。Fのイニシャルを14巻きに強くしたのはやっぱり 失敗だった。13巻き以上だとどうしても最終の立ちあがりでフロントがチャタ ってしまう。8.6しか出なかった。
前走車がいる時のように無心になって走れるといいのだけど...。
S1,S2走って感じたのが、2ヘアのクリップの路面の荒れがひどい? 古タイヤで も新タイヤでもクリップでダダダッと前後横滑りする。この前の雨のレースで もなんかあそこはおかしい気がした。
7:50 D.alt.-19m 14.8℃ 66.5% 1018.4hPa
新品シリンダ、ピストン、チェーン、Fブレーキパッド ナラシ
4.5枚60℃(ナラシ)

10:00 D.alt.163m 19.5℃ 56.1% 1017.9hPa
 MJ170→MJ168
旧シリンダに交換
12巻き 残スト 5/5
3.5枚 65℃
best 7.6

11:30 D.alt.264m 21.8℃ 37.4% 1015.1hPa
 MJ168→MJ165 6速まで13500rpmまわるけれど、まわるだけ感。
14巻き 残スト 7/5 最終チャタ
3枚 65℃
3.8l 残0.4l
Max 160.6km/h




ネギの調子がおもわしくない。根本の葉から枯れてしまうのだ。埋め過ぎたか
なと思い、先週分け目の部分まで掘りおこしたのだけど、どうもまだ調子が悪
い。ここまで半年かかってるのに...。



チンゲンサイの芽。虫に気をつけないと。

出撃準備完了です。

x86続き。 ファイルシステムはH8ベースのロガー用なので、SysVBFSに。これならファイル は物理上で連続セクタなので、ベタ書きにちょっとファイルシステムをかぶ せた程度でちょうどいい。NetBSDならマウントできるし。ただH8とx86でエン ディアンが異なるので、bi-endianサポートしないとだめだけれど。
ファイルシステムの方針が決まったところでブートローダを作りました。4つの 基本領域からNetBSD 領域を探して、disklabelを読み、そこからSysVBFS 領域 をみつけたら、ファイルを選択して直接ELFをロードします。
ついでにチェーンローダ機能や、MBRパーティションの設定変更もできるよう にしました。
チェーンロードはそれぞれパーティションのPartition Boot Record(最初のセ クタ)を0x7c00に読みこんで、リアルモードにして、%dlに、そのローダが使う べきドライブ番号を積んでジャンプしてやればいい。
マルチブートのテストにFreeDOS 1.0を試してみた。やたら大きいisoファイル なのだけど、これはFreeDOSだけじゃなく、今迄のDOS文化の集大成が入ってい る。結構面白い。QEMU上だと若干フリーズするものもあり、実機で楽しんでみ たい。実際のとこ欲しいのはFDISKとFORMATとSYSだけなのだけど。
使ってみるとFORMATの挙動がどうもおかしい。結局MS-DOS 6.2じゃないとうま くいかなかった。
$ qemu  -serial stdio -std-vga -hda disk.img
stack_start: 0xfff0
data: 0xbc60-0xc144 1252byte
bss: 0xc160-0xcb0c 2476byte
A20: enabled.
boot drive: 80
EFLAGS=0x6
MBR partitions.
[0]:80 1 CHS:0/1/32 LBA:63-4096
[1]:0 169 CHS:2/1/32 LBA:4159-28609
[2]:0 0 CHS:0/0/0 LBA:0-0
[3]:0 0 CHS:0/0/0 LBA:0-0
NetBSD partition found. MBR:1
0: type 7 size 24513 offset 4159
1: type 1 size 2048 offset 28672
2: type 0 size 28609 offset 4159
3: type 0 size 32768 offset 0
4: type 8 size 4096 offset 63
5: type 25 size 2048 offset 30720
SysVBFS partition found. disklabel:5
.       48 (2-2)
..      48 (2-2)
kernel.elf      44198 (3-89)
boot> help
[0] help
avaliable command: help reset id active boot_chain boot 
boot> boot kernel.elf
ELF entry point 0x100000
[0] vaddr=0x100000 memsz=0x65c4 paddr=0x100000 offset=0x1000 filesz=0x5384
filesize=44198byte. entry=0x100000
press any key to jump.
$ 
これでやっと大きさの制限のないところまで辿りついた。



CR85はチェーンを新品に。ついでだからナラシ枠の時に、この前買ったブレー
キパッドもナラシをしておこう。

トウモロコシはなかなかの発芽率。朝の段階では皆、黄色かったのが、夜には 緑色になっていた。
トマトは、場所によってまったく発芽しない。発芽してもひょろひょろ。結構 条件がきついのかな。そういうことが多い。発芽する場所はみんな元気がよく て間引きするのがためらわれるのに、発芽しない場所はスカスカ。

スイカも発芽。さすが種が大きいだけあって、最初の双葉からどでかい。びっ くりした。

この中の一個でも収穫できればいいけれど...。



今日は腰上を組んだだけ。新作ヘッド、シリンダ、新品ピストン、リードバル
ブも交換。慣らしだけ終えておいて、いつでも投入できるようにしておくつも
り。

軽く火を入れて水漏れの確認まで。




全日本の日はついついWebチェックばかりして何も進まない。GP125の決勝見た
いな〜。しかし明日はマシン整備だ。

トウモロコシの芽

これはトマト。

Oリング溝切削。幅は2mm。深さは1.6mm。内側はシリンダ外壁から2.5mm、スタッ ド穴から1mm。外側は両側から2mm。
手まわしでゆっくり切削します。外側はちょっと楽したくなって、ギヤを低速 にしてモーターでスピンドルまわして切削したところ、やっぱり思いっきりビ ビった。
この作業は何度やっても緊張する。

Oリング仕様なので、ヘッドに厚さ2mmの銅ワッシャをはめるので、ちょっとス タッドボルトと袋ナットのかかりが減る。問題ないといえば問題ない範囲なの だけど、92900-080400Eの60mmスタッドから6mm削って54mmスタッドを作ってこ れを植えました。



かなり桜も咲いた。



スイカかトマトのどっちか、もう芽が出てきた。ここずっと寒いので衣裳ケー スの中で暖めていました。カビの繁殖もすごい。

04ヘッドをベースに作りました。前の二つが、ベストヘッドを模して天頂部ま でを8.5mmにしてたのに対して、これは10mmとノーマルと同じ値。本来、プラグ 位置は高い方が高回転向けなんだ。
燃焼室が段々になっているのは、うっかり一回目で削り込み過ぎて、測ってみ たら単体9.6ccになってしまって、仕上げの削り込みができなかったのだ。天頂 が1.5mm増えるとかなり違う。燃焼室の形もイメージ通りだ。スキッシュは 0.85mm。
これは走りそうな予感。

単体9.5-9.6cc、組み込み(ベース0.8mmヘッドOリング)で8.0-8.1cc、スキッシュ 0.8-0.9mmのヘッドを3つ作りました。これでストックのヘッドは使いきった。 05の新品は、何も信じられなくなった時用にそのまま残してあります。
ATAC時代のヘッドはウォータージャケットが外側過ぎて今のシリンダには使え なかった。あの頃はアルミシリンダに鉄スリーブだったからジャケットの位置 も外側なんだ。練習用にちょっと削ってみたら、とてもきれいに切削できる。 アルミの質が違う。アルミメッキシリンダ以降のヘッドはどうしてもムシれて しまうところがある。

思いっきり切子を飛ばしたけど、DROは問題なし。よかった。ただ、ちょっと DROに機能つけ過ぎたかな。ゼロリセット、逆転更新、高速更新、電源と4つの 機能をボタンにしたのだけど、使うのはゼロリセットだけだった。

次はシリンダのOリング溝加工だ。今日は芯出しまで。




ヘッド作ります。まだ削って使える80cc時代のヘッドが残ってたので、まずこ
れで。

プラグ軸とヘッド底面はそんなに直角ではないので、まず軽く平面出し。

幅は47.5mm-48.0mmで。ボアは47.5mm。

結構斜めってます。スキッシュエリアを確保するために結構削ることになって しまう。

まずスキッシュの測定。やはり端の段差0.25mmでスキッシュ0.8mm。

12度だと端が0.8mmで縁が0.9mmになる。ちょうどいいかも。

まずは底面位置を決定。ヘッド下面から8.5mmで。

あとはモリモリ切削。見ての通りバイトの構成刃先がひどい。まめに油砥石で 砥ぎながらです。

結局今回も7,8回繰り返すことに。連続して計測する時はプラグのネジの溝に残っ ている灯油(灯油で計測しています)をエアブローしないと測定値がふらつく。

完成。本当はスキッシュとドームの角をもうちょっとなめらかにして、燃焼室 もゆったりとしたカーブにしたいのだけど、燃焼室容量とのかねあいで、こう せざるをえなかった。

スキッシュ0.8mm、単体9.5cc,組み込み8.0cc、狙い通りぴったしにできました。ヘッド高さは26.6mm。シムを入れないでも済むぎりぎりかな。
スペックを刻んで終了。やっぱり一日一個作るのがやっとだ。



x86続き。割り込みについて。CPU部分の次はその先の割り込みコントローラ。
僕を含めた世の中の多くの人の不幸は、一番最初に見た割り込みルーチンが
i8259だったことじゃないだろうか。CPU部分の複雑さに加えて、i8259の設計の
古さ。元々8080/8085用だったのを拡張したものだ。当時はレジスタがあまり使
えなかったので、その中でやりくりするためにどうしても呪文的なものになっ
てしまうし、拡張による見通しの悪さ。ここで10年来のモヤモヤを解決したい。

i8259

内部にレジスタが
  ISR In Service Register
  IMR Interrupt Mask Register
  IRR Interrupt Request Register.
3つある。IMRはOCW1により直接R/W可能。

ISR,IRRはOCW3コマンドを書き込んでどちらかを読むかを指定し、A0を0で読み
込む。その状態は内部に保存されているので、以降のリードは前回指定したも
のが読まれる。

レジスタのアドレスは二つ。A0がActiveか否かをi8259がとっているだけで
それぞれに特有の意味はない。

  A0 D4 D3
   0  1  0: ICW1 Initialize start.
   1  0  0 : OCW1
   0  0  0 : OCW2
   0  0  1 : OCW3

A0がActiveの時はD0-D7全てが使えるが、A0がActiveでない時はD3,D4でコマンド
を決定するため、設定に使えるのはD0,D1,D5-D7になる。

i8259のコマンドには
  ICW(initialization command words)1-4
  OCW(operation command words)1-3

の7つがある。ICWはICW1に設定した後に順々にA0をアクティブにして書き込みを
続けることでICW2,ICW3,ICW4と設定していく。

カスケードは一段まで。カスケードしたi8259との通信ラインはCAS0 CAS1 CAS2
この3本によってそれぞれスレーブは自分宛てかどうかを判断する。

マスターの場合とスレーブの場合で、i8259内部のプログラムが異なる。これは
SP#ピンをGNDに落とすか、Vccにプルアップするかで選択される。(SP Slave
Program)
このピンはEN#と共用になっている。EN#はバスにバッファICをつける必要があ
る時に、そのバッファICにEnableを送るもの。その時はICW4のbit2で、その
i8259がマスターなのか、スレーブなのかをを指定する。これはPC/ATでは使われ
ていない機能。

i8259の割り込み入力ピンIR0-IR7は番号が小さいほど優先度が高い。これは
多少、設定で変更することができる。(Automatic Rotation, Specific Rotation)

動作モード
Fully Nested Mode
割り込みが入るとその優先度以下の割りこみはブロックされる。特に設定しな
ければこれがデフォルト。

Special Fully Nested Mode
Fully Nested modeでスレーブからの割り込みが起こると、マスターはスレーブ
が接続された優先度以下をブロックする。そうするとスレーブ全体でブロック
されたことになるのでスレーブの中で、現在サービス中の割り込みより高い優
先度の割り込みがおきてもブロックされてしまう。このモードではそれを解決
し、マスターはスレーブの優先度未満の割り込みをブロックすることにする。
これを使った場合はEOIに注意。specific-EOIで注意深く発行する。

Automatic End of Interrupt Mode.
自動的にnon-specific EOIを2回目のINTAパルスのタイミングで発行する。
優先度付き多重割り込みを実装するならば、使わない方がいい。

Special Mask Mode
割り込みをAckしてからEOIが発行されるまでの間に、本来ブロックされる
低い優先度の割りこみを多重割りこみさせたい時に、設定する。

Automatic Rotation
優先度はIR0-IR7で固定だが、一度サービスした優先度を最低に内部的に設定
することで均等に割り込みを受けつける。

OCW2
R SL EOI
0  0  1	non-specific EOI
0  1  1	specific EOI -> L0-L2でレベルを指定
1  0  1	rotate on non-specific EOI
1  0  0	rotete in 'automatic EOI mode' (set)
0  0  0 rotate in 'automatic EOI mode' (clear)
1  1  1 rotate on specific EOI -> L0-L2でレベルを指定
1  1  0 set priority -> L0-L2で指定されたレベルが最低優先度になる。
0  1  0 nop

non-specific EOI: fully nested modeの場合、割り込みサービスを受けている
のは一番高い優先度のものなので、それにEOIを発行。

specific EOI: fully nested modeではない場合、必ずしもサービスを完了した
のが一番高い優先度のものではないのでL1-L2でレベルを指定してEOIを発行。

Pollコマンド
OCW2のPビット(2bit)をセットし、その後リードすると、D0-D2にIRRのうち
一番高い優先度が3bitにエンコードされてD0-D2にあらわれる。D7が立って
いると割り込みがある。

----------------------------------------
実際の初期化
----------------------------------------
  // Master
  // Start ICW
  outb (0x20, ICW1_START | ICW1_IC4);

   + IC4を立てておくとこのICW4の設定まで進む。(しなければICW2、
あるいはICW3までになる)

   + !SNGL カスケードしているので立てない。カスケードしていない場合は
ICW3の設定がスキップされる。
   + !ADI これはMCS-80/85 (8080,8085のこと)用の設定で8086/8088用には
意味がない。

   + !LTIM エッジトリガ。これはISAだからと言いたいところだけど、正確に
は歴史的現実的事情か。ISAの割り込み共有については原理的には不可能じゃな
いようだ。
この本
に記述がある。

  // ICW2
  outb (0x21, 0x20);	// vector address 0x20

   + 8086/8088モードの場合はD3-D7にベクタを設定する。D0-D2の3bitが割り
込み番号になる。IDTは0x20からユーザが自由に使えるエリアなのでここに
設定。

  // ICW3
  outb (0x21, (1 << 2)); // IRQ2 is cascaded.

   + カスケードしているピンを指定。ICW1でSNGLならここはスキップされる。

  // ICW4
  outb (0x21, ICW4_AEOI | ICW4_uPM);

  + uPM 8086/8088モード。

  + AEOI CPUからのEOIを待たずに自動的にEOIを発行。(これはこのOSが多重割
  り込みなしのシンプルな設計なので)
  + !MS
  + !BUF PC/ATはSP#/EN#ピンをGND/Vccに接続した使いかたなので必ず0
  + !SFNM Special Fully Nested Mode これは使わない。AEOIを使っているので。

同様にスレーブ。
  // Slave
  // Start ICW
  outb (0xa0, ICW1_START | ICW1_IC4);
  // ICW2 (!ICW1_SNGL)
  outb (0xa1, 0x28);	// vector address 0x28
  // ICW3 (slave ID)
  outb (0xa1, 0x02);	// my ID is 2

  + スレーブの場合はICW3の設定がマスターと異なる。受信すべきIDを設定。

  // ICW4
  outb (0xa1, ICW4_AEOI | ICW4_uPM);// 8086 mode. Auto EOI mode.

  // Intialization completed.

この後、OCWでは
  // OCW1 mask interrupt.
  outb (0x21, 0xff);
  outb (0xa1, 0xff);
  + OCW1:割り込みマスクの設定。まずは全部マスク

OCW2はEOIの発行、優先度ローテーションの設定/解除、特定の優先度の変更
ができるが、特に設定はなし。

OCW3ではSpecial Mask Modeと、A0=0でリードした時にISRを読むかIRRを読むか
の設定ができるが、特に設定はなし。

MonotaRO(モノタロウ)
あわせて読みたい