******************************************************************************
hLg      FeCuJt@C
t@CL      Fmanstm.txt
ΏۃCuĹFSTM
ΏۃCu    FXg[VXeCu
o[W            F2.11
쐬                FH.T
쐬                F1996-03-21
̑̃bZ[W    FȂ
******************************************************************************

@ȉ̏ĆAt@CVXeƃZbgŏCĂ܂B
@t@CVXẽo[W Ver.2.10 ȍ~gpĂB

PD@Ver.1.01Ver.1.10ւ̕ύXe
iPj@֐dl̕ύX_
@(a) Ver.1.01ȑO̊֐́Aȉ̂悤ɒuĂB
@@STM_Init()
      #define GRP_MAX     12
      #define STM_MAX     24
@  @Uint32  work[STM_WORK_SIZE(GRP_MAX, STM_MAX)/sizeof(Uint32)];
              E
              E
@@  STM_Init(GRP_MAX, STM_MAX, work);
              E
              E
@@@worḱASoCgEɔzuĉB
    @GFS_Init֐ɂ铯ɊJt@C̍ő吔(open_max)STM_MAX ȏ
    @邱ƁB

@@STM_OpenFid(grp, fid, &key), STM_OpenFrange(grp, &frange, &key)
@@@STM_OpenFid(grp, fid, &key, STM_LOOP_READ);
@@@STM_OpenFrange(grp, &frange, &key, STM_LOOP_READ);

@@STM_SetTrBuf(stm, buf, BUF_SIZE)
@@@STM_SetTrBuf(stm, buf, BUF_SIZE, STM_UNIT_WORD);

@@STM_SetLoop(grp, stm)
@@@[vĐꍇ  FSTM_SetLoop(grp, stm, STM_LOOP_ENDLESS);
@@@[vĐȂꍇFSTM_SetLoop(grp, stm, 1);

@(b) G[֐iStmErrFuncj̑Qɂ̓G[R[hn܂B

iQj@[vĐ̓
@sbNAbvĐ͈͂̏I[ɒBƂA삪ȉ̂悤ɈقȂ܂B

                @@@sbNAbvĐ͈͂̏I[ɒB
        @@@Ver.1.01ȑO      @@@        @@Ver.1.10ȍ~
                @
                @                            @@@@
@bcobt@̑Sf[^̓]@@@sbNAbv[vXg[Ɉړ
  ܂Ń|[Y              @ĐJn                        
                @                            @@@@
  Xe[^XSTM_EXEC_COMPLETEDƂA@STM_SetLoop̎w񐔂[v 
  ]Zbg            @@@]Zbg
                @                            @@@@
@sbNAbv[vXg[Ɉړ@Xe[^XSTM_EXEC_COMPLETEDƂ
  ĐJn

  Ver.1.01pɍ쐬̃vÓAL̕ύXɂ炸AÊ悤
STM_SetLoop(grp, STM_LOOP_DFL, 1)}邱Ƃœlɓ삳邱Ƃł
B

  grp = STM_OpenGrp();                    grp = STM_OpenGrp();
  stm = STM_OpenFid(grp, FID1, &key);     stm = STM_OpenFid(grp, FID1, &key,
  STM_SetTrBuf(stm, buf, BUFSIZE1);                           STM_LOOP_READ);
  STM_SetExecGrp(grp);                    STM_SetTrBuf(stm, buf, BUFSIZE1, 
  for (i = 0; i < LOOPMAX; ) {                                STM_UNIT_WORD);
      stat = STM_ExecServer();            STM_SetLoop(grp, STM_LOOP_DFL, 1);
      if (stat == STM_EXEC_COMPLETED) {   STM_SetExecGrp(grp);
          i++;                            for (i = 0; i < LOOPMAX; ) {
      }                                       stat = STM_ExecServer();
      user();                                 if (stat == STM_EXEC_COMPLETED) {
  }                                               i++;
                                                  STM_SetLoop(grp,
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@STM_LOOP_DFL, 1);
                                              }
                                              user();
                                          }

iRj@]ݒ
@Ver.1.01ȑOł́A]̈̐ݒ聨]֐̓o^]֐̏ꍇA
̓]͏߂ɓo^]̈łBAVer.1.10ȍ~ł́A]̈
ݒ肵Kv܂B܂Aő]ZN^A][h̓ftHgԂ
߂܂B

iSj@et@C̈
@CD-ROMAo[`CDASIMMASCSÎׂẴt@C̎舵sega_stm.lib
ŉ\łBANt@CVXeCu͎gKv
܂B

iTj@̑
@(a) Xg[VXegp邽߂ɂ́At@CVXeAbcʐMC^t
@@@F[XADMAALbV̊eCuNȂ΂Ȃ܂B
@(b) sega_stm.hɕύX܂Bsega_stm.hCN[hĂ\[Xt@C
@@@ׂčăRpCĂB

QD@Ver.1.11ȍ~̕ύXeiVer.1.11`Ver.1.13܂Łj
QDP@Ver.1.10Ver.1.11ւ̃oOC
@(a) ]֐(-1)܂(0)ԂꍇƂ̓sǑ΍
@(b) Đ͈͂̏IʒuOɌ̃Xg[I[vƂAhCu
@@@Ԃ̂܂FADωȂȂ錻ۂ̑΍

QDQ@Ver.1.11Ver.1.12ւ̃oOC
@(a) Đ͈͂̓rŃobt@tɂȂƃ[vXg[Ɉړ錻ۂ̑΍

QDR@Ver.1.12Ver.1.13ւ̃oOC
@(a) STM_SetExecGrp(NULL)sƁA\^[v^t@CVXeɂ
@@@t@CANZXۂƂȂ錻ۂ̑΍

RD@Ver.1.13Ver.1.16ւ̕ύXe
@t@CVXeƃo[W킹邽Ver.1.13̌AVer.1.16Ƃ܂B

RDP@A^T[osO[v̎w֐̒ǉ
@STM_SetExecGrp̓hCu|[YԂɂȂ܂Ŋ֐őҋ@܂Bɂ
Av̏̒xh߁Aȉ̊֐ǉ܂B
@STM_NwSetExecGrpgpȂꍇ́Aȉ̕ύXɂe͂܂B

RDPDP@֐̒ǉ

Title     Function                        Function Name       No    
֐dl  ގsٰ߂̎w(A)  STM_NwSetExecGrp    7.1   

mn  Bool   STM_NwSetExecGrp(StmGrpHn grp)
ḿn  grp   FXg[O[vnh
món  Ȃ
m֐lnTRUE F󂯕tꂽꍇ
@@@@@FALSEF󂯕tȂꍇ
m@\n
@Xg[T[osׂXg[O[vw肷B
@AȂ̂ŁAT[o֐ĂяoKvB
mln
@(a) o^瑦AB
@(b) t@CVXegp邽NULLw肵ꍇ́Aȉ̎菇ŃhCu
@@@|[YԂɂȂ邱ƂmFAGFS֐ĂяoƁB
        tsk = STM_NwSetExecGrp(grp);
        if (tsk == FALSE)  return;
        do {
            stat = STM_ExecServer();
            user();
        } while (stat != STM_EXEC_TSKEND);
@(c) NULLw肵ꍇAXg[T[oSTM_EXEC_TSKENDoRSTM_
@@@EXEC_PAUSEɂȂBKSTM_EXEC_TSKENDɂȂ܂ŃT[o֐ĂяoƁB
@(d) t@CVXeꍇANULLw肵Ē~邱ƁB
@(e) Xg[O[ṽANZXĊJƒ~ʒuǂݍݎn߂B

RDPDQ@֐dl̕ύX

Title     Function                        Function Name       No    
֐dl  T[o̎s                    STM_ExecServer      7.3   

mn  Sint32@STM_ExecServer(void)
ḿn  Ȃ
món  Ȃ
m֐lnXg[ANZXԁiStmAcStatj
@@@@@A^֐̏ꍇA֐hciStmFuncIdj
@@@@@G[̏ꍇAG[R[hiStmErrCodej
m@\n
@Xg[T[osB

RDPDR@萔̕ύX

Title     Function                        Function Name       No    
f[^dlXg[ANZX          StmAcStat           2.2   

iPjXg[ANZX
     
            萔  @@@          @ @@            
     
     STM_EXEC_COMPLETED@  ANZXI                    
     
     STM_EXEC_PAUSE@@@  ANZXꎞ~              
     
     STM_EXEC_DOING@@@  ANZX                      
     
     STM_EXEC_WAIT @@@  ]҂                        
     
     STM_EXEC_TSKEND@@   A^֐I              
     

RDQ@̑̕ύX
RDQDP@STM_SetExecGrp֐
@STM_NwSetExecGrp̒ǉɂ킹āASTM_SetExecGrpBoolԂ悤ɂ܂B
֐l̈ӖSTM_NwSetExecGrpƓłB

RDQDQ@֐̒ǉ

Title     Function                        Function Name       No    
֐dl  [hG[̃Jo          STM_Recover         9.3   

mn  Sint32@STM_Recover(void)
ḿn  Ȃ
món  Ȃ
m֐lnSTM_ERR_OK  FJo
@@@@@STM_ERR_CDRDFJos
m@\n
@[hG[ꍇɋIɍĐpB
mln
@G[֐ňȉ̂悤ɎgpB
        void    errfunc(void *obj, Sint32 ec)
        {
            if (ec == STM_ERR_CDRD) {
                STM_Recover();
            } else {
                cc
            }
        }

RDR@oOC
@(a) Xg[VXeɂǂݍ  t@CVXeɂǂݍ 
@@@STM_SetExecGrp(grp)  STM_SetExecGrp(NULL)  STM_SetExecGrp(grp)̏
@@@ꂽꍇAԈ͈͂Đ錻ۂ̑΍B
@(b) STM_SetExecGrp(grp)   STM_ExecServer()̊ԂSTM_GetExecStat(grp)Ă
@@@oꍇAԈ͈͂Đ錻ۂ̑΍B
@(c) Xg[O[ṽANZXԂSTM_EXEC_COMPLETEDɂȂA
@@@STM_GetLenTrBufsƂOԂۂ̑΍B
@(d) ǂݍݒȊOSTM_MovePickupsꍇSTM_EXEC_PAUSEɂȂ錻ۂ
@@@΍B
@@@STM_MovePickupŋIɃsbNAbvړꍇɂAK[v񐔂
@@@w肵ĂB

SD@Ver.1.16ȍ~̕ύXeiVer.1.16`Ver.2.02܂Łj
SDP@Ver.1.16Ver.1.20ւ̃oOC
@(a) bc̃Xg[ȂXg[O[vsꍇAXe[^X
@@@STM_EXEC_COMPLETEDȂÂ܂STM_ExecServerĂё
@@@STM_EXEC_DOINGɖ߂Ă܂ۂ̑΍B
@(b) STM_SetLoopŃ[v񐔂Qȏɐݒ肵ꍇA풓Xg[Px
@@@]Ȃۂ̑΍B
@(c) t@CTCYSoCgPʂłȂꍇA[vĐɖ\錻ۂ̑΍
@(d) ĐɃXg[N[YʁAŏIXg[̍Đ͈͂ĐJn
@@@ʒuOɂȂꍇAĐ͈͂̍Ō܂ōĐ錻ۂ̑΍B

SDQ@Ver.1.20Ver.1.21ւ̕ύXe
SDQDP@֐̒ǉ

Title     Function                        Function Name       No    
֐dl  Xg[VXẽZbg    STM_Reset           1.2   

mn  void  STM_Reset(void)
ḿn  Ȃ
món  Ȃ
m֐lnȂ
m@\n
@I[vĂXg[O[vƃXg[SăN[YAXg[V
XeZbgB(Xg[̃ANZX𒆎~ASĂ̏B)

SDQDQ@̑̕ύX
@(a) Kvŏ̊֐iL̒ӎQƁj́ASCU-DMA]ɎsĂ
@@@A-BusփANZXȂ悤ɑΉ܂B
@(b) CDCCuVer.1.20ɑΉ܂B

SDQDR@oOC
@(a) ]֐gpꍇAbcobt@Ƀf[^ɂ炸A]
@@@\ZN^ő]ZN^Ȃ錻ۂ̑΍B
@@@ɔA]֐o^ꍇA]f[^STM_GetLenTrBuf
@@@Ď擾邱Ƃ͂łȂȂ܂B
@@@f[^̓AvP[VŎ擾ĂB
@(b) Đ̃Xg[O[vɑXg[N[Yꍇ̏x
@@@iAǂݍݒ̃Xg[N[YƂ̏Ԃ͓j

SDR@Ver.1.21Ver.1.22ւ̃oOC
@(a) Xg[O[vĐAsȃAhXɃANZXQC܂B

SDS@Ver.1.22Ver.1.23ւ̃oOC
@(a) Xg[O[vĐɁAĐ͈͂̃Xg[𕡐I[v
@@@ƁAĐ͈͂̐擪ɃsbNAbvړȂQC܂B

SDT@Ver.1.23Ver.1.24ւ̃oOC
@(a) Đ̃Xg[N[YɁAO̖Đ̃Xg[I[
@@@vĂꍇAԈobt@Ƀf[^ǂݍޏQC
@@@B

SDU@Ver.2.00
@(a) Ver.2.00́AVer.1.24ƓłB

SDV@Ver.2.00Ver.2.02ւ̕ύX
@t@CVXeƃo[W킹邽Ver.2.00̌AVer.2.02Ƃ܂B

iPj@SGL CD-ROMCuƂ̓ꉻ
@(a) RpCUSE_SGL`ăRpCƁASGL CD-ROMCup
@@@W[ƂĎgpł悤ɂ܂B

iQj@oOC
@(a) STM_ExecServerɂĐJnASTM_ExecTransœ]sƂĂ
@@@łȂQC܂B

SDW@Ver.2.02Ver.2.10ւ̕ύX
@(a) gCI[vAbcubN<FATAL>Ԃ̌o@\܂B

SDX@Ver.2.10Ver.2.11ւ̕ύX_
iPj@oOC
@(a) C^[uꂽXg[̍Đ͈́AȂтɍit[AhX͈
@@@̐ݒɌ肪C܂B

TD@ӎ
iPj@]֐o^ĂXg[̃N[Y
@]֐(-1)ԂɃXg[N[YƁA]֐Oȏ̒l
Ԃ܂ŃXg[VXe͓]֐Ăё܂B]I_ŁAO
̒lԂĂB

iQj@SCU-DMAgpꍇ
@][hSTM_TR_SCȔꍇA]֐SCU-DMANꍇAXg[
ݍݒ͈ȉ̊֐gp\łB
@SCU-DMA]A-BusANZX֎~̂߁AȊO̊֐͎gp֎~܂B
    ESTM_Reset         ESTM_CloseGrp      ESTM_IsTrans
    ESTM_ExecServer    ESTM_ExecTrans     ESTM_GetErrStat

***************************** end of file ************************************

