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

📄 dosusr.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
	 //patch4.5@ada@Complete H/W write protect function begin
     UCHAR FOSD_H_num, FOSD_V_num;

     //Joe@2003.2.27 10:21 modify begin
     /*if(G_DisplayType <= 7) //TV
     {
          FOSD_H_num = (K_DISPLAY_StnLcdWidth/16)+5;
          FOSD_V_num = (K_DISPLAY_StnLcdHeight/32);
     }
     else
     {
          FOSD_H_num = (G_DSPHsize/16);
          FOSD_V_num = (G_DSPVsize/32);
     }
     */
     UI_GetFOSDSize(&FOSD_H_num, &FOSD_V_num);
     //Joe@2003.2.27 10:21 modify end

	 M_DOS_ClearError();

     G_USR_Dir1Count = 100;

     //version4.0@ada@0513 for Multi-Directory
     #if (SINGLE_DIRECTORY == 0)

     //patch4.4@ada@DirectoryIndexOrder begin
     //G_USR_Dir1CountIndex = 1;
     G_USR_MaxDir1Count = 0;
     //G_USR_MaxOurDir1CountIndex = 0;
	 //printf("G_USR_MaxDir1Count 1 = %d\n",G_USR_MaxDir1Count);

     G_USR_TotalDirectory = 0;
     G_USR_MinDir1Count = 0;
     G_USR_MaxOurDir1Count = 0;
     G_USR_PrevDir1Count = 0;
     //patch4.4@ada@DirectoryIndexOrder end

	//patch4.5@ada@Found duplicated DCF directory index begin
	G_USR_PracticalMaxDirIndexCount = 0;
	//patch4.5@ada@Found duplicated DCF directory index end
     #endif

     USR_SetDir0Name(name);

     if ((startCluster = DOS_RootFindName(name)) == 0)
     {
		  if (G_DOS_Stop_Initial)
          {
			   	return FALSE;
		  }

          //patch4.5@ada@Complete H/W write protect function begin
		  if (G_Card_WriteProtect)
		  {
			  if(G_Language==1)
					  {
					  UI_PrintOSDString("V^rifier la carte", FOSD_H_num/2-5, FOSD_V_num/2, UI_MENU_DEHIGHLIGHT_COLOR);
					  UI_PrintOSDString("de protection", FOSD_H_num/2-7, FOSD_V_num/2+1, UI_MENU_DEHIGHLIGHT_COLOR);
					  }
			  else
			  {
					  UI_PrintOSDString(CHK_PROSWT1[G_Language], FOSD_H_num/2-5, FOSD_V_num/2, UI_MENU_DEHIGHLIGHT_COLOR);
					  UI_PrintOSDString(CHK_PROSWT2[G_Language], FOSD_H_num/2-7, FOSD_V_num/2+1, UI_MENU_DEHIGHLIGHT_COLOR);
				  }

		  DELAY_1s();
            	DELAY_1s();
            	UI_PrintOSDString("           ",FOSD_H_num/2-5, FOSD_V_num/2, 0);
            	UI_PrintOSDString("               ",FOSD_H_num/2-7, FOSD_V_num/2+1, 0);
          	   	return FALSE;
		  }

          if ((startCluster = DOS_RootMakeDir(name, 1)) == 0)
          {
               	return FALSE;
		  }
     }

     G_USR_Dir0Cluster = startCluster;

     DOS_SetCurrDir(startCluster);

     //version4.0@ada@0513 for Multi-Directory
     #if (SINGLE_DIRECTORY)
     USR_SetDir1Name(name, G_USR_Dir1Count);

     //ada@0401 For DCF
     //Never use the existed directory index while newly power on
     if ((startCluster = USR_FindDcfDir1Name(name)) == 0)
     {
          while ((USR_FindDcfDir1Index(name) > 0) && (G_USR_Dir1Count < 999))
          {
               USR_SetDir1Name(name, G_USR_Dir1Count);
               G_USR_Dir1Count++;
          }

          if (G_DOS_Stop_Initial)
          {
		     return FALSE;
          }

          if (G_USR_Dir1Count >= 999)
          {
               return FALSE;
          }

          if ((startCluster = DOS_MakeDir(name, 1)) == 0)
          {
     	     return FALSE;
          }
     }
     #else
     //version4.0@ada@0513 for DCF

     //patch4.4@ada@DirectoryIndexOrder begin
     //L2_FillDRAM(K_SDRAM_DcfDirBufAddr,(USHORT)K_SDRAM_DcfDirBufSize,0x00,0x00);
     L2_FillDRAM(K_SDRAM_DcfDirBufAddr,(USHORT)(K_SDRAM_DcfDirBufSize / 2),0x00,0x00);
     L2_FillDRAM(K_SDRAM_DcfDirBufAddr + (K_SDRAM_DcfDirBufSize / 2),(USHORT)(K_SDRAM_DcfDirBufSize / 2),0x00,0x00);

     //Search all DCF directories exist
     USR_FindDcfDir1Index();

     //G_USR_TotalDirectory = G_USR_Dir1CountIndex;
     //printf("G_USR_TotalDirectory = %d\n",G_USR_TotalDirectory);

     //No our directory exist
     //if (G_USR_MaxOurDir1CountIndex == 0)
     if (G_USR_MaxOurDir1Count == 0)
     {
		//patch4.5@ada@Found duplicated DCF directory index begin
          //printf("Create new directory\n");
/*          if (G_USR_MaxDir1Count < 999)
          {
               if (G_USR_MaxDir1Count == 0)
               {
                    G_USR_Dir1Count = 100;
               }
               else
               {
                    G_USR_Dir1Count = G_USR_MaxDir1Count + 1;
               }
          }
          else
          {
               //printf("G_USR_MaxDir1Count >= 9999\n");
               return FALSE;
          }

          USR_SetDir1Name(name, G_USR_Dir1Count);

          if ((startCluster = DOS_MakeDir(name, 1)) == 0)
          {
               //printf("Build new directory failed\n");
			return FALSE;
          }
          else
          {
               if (G_USR_Dir1Count == 100)   //A new our directory and it's the only one
               {
                    //G_USR_MaxOurDir1CountIndex = 1;
                    G_USR_MinDir1Count = G_USR_Dir1Count;
               }
               //else //No our directory exists but others's does
               //{
               //     G_USR_Dir1CountIndex++;
               //     G_USR_MaxOurDir1CountIndex = G_USR_Dir1CountIndex;
               //}

               L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_Dir1Count - 100) * 8),K_SDRAM_NoPrefetch);
               //Record directory start cluster
               L2_DRAMWriteWord((UCHAR)(startCluster & 0x00ff),(UCHAR)((startCluster & 0xff00) >> 8));
               //Our directory
               L2_DRAMWriteWord(0xff,0xff);
               //Record full directory name
               for (i = 0; i < 8; i += 2)
               {
                    L2_DRAMWriteWord(name[i],name[i + 1]);
               }
               //Previous directory index
               L2_DRAMWriteWord((UCHAR)(G_USR_MaxDir1Count & 0x00ff),(UCHAR)((G_USR_MaxDir1Count & 0xff00) >> 8));
               //Next directory index
               L2_DRAMWriteWord(0x00,0x00);

               //Other directory exists
               if (G_USR_MaxDir1Count > 0)
               {
                    L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_MaxDir1Count - 100) * 8 + 7),K_SDRAM_NoPrefetch);
                    //Record next directory index
                    L2_DRAMWriteWord((UCHAR)(G_USR_Dir1Count & 0x00ff),(UCHAR)((G_USR_Dir1Count & 0xff00) >> 8));
               }

               G_USR_MaxDir1Count = G_USR_Dir1Count;
               G_USR_MaxOurDir1Count = G_USR_Dir1Count;
               G_USR_TotalDirectory++;
          }
*/
		  if (G_Card_WriteProtect)
		  {
			  if(G_Language==1)
					  {
					  UI_PrintOSDString("V^rifier la carte", FOSD_H_num/2-5, FOSD_V_num/2, UI_MENU_DEHIGHLIGHT_COLOR);
					  UI_PrintOSDString("de protection", FOSD_H_num/2-7, FOSD_V_num/2+1, UI_MENU_DEHIGHLIGHT_COLOR);
					  }
			  else
			  {
					  UI_PrintOSDString(CHK_PROSWT1[G_Language], FOSD_H_num/2-5, FOSD_V_num/2, UI_MENU_DEHIGHLIGHT_COLOR);
					  UI_PrintOSDString(CHK_PROSWT2[G_Language], FOSD_H_num/2-7, FOSD_V_num/2+1, UI_MENU_DEHIGHLIGHT_COLOR);
				  }

			  DELAY_1s();
			  DELAY_1s();
			  UI_PrintOSDString("            ",FOSD_H_num/2-5, FOSD_V_num/2, 0);
			  UI_PrintOSDString("                  ",FOSD_H_num/2-7, FOSD_V_num/2+1, 0);
          	   	return FALSE;
		  }

          //printf("Create new directory\n");
		  if (G_USR_PracticalMaxDirIndexCount < 999)
          {
			   if (G_USR_PracticalMaxDirIndexCount == 0)
               {
                    G_USR_Dir1Count = 100;
               }
               else
               {
					G_USR_Dir1Count = G_USR_PracticalMaxDirIndexCount + 1;
               }
          }
          else
          {
 
// UI_PrintOSDString(DIRINDEX_FULL1[G_Language],	FOSD_H_num/2-4, FOSD_V_num/2, UI_MENU_DEHIGHLIGHT_COLOR);
// UI_PrintOSDString(DIRINDEX_FULL2[G_Language],FOSD_H_num/2-4, FOSD_V_num/2+1, UI_MENU_DEHIGHLIGHT_COLOR);
 
		DELAY_1s();
            	DELAY_1s();
            	UI_PrintOSDString("                     ", 0, FOSD_V_num/2, 0);
            	UI_PrintOSDString("                     ", 0, FOSD_V_num/2+1, 0);
          	   	return FALSE;
          }

          USR_SetDir1Name(name, G_USR_Dir1Count);

          if ((startCluster = DOS_MakeDir(name, 1)) == 0)
          {
				return FALSE;
          }
          else
          {
               if (G_USR_Dir1Count == 100)   //A new our directory and it's the only one
               {
                    G_USR_MinDir1Count = G_USR_Dir1Count;
               }

               L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_Dir1Count - 100) * 8),K_SDRAM_NoPrefetch);
               //Record directory start cluster
               L2_DRAMWriteWord((UCHAR)(startCluster & 0x00ff),(UCHAR)((startCluster & 0xff00) >> 8));
               //Our directory
               L2_DRAMWriteWord(0xff,0xff);

               //Record full directory name
               for (i = 0; i < 8; i += 2)
               {
                    L2_DRAMWriteWord(name[i],name[i + 1]);
               }

               //Previous directory index
               L2_DRAMWriteWord((UCHAR)(G_USR_MaxDir1Count & 0x00ff),(UCHAR)((G_USR_MaxDir1Count & 0xff00) >> 8));
               //Next directory index
               L2_DRAMWriteWord(0x00,0x00);

               //Other directory exists
               if (G_USR_MaxDir1Count > 0)
               {
                    L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_MaxDir1Count - 100) * 8 + 7),K_SDRAM_NoPrefetch);
                    //Record next directory index
                    L2_DRAMWriteWord((UCHAR)(G_USR_Dir1Count & 0x00ff),(UCHAR)((G_USR_Dir1Count & 0xff00) >> 8));
               }

			   G_USR_PracticalMaxDirIndexCount = G_USR_Dir1Count;
               G_USR_MaxDir1Count = G_USR_Dir1Count;
			   //printf("G_USR_MaxDir1Count 2 = %d\n",G_USR_MaxDir1Count);
               G_USR_MaxOurDir1Count = G_USR_Dir1Count;
               G_USR_TotalDirectory++;
          }
		//patch4.5@ada@Found duplicated DCF directory index end
     }
     else
     {
          //G_USR_Dir1CountIndex = G_USR_MaxOurDir1CountIndex;
          G_USR_Dir1Count = G_USR_MaxOurDir1Count;

          //L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_Dir1CountIndex - 1) * 7),K_SDRAM_Prefetch);
          L2_DRAMSetStartAddr((K_SDRAM_DcfDirBufAddr + ((ULONG)G_USR_Dir1Count - 100) * 8),K_SDRAM_Prefetch);
          //L2_DRAMReadWord(&tmp1,&tmp2);
          //G_USR_Dir1Count = ((USHORT)tmp2 << 8) | (USHORT)tmp1;

          L2_DRAMReadWord(&tmp1,&tmp2);
          startCluster = ((USHORT)tmp2 << 8) | (USHORT)tmp1;
     }
     //patch4.4@ada@DirectoryIndexOrder end
     #endif
	 //printf("G_USR_MaxDir1Count 3 = %d\n",G_USR_MaxDir1Count);

     G_USR_Dir1Cluster = startCluster;
     DOS_SetCurrDir(startCluster);

     sts = USR_FileInitialize();

     G_USR_FileIndex++;  //next file index

     //version4.0@ada@0513 for DPOF

     //patch4.4@ada@DPOF begin
     //DPOF_DirInitialize();
     //patch4.4@ada@DPOF end

     return sts;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -