techical.txt

			   September 4 2000

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


==============================================================================
1. Ϥ
2. Ū IPL ưΥޥå
3. scorpius ư
4. ǤդΥϡɥǥ֡Ȥ뤿
==============================================================================

[1] Ϥ

ΥɥȤ extipl ¢ scorpius(̾ antares.asm) ȸƤ
Τư⤷ΤǤ
ver.4x Ǥ¢ͣΤΤǤver.5 Ǥä˻ꤷʤ¤ꥤ󥹥ȡ
뤵ޤ󡣤¢λͤϤ줬ˤʤäƤޤ
ŪʽѤƤޤɲä줿 gemini, taurus, aquila 
ϤλͤˤʤȻפޤ


[2] Ū IPL ưΥޥå

scorpius ϥϡɥǥΥ֡ȥ֤ master-IPL ǡsystem ROM
 IPL롼ˤ 0x07C00 Ϥ˥ɤ椬ܤޤ 0x07C00 
Ϥ̾ǥ˽񤫤줿 IPL ɤ߹ि˻Ȥޤscorpius ϼʬ
ư OS Τˤΰ򤱡ʬȤ 0x0600 Ϥ˰ư
Ż򳫻Ϥޤ0x0600 ϤΥޥåפϼΤ褦ˤʤäƤޤ

        |                      |
        ^                      ^
        |----------------------|
        |                      |
        |     512 byte         | <- scorpius  OS ɤ߹
        |                      |             ʺǽϼʬ⤳ɤޤ
0x07C00 +======================+ <- scorpius  stack ΰξ
        |                      |             ʵư sp ˥åȤ͡
        ^                      ^
        |------------------55AA| <- boot ɸ 0xAA55
0x007BE |______64_byte_________| <- partition table ΰ
        |                      |
        |     446 byte         | <- scorpius  code & data ΰ
        |                      |
0x00600 +======================+
        |                      |
        ^                      ^
        |                      |
        |                      | <- Τϥƥͽκΰ
        |                      | <- ߥ٥ơ֥뤬롣
0x00000 +----------------------+
/////////////////////////////////////////////////////////////////////////



[3] scorpius ư

