090407

|



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



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

出撃準備完了です。

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.
$ 
これでやっと大きさの制限のないところまで辿りついた。