?? file1.h
字號:
struct FDS
{uchar DirName[11]; //0~10 文件名
Uint32 DirLongName[13]; //長文件名
Uint32 DirFstClusHI; //20~21文件入口簇號高字
Uint32 DirFstClusLO; //26~27文件入口簇號低字
uchar DirFileSize[4]; //28~31 文件長度
}fds[5];
extern void DirGet(void)
{uchar i,j=0;
uchar f,x,y;
GetLBAData(FDTEntLBA);
BufferFlag=0;
for(i=0;i<16;i++)
{if(BUFFER[32*i+8]=='M'&&BUFFER[32*i+9]=='P'&&BUFFER[32*i+10]=='3')
{ fds[j].DirLongName[0]=BUFFER[32*(i-1)+1]+BUFFER[32*(i-1)+2]*256;
fds[j].DirLongName[1]=BUFFER[32*(i-1)+3]+BUFFER[32*(i-1)+4]*256;
fds[j].DirLongName[2]=BUFFER[32*(i-1)+5]+BUFFER[32*(i-1)+6]*256;
fds[j].DirLongName[3]=BUFFER[32*(i-1)+7]+BUFFER[32*(i-1)+8]*256;
fds[j].DirLongName[4]=BUFFER[32*(i-1)+9]+BUFFER[32*(i-1)+10]*256;
fds[j].DirLongName[5]=BUFFER[32*(i-1)+14]+BUFFER[32*(i-1)+15]*256;
fds[j].DirLongName[6]=BUFFER[32*(i-1)+16]+BUFFER[32*(i-1)+17]*256;
fds[j].DirLongName[7]=BUFFER[32*(i-1)+18]+BUFFER[32*(i-1)+19]*256;
fds[j].DirLongName[8]=BUFFER[32*(i-1)+20]+BUFFER[32*(i-1)+21]*256;
fds[j].DirLongName[9]=BUFFER[32*(i-1)+22]+BUFFER[32*(i-1)+23]*256;
fds[j].DirLongName[10]=BUFFER[32*(i-1)+24]+BUFFER[32*(i-1)+25]*256;
fds[j].DirLongName[11]=BUFFER[32*(i-1)+28]+BUFFER[32*(i-1)+29]*256;
fds[j].DirLongName[12]=BUFFER[32*(i-1)+30]+BUFFER[32*(i-1)+31]*256;
fds[j].DirFstClusHI=BUFFER[32*i+20]+BUFFER[32*i+21]*256;
fds[j].DirFstClusLO=BUFFER[32*i+26]+BUFFER[32*i+27]*256;
for(f=0;f<10;f++)
{for(y=0;y<72;y++)
{for(x=0;x<96;x++)
{if(fds[j].DirLongName[f]==Unicode[y][x])
{fds[j].DirLongName[f]=(0xb0+y)*256+(0xa0+x);
break;
}
}
if(fds[j].DirLongName[f]==Unicode[y][x])
break;
}
}
j++;
}
}
}
extern void FileOpen(struct FDS *fp)
{uint i;
uchar EOCFlag=0;
// Uint32 FileIntCode[10];
Uint32 LBA,FileStatLBA,FileEndLBA;
Uint16 FileNextClus,FileEndClus;
Uint16 FATNum,FATOffset;
FileNextClus=fp->DirFstClusLO; //獲取文件入口簇數(shù)
FATNum=FileNextClus>>8; //獲取簇表序號
FileStatLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;//獲取文件入口LBA
while(!EOCFlag) //沒有找到簇結(jié)束標(biāo)志
{GetLBAData(FATEntLBA+FATNum); //獲取當(dāng)前簇表內(nèi)容
// FATNum=FileNextClus>>8; //獲取簇表序號
FATOffset=(FileNextClus*2)%512; //獲取簇在當(dāng)前簇表中的偏移量
FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;//計算下一簇號
for(i=FATOffset;i<512;i+=2)
{if(BUFFER[i]==0xff&&BUFFER[i+1]==0xff)
{EOCFlag=1;
break;
}
FileNextClus=BUFFER[i]+BUFFER[i+1]*256;
}
FATNum+=1;
FileEndClus=FileNextClus;
}
FileEndLBA=DATAEntLBA+(FileEndClus-2)*bpb.SecPerClus;//獲取文件尾LBA
LcdDirCHS(fp->DirLongName);
//LcdCluster(FileEndClus);
for(LBA=FileStatLBA;LBA<FileEndLBA;LBA+=2)
{
GetLBAData(LBA);
if(KBFLAG3){KBFLAG3=0;
break;
}
EnMP3INT();
while(BufferFlag);
}
}
/*extern void FileOpen(uchar *fp)
{//uint i;
Uint32 LBA,FileStatLBA,FileEndLBA;
Uint16 FileNextClus,FileEndClus;
Uint16 FATNum,FATOffset;
FileNextClus=*fp+(*(fp+1))*256; //獲取文件入口簇數(shù)
FileStatLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;//獲取文件入口LBA
while(FileNextClus!=0xffff) //判斷是否為文件結(jié)束標(biāo)志
{FileEndClus=FileNextClus; //把當(dāng)前獲得的簇數(shù)認(rèn)為是尾簇保存
FATNum=FileNextClus>>8; //獲取簇表序號
FATOffset=(FileNextClus*2)%512; //獲取簇在當(dāng)前簇表中的偏移量
GetLBAData(FATEntLBA+FATNum); //獲取當(dāng)前簇表內(nèi)容
FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;//計算下一簇號
}
FileEndLBA=DATAEntLBA+(FileEndClus-2)*bpb.SecPerClus;//獲取文件尾LBA
LcdCluster(FileEndClus);
EnMP3();
while(1){
for(LBA=FileStatLBA;LBA<FileEndLBA;LBA+=2)
{GetLBAData(LBA);
mp3int();
}
}
}*/
/*extern void FileOpen(uchar *fp)
{uint i;
Uint32 LBA,FileLBA;
Uint16 FileNextClus;
Uint16 FATNum,FATOffset;
FileNextClus=*fp+(*(fp+1))*256;
while(FileNextClus!=0xffff)
{//LcdCluster(FileNextClus);
FATNum=FileNextClus>>8;
FATOffset=(FileNextClus*2)%512;
FileLBA=DATAEntLBA+(FileNextClus-2)*bpb.SecPerClus;
for(LBA=FileLBA;LBA<FileLBA+bpb.SecPerClus;LBA+=2)
{//LcdSectorr(LBA);
GetLBAData(LBA);
mp3int();
//while(BufferFlag);
//for(j=0;j<1024;j++)
// putch(BUFFER[j]);
}
//GetLBAData(FATEntLBA+FATNum);
//FileNextClus=BUFFER[FATOffset]+BUFFER[FATOffset+1]*256;
//BufferFlag=0;
// putch(MP3STA);
}
}*/
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -