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

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

出撃準備完了です。

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じゃないとうま くいかなかった。

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

出撃準備完了です。

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