*******************************************************************************
hLg      FeCuJt@C
t@CL      Fmangfs.txt
ΏۃCuĹFGFS
ΏۃCu    Ft@CVXe
o[W            F2.11
쐬                FH.T.
쐬                F1996-03-21
̑̃bZ[W    FȂ
*******************************************************************************

PD@Ver.1.01Ver.1.10ւ̕ύXe
PDP@bcǂݏ̕ύX
iPj@GFS_NwCdRead̎gp@ύX
@GFS_NwCdReadĂяoAGFS_NwExecOneOGFS_NwFreadĂяo
Ăbc̐ǂ݂͗LɂȂ܂B
@bc̐ǂ݂gpƁAw肵ZN^ׂăzXgɓ]邩A
ANZX𒆎~܂ŊȂȂ܂BiGFS_NwIsCompleteTRUEԂ
Bj

iQj@ANZX`FbNydvz
@GFS_NwCdReadĂяoꍇAf[^]I邩ANZX~܂
GFS_NwExecOne͊Ԃ܂BGFS_NwFreadĂяoGFS_NwExecOne
Ԃ̂҂Ă͂܂BRel.2̃}jAP.18̗̂悤GFS_NwCdRead̒
GFS_NwExecOne̊҂Ɩ[vɂȂ̂ŒӂĂB
@GFS_NwCdReadĂяoĂȂΑOo[WƓ菇GFS_NwExecOne̊
`FbNł܂B
@bc̐ǂ݂ĂƂA풓[ĥƂɂ́AGFS_NwGetStatg
]ς݃oCgĎ邱ƂɍsĊ`FbNĂBȉɗ
܂B

#define    FILE_SIZE       ??????  /* t@C̃TCY(oCg)       */
#define    SCT_SIZE        2048    /* ZN^̃TCY(2048܂2324)   */
#define    BUF_SCTNUM      ?       /* ǂݍރZN^(FILE_SIZEȉ)  */

    GfsHn  gfs;
    Sint32 fid, stat, nbyte, rest, rdsct;
    Uint32 buf[BUF_SCTNUM * SCT_SIZE/sizeof(Uint32)];

    gfs = GFS_Open(fid);
    rest = (FILE_SIZE + SCT_SIZE - 1) / SCT_SIZE;
    GFS_NwCdRead(gfs, rest);
    while (rest > 0) {
        rdsct = MIN(rest, BUF_SCTNUM);
        GFS_NwFread(gfs, rdsct, buf, rdsct * SCT_SIZE);
        while (TRUE) {
            user();                 /* AvP[V */
            stat = GFS_NwExecOne(gfs);
			if (stat == GFS_SVR_COMPLETED) {
                break;
            }
            GFS_NwGetStat(gfs, &stat, &nbyte);
            /* GFS_NwFreadŎw肵oCgǂݍ܂ꂽ𒲂ׂ */
            if (nbyte >= rdsct * SCT_SIZE) {
                break;
            }
        }
        rest -= rdsct;
    }


PDQ@CD-DAt@C@\ǉ
@CD-DA t@C@\ǉ܂BCD-DA t@C̓ǂݍ݂́Ãt@C
Ŏw肳鉹ygbN̍ĐƂȂ܂BAo͂ɂ̓AvP
[VSCSPݒ肷Kv܂B

iPj@t@Cɑ΂鐧
@CD-DA t@Cɑ΂ăt@CVXes͍ĐƍĐ͈͂̐䂾
BĐ[h͏ȗlis[gȂAsbNAbvړjłB

iQj@Đ̎d
@CD-DAt@CĐɂ͎̕@܂B
@@(a) GFS_Load
@@(b) GFS_Fread
@@(c) GFS_NwFread
@@(d) GFS_NwCdRead
  (a), (b)̕@ł͍ĐI܂Ŗ߂Ă܂B
@(c), (d)̕@ł̓T[o֐ĂяoKv܂BCD-DA̍ĐI
T[o֐GFS_SVR_COMPLETEDԂ܂B
@rĐɂGFS_Seekgp܂B
@CD-DAt@CCD-ROMt@C𓯎ɃANZX邱Ƃ͂ł܂B

iRj@t@CɊւp[^
@CD-DAt@Cɑ΂āAo[hA][hAǂݍ݃p[^Ao
p[^ύX邱Ƃ͂ł܂BCD-DAt@Cɑ΂Ď̊֐Ăяo
ƃG[Ԃ܂B
        GFS_SetGmode
        GFS_SetTmode
        GFS_SetReadPara
        GFS_SetTransPara

PDR@t@C
@GFS_GetFileInfo ŏo͂t@C̒lCD-ROM XAKiɏ邽߁A
̂悤ɕύX܂B
        GFS_ATR_DIR     0x80
        GFS_ATR_CDDA    0x40
        GFS_ATR_INTLV   0x20
        GFS_ATR_FORM2   0x10
        GFS_ATR_FORM1   0x80
        GFS_ATR_END_TBL 0x01
@GFS_ATR_CDDACD-DA t@C@\ǉ̂ߒǉ܂B̃rbgCD-DA
t@C̎1ɂȂ܂B
@̑̒萔Ƃ̈Ӗ͕ςĂ܂B

PDS@GFS_InitGFS_LoadDir̊֐l
@̃fBNgǗ\̂ւ̃|C^NULLw肷ƁAbcubN
t@CVXeێĂfBNǧ֐lƂĕԂ܂B

PDT@G[R[h̒ǉ
iPj@GFS_ERR_BFUL
@풓[hiGFS_GMODE_RESIDENTj̃t@Cǂݍݒɂbcobt@
ɂȂƁÃG[R[h܂B
@풓[h̃t@CANZXɂ̓obt@tɂȂȂ悤ɃANZX̏
Ȃǂ𒲐ĂB

iQj@GFS_ERR_FATAL
@̃G[R[h͂bchCu<FATAL>ԂɂȂƂʒm܂B
@t@CVXe͂̏ԂoƁAbcĐ𒆎~iz[ʒuփV[Nj
AG[Ԃ̉񕜂݂܂B̃G[R[hoAg
CĂB

PDU@gCI[vԂ̔F
@bcubN̊荞ݗvWX^(HIRQREQ)DCHGrbg(bit5)1̎Ag
CJĂԂƂĈ悤ɂ܂B
@J́AGFS_InitĂԑOɂbcXe[^XI[vłȂƂmFDCHG
rbgNA鏈sĂB
@iłł́ABOOT ROMDCHGtONÂŃAvP[VNA
͂܂B

PDV@]AhXɂ][h̕ύX
@][hGFS_TMODE_SCUɐݒ肳ĂĂA]AhX̋ԂɊ܂܂
ꍇCPUɂ\tgEFA]Iɍs܂B
        WORKRAM-L   00200000H ` 002FFFFFH
        A-Bus       02000000H ` 058FFFFFH

PDW@fobOt@C֘A
iPj@GFMC_base
@SIMMt@C̐擪AhXݒ肷ϐGFMC_baséAsega_gfs.libsegadgfs.
lib̗ɒ`܂B
@sega_gfs.libGFMC_baséAsegadgfs.libƂ̌݊̂߂ɑ݂܂Bt
@CVXe̓ɂ͉e^܂B

iQj@t@Cʎq
@bct@CgpȂƂ"."".."iJgfBNgƐefBNg
jIɒǉƂ@\폜܂BɂAt@Cʎq̓u[
gƈv܂B

QD@Ver.1.10ȍ~̕ύXeiVer.1.11`Ver.1.20܂Łj
QDP@Ver.1.10Ver.1.11ւ̕ύXe
iPj@GFS_Init֐
@INT_ChgMsk֐ɂASCŨx0-DMAI荞݂悤ɂ܂B
iDMA]̏If荞݂ŏ悤ɎdlύXꂽ߁Bj

QDQ@Ver.1.11Ver.1.13ւ̃oOC
@(a) Đɂbcobt@ςɂȂƃ[hG[(GFS_ERR_CDRD)ɂȂ
@@@QC܂B

QDR@Ver.1.13Ver.1.15ւ̃oOC
@(a) pȃ^CAEgG[iGFS_ERR_TMOUTjłQC܂B

QDS@Ver.1.15Ver.1.16ւ̕ύXe
iPj@GFS_Init֐ɂbcubN̏ݒ
@CDC_CdInit֐ɂAȉ̐ݒȂ܂B
iECC񐔂ƃgC񐔂őlɐݒ肳AȊO̓ftHĝ܂܂łBj
@ECDubN\tgZbgFȂ
  ETuR[hfR[h      FȂ
  E[h2Tuwb_F   F
  EtH[2[hgC FȂ
  ECD-ROMf[^[h      Fōi݂͂Q{j
  EX^oC^C        F180b
  EECC                 F5
  EgC            F15

iQj@[hG[̃Jo̒ǉ
@GFS_NwExecOne, GFS_NwExecServerɂă[hG[ꍇAVer.1.15
OƓlGFS_ERR_CDRDԂ܂Â܂܃T[o֐ĂԂƃJo
܂BA^ANZXł́AVer.1.15ȑOƓlGFS_ERR_CDRDԂ܂B

iRj@GFS_Freadɂ^CAEgԂ̉
@GFS_FreadĂяoAf[^̓ǂݍ݂n܂܂ł̃^CAEgԂ
B

iSj@G[R[h̕ύX
@EGFS_LoadɂV[Nʒus                  FGFS_ERR_OFS
@EGFS_Seekɂt@C͈͊Oւ̃V[N        FGFS_ERR_SEEK
@EGFS_NwFread, GFS_FreadĐZN^̃}CiXwFGFS_ERR_PARA

iTj@oOC
@(a) GFS_TMODE_SCUgpB-Busɓ]ہAP[hтɓ]Q
@@@C܂B
@(b) GFS_TMODE_SDMA0, GFS_TMODE_SDMA1 gpăO[hPʂłȂf[^
@@@]ƃf[^QC܂B
@(c) GFS_Loadgpăt@C̖܂œǂ܂ȂꍇɁAǂݍݑxቺ
@@@QP܂B

QDT@Ver.1.16Ver.1.20ւ̃oOC
@(a) GFS_Fread,GFS_LoadSIMMt@Cǂݍ񂾏ꍇAǂݍ݃oCg2048
@@@oCgPʂƂȂQC܂B
@(b) ȉ̂ǂ炩̏ꍇɂāAf[^ǂݍ܂ȂQC܂B
@@Ẽt@Cɑ΂āAGFS_NwCdRead, GFS_Freadsǂ݂
@@@ꍇB
@@EGFS_SetReadParaŎw肵őǂݍ݃ZN^At@CTCY菬
      ꍇB
@(c) fBNgt@C̃TCYZN^PʂłȂfBXNłĐł悤
@@@ɏC܂B

RD@Ver.1.20Ver.1.21ւ̕ύXe
RDP@֐̒ǉ

Title     Function                        Function Name       No    
֐dl  fBNg̎擾          GFS_GetDirInfo      1.6   

mn  Sint32  GFS_GetDirInfo(Sint32 fid, GfsDirId *dirrec)
ḿn  fid   Ft@Cʎq
món  dirrecFfBNg
m֐lnG[R[h
m@\n
@t@CʎqfBNg擾B


Title     Function                        Function Name       No    
֐dl  t@CVXẽZbg      GFS_Reset           1.7   

mn  void  GFS_Reset(void)
ḿn  Ȃ
món  Ȃ
m֐lnȂ
m@\n
@I[vĂt@CSăN[YAt@CVXeZbgB
ifBNgȊOj
mln
@Xg[VXegpĂꍇAXg[N[YĂ{֐
  s邱ƁB


Title     Function                        Function Name       No    
֐dl  bcobt@̃ZN^̎擾GFS_GetNumCdbuf     2.9   

mn  Sint32 GFS_GetNumCdbuf(GfsHn gfs)
ḿn  gfs   Ft@Cnh
món  Ȃ
m֐lnbcobt@̃ZN^
m@\n
@bcobt@ɑ݂ZN^擾B


Title     Function                        Function Name       No    
֐dl  ]֐̓o^                  GFS_SetTrFunc       5.5   

mn  void  GFS_SetTrFunc(GfsHn gfs, GfsTrFunc func)
ḿn  gfs   Ft@Cnh
          func  F]֐
món  Ȃ
m֐lnȂ
m@\n
@w肵t@Cɑ΂āA]֐o^B
@o^֐́At@C̓]ɌĂяoB
mln
@(a) o^֐͈ȉ̌`łB
        Sint32 (*GfsTrFunc)(GfsHn gfs, Sint32 nsct)
        gfs  Ft@Cnh
        nsct F]\ZN^
@@@]֐́AőnsctZN^̃f[^oƂłB
@@@֐lɂ́AۂɎoZN^ԂB
@@@ADMAȂǂɂ]֐I_œ]̏ꍇ́A(-1)ԂƁB
@(b) ]֐̗
        Uint32  read_buf[BUFSIZE];
        Sint32  transFunc(GfsHn gfs, Sint32 nsct)
        {
            Uint32  *ptr;
            Sint32  dadr;
            Sint32  i;

            ptr = GFS_StartTrans(gfs, &dadr);
            for (i = 0; i < 2048 * nsct; i++) {
                read_buf[i] = *ptr;
                ptr += dadr;
            }
            return (nsct);
        }


