extipl::Develop.txt for FreeBSD/Linux

                           April 5 1999

                        takamiti@tsden.org
                         extipl@tsden.org
                http://www.tsden.org/takamiti/extipl/

==============================================================================
1. $B$O$8$a$K(B
  1.1  IPL Code $B$N:n@.J}K!(B
2  extipl $B$N(B compile
  2.1  FreeBSD $B4D6-(B
  2.2  Linux $B4D6-(B
3. $B%5%s%W%k%=!<%9$K$D$$$F(B
4. $B5;=Q>pJs(B
  4.1  $BF0:n;~$N%a%b%j%^%C%W(B
  4.2  $BF0:n2r@b(B
  4.3  $BG$0U$N%O!<%I%G%#%9%/$+$i%V!<%H$5$;$k;E3]$1(B
==============================================================================


[1] $B$O$8$a$K(B

$B$3$N%I%-%e%a%s%H$O!"(Bextipl $B$KJ*B-$j$J$5$r46$8$?$H$+!"<+J,$N<j$G(B IPL $B$r=q$$$F(B
$B$_$?$$?MC#$N$?$a$KMQ0U$7$?$b$N$G$9!#$7$+$7!"$3$N(B IPL $B$N3+H/$O%3!<%I%5%$%:$N@)(B
$B8B$d!":3:Y$J%A%g%s%\$,Bg$-$JIT9,$NF~8}$K$J$k$J$I!"C/$G$b$,<j7Z$K;H$($k$b$N$G$O(B
$B$"$j$^$;$s!#OS$K<+?.$,$"$j!"$I$s$J$3$H$,5/$3$C$F$b92$F$:$KBP=h$G$-$k?M$@$1$,!"(B
$B<+J,$N@UG$$G$*;n$7$/$@$5$$!#(B
$B$=$s$J$o$1$G!"$3$N%I%-%e%a%s%H$O(B extipl package $B$N%=!<%9%3!<%I$r6l$b$J$/FI$a$k(B
$B?M$rBP>]$K=q$$$F$$$^$9!#(B

$B$b$7!"$3$3$N%R%s%H$+$i$h$j8-$$(B master-IPL $B$,$G$-$?$J$i$P(B takamiti@tsden.org
$B$"$k$$$O(B extipl@tsden.org $B$^$G$*CN$i$;$$$?$@$1$l$P$&$l$7$$$G$9!#(B


[1.1] IPL Code $B$N:n@.J}K!(B

$B<!$N$h$&$J<j=g$GFH<+$N(B master IPL $B$r:n$k$3$H$,$G$-$^$9!#$J$*!":n6H%G%#%l%/%H%j(B
$B$O(B extipl/samples/ $B$H$7$F@bL@$7$^$9!#(B

  (1) $B%5%V%G%#%l%/%H%j(B samples $B$KE:IU$5$l$F$$$k%5%s%W%k%=!<%9$H!"!V(B[4] $B5;=Q>p(B
      $BJs!W$H$r;29M$K$7$F$"$J$?FH<+$N(B IPL $B%=!<%9$r:n@.$7!"$=$l$r(B myipl.asm $B$H(B
      $B$7$FJ]B8$7$?$H$7$^$9!#(B

  (2) $BE:IU$5$l$F$$$k(B samples/Makefile $B$K(B

        myipl.bin : myipl.asm

      $B$N#19T$r=q$-2C$($F$+$i!"(B

        $ make myipl.bin

      $B$H$7$^$9!#(Bmake $B$,L5;v$K=*N;$9$k$H(B myipl.bin $B$H$$$&$b$N$,$G$-$F$$$^$9!#(B
      $B$3$l$,!"L\E*$N<j:n$j(B IPL $B$N%P%$%J%j$G$9!#%"%;%s%V%k%j%9%H$,(B myipl.lst
      $B$H$7$FF1;~$K=PNO$5$l$^$9$+$i!"I,MW$J$i$P%3!<%IFbMF$N8!>Z$K;H$($^$9!#(B

  (3) $B=PMh>e$,$C$?(B myipl.bin $B$NFbMF$,@5$7$$$+$I$&$+$r$-$A$s$H3NG'$7$F$/$@$5$$!#(B
      $B$3$N:n6H$G<j$rH4$/$H8e$G5c$/$3$H$K$J$j$^$9!#<B:]$K(B extipl $B$K$h$C$F=q$-9~(B
      $B$^$l$kFbMF$rCN$j$?$1$l$P!"%G%P%C%0%*%W%7%g%s$r;H$$$^$9!#(B

        $ extipl -d install wd0 myipl.bin

      $B$H$9$k$3$H$K$h$j!"(Bextipl $B$,%V!<%H%;%/%?$K=q$-9~$`%$%a!<%8$=$N$b$N$r(B
      "./_BootSec.?????" $B$H$7$F<h$j=P$9;v$,$G$-!"$h$j8=<BE*$JE@8!$,2DG=$G$9!#(B
      ("?????" $B$NItJ,$K$O=q$-9~$`BP>]$N%;%/%?%"%I%l%9$,;H$o$l$^$9(B)

  (4) $B$3$l$i$N%F%9%H$GLdBj$,$J$1$l$P!"(B

        # extipl install wd0 myipl.bin

      $B$H$9$k$3$H$K$h$j%O!<%I%G%#%9%/$N%V!<%H%;%/%?$K?7$7$$(B IPL $B$r=q$-9~$`$3$H(B
      $B$,$G$-$^$9!#$b$A$m$s!"%U%m%C%T!<%G%#%9%/$+$i%V!<%H$7!"%O!<%I%G%#%9%/$+(B
      $B$i$N%V!<%H$r%7%_%e%l!<%H$G$-$k$h$&$K(B IPL-Launcher $B$rAH$_9~$s$G$$$k$J$i(B
      $B$P(B

        # extipl fdtest fd0 myipl.bin

      $B$H$9$k$3$H$,$G$-$^$9!#$J$*!"(Bextipl $B$O(B $B%5%V%3%^%s%I(B install $B$G=q$-9~$`;~!"(B
      $BBP>]%W%m%0%i%`$N@hF,$+$i(B 446 $B%P%$%H$rD6$($kItJ,$r6/@)E*$K@Z$j<N$F$^$9!#(B
      $B$"$/$^$G$b5v$5$l$k%W%m%0%i%`$ND9$5$O(B 446 $B%P%$%H0J2<$G$"$k$3$H$rK:$l$J$$(B
      $B$G$/$@$5$$!#$b$7!"FI$_9~$s$@(B myipl.bin $B$NBg$-$5$,(B 446 $B%P%$%H0J2<$J$i$P!"(B
      $B$=$NJ,$@$1$r%V!<%H%;%/%?$K=q$-9~$_$^$9!#(B

         install $B$d(B fdtest $B%3%^%s%I$,B3$/0z?t$r2r<a$G$-$k$3$H$O(B extipl.txt $B$K(B
         $BL@5-$7$F$$$^$;$s!#%=!<%9%3!<%I$rFI$`$H2?$+NI$$$3$H$,$"$k$b$N$G$9!#(B


[2] extIPL $B$N(B compile
$B$3$N(B extipl package $B$O(B FreeBSD 2.2.8R, 3.1R $B$H(B Linux 2.0.36 $B$G%3%s%Q%$%k$G$-$k(B
$B$3$H$r3NG'$7$F$$$^$9!#(B
$BN>4D6-$H$b!"$"$i$+$8$a(B nasm $B$r(B http://www.web-sites.co.uk/nasm/ $B$+$iF~<j$7$F;H(B
$B$($k$h$&$K$7$F$*$+$J$1$l$P$J$j$^$;$s!#(B


[2.1] FreeBSD $B4D6-(B
$B%5%V%G%#%l%/%H%j(B src $B$K0\F0$7$F!"(Bmake $B$H$7$F$/$@$5$$!#$b$7!"(Bmake $B$,<:GT$9$k$J$i(B
$B$P(B Gnu-make $B$G;n$9$+!"(BMakefile $B$rE,59=q$-49$($F$/$@$5$$!#(B

[2.2] Linux $B4D6-(B
$B%5%V%G%#%l%/%H%j(B src $B$K0\F0$7$F!"(Bmake $B$H$7$F$/$@$5$$!#%I%-%e%a%s%HN`$N%$%s%9%H(B
$B!<%k@h$rJQ99$7$?$$$H$-$K$O!"(BMakefile $B$rD>@\=q$-49$($k$+(B

    # PREFIX=yourPrefix DOCPATH=yourDocPath make install

$B$H$7$F$/$@$5$$!#(B


[3] $B%5%s%W%k%=!<%9$K$D$$$F(B
$B%5%s%W%k$H$7$F!"(BDISK BIOS $B$N3HD%%5!<%S%9$rMxMQ$7!"(BLBA $B%"%/%;%9$K$bBP1~$5$;$?0J(B
$B2<$N%=!<%9%3!<%I$rE:IU$7$^$9!#(B

    lba_xipl.asm : LBA/CHS $BN>MQ(B Extednde IPL $B%=!<%9(B
    lbafdsim.asm : LBA/CHS $BN>MQ(B Extednde IPL $B$N%U%m%C%T!<%F%9%HHG(B
    lba_main.asm : LBA/CHS $BN>MQ(B Extednde IPL $BK\BN(B

$B%3!<%I%5%$%:(B 446 $B%P%$%H$N@)8B$,$"$k$?$a$K!"%"%/%F%#%VNN0h$NJQ995!G=$r30$7$F$$(B
$B$^$9!#$^$?!"%3!<%I%5%$%:$,A}$($F$$$^$9$N$G(B DR-DOS $B$N(B password $B5!G=$H6&B8$,$G$-(B
$B$^$;$s!#%(%i!<=hM}$b4E$/$J$C$F$$$^$9!#FC$K3HD%NN0hFb$G$N%;%/%?%"%I%l%97W;;%k!<(B
$B%A%s$O@-A1@b$K$b$H$:$$$?<jH4$-$r$7$F$$$^$9$N$GCm0U$7$F$/$@$5$$!#$b$&>/$7!"%m%8(B
$B%C%/$r@v$($P2?$H$+$J$k(B .... $B$+$J!)(B
$B$3$N(B IPL $B$r(B LBA $B@lMQ$K$9$k$3$H$O6K$a$FMF0W$G$9$7!"$=$NJ,%3!<%I%5%$%:$X$NIi2Y$b(B
$B7Z$/$J$j%"%I%l%97W;;%k!<%A%s$r$^$H$b$J$b$N$K$G$-$^$9$,!"(BLBA $BHsBP1~$N#H#D$,@\B3(B
$B$5$l$?;~$KHs>o$K:$$C$?$3$H$K$J$j$^$9!#(B
LBA $B%"%/%;%9ItJ,$N$_$rH4$-=P$7$F;H$&;~$K$O!";H$&4D6-$K==J,$KCm0U$7$F$/$@$5$$!#(B


[4] $B5;=Q>pJs(B

[4.1] $BF0:n;~$N%a%b%j%^%C%W(B
Extended-IPL$B$O%O!<%I%G%#%9%/$N%V!<%H%;%/%?$KCV$+$l$k(B master-IPL $B$G!"(Bsystem ROM
$B$N(B IPL$B%k!<%A%s$K$h$j(B 0x07C00 $BHVCO$K%m!<%I$5$l@)8f$,0\$5$l$^$9!#$3$N(B 0x07C00 
$BHVCO$ODL>o%G%#%9%/$K=q$+$l$?(B IPL $B$rFI$_9~$`$?$a$K;H$o$l$^$9$N$G(B Extended-IPL 
$B$O<+J,$,5/F0$5$;$k(B OS $B$N%m!<%@$N$?$a$K$3$NNN0h$rHr$1!"<+J,<+?H$r(B 0x0600 $BHVCO$K(B
$B0\F0$7K\Mh$N;E;v$r3+;O$7$^$9!#(B0x0600 $BHVCO$GAv$k;~$N%a%b%j%^%C%W$O<!$N$h$&$K$J$C(B
$B$F$$$^$9!#(B

        |                      |
        ^                      ^
        |----------------------|
        |                      |
        |     512 byte         | <- Extended-IPL $B$,(B OS $B%m!<%@$rFI$_9~$`>l=j(B
        |                      |             $B!J:G=i$O<+J,$b$3$3$KFI$^$l$k!K(B
0x07C00 +======================+ <- Extended-IPL $B$N(B stack $BNN0h$N>e8B(B
        |                      |             $B!J5/F0;~$K(B sp $B$K%;%C%H$9$kCM!K(B
        ^                      ^
        |------------------55AA| <- boot $BI8<1(B 0xAA55
0x007BE |______64_byte_________| <- partition table $B:n6HNN0h(B
        |                      |
        |     446 byte         | <- Extended-IPL $B$N(B code & data $BNN0h(B
        |                      |
0x00600 +======================+
        |                      |
        ^                      ^
        |                      |
        |                      | <- $B$3$N$"$?$j$O%7%9%F%`M=Ls$N:n6HNN0h$d(B
        |                      | <- $B3d$j9~$_%Y%/%?%F!<%V%k$,$"$k!#(B
0x00000 +----------------------+
/////////////////////////////////////////////////////////////////////////



[4.2] $BF0:n2r@b(B
0x0600 $B$K0\F0$7$?(B Extended-IPL $B$O<!$N$h$&$J<j=g$G%"%/%F%#%VNN0h$rC5$7$=$3$+$i(B
$B%V!<%H$9$k$+!"$"$k$$$O%f!<%6$NNN0hA*Br$rBT$C$F3:Ev(B OS $B$r%V!<%H$5$;$^$9!#$J$*!"(B
$B$3$N@bL@$O35G0E*$J$b$N$G!"<B:]$N%W%m%0%i%`$NF0:n$H$O87L)$K$O0c$C$F$$$^$9!#(B

    (1) $B%U%m%C%T!<%I%i%$%V$N%b!<%?$,(B off $B$K$J$k$^$G$N4V!"%7%U%H%-!<$,2!$5$l$k$+(B
        $B$I$&$+$r%A%'%C%/$7$^$9!#(B
                $B$b$7!"%7%U%H%-!<$,2!$5$l$?$J$i$P(B (3) $B$KHt$S$^$9!#(B

    (2) partition table $B$+$i%"%/%F%#%VNN0h$rC5$7$^$9!#(B
                $B$b$7!"%"%/%F%#%VNN0h$,$"$l$P(B (4.5) $B$KHt$S$^$9!#(B
                $B$7$+$7!"%"%/%F%#%VNN0h$N%V!<%H%;%/%?$NFbMF$,@55,$N%V!<%H%W%m(B
                $B%0%i%`$HG'$a$i$l$J$$$H$-$K$O7Y9p$N%Y%k$rLD$i$7$F(B (3) $B$K0\$jNN(B
                $B0hA*Br>uBV$K$J$j$^$9!#(B

    (3) $B3:Ev%O!<%I%G%#%9%/$N%Q!<%F%#%7%g%s%F!<%V%k$r%@%s%W$7!"A*Br%W%m%s%W%H(B
        "Boot #?:?.?" $B$r=P$7$^$9!#%W%m%s%W%H(B $B$KB3$/?t;z$O(B HD $B%f%K%C%HHV9f$H%Q(B
        $B!<%F%#%7%g%s%F!<%V%k$N3,AX!"%"%/%F%#%VNN0h$NHV9f$G$9!#A4NN0hHs%"%/%F%#(B
        $B%V$J$i$PNN0hHV9f$O86B'$H$7$F(B "1" $B$H$J$j$^$9!#(B

    (4) $B%-!<F~NO$rBT$A!"2!$5$l$?%-!<$r<!$N=g=x$G%A%'%C%/$7$^$9!#(B

        (4.1) $B2!$5$l$?%-!<$,(B "0", "1"$B!A(B"4" $B$J$i$PA*Br$5$l$?HV9f$rI=<($7!"<!$N(B
              $B%-!<F~NO$rBT$D$?$a$K(B (4) $B$KLa$j$^$9!#(B

        (4.2) $B2!$5$l$?%-!<$,(B <Enter>, <End> $B$J$i$P(B(4.3)$B0J9_$N=hM}$r9T$$$^$9$,!"(B
              $B$3$l$i3NDj%-!<$K3:Ev$7$J$1$l$P7Y9p$N%Y%k$rLD$i$7(B (4) $B$KLa$j$^$9!#(B

        (4.3) $BA*Br$5$l$?HV9f$,(B "0" $B$J$i$P!"(BBIOS $B$+$i8+$($k<!$N%O!<%I%G%#%9%/$N(B
              $B@hF,%;%/%?$r(B 0x07C00 $BHVCO$KFI$_!"%Q!<%F%#%7%g%s%F!<%V%k$@$1$r(B
              0x07BE $BHVCO$K%3%T!<$7!"(B(3) $B$KLa$j$^$9!#$=$N:]$K3FJQ?t$O$=$l$>$l(B
              $B$N>uBV$K9g$o$;$F:F@_Dj$5$l$^$9!#(B

        (4.4) "1"$B!A(B"4" $B$,A*Br$5$l$?$,!"3:Ev$9$kNN0h$,;HMQ$5$l$F$$$J$1$l$P7Y9p(B
              $B$N%Y%k$rLD$i$7$F(B (4) $B$KLa$j$^$9!#(B

        (4.5) $BA*Br$5$l$?NN0h$,(B $B3HD%NN0h$J$i$P!"3HD%NN0hFb$N@hF,%;%/%?$r(B 0x07C00
              $BHVCO$KFI$_!"%Q!<%F%#%7%g%s%F!<%V%k$@$1$r(B 0x07BE $BHVCO$K%3%T!<$7!"(B
              $B3,AX%F!<%V%kI=<($N%W%m%s%W%H$r99?7$7$F(B (3) $B$KHt$S$^$9!#(B

        (4.6) $B3:EvNN0h$N@hF,%;%/%?$NFbMF!J(BOS $B$N%V!<%H%m!<%@!K$r(B 0x7C00 $BHVCO$K(B
              $BFI$_9~$_$^$9!#(B
                        | (2) $B$+$i$3$3$KHt$S9~$s$@>l9g$K$O4|BT$7$F$$$k%l%8%9%?(B
                        | $B$NCM$,2<5-(B (b),(c) $B$K$O3:Ev$7$^$;$s$N$G(B <Enter> $B%-!<(B
                        | $B$,2!$5$l$?;~$HF1MM$K=hM}$5$l$^$9!#(B

          (a) $B2!$5$l$?%-!<$,(B <Enter> $B$J$i$P!"!"!"(B
                0x7C00 $B$KFI$_9~$^$l$?%V!<%H%;%/%?$NKvHx$N(B 0xAA55 $B$r8+$F!"@55,%V(B
                $B!<%H%;%/%?$G$"$k$3$H$r3NG'$7$F$+$i(B (5) $B$KHt$S$^$9!#(B
          (b) $B2!$5$l$?%-!<$,(B <End> $B$J$i$P!"!"!"(B
                <Enter> $B%-!<F1MM$K@55,$N%V!<%H%;%/%?$G$"$k$3$H$r3NG'$7$^$9!#$=(B
                $B$7$F%V!<%HBP>]$H$7$F$$$k%O!<%I%G%#%9%/%I%i%$%V$,(B 1 $BBfL\$G4pK\NN(B
                $B0h$N;~$K8B$j!"A*Br$5$l$?NN0h$K(B active flag $B$r%;%C%H$7$?$b$N$r%^(B
                $B%9%?%V!<%H%;%/%?$K=q$-La$7$F$+$i(B (5) $B$KHt$S$^$9!#(B

    (5) 0x7C00 $B$K(B jump $B$9$k$3$H$K$h$j3:Ev(B OS $B$N%V!<%H%W%m%0%i%`$r5/F0$5$;$^$9!#$3(B
        $B$N;~3F%l%8%9%?CM$O0J2<$N$h$&$J0UL#$r;}$C$F$$$^$9!#(B
            ax, bx, cx, dh, di, bp = $BL50UL#(B
	    dl = DISK BIOS $B$+$i8+$?%I%i%$%VHV9f(B (0x80, 0x81, ..)
            ds = Extended-IPL $B$N%G!<%?%;%0%a%s%HCM!!(B(0x0000)
            si = $B5/F0$7$?%m!<%@$NCV$+$l$?NN0h$r<($9%]%$%s%?(B
                 $B5/F0NN0hHV9f$r(B n $B$H$9$l$P(B si $B$N;}$DCM$O<!$N<0$GI=$5$l$^$9!#(B

                     si = 0x07BE + 16 * (n - 1)
                                              (n $B$O(B 1 .. 4 $B$NCM$r<h$k(B)

                 $B$3$l$K$h$j5/F0$5$l$?(B OS $B$N%m!<%@$O(B ds:si $B$N<($9HVCO$r<j$,$+$j(B
                 $B$K$7$F<+J,$NCV$+$l$?NN0h$N>pJs$r<h$j=P$9$3$H$,$G$-$^$9!#(B
                 $B$^$?!"$3$N$H$-$K%]%$%s%?(B ds:si $B$N<($9HVCO$K$O%"%/%F%#%VNN0h$G(B
                 $B$"$k$3$H$r(B OS $B$N%m!<%@$KCN$i$;$k$?$a$K(B MSB $B$r%;%C%H$7$^$9!#(B
                 $B$3$N(B ds:si $B$NCM$O(B IBM $B$N5;=Q;qNA$G$bJ]>Z$5$l$F$$$^$9!#(B


[4.3] $BG$0U$N%O!<%I%G%#%9%/$+$i%V!<%H$5$;$k;E3]$1(B

Extended-IPL $B$O(B ROM BIOS $B$r;H$$!">e5-$N$h$&$J<j=g$G(B OS $B$r%V!<%H$7$^$9$,!"$b$7(B
$B5/F0$7$?$$(B OS $B$N%m!<%@$5$(BP1~$7$F$$$k$J$i$P(B BIOS $B7PM3$G(B 2$BBfL\0J9_$H$7$F$KG'<1(B
$B$5$l$k%O!<%I%G%#%9%/$+$i$b%V!<%H$5$;$k$3$H$,$G$-$^$9!#$[$H$s$I$N(B OS $B$O(B 1 $BBfL\(B
$B$N%O!<%I%G%#%9%/$+$i$7$+%V!<%H$G$-$^$;$s$N$G2aEY$N4|BT$O$7$J$$J}$,$h$$$+$bCN$l(B
$B$^$;$s!#(B

$B$3$3$G$O!"(BExtended-IPL $B$,(B 2 $BBfL\0J9_$N%O!<%I%G%#%9%/$+$iFI$_9~$s$@$3$H$r(B OS $B$N(B
$B%V!<%H%m!<%@$K$7$i$;$k$+$i$/$j$K$D$$$F@bL@$7$^$9!#(B
$B$^$:!"$$$^$5$i$N;v$G$7$g$&$,!"(B1$B$D$N%Q!<%F%#%7%g%s$rI=$9>pJs$O<!$N$h$&$J9=B$BN$H(B
$BEy2A$G$9!#(B

            typedef unsigned char byte;

            typedef struct {
                byte head;
                byte sector;
                byte cyl;
            } hd_addr;

            typedef struct {
                byte                bootind;        <<--- active flag
                hd_addr             start;
                byte                systemind;
                hd_addr             end;
                unsigned long       start_sector;
                unsigned long       nr_sectors;
            } partition;

$B$3$3$G!"%V!<%H2DG=$J%Q!<%F%#%7%g%s$G$"$k$3$H$r<($9(B partition.bootind $B$NFbMF$O(B
$BDL>o(B 0x80$B!J%V!<%H2D!K$"$k$$$O(B 0x00$B!J%V!<%HIT2D!K$N(B2$B$D$NCM$7$+;}$A$^$;$s!#(B
Extended-IPL $B$b(B 1 $BBfL\$+$i%V!<%H$7$?$H$-$K$OA*Br$5$l$?NN0h$N(B partition.bootind
$B$r(B 0x80 $B$K%;%C%H$7$F(B OS $B$N%m!<%@$K@)8f$rEO$7$^$9!#$7$+$7!"(B2 $BBfL\$+$i5/F0$7$?$J(B
$B$i$P!"$3$NCM$r(B 0x81 $B$H$7$FFI$_9~$s$@%m!<%@$K@)8f$rEO$7$^$9!#(B
$B$D$^$j!"(BExtended-IPL $B7PM3$G8F$S=P$5$l$?(B OS $B$N%m!<%@$O(B partition.bootind $B$N(B MSB
$B$r%^%9%/$7$?CM$r8+$l$P(B BIOS $B$,G'<1$7$F$$$k%O!<%I%G%#%9%/$N2?BfL\$+$i<+J,$,FI$^(B
$B$l$?$N$+$rCN$k$3$H$,$G$-$^$9!#(B
$B$7$+$7!"5/F0$7$?%O!<%I%G%#%9%/$,(B IDE type $B$J$N$+(B SCSI type $B$J$N$+$rCN$k;v$O$G(B
$B$-$^$;$s!#$3$N$"$?$j$O(B OS $B$N%m!<%@$N;E;v$K$J$j$^$9!#(B

# end of develop.txt
