techical.txt

			   September 4 2000

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


==============================================================================
1. ͂߂
2. ʓI IPL 쎞̃}bv
3. scorpius ̓Tv
4. Cӂ̃n[hfBXNu[g邽߂̕z
==============================================================================

[1] ͂߂

̃hLg extipl  scorpius(\[X antares.asm) ƌĂ
̂̓̂łB
ver.4x ł͓B̂̂łAver.5 ł͓Ɏw肵ȂCXg[
܂BAS[_̎dl͂ꂪN_ɂȂĂ܂A
{Iȏ󂯌pĂ܂BVɒǉꂽ gemini, taurus, aquila 
\[X͂鎞̎QlɂȂƎv܂B


[2] ʓI IPL 쎞̃}bv

scorpius ̓n[hfBXÑu[gZN^ɒu master-IPL ŁAsystem ROM
 IPL[`ɂ 0x07C00 ԒnɃ[hꐧ䂪ڂ܂B 0x07C00 
Ԓn͒ʏfBXNɏꂽ IPL ǂݍނ߂Ɏg܂Bscorpius ͎
N OS [_̂߂ɂ̗̈Ag 0x0600 ԒnɈړA
dJn܂B0x0600 Ԓnő鎞̃}bv͎̂悤ɂȂĂ܂B

        |                      |
        ^                      ^
        |----------------------|
        |                      |
        |     512 byte         | <- scorpius  OS [_ǂݍޏꏊ
        |                      |             iŏ͎ɓǂ܂j
0x07C00 +======================+ <- scorpius  stack ̈̏
        |                      |             iN sp ɃZbglj
        ^                      ^
        |------------------55AA| <- boot W 0xAA55
0x007BE |______64_byte_________| <- partition table Ɨ̈
        |                      |
        |     446 byte         | <- scorpius  code & data ̈
        |                      |
0x00600 +======================+
        |                      |
        ^                      ^
        |                      |
        |                      | <- ̂̓VXe\̍Ɨ̈
        |                      | <- 荞݃xN^e[uB
0x00000 +----------------------+
/////////////////////////////////////////////////////////////////////////



[3] scorpius ̓Tv

0x0600 Ɉړ scorpius ͎̂悤Ȏ菇ŃANeBüTu
[g邩A邢̓[Ü̗I҂ĊY OS u[g܂BȂA
̐͊TOIȂ̂ŁAۂ̃vO̓Ƃ͌ɂ͈Ă܂B

    (1) tbs[hCũ[^ off ɂȂ܂ł̊ԁAVtgL[邩
        ǂ`FbN܂B
                AVtgL[ꂽȂ (3) ɔт܂B

    (2) partition table ANeBüT܂B
                AANeBü悪 (4.5) ɔт܂B
                AANeBü̃u[gZN^̓eK̃u[gv
                OƔF߂ȂƂɂ͌x̃x炵 (3) Ɉڂ
                IԂɂȂ܂B

    (3) Yn[hfBXÑp[eBVe[u_vAIvvg
        "Boot #?:?.?" o܂Bvvg ɑ HD jbgԍƃp
        [eBVe[ůKwAANeBü̔ԍłBS̈ANeB
        uȂΗ̈ԍ͌Ƃ "1" ƂȂ܂B

    (4) L[͂҂AꂽL[̏Ń`FbN܂B

        (4.1) ꂽL[ "0", "1"`"4" ȂΑIꂽԍ\A
              L[͂҂߂ (4) ɖ߂܂B

        (4.2) ꂽL[ <Enter>, <End> Ȃ(4.3)ȍ~̏s܂A
              mL[ɊYȂΌx̃x炵 (4) ɖ߂܂B

        (4.3) Iꂽԍ "0" Ȃ΁ABIOS 猩鎟̃n[hfBXN
              擪ZN^ 0x07C00 Ԓnɓǂ݁Ap[eBVe[u
              0x07BE ԒnɃRs[A(3) ɖ߂܂B̍ۂɊeϐ͂ꂼ
              ̏Ԃɍ킹čĐݒ肳܂B

        (4.4) "1"`"4" IꂽAŸ悪gpĂȂΌx
              ̃x炵 (4) ɖ߂܂B

        (4.5) Iꂽ̈悪 g̈Ȃ΁Ag̈̐擪ZN^ 0x07C00
              Ԓnɓǂ݁Ap[eBVe[u 0x07BE ԒnɃRs[A
              Kwe[u\̃vvgXV (3) ɔт܂B

        (4.6) Ÿ̐擪ZN^̓eiOS ̃u[g[_j 0x7C00 Ԓn
              ǂݍ݂܂B
                        | (2) 炱ɔэ񂾏ꍇɂ͊҂Ă郌WX^
                        | ̒lL (b) ɂ͊Y܂̂ <Enter> L[
                        | ꂽƓlɏ܂B

          (a) ꂽL[ <Enter> Ȃ΁AAA
                0x7C00 ɓǂݍ܂ꂽu[gZN^̖ 0xAA55 āAKu
                [gZN^ł邱ƂmFĂ (5) ɔт܂B
          (b) ꂽL[ <End> Ȃ΁AAA
                <Enter> L[lɐK̃u[gZN^ł邱ƂmF܂B
                ău[gΏۂƂĂn[hfBXNhCu 1 ڂŊ{
                ̎ɌAIꂽ̈ active flag Zbĝ}
                X^u[gZN^ɏ߂Ă (5) ɔт܂B

    (5) 0x7C00  jump 邱ƂɂY OS ̃u[gvON܂B
        ̎eWX^l͈ȉ̂悤ȈӖĂ܂B
            ax, bx, cx, dh, di, bp = Ӗ
	    dl = DISK BIOS 猩hCuԍ (0x80, 0x81, ..)
            ds = scorpius ̃f[^ZOgl@(0x0000)
            si = N[_̒uꂽ̈|C^
                 N̈ԍ n Ƃ si ̎l͎̎ŕ\܂B

                     si = 0x07BE + 16 * (n - 1)
                                              (n  1 .. 4 ̒l)

                 ɂNꂽ OS ̃[_ ds:si ̎Ԓn肪
                 ɂĎ̒uꂽ̈̏oƂł܂B
                 ܂ÂƂɃ|C^ ds:si ̎Ԓnɂ̓ANeBü
                 邱Ƃ OS ̃[_ɒm点邽߂ MSB Zbg܂B
                  ds:si ̒l IBM ̋Zpłۏ؂Ă܂B


[4] Cӂ̃n[hfBXNu[g邽߂̕z

scorpius  ROM BIOS gAL̂悤Ȏ菇 OS u[g܂AN
 OS ̃[_ΉĂȂ BIOS oR 2ڈȍ~ƂĔF
n[hfBXNu[g邱Ƃł܂BقƂǂ OS  1 ڂ̃n
[hfBXN炵u[gł܂̂ŉߓx̊҂͂Ȃ悢m܂
B

ł́Ascorpius  2 ڈȍ~̃n[hfBXNǂݍ񂾂Ƃ OS ̃u[
g[_ɂ点邩炭ɂĐ܂B܂A܂̎ł傤AP
̃p[eBV\͎̂悤ȍ\̂Ɠł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;

ŁAu[g\ȃp[eBVł邱Ƃ partition.bootind ̓e
ʏ 0x80iu[gj邢 0x00iu[gsj2̒l܂B
scorpius  1 ڂu[gƂɂ͑Iꂽ̈ partition.bootind 
0x80 ɃZbg OS ̃[_ɐn܂BA2 ڂNȂ
΁A̒l 0x81 Ƃēǂݍ񂾃[_ɐn܂B
܂Ascorpius oRŌĂяoꂽ OS ̃[_ partition.bootind  MSB 
}XNl BIOS FĂn[hfBXN̉ڂ玩ǂ
ꂽ̂m邱Ƃł܂B
ANn[hfBXN IDE type Ȃ̂ SCSI type Ȃ̂m鎖͂
܂B̂ OS ̃[_̎dɂȂ܂B܂Aۂ BIOS ݂
ŏ̃n[hfBXNȊOu[gł邩́Ascoprius 琧nꂽ OS
̃[_Ɉˑ邱ƂYȂłB

========
/*  $Id: techical.txt,v 1.1.1.1 2000/11/29 11:58:19 takamiti Exp $  */
# end of technical.txt