Title     Function                        Function Name       No    
֐dl  ]֐ɂ]Jn        GFS_StartTrans      5.6   

mn  Uint32  *GFS_StartTrans(GfsHn gfs, Sint32 *dadr)
ḿn  gfs   Ft@Cnh
          dadr  FPO[hoƂ̓]AhX̕ω
món  Ȃ
m֐ln]AhX
m@\n
@]֐ɂăf[^̓]JnB

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

SD@Ver.1.21ȍ~̕ύXeiVer.1.22`Ver.2.11܂Łj
SDP@Ver.1.21Ver.1.22ւ̕ύXe
@ff\tgp̋@\ǉ܂B̋@\GFSCuAɃ}
`GFSCuƌĂт܂B
@}`GFSgƂŁAiłffłӎ邱ƂȂQ[Jł
܂BiłƂč쐬vOÂ܂܃ffłƂĎsł܂B

SDQ@Ver.1.22Ver.2.00ւ̕ύX_
iPj@GFS_Fread֐
@GFS_Fread֐ɂsvȑ҂Ԃ𖳂Axサ܂B
@iSCU-DMAA-BusANZX܂Bj

iQj@oOC
@(a) bcubNt@CVXegpꍇATufBNgɈړł
@@@QC܂B
@(b) CPU-DMAWORKRAM-Lɓ]悤ƂꍇA\tgEFA]QC
@@@܂B
@(c) 풓[hŃt@C𕪊ēǂݍ񂾏ꍇAǂ߂ȂQC
@@@܂B

SDR@Ver.2.00Ver.2.01ւ̕ύX_
iPj@oOC
@(a) 풓[hŃt@Cǂݍ񂾌At@C2/3ȍ~ɃV[N
      GFS_FreadsƁAt@CIʒuȍ~ǂݍޏQC܂B
@(b) 풓[hōő]ZN^QȏɂƁAǂݍ݂ȂQ
@@@C܂B

SDS@Ver.2.01Ver.2.02ւ̕ύX_
iPj@SGL CD-ROMCuƂ̓ꉻ
@(a) SGL CD-ROMCuƃ\[XR[hLĎgpł悤ɂ܂B
@@@ׂ́AuTDR@SGL CD-ROMCu쐬̒ӁvQƂĉB

iQj@oOC
@(a) 200ZN^ȏ̂Q̃t@CGFS_NwCdReadsAGFS_NwFreadɂ
@@@蕪ē]悤ƂƐɓ]ȂQC܂B
@(b) ŏIZN^3oCgȉ̃t@CCPU-DMAœǂݍނƃnOQC
@@@܂B
@(c) t@Cǂݍ݌ACDC_CdPlayɂCD-DAgbNĐAGFS_Closes
@@@ƁACD-DA~QC܂B

SDT@Ver.2.02Ver.2.10ւ̕ύX_
iPj@ffpQƗ̈̕ύX
@ffśAQƃAhX̐擪0x60020cc 0x6000cccɕύX܂B

iQj@vIG[ő
@gCI[vAbcubN<FATAL>Ԃ̌o@\܂B

iRj@SGLɊւύX
@(a) RpCIvVUSE_SGL `ꍇASCU-DMAgpł悤
@@@܂B
@(b) SIMM, SCSIt@CgpꍇARpCIvVŖIDEBUG_LIB
@@@`Ȃ΂ȂȂ悤ɂ܂B

iSj@oOC
@(a) t@CǂݍݒɁAGFS_NwStop, GFS_ClosesꍇAbcobt@
@@@f[^cQC܂BɂAt@CǂݍݒGFS_Close
@@@sꍇAhCu|[YԂɂȂ܂œőҋ@܂BA
@@@ɂ́A炩GFS_NwStopsAhCu~AGFS_Close
@@@sĂB
@@@ɔAU풓[hœǂݍ񂾃t@CAj[hɕύX
@@@AȑO͏̓ǂݍݎɂbcANZX͍s܂łA񂩂b
@@@cANZX悤ɂȂ܂B
@(b) DMA]w肵t@C̓ǂݍݒɁAGFS_NwStop, GFS_Close ɂ蒆f
@@@ƐfȂQC܂B

iTj@̑
@(a) GCC̍œKɂQ邽߂̏CȂ܂B

SDU@Ver.2.10Ver.2.11ւ̕ύX_
iPj@hLgC
@(a) {hLĝPDPiQj̃vOC܂B

iQj@oOC
@(a) C^[uꂽt@C̍Đ͈͂̐ݒɌ肪C܂B
@(b) Form1, Form2ZN^݂t@Cɑ΂AGFS_GetFileSizesctsz = NULL
@@@̎wŎsƁA0ԒnɃANZXQC܂B

iRj@̑
@(a) gpĂȂϐ폜܂B

TD@}jA
 
 y[W   @@@ @  ύXO@  @ @  @@@    ύX           
 
 11    3.4   OpenByName(Uint8 *fname)    OpenByName(Sint8 *fname)    
 
 23    \7.1 GFS_TRANS_`                GFS_TMODE_`                
 
 27    No2.6 GFS_TRANS_`                GFS_TMODE_`                
 
 27    No2.6 SCUɂDMA]            SCUɂDMA] (xO) 
                                         ]悪WORKRAM-L̏ꍇA 
                                         \tgEFA]ɂȂ܂B
 
 30    No3.4 GFS_DIR_FNAME(dir)  Uint8[] GFS_DIR_FNAME(dir)  Sint8[] 
 
 34    No1.4 GFS_NameToId(Uint8 *fname)  GFS_NameToId(Sint8 *fname)  
 
 34    No1.5 const Uint8 *GFS_IdToName   Sint8 *GFS_IdToName         
 
 35    No2.3 t@Czʒu`  ANZX|C^Ƃăt@C
                                         ͈̔͊Ow肷邱Ƃ͂ń
                                         ܂B                  
 
 36    No2.7 nsctFZN^ (ŏIZN^nsctFZN^ (ŏIZN^
                   ܂܂Ȃ)                   ܂)                 
             lFform2ZN^̃t@C lFform1form2݂̍鄠
                   Ł`Ȃ܂ B           t@Cł́Asctsize,
                                               lastsizeƂOɂȂ܄
                                               B                  
 
 38    No3.2 lFANZX|C^`  폜                        
       No4.1       ǂݍݏs܂                            
 
 39    No4.2 GFS_NwIsCompleted֐     GFS_NwIsComplete֐      
 
 44          CD-ROMgpȂꍇ      P.50 C.2 (8)̃t@Cʎq
                                         ̎dlύXɂ폜        
 
 48    C.2(1)GFS_SVR_COMPLETE            GFS_SVR_COMPLETED           
 
 49    C.2(3)GFS_ATR_FORM1  0x80         GFS_ATR_FORM1  0x08         
 

