📄 dosusr.c
字号:
PreIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
L2_DRAMReadWord(&tmp1,&tmp2);
NextIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
} while (NowIndex < PreIndex);
if (PreIndex > 0)
{
//patch4.5@ada@Record DCF file name begin
L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)PreIndex) - 1) * 10 + 9),K_SDRAM_NoPrefetch);
//L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)PreIndex) - 1) * 8 + 7),K_SDRAM_NoPrefetch);
//patch4.5@ada@Record DCF file name end
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
//patch4.5@ada@Record DCF file name begin
L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 10 + 8),K_SDRAM_NoPrefetch);
//L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
//patch4.5@ada@Record DCF file name end
L2_DRAMWriteWord((UCHAR)(PreIndex & 0x00ff),(UCHAR)((PreIndex & 0xff00) >> 8));
L2_DRAMWriteWord((UCHAR)(TempNowIndex & 0x00ff),(UCHAR)((TempNowIndex & 0xff00) >> 8));
//patch4.5@ada@Record DCF file name begin
L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 10 + 8),K_SDRAM_NoPrefetch);
//L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
//patch4.5@ada@Record DCF file name end
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
}
else
{
//patch4.5@ada@Record DCF file name begin
L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 10 + 8),K_SDRAM_NoPrefetch);
//L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
//patch4.5@ada@Record DCF file name end
L2_DRAMWriteWord(0x00,0x00);
L2_DRAMWriteWord((UCHAR)(TempNowIndex & 0x00ff),(UCHAR)((TempNowIndex & 0xff00) >> 8));
//patch4.5@ada@Record DCF file name begin
L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 10 + 8),K_SDRAM_NoPrefetch);
//L2_DRAMSetStartAddr((K_SDRAM_WAV_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
//patch4.5@ada@Record DCF file name end
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
G_USR_FirstFileIndex = NowIndex;
}
}
}
}
//patch4.4@ada@MP3 begin
#if (MP3_OPTION)
else
{
if (fileType == K_USR_MP3_TYPE)
{
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)G_USR_SearchNowFileIndex) - 1) * 8),K_SDRAM_NoPrefetch);
//Record file FDB logical address
L2_DRAMWriteWord((UCHAR)(G_DOS_FdbAddress & 0x000000ff),(UCHAR)((G_DOS_FdbAddress & 0x0000ff00) >> 8));
L2_DRAMWriteWord((UCHAR)((G_DOS_FdbAddress & 0x00ff0000) >> 16),(UCHAR)((G_DOS_FdbAddress & 0xff000000) >> 24));
//Record file attribute and file type
L2_DRAMWriteWord(fdb[11],K_USR_MP3_TYPE);
//Record file starting cluster
L2_DRAMWriteWord(fdb[26],fdb[27]);
//Record file size in bytes
L2_DRAMWriteWord(fdb[28],fdb[29]);
L2_DRAMWriteWord(fdb[30],fdb[31]);
//Record previous file index
L2_DRAMWriteWord((UCHAR)(G_USR_SearchPreFileIndex & 0x00ff),(UCHAR)((G_USR_SearchPreFileIndex & 0xff00) >> 8));
L2_DRAMWriteWord(0x00,0x00);
if (G_USR_FileCount)
{
if (G_USR_SearchNowFileIndex > G_USR_SearchPreFileIndex)
{
//Record previous file index(No matter JPG or AVI or WAV)
L2_DRAMWriteWord((UCHAR)(G_USR_SearchPreFileIndex & 0x00ff),(UCHAR)((G_USR_SearchPreFileIndex & 0xff00) >> 8));
L2_DRAMWriteWord(0x00,0x00);
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)G_USR_SearchPreFileIndex) - 1) * 8 + 7),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(G_USR_SearchNowFileIndex & 0x00ff),(UCHAR)((G_USR_SearchNowFileIndex & 0xff00) >> 8));
}
else
{
NowIndex = G_USR_SearchNowFileIndex;
PreIndex = G_USR_SearchPreFileIndex;
G_USR_SearchNowFileIndex = PreIndex;
G_USR_LastFileIndex = PreIndex;
do
{
TempNowIndex = PreIndex;
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)PreIndex) - 1) * 8 + 6),K_SDRAM_Prefetch);
L2_DRAMReadWord(&tmp1,&tmp2);
PreIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
L2_DRAMReadWord(&tmp1,&tmp2);
NextIndex = (USHORT)tmp1 | (((USHORT)tmp2) << 8);
} while (NowIndex < PreIndex);
if (PreIndex > 0)
{
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)PreIndex) - 1) * 8 + 7),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(PreIndex & 0x00ff),(UCHAR)((PreIndex & 0xff00) >> 8));
L2_DRAMWriteWord((UCHAR)(TempNowIndex & 0x00ff),(UCHAR)((TempNowIndex & 0xff00) >> 8));
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
}
else
{
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)NowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord(0x00,0x00);
L2_DRAMWriteWord((UCHAR)(TempNowIndex & 0x00ff),(UCHAR)((TempNowIndex & 0xff00) >> 8));
L2_DRAMSetStartAddr((K_SDRAM_MP3_FdbParameterBufAddr + (((ULONG)TempNowIndex) - 1) * 8 + 6),K_SDRAM_NoPrefetch);
L2_DRAMWriteWord((UCHAR)(NowIndex & 0x00ff),(UCHAR)((NowIndex & 0xff00) >> 8));
G_USR_FirstFileIndex = NowIndex;
}
}
}
}
}
#endif
//patch4.4@ada@MP3 end
}
}
G_USR_FileCount++;
}
}
BYTE USR_IsOurBaseName(BYTE* name) USING_0
{
if (((name[0] == G_USR_Company_UpperSIG[0]) || (name[0] == G_USR_Company_LowerSIG[0])) &&
((name[1] == G_USR_Company_UpperSIG[1]) || (name[1] == G_USR_Company_LowerSIG[1])) &&
((name[2] == G_USR_Company_UpperSIG[2]) || (name[2] == G_USR_Company_LowerSIG[2])) &&
((name[3] == G_USR_Company_UpperSIG[3]) || (name[3] == G_USR_Company_LowerSIG[3])) )
return TRUE;
else
return FALSE;
}
//version4.0@ada@0513 for Multi-Directory
#if (SINGLE_DIRECTORY == 0)
//patch4.3@richie@md0516 begin
//-----------------------------------------------------------------------------
//USR_ChangeCurrentDir
//-----------------------------------------------------------------------------
UCHAR USR_ChangeCurrentDir(USHORT Index) USING_0
{
UCHAR tmp1,tmp2;
UCHAR sts;
USHORT startCluster;
//patch4.4@ada@DirectoryIndexOrder begin
//G_USR_Dir1CountIndex = Index;
//L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_Dir1CountIndex - 1) * 7),K_SDRAM_Prefetch);
L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)Index - 100) * 8),K_SDRAM_Prefetch);
//L2_DRAMReadWord(&tmp1,&tmp2);
//G_USR_Dir1Count = ((USHORT)tmp2 << 8) | (USHORT)tmp1;
//patch4.4@ada@DirectoryIndexOrder end
L2_DRAMReadWord(&tmp1,&tmp2);
startCluster = ((USHORT)tmp2) << 8 | (USHORT)tmp1;
G_USR_Dir1Cluster = startCluster;
DOS_SetCurrDir(startCluster);
sts = USR_FileInitialize();
//printf("G_USR_FileCount = %x\n",G_USR_FileCount);
G_USR_FileIndex++; //next file index
return sts;
}
//patch4.3@richie@md0516 end
UCHAR USR_IsOurDirName(BYTE* name) USING_0
{
if ((name[0] == G_USR_Dir1Name[3]) &&
(name[1] == G_USR_Dir1Name[4]) &&
(name[2] == G_USR_Dir1Name[5]) &&
(name[3] == G_USR_Dir1Name[6]) &&
(name[4] == G_USR_Dir1Name[7]))
return TRUE;
else
return FALSE;
}
#endif
BYTE USR_IsJpgExt(BYTE* name) USING_0
{
if ( ((name[8] == 'J') || (name[8] == 'j')) &&
((name[9] == 'P') || (name[9] == 'p')) &&
((name[10] == 'G') || (name[10] == 'g')) )
return TRUE;
else
return FALSE;
}
BYTE USR_IsSameStr(BYTE*str1, BYTE*str2, WORD len) USING_0
{
WORD k;
for ( k = 0; k < len; k++ )
{
if ( str1[k] != str2[k] )
return FALSE;
}
return TRUE;
}
//#if ( AUDIO_OPTION == 1 )
BYTE USR_IsWaveExt(BYTE* name) USING_0
{
if ( ((name[8] == 'W') || (name[8] == 'w')) &&
((name[9] == 'A') || (name[9] == 'a')) &&
((name[10] == 'V') || (name[10] == 'v')) )
return TRUE;
else
return FALSE;
}
//#endif
#if ( K_File_HaveVideo == 1 )
BYTE USR_IsAviExt(BYTE* name) USING_0
{
if ( ((name[8] == 'A') || (name[8] == 'a')) &&
((name[9] == 'V') || (name[9] == 'v')) &&
((name[10] == 'I') || (name[10] == 'i')) )
return TRUE;
else
return FALSE;
}
#endif
//patch4.4@ada@MP3 begin
#if (MP3_OPTION)
BYTE USR_IsMp3Ext(BYTE* name) USING_0
{
if ( ((name[8] == 'M') || (name[8] == 'm')) &&
((name[9] == 'P') || (name[9] == 'p')) &&
((name[10] == '3') || (name[10] == '3')) )
return TRUE;
else
return FALSE;
}
#endif
//patch4.4@ada@MP3 end
//-----------------------------------------------------------------------------
//USR_IsOurFile
//-----------------------------------------------------------------------------
BYTE USR_IsOurFile(BYTE *name) USING_0
{
BYTE match = FALSE;
if ( USR_IsOurBaseName(name) )
{
match = USR_CheckExtType(name);
}
return match;
}
//-----------------------------------------------------------------------------
//USR_FileExist
//-----------------------------------------------------------------------------
//patch3.2@ada@0401 For DCF
UCHAR USR_FileExist(UCHAR *fdb) USING_0
{
UCHAR match = FALSE;
//version4.0@ada@0513 for DCF //Long File Name
if ((fdb[0] != 0xe5) && (fdb[0] != 0x2e) && (fdb[11] != 0x0f))
{
match = USR_CheckExtType(fdb);
}
return match;
}
#if 0
//-----------------------------------------------------------------------------
//USR_GetFileCount
//-----------------------------------------------------------------------------
WORD USR_GetFileCount(void) USING_1
{
return G_USR_FileCount;
}
#endif
//-----------------------------------------------------------------------------
//USR_DirInitialize
//-----------------------------------------------------------------------------
//patch3.2@ada@0401 For DCF
BYTE USR_DirInitialize(void) USING_0
{
BYTE sts = TRUE;
BYTE name[12];
WORD startCluster;
//version4.0@ada@0513 for Multi-Directory
#if (SINGLE_DIRECTORY == 0)
UCHAR tmp1,tmp2;
#endif
//patch4.4@ada@DirectoryIndexOrder begin
UCHAR i;
//patch4.4@ada@DirectoryIndexOrder end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -