ڎ
  E{RZvg
  Erak̃ytFCuɑ΂鍂h^eCu
  Et@Cꗗ
  Egp@
  EőΉĂ̓ytFfoCX
  
  ӁF̍h^eCúÃytFCuʃ
  W[ƂĎgpĂ܂BāÃytFCu
  gpł̒ӓ_񑩂ƂȂǂ́A̍h^eCuɂKp
  ܂B



{RZvg
  rak̃ytFCuԂf[^\ɎF
    struct port_t {
        struct peripheral_t {
            Uint8   type;
            Uint8   size;
            Uint8   data[m];
        } peripheral[n];
    } port[2];
     m ́APER_LInit() Ŏw肳ꂽf[^TCYB
           n ́APER_LInit() Ŏw肳ꂽF\ȃytF̍ő吔QB
           iAm,n ͏ 1 ȏj
  
  Cuł́AL m,n ̒lRpCɂ͌łȂ߂ɁA\
  ̂g킸APȂoCg̔zƂĎĂBL̍\̂g
  Cu̕Ԃf[^ɃANZXƂɂ́Â悤ɂƂ悢F
    PER_LInit( PER_KD_PER, 2*n, m, port, 0 );
  
  h^eCů{́AvɁAƂłF
    uCu̕Ԃf[^ɍ\̂ŃANZXBv



rak̃ytFCuɑ΂鍂h^eCu
  ݂̃ytFCúArlobf[^𓾂āAobt@
  ɓĂ邾ŁÂƂׂ͂ĎłȂ΂Ȃ܂
  BႦ΁AL̂悤ȂƂ́ugK𓾂vƂ{Iȏ
  Ã݂Cű@\ł́AׂĎŁiAvP[V
  ŁjȂ΂Ȃ܂B
    
  ugK𓾂鏈
    ʒuɑ}ĂfoCXytFf[^𓾂܂B
    hc`FbNāAڑsȃfoCXł͂ȂƂmF܂B
    u
      hc`FbNāAfoCX̎ނ𔻒f܂B
      foCX̎ނɉāAytFf[^gK𓾂܂B
      i̍ہAuytFf[^̉oCgڂ̂ǂ̃rbgӖ
      邩vȂǂƂƂɂĂAiAvP[Vjm
      ĂȂ΂Ȃ܂Bj
      L[ATCύXĂAgKH܂B
    v
  v
  
  ŉɋCt܂񂩁H
  L̏́AgK𓾂鏈ƌ܂BāAꂪʓI
  łƂ܂B܂AL̏gK𓾂Ƃ֐
  ɂĂ܂΂悢̂ł͂ȂAƂƂłBR̂ƂłB
  ŁÃCu̓ołB
  
  ̃CúAł̓ytFf[^̎WȂǂƂIȏ
  ͈؂܂Bʂ͊̃ytFCuɂ܂
  āA瓾ꂽf[^ɑ΂_Iȏ܂B̂߁A
  ݂̃ytFCu͊SɎgƂł܂B̃CúA
  VytFCuł͂Ȃ̂łÃytFCu
  ƍւ邱Ƃ͂܂B̃Cű@\gvWFN
  gł́ÃytFCuƋɁÃCuNĂ
  B̃Cű@\KvȂƂvWFNgł́Aς
  Kv͂܂B]̃ytFCu̓͊Sɕۏ؂܂B
  
  ̃CuŒ`Ă֐AIuWFNgȂǂ̏ڍׂɂẮA
  t̃t@X}jA\[XR[hQƂĂB



t@Cꗗ
  per_1.c       I/F Cũ\[X
  per_2.c      R̒萔Ɉˑ֐Q
  per_3.src    PER_DisguiseTrigger() 邽߂ɃAZuɂĂB
  
  per_x.h       I/F @\Ɋւ`
  per_trg.h    gKɊւ`
  per_dev.h    ʓIȃfoCXɊւ`
  per_dgt.h    fW^foCXɊւ`
  per_anlg.h   AiOfoCXɊւ`
  per_poin.h   |CeBOfoCXɊւ`
  per_kbrd.h   L[{[hfoCXɊւ`
  per_md.h     KhCupfoCXɊւ`



gp@
  smpclib.h ɒ`ĂR̒萔̒lKXύXāAăRpCA
  ̃ytFCuƋɃNĎgpĂB
  ̒lÃytFCugp郏[NGÃTC
  Y肵܂B
  ȉɃftHg̐ݒlĂ܂B̃ftHglō\Ȃꍇ
  ɂ́AăRpC̕Kv͂܂̂ŁÂ܂܃NĎgpĒ
  ܂B
  
  _MAX_PORT
    ftHgł́A2 ɐݒ肵Ă܂B
    r`stqm{̂ɂĂ[q̐
    iʏ́A2 ɐݒ肵Ă܂j
  _MAX_PERIPHERAL
    ftHgł́A6 ɐݒ肵Ă܂B
    P̒[qɐڑ\ȃytF̐
    iʏ́A}`^[~iUɑΉ邽߂ 6 ȏɐݒ肵Ă܂j
  SZ_PERIPHERAL
    ftHgł́A5 ɐݒ肵Ă܂B
    P̃ytF̃f[^TCY̍ő
    Ƃ΁A}EXif[^TCY==3jƃfW^pbhif[^TCY==2j
    ̗T|[gȂAʂ̑}EXɂ킹Đݒ肵܂B
    ݂̂ƂAf[^TCY̍ő̓AiOfoCX 5 łB
  
  菇
  PDytFh^e̊܂B
      PER_OpenPort() R[܂B
  QDV BLANK OUT 荞݃nho^܂B
       PER_GetPort() R[ V BLANK OUT 荞݃nhpӂA
      xN^ɓo^܂B
  RDw肵̓ytFfoCX̏𓾂܂B
      PER_GetDevice?() R[܂B
  SDRœ񂩂AKvȏigKf[^Ȃǁjo܂B
      PER_GetTrigger() ȂǁB



ł̑Ή^Ήȓ̓ytFfoCX
  ΉĂ̓ytFfoCX
    Rg[pbh      grr|OPOP
    Vg}EX          grr|OPOQ
    }`^[~iU      grr|OPOR
    o[`XeBbN      grr|OPOS
    [VORg[  grr[OPPT
    
    LytFA邢́ALytF݊̓̓ytFɑ
    Ă܂B
    
    ΉĂytF^CvȉɋLĂ܂B
    fW^foCXiytF^CvOj
      Rg[pbhAo[`XeBbNȂ
    AiOfoCXiytF^CvPj
      [VORg[Ȃ
    |CeBOfoCXiytF^CvQj
      Vg}EXȂ
    L[{[hfoCXiytF^CvRj
      ݂̂ƂΉ鐻i͂܂B
    KhCupfoCXiytF^Cvdj
      ݂̂ƂΉ鐻i͂܂B
    
    ӁFVg}EX͎ۂɂ͂rlobɑ΂Ăhc H'E3 ƕԂ܂B
    AytFCuɂĂhcHĂ܂̂ŁAf[
    ^瓾hc H'23 ɂȂ܂B
  
  ̑̃ytF
    ŔĂ̂ł́Auo[`Kvu~bVXeBbNv̈
    ɂ͒ӂKvłB
    
    o[`K
      ̃ytFCuł́A|[gXe[^X𒲂ׂ邱Ƃɂ
      āAꂪڑĂ邱Ƃ͊mFł܂Aق̃ytF̂
      ɁAf[^̓obt@Ɋi[܂BāAAvP[V
      ́Arlob_CNg[hɂăgK𓾂ĂB܂A
      guJE^̒lŒڂucoQ瓾ĂB
    ~bVXeBbN
      }`^[~iUɑΉĂȂ̂ŁA|[gɒڐڑĎgp
      悤ɂĂBȊȌꍇi}`^[~iUɐڑꍇj
      ɂ́ÃytFłȂAق̃ytF̃f[^ǂ߂
      Ȃ\܂B



