⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dosusr.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
                                        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 + -