0x0600 ˰ư scorpius ϼΤ褦ʼǥƥΰõ
Ȥ뤫뤤ϥ桼ΰԤäƳ OS ֡Ȥޤʤ
ϳǰŪʤΤǡºݤΥץưȤϸ̩ˤϰäƤޤ

    (1) եåԡɥ饤֤Υ⡼ off ˤʤޤǤδ֡եȥ뤫
        ɤåޤ
                ⤷եȥ줿ʤ (3) Ӥޤ

    (2) partition table 饢ƥΰõޤ
                ⤷ƥΰ褬 (4.5) Ӥޤ
                ƥΰΥ֡ȥƤΥ֡ȥץ
                ǧʤȤˤϷٹΥ٥Ĥ餷 (3) ˰ܤ
                ֤ˤʤޤ

    (3) ϡɥǥΥѡƥơ֥פץץ
        "Boot #?:?.?" Фޤץץ ³ HD ˥åֹȥ
        ƥơ֥γءƥΰֹǤΰ󥢥ƥ
        ֤ʤΰֹϸ§Ȥ "1" Ȥʤޤ

    (4) ϤԤ줿򼡤νǥåޤ

        (4.1) 줿 "0", "1""4" ʤ򤵤줿ֹɽ
              ϤԤĤ (4) ޤ

        (4.2) 줿 <Enter>, <End> ʤ(4.3)ʹߤνԤޤ
              ꥭ˳ʤзٹΥ٥Ĥ餷 (4) ޤ

        (4.3) 򤵤줿ֹ椬 "0" ʤСBIOS 鸫뼡Υϡɥǥ
              Ƭ 0x07C00 Ϥɤߡѡƥơ֥
              0x07BE Ϥ˥ԡ(3) ޤκݤ˳ѿϤ줾
              ξ֤˹碌ƺꤵޤ

        (4.4) "1""4" 򤵤줿ΰ褬ѤƤʤзٹ
              Υ٥Ĥ餷 (4) ޤ

        (4.5) 򤵤줿ΰ褬 ĥΰʤСĥΰƬ 0x07C00
              Ϥɤߡѡƥơ֥ 0x07BE Ϥ˥ԡ
              إơ֥ɽΥץץȤ򹹿 (3) Ӥޤ

        (4.6) ΰƬơOS Υ֡ȥˤ 0x7C00 Ϥ
              ɤ߹ߤޤ
                        | (2) 餳ӹˤϴԤƤ쥸
                        | ͤ (b) ˤϳޤΤ <Enter> 
                        | 줿Ʊͤ˽ޤ

          (a) 줿 <Enter> ʤС
                0x7C00 ɤ߹ޤ줿֡ȥ 0xAA55 򸫤ơ
                ȥǤ뤳ȤǧƤ (5) Ӥޤ
          (b) 줿 <End> ʤС
                <Enter> ƱͤΥ֡ȥǤ뤳Ȥǧޤ
                ƥ֡оݤȤƤϡɥǥɥ饤֤ 1 ܤǴ
                λ˸¤ꡢ򤵤줿ΰ active flag 򥻥åȤΤ
                ֡ȥ˽ᤷƤ (5) Ӥޤ

    (5) 0x7C00  jump 뤳Ȥˤ곺 OS Υ֡ȥץưޤ
        λƥ쥸ͤϰʲΤ褦ʰ̣äƤޤ
            ax, bx, cx, dh, di, bp = ̵̣
	    dl = DISK BIOS 鸫ɥ饤ֹ (0x80, 0x81, ..)
            ds = scorpius Υǡ͡(0x0000)
            si = ư֤줿ΰ򼨤ݥ
                 ưΰֹ n Ȥ si λͤϼμɽޤ

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

                 ˤ굯ư줿 OS Υ ds:si μϤ꤬
                 ˤƼʬ֤줿ΰξФȤǤޤ
                 ޤΤȤ˥ݥ ds:si μϤˤϥƥΰ
                 뤳Ȥ OS ΥΤ餻뤿 MSB 򥻥åȤޤ
                  ds:si ͤ IBM εѻǤݾڤƤޤ


[4] ǤդΥϡɥǥ֡Ȥ뤿

scorpius  ROM BIOS Ȥ嵭Τ褦ʼ OS ֡Ȥޤ⤷ư
 OS ΥбƤʤ BIOS ͳ 2ܰʹߤȤǧ
ϡɥǥ֡Ȥ뤳ȤǤޤۤȤɤ OS  1 ܤΥ
ɥǥ餷֡ȤǤޤΤǲ٤δԤϤʤ褤Τޤ


Ǥϡscorpius  2 ܰʹߤΥϡɥǥɤ߹Ȥ OS Υ֡
ȥˤ餻뤫餯ˤĤޤޤޤλǤ礦
ĤΥѡƥɽϼΤ褦ʹ¤ΤǤ

            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;

ǡ֡ȲǽʥѡƥǤ뤳Ȥ򼨤 partition.bootind Ƥ
̾ 0x80ʥ֡Ȳġˤ뤤 0x00ʥ֡Բġˤ2Ĥͤޤ
scorpius  1 ܤ֡ȤȤˤ򤵤줿ΰ partition.bootind 
0x80 ˥åȤ OS ΥϤޤ2 ܤ鵯ưʤ
Сͤ 0x81 Ȥɤ߹Ϥޤ
Ĥޤꡢscorpius ͳǸƤӽФ줿 OS Υ partition.bootind  MSB 
ޥͤ򸫤 BIOS ǧƤϡɥǥβܤ鼫ʬɤ
줿ΤΤ뤳ȤǤޤ
ưϡɥǥ IDE type ʤΤ SCSI type ʤΤΤϤ
ޤ󡣤Τ OS ΥλŻˤʤޤޤºݤ BIOS ߤ
ǽΥϡɥǥʳ֡ȤǤ뤫ϡscoprius Ϥ줿 OS
¦Υ˰¸뤳Ȥ˺ʤǤ

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