  ISAPnP-HOWTO
  쓈 <kawawa@mail.interq.or.jp>
  Ver 3.0 Mon Nov 31 19:00:00 JST 2002

  {ł Linux  ISAPnP g@Ă܂B{ 3 \
  ɂȂĂāAPnP(Plug and Play)̊TALinux ŃT|[gĂO
  ̕@(kernel 2.4 ̑gݍ݋@\AisapnptoolsATEhJ[h
   ALSA)ɂĂ̗̋AISAPnP ̋ZpɂĐĂ܂B
  ______________________________________________________________________

  ڎ

  1. ɂ
  2. ͂߂
  3. ̔̕zzɂ
  4. Plug and Play vOAhvCƂ
     4.1 PnP ̎
     4.2 PnP ̎@
     4.3 PnP ̎

  5. ISAPnP ɂ
     5.1 ISAPnP ̊Tv
     5.2 ISAPnP J[h̎
     5.3 foCXhCo̎
     5.4 Linux ̃\[XǗ
     5.5 Linux ł ISAPnP T|[g
     5.6 ISAPnP c[𖳌ɂ@
        5.6.1 kernel 2.4  ISAPnP 𖳌ɂ@
        5.6.2 isapnptools 𖳌ɂ@
        5.6.3 ALSA  ISAPnP 𖳌ɂ@

  6. kernel 2.4  ISAPnP
     6.1 kernel 2.4 ISAPnP ̃p[^
     6.2 /proc/isapnp
        6.2.1 /proc/isapnp ̓ǂݏo
        6.2.2 /proc/isapnp ւ̏
     6.3 kernel 2.4 ISAPnP ̐ݒ荀
     6.4 kernel 2.4 ł̐ݒ
     6.5 kernel 2.4 ł̐ݒ̒
     6.6 ݒ̎
     6.7 kernel 2.4 N̐ݒ

  7. isapnptools
     7.1 isapnptools ̃CXg[
     7.2 isapnptools ̎g
     7.3 pnpdump ̏o isapnp.conf ̗
     7.4 isapnptools ̐ݒ
     7.5 isapnptools ƃ\[X̏Փ
     7.6 isapnptools ɂݒ
     7.7 isapnptools N̐ݒ

  8. ALSA  ISAPnP T|[g
     8.1 ALSA ̐ݒ

  9. Ql
  10. ӎ
  A. ISA Bus ɂ
     A.1 ISA Bus ̗jƓ
     A.2 ݂ ISA Bus
     A.3 ISA Bus  PC/AT ̖_
     A.4 I/O AhXԂɂ
        A.4.1 I/O AhXԂ̖
        A.4.2 n[hEFAւ̃ANZX

  B. ISAPnP ̎dg
     B.1 ISAPnP J[h̗pƃn[hEFA
        B.1.1 _foCX
        B.1.2 RtBO[VWX^
        B.1.3 
        B.1.4 CSN
        B.1.5 ISAPnP J[h̃Xe[g
        B.1.6 RtBO[Ṽf[^oXhCu@
        B.1.7 ISAPnP RtBO[V ANZX@
     B.2 ISAPnP ̃RtBO[V
        B.2.1 ̎dg
        B.2.2 `FbNŤvZ
        B.2.3 \[X̓ǂݍ
        B.2.4 \[X̏
        B.2.5 \[X̎

  ______________________________________________________________________

  1.  ɂ

  { 2001 N 2 ɍŏɃ[X܂B kernel 2.4 ̃o[
  WAbvɔAݒ̕@ύXꂽ 2002 N 11 ɉ
  ܂B

  2.  ͂߂

  { Linux  ISAPnP g@Ă܂B{͑ʂ
   3 ̕ɕAꂼ PnP ̊TAISAPnP ̎gAISAPnP 
  ZpɂĐĂ܂B

  {̂p͎ȐӔCɂāA肢܂B

  3.  ̔̕zzɂ

  copyrighted (c) 2002 Tsutomu Kawashima

  ̕ GNU pubNCZX (GPL) o[W 2 ȍ~̏
  A邢͕WI Linux hLgvWFNg (LDP) ̏Ɋ
  zzȂΎRɂĂĂ܂܂B̃CZX͂
  ̃hLgł悤ȃTCgł܂BLDP ̏ (
  |̂) ȂCĂ܂BCꂽo[W
  GPL ̊ł̂ݔzẑƂ邱Ƃ\łB

  4.  Plug and Play vOAhvCƂ

  Plug and Play  PnP ͐l̎ς킷ƂȂAn[hEFA
  } (Plug) ŁAgp (Play) ł悤ɂdĝ݂ƂłB PnP
  ɂ́ALɓnKiAWKvłB

  4.1.  PnP ̎

  PnP (}Ύg)邽߂ɂ́A̏KAKiK
  v܂BL̍ڂŎgpĂLɂĐ܂B

     [ HD ]
        n[hEFAőΉ

     [ HD/OS ]
        n[hEFA ܂ OS őΉ

     [ HD+OS ]
        n[hEFA OS đΉ

     [ OS ]
        OS őΉ

  PnP (}Ύg)̎LɎ܂B

     [ HD ] @BIɐڑł邱
        @BIȌ`As̐AIXX̋ʓK肵ȂƁA}
        (Plug) Ƃł܂B

     [ HD ] dCIɐڑł邱
        @BIɑ}ĂAdCIɐڑłȂ΂Ȃ܂BIvV
        ƂAx_ft@C(Rɒ`ł镔)܂܂Ă
        ĂA܂BɁAMdʁA^C~OAn[hEFA
        vgRK肷Kv܂B

     [ HD/OS ] ڑ̗Lʂł邱
        @BIȋ@\AdCIȕ@A\tgEFAɂ@gpA
        ̗LʂłȂ΂Ȃ܂B

     [ HD/OS ] (isolate)ł邱
        oX(Bus)ڑł@̏ꍇAX̋@킪āAʂł
        Kv܂B

     [ HD+OS ] ڑĂ邩ʂł邱
        ڑĂ邩ʂł邱ƂAKvłB PnP ̏
        A̎ʎq(ށAA@A)gāAʂ
        ܂Bʎqʂ@Aʎq̈ӖK肳ĂKv
        ܂Bʂ̋@ƍȂ悤ɁA̎ʎq̊
        ́A PnP ̋Kic̓ňӂɊǗĂ܂B

     [ HD+OS ] KvȏɂċK肳Ă邱
        KvȏƂ́AڑĂ@ PnP ̋KiɈˑ܂B
        ΁APCȈꍇA I/O |[gAhXAIRQ łBfBXv
        CEj^ (DDC)̏ꍇA𑜓xłBKvȏ̎o@(
        vgR)A̓eK肳ĂKv܂B

     [ OS ] \[X̊蓖Ăł邱
        ڑ@Ƀ\[X(I/O |[gAhX IRQ )̊蓖
        KvȏꍇÃ݂\[XƏՓ˂Ȃ悤ɁA蓖Ă邱Ƃ
        KvłB

     [ OS ] foCXhCo̊蓖Ăł邱
        ڑꂽA@ɑΉfoCXhCoIɌo
        ƂAKvłBlɂAݒ肷ꍇAn[hEFȀ
        AlɂƂāA킩₷@ŁA񎦂Kv܂Bfo
        CXhCoƋ@̃\[Xv悤Ɋ蓖Ă邱ƂƁAf
        oCXhCo蓖Ăꂽ\[XœłȂ΁AȂ
        B

  4.2.  PnP ̎@

  ``PnP ̎''ۂɂǂ̂悤ɎĂ邩AT܂B

     [ HD ] @BIɐڑł邱ƁEdCIɐڑł邱
        ɂ́APnP Ήn[hEFA̋ɋKi
        炤A܂BʓIɁAPnP ɑΉ邽߁APnP
        Kiĉݗ@܂B̒ĉ́AV{}[N
        An[hEFA̎ʎq̊ǗA PnP Kȉ(Know-How)̒
        s܂Bn[hEFA̋͂̒ĉɉAPnP Ki
        ̂ɑ΂āAV{̎gpAʎq̊蓖Ă
        ܂Bꎞ USB ̂悤ɁAKî̂ĉ̉҈ȊO
        ́A閧ɂ邱Ƃ܂(E𔃂A USB Ki͌J
        Ă܂)BAV{}[N͒쌠̕ی쉺ɒuƂŁA
        ɎgpłȂ悤ɂł܂B

     [ HD/OS ] ڑ̗Lʂł邱ƁE(isolate)ł邱
         Bus ڑ n[hEFAɊ֘A鍀ڂłB
        PnP ڎw Bus Kił́AdlɐD荞ݍς݂ł̂Ŗ͂
        ܂BォAPnP Ήɂ ISAPnP ł́A傫Ȗ肪
        B

     [ HD+OS ] ڑĂ邩ʂł邱ƁEKvȏɂċK
        肳Ă邱
        ́APnP Ήn[hEFAɎȏЉAdg݂pӂ
        ƂŁA܂Bۂɂ n[hEFAɃRtBO[V
        WX^Qgp܂B̃WX^QɁAn[hEFA ID(
        q)A\[X̏񓙂[߂܂B

     [ OS ] \[X̊蓖Ăł邱ƁEfoCXhCo̊蓖Ă
        ł邱
        ́AOS \[XƃfoCXhCoǗāA
        B蓖ĂɕKvȃ\[X̏̓RtBO[VWX^
        Qǂݎ܂BOS ͌݊ǗĂ郊\[X\Agp
        ̃\[XRtBO[VWX^QɏŐݒ肵AOS
        ̊ǗĂ郊\[X\XV܂BfoCXhCo̊蓖
        ́AfoCXhCo̓Ɛݒ̓̒iKɕ܂Bfo
        CXhCo̓ɂ́ARtBO[VWX^QAID(
        ʎq)ǂݎ邱Ƃōs܂B ID ƃfoCXhCȏ
        \(f[^[x[X) AfoCXhCo肵܂B܂
        ́AID lɂƂė₷@ŁA\AlɃfoCXh
        CoIł炢܂(PnP ̖ړI(lς킷ƂȂ)ɔ
        )BfoCXhCołARtBO[VWX
        ^ɏ񂾃\[XƓ̂AfoCXhCoɂK
        ܂B

  4.3.  PnP ̎

  Ƃ PnP Ƃ́AIntel Ђ Microsoft ЂɂA1993N 3ɔ\
  A "Plug and Play ISA Specification"ɗR܂BP PnP Ƃ
  ꍇAISAPnP ̂ƂłB݂ Plug and Play(}Ύg)ɁAΉ
  n[hEFAdĝ݂ƂAׂ PnP ƌĂł܂B

  PnP ɑΉn[hEFA͂񂠂܂BɂāAȒPɐ
  ܂B

     CPU
        x86 n CPU ɂ́ACPU ̓AʂȃWX^ɏ܂Ă
        ܂BACPU ID ƌĂł܂B Linux ł CPU ID  CPU
        LbVeʂ̒ƐݒA MTRR ̐ݒɗpĂ
        B CPU ID ̏ /proc/cpuinfo Œׂ邱Ƃł܂B

     (SPD)
        ̎(EDO, SD, PROM)AeʁAECC peB̗L𒲂ׂ
        ƂƁA^C~O(CAS, RAS ̃CeV[)̐ݒ肪ł܂B

     ISAPnP
        ISA Bus  PnP ̂łB``ISAPnP ɂ''Ő
        B

     PCI
        ׂĂ CPU ŋʂɎgpł邱Ƃڎw 32bit Bus ̋K
        iłBRlN^J[h̋@BIȌ`̋KƓdCIȓ^C
        ~ŐKƁAʎqAn[hEFȀ CPU Aǂ
        @̋K܂݂܂BPCI ͊gJ[hӋ@̐ڑ
        ł͂ȂA Bus ̂̂̊g@Rs[^m̐ڑɂ
        ĂAKiĂ܂BLinux ł́AȂFł܂A
        gJ[hł̓foCXhCow肵ȂƁA삵܂B

     USB
        d؂邱ƂȂA@̎OAtł邱Ƃ
        łByɈ邽߁Aŋ߂͗lXȋ@̃C^[tF[Xɍ̗p
        Ă܂B Linux ł͋@했ɃvgR݂邽
        ߁AɑΉ̂xĂ܂(lbg[NɓĂ͂߂Ă
        ƁApPbg̑͂łĂ邪AT[rX ftp smtp pop ɑΉ
        ĂȂ󋵂ł)B

     SCSI-2
        RlN^̋@BIȌ`AP[u̓AdCIȓ^C~O
        ̋KƁA󂷂R}h̋K肪KiĂ܂Bp
        C^[tF[XƂāAn[hfBXNlXȋ@AɁAR
        s[^܂Őڑł܂BSCSI-2 ȑO SCSI ͑󂷂R}h
        K肳ĂȂ߁A@̑gݍ킹̑肪܂
        B

     ATA-3
        Ƃ ATA  IDE n[hfBXN̋KiłASCSI R}h
        Ɏ ATAPI R}hK肵ƂŁACDROM, CDR, DVD, e[vA
        tbs[fBXNA̋@킪ڑł悤ɂȂ܂B

     DDC
        fBXvC⃂j^̓(𑜓x)rfIJ[hǂ߂
        ɂKiłBXFree86 4.0 ŃT|[g悤ɂȂ܂B
        ̖ʓ| Modeline A邩܂B

     p|[g@
        IBM PC/AT ݊@̃p|[goƂAW
        IEEE1284 ɂȂ܂BāAv^ȊOɂtbs[fBX
        NhCuArIᑬȃpC^[tF[XɎgpł
        ɂȂ܂B

     PC Card
        ɁAm[gp\R̊gpɎgpĂ܂BPC Card Ki̋N
        ͓dq蒠Ɏgp郁[J[hn܂Ă܂B 1986 N
        ɁAŏ̋Ki JEIDA KChCƂČJ܂B
        ̌ 1989 NɃAJŁAPCMCIA ݗA1993 N JEIDA 
        PCMCIA ̋Ki𓝈ꂵ PC Card KiɂȂ܂B1997 N
        CardBus Kis܂BPnP Ƃt̑OɂłAŏ
        PnP łB Linux ł pcmcia-cs ƂāAT|[gĂ܂
        Bkernel 2.4 ł́A PC Card ̃T|[g kernel ɑgݍ܂
        B

           JEIDA  : {dqHƐU
                   PCMCIA : Personal Computer Memory Card International Association

  5.  ISAPnP ɂ

  5.1.  ISAPnP ̊Tv

  ISAPnP Ƃ ISA Bus ɐڑꂽe I/O uA\tgEFAŐ
  ł悤ɂdg݂łBISAPnP ́AISA J[hA}U[{[hA
  BIOS ̑SĂΉĂKv܂B]āAÂ}U[{[hł
  ISAPnP ͓삵܂B

  ISA Bus  I/O u𓮍삳邽߂ɂ́AI/O AhX IRQ ԍA
  n[hEFA̒mKvłBɁAI/O AhX IRQ ԍ
  X邽߂ɂ́APC ̃P[XJAISA J[h̃Wp[sAX
  Cb`̐؂ւAp^[̃Jbg┼ctKvłB܂AJ[h
  ŗL̐ݒ\tgEFAKvȂ̂܂B

  ISAPnP ͈ȉ̍ڂ邱ƂڎŵłB

  o  PC ̃P[XJȂĂAI/O AhX IRQ ԍύXł邱
     ƁB

  o  J[hŗL̐ݒ\tgEFAsvƂ邱ƁB

  o  foCXhCo I/O AhX IRQ ԍ̕ύXɑΉł邱
     ƁB

     AISAPnP ̒PƂł́AIɂǂ I/O AhX IRQ ԍ
     gpł邩Af邱Ƃ͂ł܂BI/O AhX IRQ ԍ
     ́A}U[{[h I/O uAPCI foCXgp邩łB
     AISAPnP J[h́ABIOS Ń\[X̊蓖Ă΁Aʂ ISA
     J[hƂāAgpł܂BOS \[X̐ݒKv͖̂
     ABIOS ̊蓖Ă\[X OS ̊ǗOɂȂĂ܂܂B

  ISAPnP J[h́ARtBO[VWX^Ă܂B BIOS 
  OS  ̃RtBO[VWX^Ə̂āA ISAPnP
  J[h̎ނAʎqǂݍ݁AI/O AhX  IRQ ԍ̐ݒ
  ܂B̏̂RtBO[VƌĂт܂B

  ISAPnP J[h̓RtBO[Vɂ́AK܂A\[X
  ݒ肳ĂȂꍇA I/O uƂĂ͔܂BISAPnP ɑΉ
  Ȃ}U[{[h̃XbgɁAISAPnP J[h}ꍇA ISAPnP
  J[h͂Ad͂邾ŁAI/O uƂẮAg܂B

  5.2.  ISAPnP J[h̎

  ISAPnP J[h̓\[X̐ݒ̂ꂩɁA̎ނ܂B

     NɃftHg̃\[Xݒ肳Ă
        ISAPnP J[hgNɁABIOS  OS  PnP ̐ݒȂ
        AftHg̃\[X̂܂BftHg̃\[
        XWp[sʂȃ\tgEFAŕύXł̂
        B

     NɈȑÕ\[Xݒ肳
        ISAPnP J[hgN BIOS  OS  PnP ̐ݒȂ
        AsɋLAȑÕ\[Xݒ肷̂
        ܂Bxݒ肪ȂꍇAftHglݒ肳
        ƁAݒ肳Ȃꍇ܂B

     \[XŒ肳Ă
        ISAPnP J[hɂ́APɃRtBO[VWX^ǉ
        ŁA PnP ΉƂ̂܂B

     \[Xwł
        ꂪAʂISAPnP J[hłBBIOS  OS \[Xw肵
        B

  N ISAPnP J[hg\[XƎɐݒ肷̂ƂāA SCSI
  J[h܂B Boot BIOS ROM ڂ SCSI ISAPnP J[h́AN
  BIOS  OS ̐ݒ肪ςޑOɁAғ SCSI bus ɐڑꂽn[hfB
  XN̏擾Kv邽߂łB̂悤 ISAPnP J[h
  ISAPnP ɑΉĂȂAn[hEFA OS łgpł܂B

  5.3.  foCXhCo̎

  foCXhCo̓\[Xݒ@ɂA3 ނ܂B

     I/O |[gAhX IRQ Œ肳Ă
        ̎ނ̃foCXhCóA\[Xt@CǂނAǂ
        ŁAŒ肳ꂽ I/O |[gAhX IRQ w肷悤 ISAPnP
        J[hݒ肵܂B

     I/O |[gAhX IRQ wł
        foCXhCo I/O |[gAhX IRQ J[lRpC
        AW[ǂݍݎɁAwł̂܂B̎
        ݒƁA ISAPnP ̐ݒ𓯈ɂ܂B

     ISAPnP ̎ݒɑΉĂ
        kernel 2.4  ISAPnP [`ǂݍ܂ꂽƂAI ISAPnP
        J[hݒ肵܂BɑΉfoCXhCo܂B
        Aݒ肳Ȃꍇ܂B̂Ƃ́A蓮Őݒ肷
        Kv܂B

  5.4.  Linux ̃\[XǗ

  Linux ł́AI/O |[gAhXAIRQ  DMA ́Akernel ̃T[rX[`
  ĂяoāAo^ȂƎgpł܂B̃AhX I/O 
  Akernel ̋ȂƁAANZXł܂B

   --- I/O Ƃ́AVRAM  I/O ƂĎgpĂ郁̂ƂwA
           C̊gp̃̂Ƃł́A܂B

  n[hEFAANZXƂ́AfoCXhCõ\[X
  o^ƁAgp\܂B Linux ł́A/proc/ fBNgȉ
  ȃt@CǂݏoƂŁA݁Agp̃\[X𒲂ׂ邱Ƃ
  ܂B

     /proc/ioports
        ݎgp I/O |[gAhX𒲂ׂ邱Ƃł܂B

     /proc/interrupts
        ݎgp 荞 IRQ 𒲂ׂ邱Ƃł܂B

     /proc/dma
        ݎgp DMA 𒲂ׂ邱Ƃł܂B

     /proc/iomem
        kernel 2.4  ݎgp I/O 𒲂ׂ邱Ƃł܂B
        kernel 2.2 ł́Aݎgp I/O 𒲂ׂȒPȕ@͂
        ܂B

  foCXhCo\[X̓o^^C~O͓A́Af
  oCXhCo kernel ɑgݍ܂ꂽƁA̓foCX̃ANZ
  XJn(open)ꂽłBfoCXhCo\[X^C~
  OA̓foCXhCo kernel 菜ꂽƁA
  ́AfoCX̃ANZXI(close)łB

  tbs[fBXNEhCufoCXhCóAfoCX̃ANZXJ
  n(open)ꂽɃ\[Xo^AfoCX̃ANZXI(close)
  Ƀ\[X܂BāAtbs[fBXNhCu
  I/O |[gAhX 0x3f0-0x3f5, 0x3f7-0x3f7, IRQ 6, DMA 2 gp܂
  Atbs[fBXNhCugpĂȂꍇA /proc/ 
  ɏo͂܂B

  5.5.  Linux ł ISAPnP T|[g

  Linux ł́Aȉ̕@ ISAPnP T|[g܂B

     kernel 2.4
        kernel 2.4 ɑgݍ܂ꂽ@\gp܂B

     isapnp tool
        kernel 2.0 ̂납AT|[gĂ@łBkernel 2.4 
        gpł܂B

     ALSA
        TEhJ[hłAALSA g ISAPnP T|[gĂ
        B

  5.6.  ISAPnP c[𖳌ɂ@

  ISAPnP c[݂͌ɓɎgp邱Ƃ͂ł܂B Ⴆ΁Akernel
  2.4  ISAPnP gpꍇA ISAPnP c[𖳌ɂȂ΂Ȃ
  ܂B

  5.6.1.  kernel 2.4  ISAPnP 𖳌ɂ@

  kernel č\z(recompile)̂ƂɁAISAPnP T|[g𖳌ɂ܂B
  CONFIG_ISAPNP=n ݒ肵܂BW[ɂĂ
  A/etc/modules.conf ɉL̍sǉ܂B
  option isapnp isapnp_disable=1

  5.6.2.  isapnptools 𖳌ɂ@

  łȒPȕ@́Aisapnptools ACXg[Ă܂ƂłB
  ȂꍇA/sbin/isapnp ǂŎsĂ邩ׂ邽߁A
  /etc/rc.d/rc.sysinit ̏ݒt@CǂKv܂B
  RedHat n̏ꍇA/etc/isapnp.conf ̃t@CύX@ƁA
  kernel p[^ nopnp n@܂B

  5.6.3.  ALSA  ISAPnP 𖳌ɂ@

  ALSA  ISAPnP 𖳌ɂɂ́Aalsa-driver-* ̃RpCɁAL
  ̂悤ɃIvVw肵܂BALSA ̃o[WɂāAႤ
  ܂B

  $./configure --help
  IvV̊mF

  $./configure --with-isapnp=no

  gpTEhJ[hɂẮAalsa-driver-* ̃RpCIvV
  ɊւȂAW[ǂݍ݂̂Ƃ ISAPnP 𖳌ɂł邩
  ܂B SoundBlaster16 ISAPnP ł́Asnd_isapnp=0 Ŗɂł܂B
  ́AۂɎgpĂłB

  $cat /etc/modules.conf
  alias eth0 3c509
  # --- BEGIN: Generated by ALSACONF, do not edit. ---
  # --- ALSACONF verion 0.4.3b ---
  alias char-major-116 snd
  alias snd-card-0 snd-card-sb16
  alias char-major-14 soundcore
  alias sound-slot-0 snd-card-0
  alias sound-service-0-0 snd-mixer-oss
  alias sound-service-0-1 snd-seq-oss
  alias sound-service-0-3 snd-pcm-oss
  alias sound-service-0-8 snd-seq-oss
  alias sound-service-0-12 snd-pcm-oss
  options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0666 snd_device_gid=
  0 snd_device_uid=0
  options snd-card-sb16 snd_isapnp=0 snd_index=0 snd_id=CARD_0 snd_port=0x220 snd_
  mpu_port=0x330 snd_irq=5 snd_dma8=1 snd_dma8_size=64 snd_dma16=5 snd_dma16_size=
  128 snd_mic_agc=0
  # --- END: Generated by ALSACONF, do not edit. ---

  6.  kernel 2.4  ISAPnP

  kernel 2.4  ISAPnP ̕ linux/Documentations/isapnp.txtłB
  ISAPnP ̃\[Xt@CQ linux/drviers/pnp/ȉɂ܂B kernel
  2.4  ISAPnP Lɂɂ́A kernel č\z̎ CONFIG_ISAPNP=y
  ܂ mw肵܂B

  6.1.  kernel 2.4 ISAPnP ̃p[^

  kernel 2.4 ISAPnP ̃p[^LɎ܂Bʏ͎gKv͖
  v܂B̃p[^ ISAPnP W[̏ꍇɎg܂B

  /etc/modules.confɉL̂悤ɁAsǉĎgp܂B
  option isapnp isapnp_rdp=0x203,isapnp_reset=0

  }

  o  _l --- U 0 A^ 0 ȊO̐ 32bit łB

  o  I/O AhX --- 0  0x3ff ܂ł̐łB

  o  I/O Xg -- L I/O AhX","Ōq̂łBő 16 
     ڂ܂łłB 100,0x210B

  o  IRQ ԍ --- 0,1,3,4,5,6,7,8,9,10,11,12,13,14,15łB

  o  IRQ Xg --- L IRQ ԍ","Ōq̂łBő 16 ڂ
     łłB 9,10,11,12B

  o  DMA ԍ --- 0  7 ܂ł̐łB

  o  DMA Xg --- L DMA ԍ","Ōq̂łBő 8 ڂ
     łłB 1,5B

  o  AhXXg --- 0  1048575 (0xfffff)̃AhX
     ","Ōq̂łBő 16 ڂ܂łłB

  o  璷[h --- 0,1,2̂ꂩłB

     isapnp_disable=_l
        _l^̂ƂAISAPnP T|[g܂B_lÛ
        AISAPnP T|[g܂Bl͋UłB

     isapnp_rdp= I/O AhX
        ISAPnP 'Read Data Port'w肵܂BISAPnP ̋KiQlɂ
        B

     isapnp_reset=_l
        ISAPnP ݒ肷ƂAׂĂ ISAPnP J[hZbg(oX
        ؂藣)邩ۂAw肵܂B_l^̂ƂAZbg
        Bl͐^ŁA ISAPnP J[hZbg܂B

     isapnp_skip_pci_scan=_l
        _l^̂Ƃ PCI ̃\[X𖳎܂B_lÛ
        APCI  ISAPnP ŁA\[X̋NȂ悤ɁAISAPnP
        肵܂Bl͋UłB

     isapnp_verbose=璷[h
        ISAPnP T|[g̏o͂郁bZ[W̃[hw肵܂Bl
         1 łB

     isapnp_reserve_irq=IRQ Xg
        ISAPnP ŎgpȂ IRQ ԍw肵܂Blׂ͂Ă IRQ
        ԍg܂B

     isapnp_reserve_dma=DMA Xg
        ISAPnP ŎgpȂ DMA ԍw肵܂Blׂ͂Ă DMA
        ԍg܂B

     isapnp_reserve_io=I/O AhXXg
        ISAPnP ŎgpȂ I/O AhXw肵܂B lׂ͂Ă
        I/O AhXg܂B

     isapnp_reseve_mem=AhXXg
        ISAPnP ŎgpȂ AhXw肵܂Blׂ͂Ă
        AhXgp܂B

  6.2.  /proc/isapnp

  kernel 2.4 ł ISAPnP T|[g /proc/isapnp gp܂B
  /proc/isapnp ǂݏoĐݒ𒲂ׁAK؂Ȑݒ /proc/isapnp ֏
  ݂܂B /proc ȉ isapnp ꍇAkernel  isapnp L
  ȂĂ܂B

  6.2.1.  /proc/isapnp ̓ǂݏo

  /proc/isapnp ǂݏoƉL̂悤ȍڂo͂܂BL̗ł
  SoundBlaster16  33k AiOf 3Com 3C509B  3  ISAPnP
  J[h܂B ISAPnP ̃RtBO[VWX^ǂݏo
  ̂łB /proc/isapnp ̓ǂݏoȒPɐ܂B

  Card 1 'CTL0080:Creative ViBRA16CL PnP' PnP version 1.0 Product version1.1
   ISAPnP J[h̃x_ CTL0080 łB
    Logical device 0 'CTL0041:Audio'
  _foCX 0 ̖O CTL0041 łB
      Device is active
  ̘_foCX͂ł active LɂȂĂ܂B
      Active port 0x220,0x330,0x388
      Active IRQ 5 [0x2]
      Active DMA 1,5
  ݂̐ݒłB
      Resources 0
        Priority preferred
        Port 0x220-0x220, align 0x0, size 0x10, 16-bit address decoding
        Port 0x330-0x330, align 0x0, size 0x2, 16-bit address decoding
        Port 0x388-0x3f8, align 0x0, size 0x4, 16-bit address decoding
        IRQ 5 High-Edge
        DMA 1 8-bit byte-count compatible
        DMA 5 16-bit word-count compatible
  gp\ȃ\[XłBI/O |[gAhX 0x220,0x330,0x388 ̎O
  g܂BIRQ  5, DMA  1  5 g܂B
        Alternate resources 0:1
          Priority acceptable
          Port 0x220-0x280, align 0x1f, size 0x10, 16-bit address decoding
          Port 0x300-0x330, align 0x2f, size 0x2, 16-bit address decoding
          Port 0x388-0x3f8, align 0x0, size 0x4, 16-bit address decoding
          IRQ 5,7,2/9,10 High-Edge
          DMA 1,3 8-bit byte-count compatible
          DMA 5,7 16-bit word-count compatible
  ւƂȂ郊\[XłB
  1 Ԗڂ I/O |[gAhX 0x220,0x240,0x260,0x280 ̂g܂B
  2 Ԗڂ I/O |[gAhX 0x300,0x330 ̂ǂ炩g܂B
  3 Ԗڂ I/O |[gAhX 0x338  4 oCgu 0x3f8 ܂œA
  g܂B
  IRQ  5,7,2/9,10  l̓Ag܂B 2/9 ̓JXP[hڑꂽ
  ݂ł邱ƂAĂ܂B
  1 Ԗڂ DMA  1  3 g܂B
  2 Ԗڂ DMA  5  7 g܂B

  ()
    Logical device 1 'CTL7002:Game'
  _foCX 1 ̖O CTL7002 łB
      Device is not active
  ̘_foCX not active ɂȂĂ܂B
      Resources 0
        Priority preferred
        Port 0x200-0x200, align 0x0, size 0x8, 16-bit address decoding
  gp\ȃ\[XłB I/O |[gAhX 0x200 g܂B
        Alternate resources 0:1
          Priority acceptable
          Port 0x200-0x208, align 0x7, size 0x8, 16-bit address decoding
  ւƂȂ郊\[XłB I/O |[gAhX 0x200  0x208 ̂ǂ炩g
  ܂B

  Card 2 'FUJ0202:FUJITSU Modem 33600 PNP/I2' PnP version 1.0 Product version 0.5
   ISAPnP J[h̃x_ FUJ0202 łB
    Logical device 0 'FUJ0000:Unknown'
  _foCX FUJ0000 łB
      Supported registers 0x2
      Device is active
      Active port 0x2f8
      Active IRQ 3 [0x3]
      Active DMA 0,0
  ݂̐ݒłB
      Resources 0
        Priority acceptable
        Port 0x2f8-0x2f8, align 0x7, size 0x8, 16-bit address decoding
        IRQ 3 High-Edge
  gp\ȃ\[XłBI/O |[gAhX 0x2f8, IRQ  3 g܂B
        Alternate resources 0:1
          Priority acceptable
          Port 0x3f8-0x3f8, align 0x7, size 0x8, 16-bit address decoding
          IRQ 4 High-Edge
  ւƂȂ郊\[XłBI/O |[gAhX 0x3f8, IRQ  4 g܂B
        Alternate resources 0:2
          Priority acceptable
          Port 0x3e8-0x3e8, align 0x7, size 0x8, 16-bit address decoding
          IRQ 4 High-Edge
  ()
        Alternate resources 0:8
          Priority acceptable
          Port 0x100-0xfff8, align 0x7, size 0x8, 16-bit address decoding
          IRQ 3,4,5,7,2/9,10,11,12,15 High-Edge
  ւƂȂ郊\[XłBI/O |[gAhX 0x100  8 oCgu
  0xfff8 ܂ł̓Ag܂B
  IRQ  3,4,5,7,2/9,10,11,12,15 ̓Aǂꂩg܂B

  Card 3 'TCM5098:3Com 3C509B EtherLink III' PnP version 1.0 Product version 1.0
   ISAPnP J[h̃x_ TCM5098 łB
    Logical device 0 'TCM5098:Unknown'
  _foCX TCM5098łB
      Supported registers 0x2
      Compatible device PNP80f7
  _foCX̕ʖłB
      Device is active
      Active port 0x300
      Active IRQ 10 [0x2]
  ݂̐ݒłB
      Resources 0
        Priority preferred
        Port 0x210-0x3e0, align 0xf, size 0x10, 16-bit address decoding
        IRQ 3,5,7,2/9,10,11,12,15 High-Edge
  gp\ȃ\[XłB
  I/O |[gAhX 0x210  16 oCgu0x3e0 ܂ł̓A
  g܂B
  IRQ  3,4,5,7,2/9,10,11,12,15 ̓Aǂꂩg܂B

  \[X̓ Port  IRQ ̕\LɂĊȒPɐ܂B

  Port 0x210-0x3e0, align 0xf, size 0x10, 16-bit address decoding
  Port ŏAhX - őAhX, EA傫AANZX[h
  gpłx[XAhX ŏőAhX͈̔͂ɂlƋE
  _ς̌ʁA

  Port x[XAhX = ŏAhXőAhX͈̔͂̒l  & E

  ɂȂ܂B̏ꍇA0x210,0x220,0x230...0x3d0,0x3e0 ƂȂ܂B

  IRQ 3,5,7,2/9,10,11,12,15 High-Edge
  IRQ 荞݂̃Xg 荞݃gK̕
  ̃Xg̒AЂƂIŎgpł܂BXg̒ 2/9 
  ȂĂ̂̓JXP[hꂽ荞݂̂ƂĂ܂B

  6.2.2.  /proc/isapnp ւ̏

  /proc/isapnp ւ݂̏ɂAISAPnP ݒ肵܂B

  6.3.  kernel 2.4 ISAPnP ̐ݒ荀

  kernel 2.4 ̕ linux/Documents/isapnp.txtQlɂĂB
  /proc/isapnp ǂݏoʂɁAݒ肵܂B /proc/isapnp ֏
  ރR}h͉L̒ʂłB

     card ԍ x_
        ԍŏ ISAPnP J[hw肵܂Bԍƃx_w肵
        BʏAԍ 0 łBx_ /proc/isapnp  Card n 'x
        _:....'  ̂悤ɂ킩܂B

     dev ԍ _foCX
        ISAPnP J[h̐ݒ肵_foCXw肵܂BԍƘ_f
        oCX /proc/isapnp  Logical device ԍ '_foCX
        :'̂悤ɂ킩܂B

     auto
        w肵A_foCXIɐݒ肵܂BԂAȂ̖]
        悤Ȍʂɂ́AȂȂł傤B

     port ԍ l
        w肵_foCX I/O |[gAhXݒ肵܂Bԍ
        /proc/isapnp ł Port ̏Ԃw肵܂Bŏ̔ԍ 0 ɂ
        Bl /proc/isapnp ǂݏoʂ PC ̌ݎgpĂ
        I/O |[gAhX /proc/ioports 璲ׂāAݒ肵܂B

     irq ԍ l
        w肵_foCX IRQ w肵܂Bԍ /proc/isapnp 
         IRQ ̏Ԃw肵܂Bŏ̔ԍ 0 ɂ܂Bl
        /proc/isapnp ǂݏoʂ PC ̌ݎgpĂ IRQ 
        /proc/interrupts 璲ׂāAݒ肵܂B

     dma ԍ l
        w肵_foCX DMA ݒ肵܂Bԍ /proc/isapnp 
         DMA ̏Ԃw肵܂Bŏ̔ԍ 0 ɂ܂Bl
        /proc/isapnp ǂݏoʂ PC ̌ݎgpĂ DMA 
        /proc/dma 璲ׂāAݒ肵܂B

     memory ԍ l
        w肵_foCX̃AhXݒ肵܂Bԍ
        /proc/isapnp ł Memory ̏Ԃw肵܂Bŏ̔ԍ 0 ɂ
        ܂Bl /proc/isapnp ǂݏoʂAݒ肵܂B I/O
        gpĂ郁 /proc/iomem  /sbin/lspci R}hŒ
        ܂B

     poke|pokew|poked WX^ l
        ISAPnP ̘_foCX̃WX^̒lύX܂BȃR}h
        łB

     deactivate
        w肵_foCX𖳌ɂ܂B

     activate
        w肵_foCXLɂ܂BŌɂw肵ȂƁA
        ׂ͂Ė܂B(isapnp_proc.c ł͐擪 3 
        Ă܂)

  6.4.  kernel 2.4 ł̐ݒ

  Lɐݒ܂B

  SoundBlaster16 p̐ݒłB_foCX 1 CTL7002 'dev 1 CTL7002'
  ƂȂ͂łA'dev 0 CTL7002'ɂȂƁAG[ɂȂ܂B

  $cat SB16
  card 0 CTL0080
  dev 0 CTL0041
  port 0 0x220
  port 1 0x330
  port 2 0x388
  irq 0 5
  dma 0 1
  dma 1 5
  active
  dev 0 CTL7002
  port 0 0x200
  active

  3C509p̐ݒłB

  $cat 3c509
  card 0 TCM5098
  dev 0 TCM5098
  port 0 0x300
  irq  0 10
  active

  33k AiOf͎ݒŁA삵Ă܂̂ŁAݒ͂Ă܂
  B

  6.5.  kernel 2.4 ł̐ݒ̒

  o  ݒ ISAPnP J[hɂĂB

  o  ݒɋs܂߂Ȃ悤ɂĂB

  o  foCXhCoǂݍ܂Oɐݒ肵ĂB

  o   ISAPnP ݒvOƕpȂłB

  6.6.  ݒ̎

  ݒ肪Ă݂܂傤B

  #cat SB16 >/proc/isapnp

  ݒɖ肪΁AbZ[W\邩A/var/log/messagesɋL^
  ܂BȉɃG[bZ[W̗܂B

  Sep 29 21:55:09 localhost kernel: isapnp: device 'CTL7002' order 0 not found
  Sep 29 21:55:35 localhost kernel: isapnp: wrong command 'logdev'

  ݒɖ肪Ȃ΁AƂɃbZ[W͕\ꂸA /var/log/messages
  ɂAȂɂL^܂B /proc/isapnp ǂݏoƁAݒ肵foC
  X Device is activeɂȂ͂łBȉɐݒ肪ꍇ
  /proc/isapnp ܂B

  Card 1 'CTL0080:Creative ViBRA16CL PnP' PnP version 1.0 Product version 1.1
    Logical device 0 'CTL0041:Audio'
      Device is active
  
    Logical device 1 'CTL7002:Game'
      Device is active
  
  Card 3 'TCM5098:3Com 3C509B EtherLink III' PnP version 1.0 Product version 1.0
    Logical device 0 'TCM5098:Unknown'
      Supported registers 0x2
      Compatible device PNP80f7
      Device is active

  6.7.  kernel 2.4 N̐ݒ

  ISAPnP ̐ݒ́Akernel NAł邾sKv܂B
  ISAPnP ̐ݒɂ /proc gp̂ŁA/proc }Egꂽɍs
  ̂ǂł傤BfBXgr[VɂĂႢ܂A
  ́ARedHat n /etc/rc.d/rc.sysinitXNvggꍇ܂B
  /etc/rc.d/rc.sysinit  /proc ̃}EgɉL̂悤ɒǉ܂B

  mount -t proc /proc /proc
  #isapnp in kernel
  if [ -d /etc/isapnp.d ]; then
      for i in /etc/isapnp.d/*; do
           echo "ISA PnP setup :$i"
           cat $i >/proc/isapnp
      done
  fi

  āA/etc/isapnp.d fBNg쐬A̒ ISAPnP ̐ݒt@
  Cu܂Bݒt@C̓e``kernel 2.4 ł̐ݒ''QƂ
  ĂB

  $ls /etc/isapnp.d
  3c509  SB16

  7.  isapnptools

  isapnptools  Linux ŔrIÂAT|[gĂ ISAPnP ݒ
  c[łBisapnptools ̓RtBO[VWX^ǂݏoāAW
  o͂ pnpdumpR}h ISAPnP J[hݒ肷 isapnp R}h
  ӂ̃R}hA\Ă܂B pnpdump ̕Wo͂t@C
  ɂ̂ҏWāAisapnp ̐ݒɎg܂BLł́A̐ݒt@
  C isapnp.conf ƌĂт܂B

  ԂAisapnptools  ɂgp Linux ɃCXg[Ă
  傤Bł́AÔ߃CXg[܂B

  7.1.  isapnptools ̃CXg[

  isapnptools ̍ŐVłisapnptools̃EFuTCg
  <http://www.roestock.demon.co.uk/isapnptools/>ł܂B 2002
  N 10 ݂̍ŐVł (09-May-201 Ƀ[Xꂽ)
  isapnptools-1.26.tgzłBKȃfBNg(ł~/Src)
  isapnptools-1.26.tgz _E[hAWJARpCACX
  g[܂B

  L̕ŁA##̓RgłB

  $ tar tvzf isapnptools-1.26.tgz  ##gmF܂B
  $ tar xzf isapnptools-1.26.tgz   ##WJ܂B
  $ cd isapnptools-1.26
  $ less README                    ##README ͕Kǂ݂܂傤
  $ less doc/*                     ## ʂڂʂ܂傤B
  $ ./configure --help             ##ǂȃIvV邩mF܂B
  $ ./configure                    ##IvVȂŁAǂ݂łB
  $ make                           ## RpCG[oALQƁB
  $ su
  # make install                   ##CXg[܂B
  # exit
  $
  AWł́AIuWFNg man y[W /usr/local/ ɃCXg[܂
  (configure ̃IvVŕύXł܂)B fBXgr[^ isapnptools 
  ́A/sbin/isapnp, /sbin/pnpdump, /usr/share/man/man5/isapnp.conf.5.gz 
  CXg[邱Ƃ悤łB

  Â isapnptools-1.23 ɂ́AcOȂƃoO܂
  ŁAisapnptools-1.23/src/pnpdump_main.c  87 sڂL̂悤ɕύX
  ܂B

   static FILE* o_file = NULL;

  7.2.  isapnptools ̎g

  isapnptools ł́Apnpdump  ISAPnP J[h̐ݒǂݏoAҏW
  A isapnp R}hŐݒ肷@܂BႦΉL̂悤ɂ
  B

  $ su
  # /usr/local/sbin/pnpdump >isapnp.conf
  # vi isapnp.conf
  # /usr/local/sbin/isapnp -c isapnp.conf
  # exit

  7.3.  pnpdump ̏o isapnp.conf ̗

  pnpdump ͉L̂悤ȍڂo͂܂Bkernel 2.4  /proc/isapnp 
  A₷̂ł傤BK؂ɕҏWAisapnp R}h̐ݒ
  t@Cɂ܂B

  L̗ł SoundBlaster16  33k AiOf 3Com 3C509B  3
   ISAPnP J[h܂B ISAPnP ̃RtBO[VW
  X^ǂݏôłA kernel 2.4  /proc/isapnp Ɠ̓e
  \Ă܂Bł́AL̏o isapnp.conf ̗ȒPɐ
  B #ȍ~̓RgŁAisapnp R}h͖܂B

  # $Id: ISAPnP-HOWTO.sgml,v 1.3 2002/11/30 11:14:44 mdk Exp $
  # Release isapnptools-1.24
  #
  # This is free software, see the sources for details.
  # This software has NO WARRANTY, use at your OWN RISK
  #
  # For details of the output file format, see isapnp.conf(5)
  #
  # For latest information and FAQ on isapnp and pnpdump see:
  # http://www.roestock.demon.co.uk/isapnptools/
  #
  isapnptools ̂̂̐łB

  # Compiler flags:  -DREALTIME -DHAVE_PROC -DENABLE_PCI -DHAVE_SCHED_SETSCHEDULER -DHAVE_NANOSLEEP -DWANT_TO_VALIDATE
  isapnptools RpCƂ̃tOłB

  #
  # Trying port address 0273
  # Board 1 has serial identifier 9a ff ff ff ff 80 00 8c 0e
  # Board 2 has serial identifier 50 30 80 03 e5 02 02 aa 1a
  # Board 3 has serial identifier 08 97 19 38 e6 98 50 6d 50

  # (DEBUG)
  (READPORT 0x0273)
  (ISOLATE PRESERVE)
  (IDENTIFY *)
  (VERBOSITY 2)
  (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL)) # or WARNING
  ́Aisapnp R}hւ̎włB

  # Card 1: (serial identifier 9a ff ff ff ff 80 00 8c 0e)
  # Vendor Id CTL0080, No Serial Number (-1), checksum 0x9A.
  # Version 1.0, Vendor version 1.1
  # ANSI string -->Creative ViBRA16CL PnP<--
  #
  # Logical device id CTL0041
  #     Device supports vendor reserved register @ 0x39
  #     Device supports vendor reserved register @ 0x3c
  #     Device supports vendor reserved register @ 0x3d
  #     Device supports vendor reserved register @ 0x3f
  1 ڂ̃J[h̐łB

  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0080/-1 (LD 0
  #     ANSI string -->Audio<--
  1߂̘_foCX̐ݒłB

  # Multiple choice time, choose one only !
  I͂񂠂邯ǁAЂƂIłˁB

  #     Start dependent functions: priority preferred
  I₻ 1 łB

  #       IRQ 5.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  IRQ 5 g܂B

  #       First DMA channel 1.
  #             8 bit DMA only
  #             Logical device is a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 1))
  1 Ԗڂ DMA ̐ݒłBDMA 1 g܂B

  #       Next DMA channel 5.
  #             16 bit DMA only
  #             Logical device is a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  2 Ԗڂ DMA ̐ݒłBDMA 5 g܂B

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0220
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (SIZE 16) (BASE 0x0220))
  1 Ԗڂ I/O |[gAhX̐ݒŁA16 oCgA0x220 g܂B

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0330
  #             Maximum IO base address 0x0330
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (SIZE 2) (BASE 0x0330))
  2 Ԗڂ I/O |[gAhX̐ݒŁA2 oCgA0x330 g܂B

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0388
  #             Maximum IO base address 0x0388
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 2 (SIZE 4) (BASE 0x0388))
  3 Ԗڂ I/O |[gAhX̐ݒŁA4 oCgA0x388 g܂B

  #       Start dependent functions: priority acceptable
  ւƂȂ郊\[X̐ݒłB

  #       IRQ 5, 7, 9 or 10.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 5 (MODE +E)))
  IRQ  5,7,9,10 ̎l̓Ag܂B

  #       First DMA channel 1 or 3.
  #             8 bit DMA only
  #             Logical device is a bus master
  #             DMA may execute in count by byte mode
  #             DMA may not execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 0 (CHANNEL 1))
  1 Ԗڂ DMA  1  3 g܂B

  #       Next DMA channel 5 or 7.
  #             16 bit DMA only
  #             Logical device is a bus master
  #             DMA may not execute in count by byte mode
  #             DMA may execute in count by word mode
  #             DMA channel speed in compatible mode
  # (DMA 1 (CHANNEL 5))
  2 Ԗڂ DMA  5  7 g܂B

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0220
  #             Maximum IO base address 0x0280
  #             IO base alignment 32 bytes
  #             Number of IO addresses required: 16
  # (IO 0 (SIZE 16) (BASE 0x0220))
  1 Ԗڂ I/O |[gAhX 0x220,0x240,0x260,0x280 ̂g܂B

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0300
  #             Maximum IO base address 0x0330
  #             IO base alignment 48 bytes
  #             Number of IO addresses required: 2
  # (IO 1 (SIZE 2) (BASE 0x0300))
  2 Ԗڂ I/O |[gAhX 0x300,0x330 ̂ǂ炩g܂

  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0388
  #             Maximum IO base address 0x0388
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 4
  # (IO 2 (SIZE 4) (BASE 0x0388))
  3 Ԗڂ I/O |[gAhX 0x338  4 oCgu 0x3f8 ܂ł̓A
  g܂B

  

  #     End dependent functions
   (NAME "CTL0080/-1[0]{Audio               }")
  # (ACT Y)
  ݒLɂƂɁA# ͂܂B

  ))
  1 Ԗڂ̘_foCX̐ݒ̏IłB

  # Logical device id CTL7002
  #     Device supports vendor reserved register @ 0x38
  #     Device supports vendor reserved register @ 0x39
  #     Device supports vendor reserved register @ 0x3c
  #     Device supports vendor reserved register @ 0x3d
  #     Device supports vendor reserved register @ 0x3f
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy

  (CONFIGURE CTL0080/-1 (LD 1
  #     ANSI string -->Game<--
  2 Ԗڂ̘_foCX̐ݒłB

  # Multiple choice time, choose one only !

  #     Start dependent functions: priority preferred
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0200
  #             Maximum IO base address 0x0200
  #             IO base alignment 1 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (SIZE 8) (BASE 0x0200))
  I/O |[gAhX 0x200 g܂B

  #       Start dependent functions: priority acceptable
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x0200
  #             Maximum IO base address 0x0208
  #             IO base alignment 8 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (SIZE 8) (BASE 0x0200))
  ւƂȂ郊\[XłBI/O |[gAhX 0x200  0x208 ̂ǂ炩
  g܂B

  #     End dependent functions
   (NAME "CTL0080/-1[1]{Game                }")
  # (ACT Y)
  ݒLɂƂɁA# ͂܂B

  ))
  2 Ԗڂ̘_foCX̐ݒ̏IłB

  # End tag... Checksum 0x00 (OK)

  # Card 2: (serial identifier 50 30 80 03 e5 02 02 aa 1a)
  # Vendor Id FUJ0202, Serial Number 813695973, checksum 0x50.
  #     Version 1.0, Vendor version 0.5
  #     ANSI string -->FUJITSU Modem 33600 PNP/I2<--
  #
  # Logical device id FUJ0000
  #     Device supports I/O range check register
  #     Device supports vendor reserved register @ 0x38
  #     Device supports vendor reserved register @ 0x3c
  #     Device supports vendor reserved register @ 0x3d
  #     Device supports vendor reserved register @ 0x3f
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy
  2 ڂ J[h̐łB

  (CONFIGURE FUJ0202/813695973 (LD 0
  ڂ̘_foCX̐ݒłB

  # Multiple choice time, choose one only !

  #     Start dependent functions: priority acceptable
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x02f8
  #             Maximum IO base address 0x02f8
  #             IO base alignment 8 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (SIZE 8) (BASE 0x02f8) (CHECK))
  I/O |[gAhX 0x2f8 g܂B

  #       IRQ 3.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 3 (MODE +E)))
  IRQ  3 g܂B

  #       Start dependent functions: priority acceptable
  ւƂȂ郊\[XłB
  #       Logical device decodes 16 bit IO address lines
  #             Minimum IO base address 0x03f8
  #             Maximum IO base address 0x03f8
  #             IO base alignment 8 bytes
  #             Number of IO addresses required: 8
  # (IO 0 (SIZE 8) (BASE 0x03f8) (CHECK))
  I/O |[gAhX 0x3f8 g܂B

  #       IRQ 4.
  #             High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 4 (MODE +E)))
  IRQ  4 g܂B

  

  #     End dependent functions
   (NAME "FUJ0202/813695973[0]{FUJITSU Modem 33600 PNP/I2}")
  # (ACT Y)
  ݒLɂƂɁA# ͂܂B

  ))
  # End tag... Checksum 0x00 (OK)
  2 Ԗڂ̃J[h̐ݒ̏IłB

  # Card 3: (serial identifier 08 97 19 38 e6 98 50 6d 50)
  # Vendor Id TCM5098, Serial Number 2535012582, checksum 0x08.
  #     Version 1.0, Vendor version 1.0
  #     ANSI string -->3Com 3C509B EtherLink III<--
  #
  # Logical device id TCM5098
  #     Device supports I/O range check register
  #     Device supports vendor reserved register @ 0x38
  #     Device supports vendor reserved register @ 0x3c
  #     Device supports vendor reserved register @ 0x3d
  #     Device supports vendor reserved register @ 0x3f
  #
  # Edit the entries below to uncomment out the configuration required.
  # Note that only the first value of any range is given, this may be changed if required
  # Don't forget to uncomment the activate (ACT Y) when happy
  3 ڂ̃J[h̐łB

  (CONFIGURE TCM5098/2535012582 (LD 0
  #     Compatible device id PNP80f7
  #     IRQ 3, 5, 7, 9, 10, 11, 12 or 15.
  #         High true, edge sensitive interrupt (by default)
  # (INT 0 (IRQ 3 (MODE +E)))
  IRQ  3,5,7,9,19,11,12,15 ̓ g܂B

  #     Logical device decodes 16 bit IO address lines
  #         Minimum IO base address 0x0210
  #         Maximum IO base address 0x03e0
  #         IO base alignment 16 bytes
  #         Number of IO addresses required: 16
  # (IO 0 (SIZE 16) (BASE 0x0210) (CHECK))
  I/O |[gAhX 16 oCg 0x210  16 oCgu 0x3e0 ܂ł̓A
  g܂B

   (NAME "TCM5098/2535012582[0]{3Com 3C509B EtherLink III}")
  # (ACT Y)
  ݒLɂƂɁA# ͂܂B

  ))
  # End tag... Checksum 0x00 (OK)
  3 ڂ̃J[h̐ݒ̏IłB

  # Returns all cards to the "Wait for Key" state
  (WAITFORKEY)
  ׂẴJ[h̐ݒ̏IłB

  7.4.  isapnptools ̐ݒ

  isapnptools ̐ݒ́Apnpdump ̕Wo͂t@Cɂ̂ҏW
  āA isapnp ̐ݒɎg܂B̐ݒt@C isapnp.conf ƌĂт
  B isapnp.conf ̐ݒ ̒ɏ܂B

  isapnp.conf ɂ́AISAPnP J[hgpł郊\[XLĂ܂
  ̂ŁAKvȃ\[XɑΉs̐擪ɂ#苎A\[XL
  ɂ܂B܂́A\[X̍sK؂ɕҏW܂B̓Iɂ͉L̂
  ɂ܂BAsԍ̂߂ɕtĂ܂B

   1: (CONFIGURE FUJ0202/813695973 (LD 0
   2:
   3: # Multiple choice time, choose one only !
   4:
   5: #     Start dependent functions: priority acceptable
   6: #       Logical device decodes 16 bit IO address lines
   7: #             Minimum IO base address 0x02f8
   8: #             Maximum IO base address 0x02f8
   9: #             IO base alignment 8 bytes
  10: #             Number of IO addresses required: 8
  2 sڂ 10 sڂ܂ł́A폜Ă܂܂B

  11: # (IO 0 (SIZE 8) (BASE 0x02f8) (CHECK))
  (IO 0 (SIZE 8) (BASE 0x02f8)) "#"Lɂ܂B(CHECK) ͂܂B

  12: #       IRQ 3.
  13: #             High true, edge sensitive interrupt (by default)
  14: # (INT 0 (IRQ 3 (MODE +E)))
  (INT 0 (IRQ 3 (MODE +E))) "#"Lɂ܂B

  15:
  16: #       Start dependent functions: priority acceptable

  17: #     End dependent functions
  18:  (NAME "FUJ0202/813695973[0]{FUJITSU Modem 33600 PNP/I2}")
  19: # (ACT Y)
  (ACT Y) "#"Lɂ܂BYƁAݒ肪f܂B

  20: ))

  21: (CONFIGURE TCM5098/2535012582 (LD 0
  22: #     Compatible device id PNP80f7
  23: #     IRQ 3, 5, 7, 9, 10, 11, 12 or 15.
  IRQ  3,5,7,9,10,11,12,15̂ǂꂩI܂B

  24: #         High true, edge sensitive interrupt (by default)
  25: # (INT 0 (IRQ 3 (MODE +E)))
  (INT 0 (IRQ 10 (MODE +E)))  "#"Lɂ܂BIRQ  10 ɂ܂B

  26: #     Logical device decodes 16 bit IO address lines
  27: #         Minimum IO base address 0x0210
  28: #         Maximum IO base address 0x03e0
  29: #         IO base alignment 16 bytes
  30: #         Number of IO addresses required: 16
  I/O |[gAhX 0x210  16 oCgu 0x3e0 ͈̔͂I܂B

  31: # (IO 0 (SIZE 16) (BASE 0x0210) (CHECK))
  (IO 0 (SIZE 16) (BASE 0x0300) (CHECK)) "#"Lɂ܂B
                                         I/O |[gAhX 0x300 ɂ܂B

  32:  (NAME "TCM5098/2535012582[0]{3Com 3C509B EtherLink III}")
  33: # (ACT Y)
  (ACT Y) "#"Lɂ܂BYƁAݒ肪f܂B

  34: ))
  25: (WAITFORKEY)

  𐮗ƁAL̂悤ɂȂ܂B

  (CONFIGURE FUJ0202/813695973 (LD 0
   (IO 0 (SIZE 8) (BASE 0x02f8) )
   (INT 0 (IRQ 3 (MODE +E)))
   (NAME "FUJ0202/813695973[0]{FUJITSU Modem 33600 PNP/I2}")
   (ACT Y)
  ))

  (CONFIGURE TCM5098/2535012582 (LD 0
   (INT 0 (IRQ 10 (MODE +E)))
   (IO 0 (SIZE 16) (BASE 0x0300) (CHECK) )
   (NAME "TCM5098/2535012582[0]{3Com 3C509B EtherLink III}")
   (ACT Y)
  ))
  (WAITFORKEY)

  7.5.  isapnptools ƃ\[X̏Փ

  isapnptolls ̓\[X̏Փ˂ɕqłB ``isapnptools ̐ݒ''̒
  ŁA33k AiOf̐ݒŁA(CHECK) ͂s܂(L
  ]L܂)B

  (IO 0 (SIZE 8) (BASE 0x02f8) )

   I/O |[gAhX 0x2f8 ̓}U[{[h̕WVA|[g
  B 33k AiOfł́AW̃VA|[gƓ I/O |[g
  AhXg܂BBIOS Ń}U[{[h̕WVA|[g͖
  Ă܂A kernel ɂāAIɃ\[Xo^Ă܂
  B̂߁A\[XՓ˂Ă悤ɁA܂Bisapnp 
  (CHECK) w肵ĂƁA\[X̏Փ˂𔭌ƂA̎_ŁA
  f(abort)Ă܂܂A(CHECK) OƁAG[͕񍐂܂A
  \[X̐ݒsAs܂B

  isapnp ̐ݒ(pnpdump ̏o)Ń\[X̏Փ˂Ɋ֌W镔ɂāA
  ܂B

     # Compiler flags:
        isapnptools RpC "--enable-onreserr" tƁA
        -DABORT_ONRESERR o͂܂B̃IvVtOtāA
        isapnptools RpCƁAisapnp R}h͐ݒƃ\[X
        Փ˂ꍇA𒆒f悤ɂȂ܂B

     (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL))
        \[XՓ˂Ƃ̓w肵܂BFATAL̏ꍇAv
        I(fatal)ȃG[ƂāAisapnp R}h͏𒆒f܂B
        WARNING ꍇAx(warning)o͂A𑱍s܂B

     (IO x (SIZE y) (BASE z) (CHECK))
        I/O |[gAhX̐ݒ (CHECK)w肳ĂꍇA isapnp
        R}h̓\[X̏Փ˂(check)܂BՓ˂ꂽ
        A isapnp R}h͏𒆒f܂B

  ܂Aisapnp R}hɁAgp֎~̃\[Xm点t@C
  /etc/isapnp.gone ܂B/etc/isapnp.gone ̏LɎ܂B

     IO x[XAhX , gp I/O |[gAhX̑傫
        gp֎~ɂ I/O |[gAhX̃x[XAhXƂ̑傫
        w肵܂B傫ȗƁA傫 8 oCgɂȂ܂B

     IRQ ԍ
        gp֎~ɂ IRQ ԍw肵܂B

     DMA ԍ
        gp֎~ɂ DMA ԍw肵܂B

     MEM x[XAhX , gp郁̑傫
        gp֎~ɂ郁̃x[XAhXƑ傫w肵܂B

  /etc/isapnp.gone̗LɎ܂B

  IO 0x3f8,8
  IRQ 4
  DMA 1
  DMA 5
  IO 0x378,2
  IRQ 7

  L̂悤ɁAisapnp R}h̓\[X̏Փ˂ɕqłB͓
  ẮÂłAg肪Ȃ܂B̗R͉L̒ʂ
  B

  ISAPnP xݒ肷ƁAݒ肵\[X͓RAgpɂȂ܂B
   I/O |[gAhX̓Aڂ͕ύXAڂ I/O |[gA
  hXύX悤ƂꍇAڂI/O |[gAhXgp̃
  \[XƏՓ˂Ă܂܂B ISAPnP J[h̐ݒ́Adɂ̂݁A
  ܂BLinux  Windows n OS ̍ċNł́Aݒ͏
  ܂B

  ɂ́Aisapnp R}h̐ݒ(pnpdump ̏o)L̂悤
  ɂ܂B

  (CONFLICT (IO FATAL)(IRQ FATAL)(DMA FATAL)(MEM FATAL))
  (CONFLICT (IO WARNING)(IRQ FATAL)(DMA FATAL)(MEM FATAL))
  FATAL  WARNING ɕύXB

  (IO x (SIZE y) (BASE z) (CHECK))
  (IO x (SIZE y) (BASE z) )ƁA(CHECK)폜B

   isapnptools ̃RpC --enable-onreserr w肵ꍇA
  isapnp R}h̐ݒ(pnpdump ̏o)ŕύX邱Ƃ͂ł܂B
  --enable-onreserrtɁAisapnptoolsăRpCKv
  B

  7.6.  isapnptools ɂݒ

  Lɐݒ܂B̐ݒ/etc/isapnp.confƂt@Cō
  ܂B

  (READPORT 0x0273)
  (ISOLATE PRESERVE)
  (IDENTIFY *)
  (VERBOSITY 2)
  (CONFLICT (IO WARNING)(IRQ WARNING)(DMA WARNING)(MEM WARNING))

  (CONFIGURE CTL0080/-1 (LD 0
   (INT 0 (IRQ 5 (MODE +E)))
   (DMA 0 (CHANNEL 1))
   (DMA 1 (CHANNEL 5))
   (IO 0 (SIZE 16) (BASE 0x0220))
   (IO 1 (SIZE 2) (BASE 0x0330))
   (IO 2 (SIZE 4) (BASE 0x0388))
   (NAME "CTL0080/-1[0]{Audio               }")
   (ACT Y)
  ))

  (CONFIGURE CTL0080/-1 (LD 1
  # (IO 0 (SIZE 8) (BASE 0x0200))
   (NAME "CTL0080/-1[1]{Game                }")
  # (ACT Y)
  ))

  (CONFIGURE FUJ0202/813695973 (LD 0
   (IO 0 (SIZE 8) (BASE 0x02f8) )
   (INT 0 (IRQ 3 (MODE +E)))
   (NAME "FUJ0202/813695973[0]{FUJITSU Modem 33600 PNP/I2}")
   (ACT Y)
  ))

  (CONFIGURE TCM5098/2535012582 (LD 0
   (INT 0 (IRQ 10 (MODE +E)))
   (IO 0 (SIZE 16) (BASE 0x0300) )
   (NAME "TCM5098/2535012582[0]{3Com 3C509B EtherLink III}")
   (ACT Y)
  ))

  (WAITFORKEY)

  ́A33k AiOf̐ݒ肪 kernel 2.4 ̐ݒɂ͖āA
  isapnptools̐ݒɂ͂̂Ƃ܂ƁAkernel 2.4 ̕WVA
  |[gfoCXhCóAISAPnP ɑΉĂ莩ݒōς݂܂A
  kernel 2.2 ̕WVA|[gfoCXhCóAISAPnP ɑΉĂ
  Ȃ̂ŁAݒ肷Kv邽߂łB

  7.7.  isapnptools N̐ݒ

  ݁Agp Linux  isapnptools CXg[ς݂ł΁AN
  ̐ݒĂ͂łBfBXgr[VɂĂႢ܂
  Ał́ARedHat n /etc/rc.d/rc.sysinitXNvggꍇ
  ܂B /etc/rc.d/rc.sysinit  /proc ̃}EgɉL̂悤
  ǉ܂B

  mount -t proc /proc /proc
  if [ -x /usr/local/sbin/isapnp -a -f /etc/isapnp.conf ]; then
        /usr/local/sbin/isapnp /etc/isapnp.conf
  fi

  8.  ALSA  ISAPnP T|[g

  TEhhCo ALSA ͓Ǝ ISAPnP ̃TEhJ[hT|[gĂ
  ܂B ALSA  Advanced Linux Sound Architecture
  <http://www.alsa-project.org/>ł܂B{łALSA ̃CX
  g[ɂĂ͐܂B

  ALSA  ISAPnP Lɂɂ́Aalsa-driver-*̃RpCɁAL
  悤ɃIvVw肵܂BALSÃo[WɂāAႤ
  ܂B

  $./configure --help
  IvV̊mF

  $./configure --with-isapnp=yes

  8.1.  ALSA ̐ݒ

  ALSA ̐ݒ́Aalsaconf gpƁAȒPɐݒł܂B alsaconf 
  gpȂꍇAALSA driver ̕ README QlɁA
  /etc/modules.conf ɐݒLڂ܂B ISAPnP ɌŗL̐ݒ̓TEh
  J[hɈقȂ܂A SoundBlaster16 ISAPnP ł́Asnd_isapnp=1 f
  tHgŗLɂȂĂ܂BLɐݒ܂B

  $cat /etc/modules.conf
  alias eth0 3c509
  # --- BEGIN: Generated by ALSACONF, do not edit. ---
  # --- ALSACONF verion 0.4.3b ---
  alias char-major-116 snd
  alias snd-card-0 snd-card-sb16
  alias char-major-14 soundcore
  alias sound-slot-0 snd-card-0
  alias sound-service-0-0 snd-mixer-oss
  alias sound-service-0-1 snd-seq-oss
  alias sound-service-0-3 snd-pcm-oss
  alias sound-service-0-8 snd-seq-oss
  alias sound-service-0-12 snd-pcm-oss
  options snd snd_major=116 snd_cards_limit=1 snd_device_mode=0666 snd_device_gid=0 snd_device_uid=0
  options snd-card-sb16 snd_isapnp=1 snd_index=0 snd_id=CARD_0 snd_port=0x220 snd_mpu_port=0x330 snd_irq=5 snd_dma8=1 snd_dma8_size=64 snd_dma16=5 snd_dma16_size=128 snd_mic_agc=0
  # --- END: Generated by ALSACONF, do not edit. ---

  9.  Ql

  o  ISAPnP Ki Plug and Play ISA Specification Version 1.0a May 5,1994
     <http://www.microsoft.com/hwdev/respec/PNPSPECS.HTM> pnpisa.zip RTF
     ̕ł܂B

  o  JF̕ Plug-and-Play-HOWTO
     <http://www.linux.or.jp/JF/JFdocs/Plug-and-Play-HOWTO.html>B

  o  PC98 System Design Guide <http://www.microsoft.com/hwdev/pc98.htm>

  o  PC99 System Design Guide <http://www.microsoft.com/hwdev/pc99.htm>

  o  kernel 2.4 \[X linux/drivers/pnp

  o  isapnptools \[X isapnptools-version/doc/

  10.  ӎ

  {̍쐬ɂAL̕XɑςbɂȂ܂B

        <setoh@cwa.bai.ne.jp>
  UTi    <ysenda@pop01.odn.ne.jp>
  L    <takei@webmasters.gr.jp>
  앐r    <kgh12351@nifty.ne.jp>

  A.  ISA Bus ɂ

  {̂̍ȍ~͋ZpłBISAPnP ɂāA[A
  lɏĂ܂An[hEFAAC Akernel ̊bm
  邱ƂOɂĂ܂B

  A.1.  ISA Bus ̗jƓ

  ISA Bus  1983 N IBM ЂA8088 CPU𓋍ڂ PC/XT  I/O
  `lƂɂȂĂ܂B I/O `l 62 s̃RlN^
  gpĂ܂B 1984 N  IBM  80286 CPU 𓋍ڂ PC/AT 𔭔
  ܂BɁA I/O `lgAPC/XT ̂̂ 36 s
  ̃RlN^ǉ܂B PC/AT ͑̌݊@쐬Ǎ݊@
  [JɂAPC/AT  I/O `l ISA(Industry Standard
  Architecture) BusƌĂ΂悤ɂȂ܂B PC/AT ݊@ɂ 6
  { 62 + 36 s̃XbgƁA 2 { 62 s̃Xbg̍vA8 {
  ISA Bus Xbg܂B

  ISA Bus  PC/XT R 62 s̃Xbgɂ́AAhXoX 20bitA
  f[^oX 8bitA荞 6 {ADMA 3 g܂B PC/AT Œǉ
   36 s̃Xbgɂ́AAhXoX  7bitAf[^oX 
  8bitA荞 5 {ADMA 4 g܂(80286 CPU ̃AhX 24bit
  Ȃ̂ŁA4bit ̒ǉő͂łÂ 7bit Ă܂)B

  ȊOɁACPU Ƃ̐ANbNAZbgAd܂B Bus
  NbN CPU ̃NbNɈˑA6MHz,8MHz,10MHz ܂B
  ISA Bus ̐ḾA80286 CPU, DMA Rg[ 8237AA荞݃Rg
  [ 8259A ɐڑĂāÃfoCXŗL̃^C~OŐ
  Ă܂BISA Bus  80286 CPU p̃oXƂĂ悢
  傤B

  x86 n CPU  I/O AhXԂԂƂ͕ʂɎĂ܂B I/O
  AhXԂ 16bit łA80286  PC/AT pgJ[h̒ɂ
   12bit ĂȂJ[hA1  I/O AhXgpĂ
  ̂ɁA8  I/O AhXQJ[h܂B

  PC/AT Ƃ̌݊@̃}U[{[h I/O uɂ́AL[{[gRg
  [A^C}AA^CNbN(RTC v)ڂĂ܂B
  rfIAVA|[gAv^|[gAn[hfBXNEtbs[fB
  XNRg[Ag ISA Bus ɃA^v^(gJ[h)}
  āAgp܂Bł̓XbgȂ߁AVAApA
  n[hfBXNEtbs[fBXNRg[J[h 1 ɂ܂Ƃ߂
  }` I/O J[hATEhASCSIACDROM Rg[AWCX
  eBbNE}EX Rg[ 1 ɂ܂Ƃ߂y݃J[hƂ悤
  ȃJ[hoꂵ܂B

  80386 CPU oƂAISA Bus  80386 CPU ɑΉł܂ł
  B܂Aȃ ISA Bus ɒuƌ듮삷̂ŁACPU ̂
  ΂ɒu悤ɂȂ܂B̌A80486  Pentium o EISA A
  rfIJ[hɑΉ VL Bus ̗pꂽƂ܂B
  āAŁACPU ɈˑȂ PCI Bus KioꂵAPC/AT ݊@̕W
  Bus  ISA Bus  PCI Bus Ɉڂ܂B

  V Bus  PC/AT ݊@ɍ̗px ISA Bus ͏ĖȂ邾
  낤ƂĂ܂BÂƂ ISA Bus ͐cĂ
  B̗RƂāALɊĂ܂B

  o  ISA Bus ƎӋ@̃C^[tF[XȒPȉHŎł邱ƁB

  o  ̃J[hAȃJ[h݂ƁB

  o  ISA PnP ɂAgJ[h̎舵yɂȂƁB

  o  PCI  ISA Bus \[XƏdȂȂ悤ɎꂽƁB

  o  ISA Busŏ\Ȑ\pr邱ƁB

  AMicrosoft Ђ Intel Ђ̒񏥂 PC ̃n[hEFAWKiA
  ``PC 98 Hardware Design Guide''ł́A ISA Bus ̓ڂ͕sƂȂĂ
  ܂BA삷lɑ΂ PCI Bus C^[tF[Xp LSI 
  Œ񋟂A PCI Bus  ISA Bus ̂悤ɊȒPɎg悤ɂȂ
  AISA Bus ͖Ȃ邾낤Ǝv܂B

  A.2.  ݂ ISA Bus

  2000 N݂ ISA Bus  CPU Pentium III Ƃ͉} 1 ̂悤ɐڑ
  ܂B

                            DRAM   AGP                   USB    Super I/O chip
                             |      |                     |              |
  Pentium III -- GTL Bus -- North Bridge -- PCI Bus -- South Bridge -- ISA Bus
      |                                                   |              |
      +------- IO APIC (interrupt) -----------------------+--------------+

                      } 1 Pentium III  440BX Chip Zbg

  } 1 ܂B

     Pentium III
        ݂̍ŐV CPU łB

     GTL Bus
        ŐV CPU (Pentium II  Celeron܂) Bus ̖̂łBBus
        NbN 100MHz łB

     North Bridge
        CPU  DRAM,AGP,PCI Bus C^[tF[X@\󂯎܂B^
         82443BX łB

     South Bridge
        ̂ PC/AT ̃}U[{[hɓڂĂ@\A荞݁ADMA,RTC
        A PCI Bus ڑ ATA(IDE)C^[tF[X USB  PCI-ISA
        Bus Bridge @\܂B^Ԃ 82371EB łB

     Super I/O chip
        tbsfBXNApEVA|[gAL[{[hA}EXC
        ^[tF[X܂B ISA Bus ɐڑĂ܂BeЂ
        񋟂Ă܂B

     IO APIC
        VA荞݃Rg[łBPC/AT ̊荞݂gA16
        ȏ̊荞݂gAPCI Bus ISA Bus ̊荞݂ʂɂł
        B^Ԃ 82093AA łB

  Ƃ 8088/80286 CPU ̂΂ɂ ISA Bus ́AĩC^
  tF[XoRāAPentium III ƐڑĂ܂B ISA Bus ̃^C~
  O NbN 8MHz ́A80286 ̃^C~OƂقځAłB

  A.3.  ISA Bus  PC/AT ̖_

  ISA Bus ̖_́APC/AT ݊@̖ƌ邱Ƃł܂B

     Zbg̖
        x86 n CPU  8086(8088)ƓA[hƂ܂B
        x86 n CPU  ŐV Pentium III ܂߂āACPU  Zbg
        ƁÃA[hɂȂ܂BveNg[h͗lXȕی@\
        Az@\[ĥƂłB 80286 CPU ͋@Bꖽ
        ߂ŁAA[hAveNg[hɈڍsł܂Ave
        Ng[hAA[hɖ߂@Bꖽ߂Ă܂ł
        B80286 CPU ̊̃vO̓A[hŖƓ
        Ȃ̂邽߁AA[hɖ߂邽߁ACPU Zbg
        n[hEFA PC/AT ݊@ɒǉ܂BL[{[hRg[
        ̏o̓|[g (I/O AhX 0x64)  bit 0  0 ނƁA
        Zbgł̂ŁAL[{[hZbgƌĂ΂Ă܂B́A
        L[{[hZbgł ISA Bus ̓Zbg܂B ISA Bus 
        Zbĝ́AdłB

     I/O AhX̖
        x86 n CPU  16 bit  I/O AhXĂ܂BPC/AT 
        ́AAhX 0x0000  0x00FF ܂łA}U[{[hŎgpA
        gJ[h 0x0100  0x03FF ܂łgp܂(킹 10bit
        1024oCgɂȂ܂)BƂ낪Aǂ I/O AhX 16bit 
        SfR[hA𔲂Ă܂B}U[{[hł́AI/O Ah
        X  bit15  10 𖳎AAbit9  bit8 Ƃ 0 
        AIĂ܂܂BgJ[h I/O AhX bit15 
        10 𖳎Ă܂B̂߁AI/O AhXԂ C[W(S[
        Xg)炯ɂȂĂ܂B܂A}U[{[hł
        0x0000,0x1000,0x2000... ͑Sē I/O AgJ[hł
        0x0100,0x0400,0x0800... ͑Sē I/O Ă܂܂B
        ɁA1  I/O AhXKvƂA}U[{[h
        ́AŒPʂł 16 ÅgJ[hł 8  I/O AhX
        QĂ܂B̎蔲 fR[_Hȑf邽߂ɍs
        ܂A I/O AhXɘAL̈邱Ƃł
        B

     DMA ̖
        PC/AT  DMA Rg[ (̂) 8080 p 8237A gp
        ܂B 8237A ̓AhX 16bit Af[^ 8bit Ȃ
        ŁA64kbyte ܂ł]ł܂BPC/AT ł́AȂ蕡Gȕ@
         8237A  2 gpAf[^ 16bit ̓]ł܂B܂
        8bit ̃WX^gpAAhX 24bit Ɋg傳Ă܂B
        Axɓ]łf[^́A 16bit ܂łɁAĂ
        ܂BɁADMA ̓]x݂͌ CPU ̃vO]x
        ܂B

     荞݂̖
        x86 CPU ̂ 2 {̊荞ݐ܂BNMI  INT łB NMI
         荞݋֎~ɂ邱ƂłȂ̂ŁAɒvIȃG[(
        ُ̈Ad)̎Ɏgp܂B INT  荞
        ֎~ɂł邱ƂƁA荞ݔ 8bit ̊荞݃xN^ǂݍ
        ނƂŁA256 ̊荞݂ɑΉł܂B PC/AT ł 荞݃R
        g[ 8259A  2 gpA15 ̊荞݂gpł
        B8259A  8{  IRQ [qĂāAIRQ [qɕʁX̊
        ݃xN^ݒ(vO)ł܂B8259A  2 g߂
        ́A IRQ [q𑼕 8259A̒[q̂߂Ɏg߁A16 
        ͂Ȃ 1 ȂA15 ̊荞݂ɂȂ܂B̊荞
        n[hEFA荞݂Ƃ܂B

        ܂Ax86 n CPU ɂ̓\tgEFA荞݋@Bꖽ(j[jbN
         INT ł)܂An[hEFA荞݂Ɠ悤ɓ삵
        ܂B 8259A  荞݃xN^ 8 o͂ACPU  INT [qL
        ɂƂƁA\tgEFA荞݋@Bꖽ INT 8 ̓͑S
        ŁACPU ɂ͋ʂt܂B8259A ̃WX^𒲂ׂ
        AIRQ [qLɂAn[hEFAɖ₢킹āAn[hEF
        A\tgEFÅ荞݂ʂ܂B́A_Ƃ_Ƃ
        l܂B _ƂāAn[hEFA\tgEFAʂ
        vOKvɂȂ邱ƂłB_ƂẮAn[hEFA
        ĂȂ(bugĂA܂ĂȂ)ƂɁA\tgEF
        AŎł邱ƂłB

        x86 n CPU ̓xN^ԍvZAe(ܘ_炩߁A
        lݒ肵Ă܂)ƂɂAhXփTu[`R[
        ܂B

        PC/AT ͊荞݂ 15 ΁A\ƍlĂ܂
        A݂ł́AsĂ܂B

     Bus x̖
        ISA Bus ̓]x̓s[NłA8Mbyte/sec ȉłB8bit 
        I/O ߂ ISA Bus ANZXꍇ 1Mbyte/sec ܂B

     ̖
        ISA Bus ɂ́AׂẴXbgɐMʂɔzĂ܂B
        ̂߁A ISA J[hɃANZX@܂B Bus
        ڑłASCSI ͑uɁAID ԍlŏdȂ悤ɐݒ
        A ID ԍgAuʂANZXĂ܂B PCI 
        ͑u(Xbg) PCI Bus Rg[ 1  1 ɐڑĂ
        ܂BPCI ł́A̐LɂƁAΉ
        Ƃ̑u(Xbg)A Bus ɂ鑼̑u(X
        bg)͔܂B

  A.4.  I/O AhXԂɂ

  ISA Bus  I/O AhXԂgpAn[hEFA𐧌䂵܂B I/O A
  hXԂւ̃ANZXɊ֌WLɎ܂B

  A.4.1.  I/O AhXԂ̖

  x86 n CPU  I/O AhXԂAhXԂƕʂɎĂ܂
  A I/O AhXԂ CPU ͏hȂ̂łB́AhƂ
  ΁AI/O AhXԂʂɎAKv͕KłB I/O
  ̃n[hEFAƓ悤ɁAANZXāA삷悤ɐ݌v
  Ă΁A͖łBI/O AhXԂANZX@Bꖽ
  ߂A CPU ̐MANZX^C~O I/O AhXԐp̂̂
  pӂKv̂ŁAI/O AhXԂȂLłB
  ALV̓ځA߂̃XPW[Aی@\ACPU ̍
  ɂA I/O AhXԂLƂȂĂ܂B̗R
  LɎ܂B

     LV̓
         CPU ̊ǗɂAeύX̂́AƂ
         CPU łAn[hEFA͓ƎɃeύX܂B
        AhXԂɃn[hEFA蓖ĂꍇÄ̗L
        VsɂKv܂Bx86 n MTRR ̓AhX
        Ƀn[hEFA蓖ĂƂɎgp܂B

     ߂̃XPW[
        ݂ CPU ͕@Bꖽ߂𓯎Ɏ荞݁AɎsł
        ɂȂĂ܂B̂߁A߂̎sAAhX
        ւ̃ANZXύX邱Ƃ܂Bn[hEFAɑ΂A
        sANZXύXꂽꍇA듮삷\
        B

     ی@\
        n[hEFA蓖ĂꂽAhXԂł́AAhX
        Ƃ́AقȂی@\KvłBAhXԂł́Aǂݏo
        sAݐp͈Ӗ̂ȂAیłAn[hEFAł͗L
        ȕیɂȂ܂B܂AǂݏosAݕsAANZ
        X͉\Ƃیn[hEFAł͂蓾܂BɁA
        ی@\̓rbgPʂōsKv܂B

     CPU ̍
        CPU ΁AւɃANZX\ŁAANZX^C
        ͓łALł傤BAn[hEFÃANZX
        x͗lXŁAᑬ̂̂܂Bn[hEFA𓯂ԂɊ
        蓖ĂAʂ̋ԂɊ蓖ĂA CPU Bus   Bus
        ̐݌veՂɂȂ܂B

  A.4.2.  n[hEFAւ̃ANZX

  n[hEFAւ̃ANZXɊ֘AbLɎ܂B

     n[hEFAւ̃ANZX̓ꐫ
        n[hEFAւ̃ANZX̓̃ANZXƂ́Ał͂܂
        BLɂ̋@Bꖽ߂̃R[h̗AI/O ƃƂ
        Ⴂ܂B

        R[h 1
        load io     # io AhX̃f[^ǂݍ
        load io
        store io
        store io    # io AhXփf[^

        R[h 2-1
        load io
        ioɃANZXȂ

        R[h 2-2
        ioɃANZXȂ
        load io

        R[h 3-1
        load32 io   # 32bit PʂŃANZX
        and 0xff    # 8bit oB

        R[h 3-2
        load8 io    # 8bit PʂŃANZX

     R[h 1 ւ̃ANZXł΁Aǂݍ񂾃f[^߂
     łAӖȃR[hł傤BCPU ɂẮA@Bꖽ߂
     sȂ܂BAR[h 1 n[hEFAւ̃ANZX
     ̏ꍇA̒ʂɁA2 ǂŁA2 񏑂悤("   " )
     sKv܂B "   " A"   " ł͓삵
     悤ɁA݌vꂽn[hEFA܂B

     R[h 2 ͍ŏɃn[hEFAɃANZX邩AŃn[hEFAɃA
     NZX邩̈ႢłAԂo߂ƁAn[hEFA͕ʂ̃f[
     ^Ԃ܂B

     R[h 3 ̓ANZXƂ̃f[^oẌႢłBǂݍ񂾃f[
     ^͂Ƃ 8bit ̓f[^ł傤BA32bit ̃ANZX
     ́A24bit 悯ȃANZXĂ܂B̂߁An[hEFA
     ͑SقȂ̂ɂȂł傤B

     ܂A I/O AhXւ̃ANZXłAǂݍ݂Ə݂̓삪
     قȂ邱ƂA܂AANZX΁Aǂݍݏ݂
     ȂƂ܂B

     I/O ANZXvO̖
        x86 n CPU  I/O AhXԂɃANZX@Bꖽ߂ I/O 
        ߂ƌĂł܂BI/O ߂̃AhbVO[h́Aӂ
        ܂B΃AhX DX WX^ԐڂłB΃AhXAh
        bVO[h́AI/O AhX𒼂Ɏw肷̂ŁA@Bꖽ߂
        ROM ɏ܂ꂽꍇAveNg[hł́A I/O AhX
        邱Ƃ͂ł܂B܂AAhX 0  255 ͈̔͂
        ܂B DX WX^ԐڃAhbVO[h́ADX WX^
         I/O AhXAnΗǂ̂ŁAI/O AhX邱
        ł܂BƂ낪Ax86 n CPU  CPU WX^̖Œ肳
        ĂAWX^Ȃ߁ADX WX^𑼂̗prɎgp
        邱ƂAvO} 8080 CPU @BɊĂ邱ƂA
        DX WX^ԐڃAhbVO[h͂܂g܂łB
        Bus ISAPnP ɂȂĂA΃AhbVO[hgpĂ
        foCXhCoA\[XՓ˂āA PnP @\
        Ȃ̂܂(A܂ł) BAIBM PC/AT
        @ł I/O AhX 0  255  VXe I/O Ɏgp܂
        ŁAISAPnP J[hɂ͊蓖Ă邱Ƃ͂܂B

     oCgI[_̖
        GfBA̖ƂA܂B16bit ȏ̐l 8bit P
        łǂ̂悤ɃɊi[邩ƂƂłBx86 n CPU 
        ́AŉʂAi[Ȃ CPU (Ⴆ 68k  Alpha)
        ́Aŏʂi[܂BႦ΁A0x123456AB  x86 n
        ́A"AB 56 34 12" ̏ɁA 68k ł"12 34 56 AB" ̏Ɋi[
        ܂BꂼɁA_āAx86 nł́Arbg̊gɌ
        ĂāA68k ł́Aǐɕxł܂Brbg̊gƂ́A
        16bit ̃f[^i[ƂAzāA64bit ̗̈p
        Axx yy 00 00 ... ̂悤ɁAgp̈ 0 ɂĂƁA
        32bit łA64bit łA擪AhXŃANZXł܂B

        ISAPnP ( PCI ) RtBO[VWX^ x86 ñoC
        gI[_ɂȂĂ܂B܂A̖ƂāAŏʃrbg̈
        u̖肪܂Bx86 nł́A 32bit ̏ꍇA bit31 ŏ
        rbgłA CPU ł bit0 ŏʃrbgɂȂĂ܂B

  B.  ISAPnP ̎dg

  ISAPnP ̎dg݂ɂĐ܂Bڂ ISAPnP ̎dg݂ɂ
  ́A ``Ql''QƂĂB

  B.1.  ISAPnP J[h̗pƃn[hEFA

  {ŎgpĂ ISAPnP J[h̗pƁAISAPnP ŗL̃n[hEFA
  āA܂B

  B.1.1.  _foCX

  ISAPnP J[h͈̃J[hɕ̋@\𓋍ڂĂ̂܂B
  ̋̕@\_foCXƌĂт܂BႦ΁ATEhJ[h́ATE
  h@\ƁAWCXeBbN@\̓̘_foCX܂BP@\
  ̃J[h̏ꍇA_foCXƂƂɂȂ܂B_foC
  X 256 ܂ŎĂ܂B̘_foCX́AőŁA 8  I/O A
  hXԁA4 ̃AhXԁA2 ̊荞݁A2  DMA `
  lƂł܂B

  B.1.2.  RtBO[VWX^

  OS  ISAPnP J[hƂ́AISAPnP J[h̎RtBO[VWX
  ^āA8bit Pʂŏ̂܂BRtBO[V
  WX^ 0  0xff ܂ŁAAhXԍ蓖ĂĂ܂BAh
  Xԍ 0  0x2f ܂ł ISAPnP J[h AJ[hx
  WX^ƌĂт܂BAhXԍ 0x3f  0xff ܂ł́AISAPnP J[h
  ̘_foCX̐gAfoCXxWX^ƌĂт܂B
  Ƃ̃AhXԍɑ΂Ãf[^̂܂B̈Ӗ
  ł́AAhXԍƂR}hԍƍl₷
  ܂B

  B.1.3.  

   ISAPnP J[hA1 肷邱ƂłB

  B.1.4.  CSN

  CSN(Card Select Number)  ISAPnP J[h肷邽߂ 1byte ̐l
  łB OS  CSN  j[NɊǗKv܂B ISAPnP J[
  h̕ɐƁAOS  ISAPnP J[h CSN 蓖Ă܂B OS 
  CSN o͂ƁAISAPnP J[h͎Ɋ蓖Ăꂽ CSN ̎
  ܂BCSN  0 ̏ꍇAʂɑSĂ ISAPnP J[h܂B CSN
  0 ISAPnP J[hSăZbgƂA̎Ɏg܂B

  B.1.5.  ISAPnP J[h̃Xe[g

  ISAPnP J[h͊̃Xe[g( state)܂B

     Wait
        dOS ɂ鏉҂Ă邩ARtBO[V
        I̐ȓ쒆̏ԂłB

     Sleep
        OS  "Wake" R}h҂ĂԂłB Wake R}h
        󂯎ƁAWait Xe[gɈڍs܂B

     Isolation
        V[PXs̏ԂłBɎsƁASleep Xe[g
        Ɉڍs܂BƁACSN R}h҂ACSN R}h
        ƁA Config Xe[gɈڍs܂B

     Config
        RtBO[Vs̏ԂłB

  OS R}ho͂AXe[gڍs܂B

  B.1.6.  RtBO[Ṽf[^oXhCu@

  ISAPnP J[h̕ςނ܂ł́ÃJ[hĂ܂܂B
  ŁAISAPnP J[h̃RtBO[VWX^̓ǂݏȍ
  A ISAPnP J[h f[^oX _l 0(Low)̃rbĝ݂쓮A
  _l 1(High) ̃rbg͋쓮AnCCs[_Xɂ܂BnCC
  s[_XɂƂ́AdCIɐ؂藣̂ƓԂɂ邱ƂłB
  ISAPnP Ή̃}U[{[h̃f[^oX̓nCCs[_X̏ꍇA_
  l 1(High)ɂȂ悤ɁA׍H(dCRŃvAbv)Ă܂̂ŁA_
  l 1(High)̃rbgǂݏo܂B

  Af[^oX̓rbgɑ΂AJ[h_l 1 쓮A
  ̃J[h_l 0 쓮ꍇA_l 1 oJ[h̓rbg 0
  ɂȂȂ悤ɂ΂A_l 0 oJ[h̓rbg 0 ɂ悤
  Ƃ΂Ă܂܂B̌ʁA҂̃J[h̊ԂɑdA
  ̃J[hĂ܂܂B_l 1(High) 쓮AnCCs[_
  Xɂ΁AvAbvĂdCRɂēdĂ܂
  ̂ŁAJ[h͉܂B܂A_l 0 m̏ꍇ́Aǂ炩̃J[
  hA_l 0 ɂȂ΁Aȏd͗Ȃ̂ŁAJ[h͉
  B

  B.1.7.  ISAPnP RtBO[V ANZX@

  ISAPnP ̓RtBO[V̂ƂAO I/O AhXg܂B

     AhX|[g 0x279
        AhX|[g v^|[g̓ǂݎp̃XeC^X|[g
        Ɠ I/O AhXݗpɕύXāAgpĂ܂B OS
        ̓AhX|[g ISAPnP ̃RtBO[VWX^̃Ah
        Xԍ݂܂B

     Cgf[^|[g 0xa79
        Cg(write)f[^|[g̓v^|[g̓ǂݎp̃XeC
        ^X|[g̃C[WƓ I/O AhXgp܂BISAPnP Ή
        }U[{[hł́A I/O AhX̃tfR[h`ÂĂ
        ̂ŁAۂɂ̓C[Wł͂܂B OS ̓Cgf[^|[g
        ցARtBO[VWX^ɐݒ肵f[^݂
        B

     [hf[^|[g 0x203 + 4*n  0x3ff܂ł̓ 
        [hf[^|[g I/O AhX
        0x203,0x207,0x20b,0x20f...0x3ff̒Agp I/O AhX
        gp܂BOS ̓[hf[^|[gARtBO[V
        WX^̃f[^ǂݏo܂Bۂ I/O AhX́A
        ɒׂ܂B

  ISAPnP Ήn[hEFÃRtBO[VWX^̃ANZX@
  L̒ʂłB

     
        AhX|[gɁARtBO[VWX^̃AhXԍ
        ݂܂BɁAނׂf[^̕ACgf[^|[
        gɁAf[^݂܂B

     ǂݍ
        AhX|[g RtBO[VWX^̃AhXԍ
        ݂܂BɁAǂݍނׂf[^̕A[hf[^|[
        gAf[^ǂݍ݂܂B

  B.2.  ISAPnP ̃RtBO[V

  ISAPnP ̃RtBO[VɂāA܂B

  B.2.1.  ̎dg

  ISAPnP J[h̎dg݂ōł̂A(isolation)łBƂ
  ISA Bus ɂ镡̃J[hAꖇʂAԍt邱
  łB ISAPnP J[h 32bit ̃x_[ID  32bit ̃VAID ̍v
  64bit  ID Ă܂B ID ͑̑SĂ ISAPnP J[hƈقȂ
  悤ɕtĂ܂B ID  ID ̃`FbNT 8bit ̍v 72bit
  gāA ISAPnP J[h𕪗܂B

  ̃ASY̊{Iȍl͏̂悤Ȃ̂łB
  ́AID  LSB 珇 1 rbgÂׂčs܂Bs͉L̂悤
  Ɍ߂܂B

     g
        ID ̒̃rbg 1 ̃J[hBg͎āA𑼂
        J[hɒm点B

     g
        ID ̒̃rbg 0 ̃J[hBǵAĂJ[h
        AׂB

     sҕ
        N҂Ȃ(肪ȂƂ)Ȁɐi߂B

  g͔sҕ̂ƂɂȀɐi߂܂BāAD
  J[hɂ́Aԍ(CSN:Card Select Number)tāA~(
  )炢܂Bs҂́Ȁɏoꂵ܂B̏
  JԂAJ[hSĖȂ܂ŏ𑱂܂B

  ƂāAJ[h A  101AJ[h B  011AJ[h C  001  2 i
  3bit  ID ĂƂ܂B͍ŉʃrbgn߂܂B

   |   A   |   B   |   C   |  |   
  =====+=======+=======+=======+====+===========
  1-1  | A = 1 | B = 1 | C = 1 |  | ݂ȏ
  1-2  | A = 0 | B = 1 | C = 0 |  | B ̏
  1-3  | xxxxx | B = 0 | xxxxx |    | B ̗D
  -----+-------+-------+-------+----+-----------
  2-1  | A = 1 | I am  | C = 1 |  | 
  2-2  | A = 0 |  NO.  | C = 0 |    | sҕ
  2-3  | A = 1 |  one! | C = 0 |  | A ̗D
  -----+-------+-------+-------+----+-----------
  3-1  | I am  |       | C = 1 |  | C ̏
  3-2  |  NO.  |       | C = 0 |    | sҕ
  3-3  |  two. |       | C = 0 |    | C ̗D
  -----+-------+-------+-------+----+-----------
  4-1  |       |       |       |    |J[h
  =====+=======+=======+=======+====+===========
  CSN  |   2   |   1   |   3   |

  āASẴJ[hɂ CSN tꂽ̂ŁAJ[hƂ́A CSN
  gpARtBO[V𑱂܂B

  ܘ_Aۂ ISAPnP ̃̕ASY(V[PX)͂G
  B{ƂȂASY͉L̒ʂłB

  OS f[^[h|[gAhXf[^ 2 ǂݍ݂܂B ISAPnP
  J[h ID  ̃rbg 1 ̏ꍇAf[^ 0x55, 0xAA ̏ŏo
  ͂܂(g)BID ̒̃rbg 0  ISAPnP J[h́Af[^o
  X 2 ǂݍ݁Aŏ̃f[^̉ 2rbg 01 ŁÃf[^̉
   2 rbg 10 ̏ꍇASleep Xe[gɈڍs܂(g)Af[^
  ̉ 2 rbgA 01,10 ŖꍇAIsolate Xe[g𑱍s
  (sҕ)B OS ͓ǂݍ񂾍ŏ̃f[^ 0x55A ̃f[^ 0xAA
  ꍇA ID  1 AłȂꍇA 0 Ɣf܂B

  ̃ASY Iso ƌĂт܂B̑ ID ̃`FbNT
  ߂ׂɁA64 JԂAISAPnP J[ho͂`FbNT
  邽߂ɁA8 JԂ܂BŌɗ҂̃`FbNTr
  AISAPnPJ[h ̗L𔻒f܂Bۂ ISAPnP ̃ASY
  ͉L̂悤ɂȂ܂B

  1. OS  CSN  0x01ɏAf[^[h|[gAhX 0x203 
     ܂B

  2. f[^[h|[gAhX 0x3ff zꍇA9. ֍sI
     B

  3. OS ݂̃f[^[h|[gAhX ISAPnP J[hɐݒ肵A
     ISAPnP J[h Isolate Xe[gɈڍs܂B

  4. OS  `FbNTAIso  64  JԂ`FbNT
     vZ܂B

  5. Iso  8  JԂAISAPnP J[h̃`FbNT OS ̃`Fb
     NTr܂BvA6DցAvȂ 8. ֍s
     B

  6. `FbNTvꍇAISAPnP J[h CSN 蓖Ă܂B

  7. CSN XVA ISAPnP J[ĥ߁A3. ֍s܂B

  8. `FbNTvȂꍇAf[^[h|[gAhXX
     V(4 Z)A2D֍s܂B

  9. ISAPnP J[hƂāAI܂B

     A`FbNŤvZ@ɂA`FbNT 0 ŖƂA
     ؂Ă܂B]āAISAPnP J[h΁AK 0x55,0xAA 
     ݏôŁA[hf[^|[gAhX͊mł܂AISAPnP
     J[h̕ł܂B

  B.2.2.  `FbNŤvZ

  `FbNŤvZ LFSR(linear feedback shift register) g܂B
  LFSR  8bit ŁAbit0  bit1  ISAPnP  ID rbg̔rI_a
  bit7 ɃtB[hobNĂ܂BLFSR  OS  0x6a ɏA
  ID rbgXVƂɁAVtg܂B ISAPnP  ID  64bit 
  ALFSR  64 Vtgʂ`FbNTɂȂ܂B̌vZ
  @ɂA`FbNT 0 łȂƂAۏ؂܂B

  Ã`FbNŤvZ CRC `FbNT̈łB

  B.2.3.  \[X̓ǂݍ

  \[X̓ǂݍ݂ɂ͓̕@܂B́AISAPnP J[h̕
  A ISAPnP J[hɃANZX@łB ISAPnP J[h͕
  A\[Xf[^AāAo͂܂BOS  RtBO[V
  WX^𒲂ׂă\[Xf[^̏I𒲂ׂ܂B́AL̎菇
  gAOS  ISAPnP J[h̃\[Xǂݍޕ@łB

  1. OS  CSN o͂܂B

  2. OS  ISAPnP J[h̘_foCXw肵܂B

  3. OS  ISAPnP ̃\[X̎ނw肵܂B

  4. ISAPnP J[h͎w肳ꂽ_foCX̃\[Xo͂܂B

  5. OS ̓\[Xǂݍ݂܂B

  B.2.4.  \[X̏

  L̎菇 OS  ISAPnP J[h̃\[X݂܂B

  1. OS  CSN o͂܂B

  2. OS  ISAPnP J[h̘_foCXw肵܂B

  3. OS  ISAPnP ̃\[X̎ނw肵܂B

  4. OS ͎w肵_foCX̃\[X݂܂B

  5. ISAPnP J[h̓\[Xݒ肵܂B

  B.2.5.  \[X̎

  \[X̎ނ́AL̒ʂłBނƂɃtB[hAɁA
  ꖈɁATutB[h܂B

     
        ̃tB[h l܂B̃TutB[h̓x[
        XAhXARg[Al O܂Bx[XAh
        X̓AhX̏ 16bit łBRg[ ̃AN
        ZX 8bit  16bit̎wƁAl̎ނłBl 16bit
        ŁARg[̎wɂA̒AAhX
        lɂȂ܂B

     I/O AhX
        I/O AhX̃tB[h͔܂B I/O AhX̃Tu
        tB[h̓x[XAhXAőAhXAACgEAAh
        X̎l܂Bx[XAhXƍőAhX 10bit 
        BACgEƃAhX 8bit łB

     IRQ
        IRQ ̃tB[h͈łB IRQ ̃TutB[h IRQ }X
        NƃgK̓܂B IRQ }XN 16bit ŁArbgʒu
         IRQ ԍw肳܂BgK 4 ނ܂A ISA
        Ŏgp̂͗オGbWłB

     DMA
        DMA ̃tB[h͈łB DMA ̃TutB[h DMA }X
        NƓ]̓܂B DMA }XN 8bit ŁArbgʒu
        DMAԍw肳܂B] f[^oXAA]Ef]
        w肳܂B

