========================================================================
	manperlb.txt					1995-10-03
========================================================================
VTv̐
  smpclib
    h^eCûfBNg
    ڂ́Asmpclib.doc, smpclib.ref ĂB
  smpper7
    h^eCu̎g̃Tv
  smpper8
    }EẌړgKɕϊ̃Tv
  smpper12
    o[`K̃f[^̓ǂ݂̃Tv

KC_X

KC_Xڎ
  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}`^[~iɑΉ邽߂ 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



ł̑Ή^Ήȓ̓ytFfoCX
  ΉĂ̓ytFfoCX
    Rg[pbh      grr|OPOP
    Vg}EX          grr|OPOQ
    }`^[~iU      grr|OPOR
    o[`XeBbN      grr|OPOS
    [VORg[  grr[OPPT
    
    LytFALytFɏ̓ytFA邢́A
    LytF݊̓̓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

t@X

ڎi֐j
  PER_GetTrigger()
    w肳ꂽ^C~Oł̃gK𓾂܂B
  PER_GetEdge()
    w肳ꂽQ̃^C~O̊ԂŕωgK𓾂܂B
  PER_GetPressEdge()
    w肳ꂽQ̃^C~O̊ԂŉꂽgK𓾂܂B
  PER_GetReleaseEdge()
    w肳ꂽQ̃^C~O̊ԂŕꂽgK𓾂܂B
  PER_SetTriggerHandler()
    w肳ꂽhcytFp̃gKnho^܂B
  PER_GetTriggerHandler()
    w肳ꂽhcytFp̃gKnh𓾂܂B
  PER_DisguiseTrigger()
    gKATCe[uɂĕϊ܂B
  PER_GetID()
    T^[ytFhc𓾂܂B
  PER_GetType()
    ytF^Cv𓾂܂B
  PER_GetSize()
    ytFf[^̃TCY𓾂܂B
  PER_GetAnalogXYZ()
    WAiOfoCX̂`^cRo[^̏o͒l𓾂܂B
  PER_GetPointerXY()
    W|CeBOfoCẌړʂ𓾂܂B
  PER_GetKeyboardType()
    WL[{[hfoCX̃^Cv𓾂܂B



ڎiIuWFNgj
  SysDevice
    T^[WytF̊{^
  SysDevDigital
    T^[WfW^foCX
  SysDevAnalog
    T^[WAiOfoCX
  SysDevPointer
    T^[W|CeBOfoCX
  SysDevKeyboard
    T^[WL[{[hfoCX
  trigger_t
    gK
  assigment_t
    gKϊe[uiATCe[uj
  trigger_handler_t
    gKnhifoCXgKo߂̃nhj



֐
  PER_GetID()
    synopsis
      #include  "per_x.h"
      
      id = PER_GetID( device );
      
      T^[ytFhc𓾂܂B
    
    
    parameters
      const SysDevice   *device;
      
      foCX
    
    
    return value
      int   id;
      
      T^[ytFhcԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetType()
    synopsis
      #include  "per_x.h"
      
      type = PER_GetType( device );
      
      ytF^Cv𓾂܂B
    
    
    parameters
      const SysDevice   *device;
      
      foCX
    
    
    return value
      int   type;
      
      ytF^CvԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetSize()
    synopsis
      #include  "per_x.h"
      
      size = PER_GetSize( device );
      
      foCXf[^̃TCYioCgj𓾂܂B
    
    
    parameters
      const SysDevice   *device;
      
      foCX
    
    
    return value
      int   size;
      
      foCXf[^̃TCYԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_SetTriggerHandler()
    synopsis
      #include  "per_x.h"
      
      PER_SetTriggerHandler( id, handler );
      
      ŵhcytFp̃gKnhݒ肵܂B
      
                EEEEE
      ł́uŵhcfoCXp̃nhݒ肵ĂvƂ
      ƂɒڂĂBuw̃^Cvvł͂܂̂ŁAӂ
      B
      
      Őݒ肵֐inhj́APER_GetTrigger() Ɏŵhc
      foCX񂪓nꂽƂɁAR[܂B
      ƂĂ saturn/segasmp/per/smpclib/per_x1.c ̒ GetTrigerDigital()
      ȂǂĂB
    
    
    parameters
      int     id;
      trigger_handler_t  handler;
      
      <id> ́AT^[ytFhc
      <handler> ́AgKnh
    
    
    return value
      Ȃ
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetTriggerHandler()
    synopsis
      #include  "per_x.h"
      
      handler = PER_GetTriggerHandler( id );
      
      ŵhcytFp̃gKnh𓾂܂B
    
    
    parameters
      int    id;
      
      T^[ytFhc
    
    
    return value
      trigger_handler_t  handler;
      
      gKnhԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetTrigger()
    synopsis
      #include  "per_x.h"
      
      trigger = PER_GetTrigger( device );
      
      foCX̎ނɉăgK𓾂܂B
      
      PER_SetTriggerHandler() ɂēo^ĂhcfoCX
      gKoɂ́A PER_SetTriggerHandler() ɂēo
      ^Ă֐inhjp܂B̂Ȃꍇɂ́A
      ftHgŗpӂĂ֐inhjp܂B̏ꍇA\
      ΉĂ̓ytF͉L̂̂ł̂ŁAȊO̓
      ytFgK𓾂ꍇɂ́APER_SetTriggerHandler()
      gpĂB
      
      ftHgőΉĂ̓ytF
        fW^foCX
          T^[ytFhcƂ 0x02 - 0x0f Ԃ
        AiOfoCX
          T^[ytFhcƂ 0x12 - 0x1f Ԃ
        |CeBOfoCX
          T^[ytFhcƂ 0x22 - 0x2f Ԃ
        L[{[hfoCX
          T^[ytFhcƂ 0x33 - 0x3f Ԃ
        KhCupRapbh
          T^[ytFhcƂ 0xe1 Ԃ
        KhCupUapbh
          T^[ytFhcƂ 0xe2 Ԃ
        KhCup}EX
          T^[ytFhcƂ 0xe3 Ԃ
    
    
    parameters
      const SysDevice *device;
      
      foCX
    
    
    return value
      trigger_t  trigger;
      
      gKԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetEdge()
    synopsis
      #include  "per_x.h"
      
      edge = PER_GetEdge( t1, t2 );
      
      gK̃GbW𓾂܂B
      
      GbWƂ <t1>  <t2> ̂Q̃^C~Ôŕωg
      K̏̂Ƃ܂B
    
    
    parameters
      trigger_t  t1;
      trigger_t  t2;
      
      <t1>  <t2> ̓gKB
      <t1>  <t2> ̎ԓIȏ͖₢܂B
    
    
    return value
      trigger_t  edge;
      
      gK̃GbWԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetPressEdge()
    synopsis
      #include  "per_x.h"
      
      edge = PER_GetPressEdge( prev, current );
      
      gK̃vXGbWiGbWj𓾂܂B
      
      vXGbWƂ <prev>  <current> ̂Q̃^C~Ô
      Ƀ[XԂvXԂɕωgK̏̂Ƃ܂B
    
    
    parameters
      trigger_t  prev;
      trigger_t  current;
      
      <prev>  <current> ͋ɃgKB
      ԓIɁi <prev>  <current> jƂ֌W҂Ă܂B
    
    
    return value
      trigger_t  edge;
      
      gK̃vXGbWԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetReleaseEdge()
    synopsis
      #include  "per_x.h"
      
      edge = PER_GetReleaseEdge( prev, current );
      
      gK̃[XGbWiGbWj𓾂܂B
      
      [XGbWƂ <prev>  <current> ̂Q̃^C~Ô
      ɃvXԂ烊[XԂɕωgK̏̂Ƃ܂B
    
    
    parameters
      trigger_t  prev;
      trigger_t  current;
      
      <prev>  <current> ͋ɃgKB
      ԓIɁi <prev>  <current> jƂ֌W҂Ă܂B
    
    
    return value
      trigger_t  edge;
      
      gK̃[XGbWԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_DisguiseTrigger()
    synopsis
      #include  "per_x.h"
      
      trigger = PER_DisguiseTrigger( assignment, trigger );
      
      gK<trigger> ATCe[u<assignment> ɏ]ĕϊ
      B<assignment>  NULL w肷ƁAȂ̕ϊ <trigger>
      ̂܂ܕԂ܂B
      
      ATCe[uƂ̓gK̔zŁAz̃CfbNXgK
      ̃rbgԍɑΉe[ûƂłB
      Ⴆ <trigger>  0 rbgڂ 4 rbgڂ TRUE ꍇ̖߂
      l ( assignment[0] | assignment[4] ) ɂȂ܂B
      
      ʂ assignment[] ̊eoɂ́AP̃gKΉ܂B
      P̃oɕ̃gKΉꍇɂ́AP̃gK
      ŁÃgKꂽ̂悤ɐU镑̂ŒӂKvłB
    
    
    parameters
      const assignment_t *assignment;
      trigger_t    trigger;
      
      <assignment> ́AgK̃ATCe[u
      <trigger> ́AgK
      
      <assignment>  NULL nƉ̕ϊ <trigger> ̂܂ܕ
      ܂B
    
    
    return value
      trigger_t  trigger;
      
      gKԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetAnalogXYZ()
    synopsis
      #include  "per_x.h"
      
      PER_GetAnalogXYZ( analog, &x, &y, &z );
      
      AiOfoCXwxŷ`^cRo[^̏o͒l𓾂܂B
    
    
    parameters
      const SysDevAnalog *analog;
      int     *x;
      int     *y;
      int     *z;
      
      <analog> ̓AiOfoCXB
      <x> <y> <z> ͂ꂼwxŷ`^cRo[^̏o͒lB
      
      <x> <y> <z>  NULL nƂɂ͉Ԃ܂B
      
      <x> ɂ́iEj-127 ` +127ijԂ܂B
      <y> ɂ́ij-127 ` +127ijԂ܂B
      <z> ɂ́ij-127 ` +127ijԂ܂B
    
    
    return value
      Ȃ
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetKeyboardType()
    synopsis
      #include  "per_x.h"
      
      type = PER_GetKeyboardType( keyboard );
      
      L[{[h^Cv𓾂܂B
    
    
    parameters
      const SysDevKeyboard *keyboard;
      
      L[{[hfoCX
    
    
    return value
      int    type;
      
      L[{[h^CvԂ܂B
    
    
    influence/reference objects
      Ȃ
  
  
  PER_GetPointerXY()
    synopsis
      #include  "per_x.h"
      
      PER_GetPointerXY( pointer, &dx, &dy );
      
      |CeBOfoCXwẍړʂ𓾂܂B
      
      w͉Eւ̈ړAւ̈ړŕ\킳܂B
      x͏ւ̈ړAւ̈ړŕ\킳܂B
    
    
    parameters
      const SysDevPointer *pointer;
      int     *dx;
      int     *dy;
      
      <pointer> ̓|CeBOfoCXB
      <dx> <dy> ͂ꂼwẍړʁB
      
      <dx> <dy>  NULL nƂɂ͉Ԃ܂B
      
      <dx> ɂ́iEj-255 ` 255ijԂ܂B
      <dy> ɂ́ij-255 ` 255ijԂ܂B
    
    
    return value
      Ȃ
    
    
    influence/reference objects
      Ȃ



IuWFNg
  SysDevice
    T^[WytF\킷IuWFNgłB
    ׂĂ̕WytF́ÃIuWFNgh܂B
    ̃IuWFNǵAytFCu̕Ԃf[^̂̂łB
    .type
      T^[ytF^Cv
    .size
      ytFf[^TCY
    .data[]
      f[^
  
  SysDevDigital
    T^[WfW^foCX\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevice pĂ܂B
    ׂĂ̕WfW^foCX́ÃIuWFNgh܂B
    .type
      T^[ytF^Cvi==TYPE_DIGITALj
    .size
      ytFf[^TCY
    .data[]
      gK
    .expended[]
      gf[^
  
  SysDevAnalog
    T^[WAiOfoCX\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevice pĂ܂B
    ׂĂ̕WAiOfoCX́ÃIuWFNgh܂B
    .type
      T^[ytF^Cvi==TYPE_ANALOGj
    .size
      ytFf[^TCY
    .data[]
      gK
    .ax
      ŵ`^cRo[^̏o͒li0`E255j
    .ay
      x̂`^cRo[^̏o͒li0`255j
    .az
      ŷ`^cRo[^̏o͒li0`255j
    .expended[]
      gf[^
  
  SysDevPointer
    T^[W|CeBOfoCX\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevice pĂ܂B
    ׂĂ̕W|CeBOfoCX́ÃIuWFNgh܂B
    .type
      T^[ytF^Cvi==TYPE_POINTERj
    .size
      ytFf[^TCY
    .status
      gKAړʂ̕Aړʂ̃I[o[t[B
    .dx
    .dy
      wẍړʂ̐Βli0`255j
    .expended[]
      gf[^
  
  SysDevKeyboard
    T^[WL[{[hfoCX\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevice pĂ܂B
    ׂĂ̕WL[{[hfoCX́ÃIuWFNgh܂B
    .type
      T^[ytF^Cvi==TYPE_KEYBOARDj
    .size
      gf[^
    .data[]
      gKAL[{[h^CvB
    .shift
      VtgL[iK_CAPS,K_NUM,K_SCROLL,K_BREAK,K_MAKEj
    .c
      io[
    .expended[]
      gf[^
  
  DevMD3B
    KhCuR{^pbh\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevice pĂ܂B
    .type
      T^[ytF^Cvi==TYPE_MDj
    .size
      ytFf[^TCYi==1j
    .data[]
      gK
  
  DevMD6B
    KhCuU{^pbh\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevDigital pĂ܂B
    .type
      T^[ytF^Cvi==TYPE_MDj
    .size
      ytFf[^TCYi==2j
    .data[]
      gK
  
  DevMDMouse
    KhCu}EX\킷IuWFNgłB
    ̃IuWFNǵAIuWFNg SysDevPointer pĂ܂B
    .type
      T^[ytF^Cvi==TYPE_MDj
    .size
      ytFf[^TCYi==3j
    .status
      gKAړʂ̕Aړʂ̃I[o[t[B
    .dx
    .dy
      wẍړʂ̐Βli0`255j
  
  trigger_t
    TRG_A       `{^
    TRG_B       a{^
    TRG_C       b{^
    TRG_X       w{^
    TRG_Y       x{^
    TRG_Z       y{^
    TRG_L       k{^
    TRG_R       q{^
    TRG_UP      
    TRG_DOWN    
    TRG_LEFT    
    TRG_RIGHT   
    TRG_START   X^[g{^
    
    W|CeBOfoCX  E  ̃{^ TRG_A
    W|CeBOfoCX̐^񒆂̃{^ TRG_C
    W|CeBOfoCX    ̃{^ TRG_B
    W|CeBOfoCXɂ TRG_START,A,B,C ȂB
    KhCuUapbh̃[h{^ TRG_R
    KhCuUapbhɂ TRG_L ͂ȂB
    KhCuRapbhɂ TRG_X,Y,Z,L,R ͂ȂB
    [VORg[[ɂ Y,Z ̃AiOo͂͂ȂB
    [VORg[[ɂ TRG_LEFT,RIGHT,L,R ͂ȂB
    
    TRG_MODE  KhCuU{^pbh̃[h{^
    TRG_RESET  \tgtFAZbg
  
  assignment_t
    ȍԂύXĂ͂ȂBȍԂ trigger_t p̒萔
    'TRG_???' ̃rbgтƑΉĂ܂B
  
  trigger_handler_t
    foCX񂩂gKo֐̂ƁBPER_SetTriggerHandler()
    Őݒ肳ꂽnh́APER_GetTrigger() Ɏw肵hc̃foCX
    nꂽƂɃR[܂B
    ƂĂ saturn/segasmp/per/smpclib/per_x1.c ̒ GetTrigerDigital()
    ȂǂĂB

======= End of file ====================================================