UD@ӎ
UDP@DOSt@Cgp̒
@DOSt@C̎op[^͏̓sAPxɂPZN^]ł܂
Bop[^PȊO̒lɐݒ肵ĂłB

UDQ@SCU-DMAgp̒
iPj@荞݋
@][hGFS_TMODE_SCÛƂAt@CVXeCuDMACu
pSCU-DMAN܂Bgp郌x͂OłB
@̂GFS_Initł́AINT_ChgMsk֐ɂSCŨx0-DMAI荞݂
Ă܂BiڍׂDMA^荞݊֘ÃhLgQƂĂBj
    /* SCU-DMA0I荞݂ */
    INT_ChgMsk(INT_MSK_DMA0, INT_MSK_NULL);

iQj@gp\Ȋ֐̐
@][hGFS_TMODE_SCȔꍇA]֐ɂSCU-DMANꍇ́A
]I܂ňȉ̊֐gp\łB
@SCU-DMA]A-BusANZX֎~̂߁AȊO̊֐͎gp֎~܂B
    EGFS_Reset         EGFS_Close         EGFS_NwIsComplete  EGFS_NwGetStat
    EGFS_NwExecOne     EGFS_NwExecServer  EGFS_GetErrStat

UDR@ffs̒ӎ
@쐬vOffłƂĎsɂ́Aȉ̐ɍl
R[fBOKv܂B
@(a) CD-DA̍Đ́AGFS_ConvTno֐ŃgbNԍϊAbcʐMC^tF
      [X̃gbNԍwɂCDC_CdPlay֐gpB
@@@l̃gbNԍACD-DAt@CgpĂ͂ȂȂB
@(b) bcɃANZXꍇAlFADgpĂ͂ȂȂB
@(c) fBNg̐[̏́A[gfBNg܂߂čőV܂łƂB


Title           Function                      Function Name   No    
֐dl        gbNԍ̕ϊ            GFS_ConvTno     6.4   

mn@Sint32 GFS_ConvTno(Sint32 logtno)
ḿn@logtno :  _gbNԍiQ[fBXNňgbNԍj
m֐lngbNԍifffBXÑgbNԍj
m@\n
@_gbNԍ𕨗gbNԍɕϊBffsȊȌꍇ́A_
gbNԍgbNԍƂȂB

UDS@SGL CD-ROMCu쐬̒
@RpCUSE_SGL`ăRpCƁASGL CD-ROMCup̃W
[ƂĎgpł܂B
@SIMM, SCSIt@CT|[gꍇASBLƓlɃRpCIvVDEBUG_
LIB`ĂBeCuɕKvȃIuWFNgt@ĆAgfs.lbr Ȃ
тgfsd.lbr QƂĂB

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