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

📄 filldataroutine_small_cf.asm

📁 CF card DSP code
💻 ASM
字号:

/************************************************************************************************/
/*	This routine reads sectors from the compact flash into the pack_buffer.  This routine is	*/
/*	called only for CFs that have 4 or less sectors per cluster.  Since we only want to read	*/
/*	in 4 sectors at a time to fill up pack_buffer half way, this routine will not work for CFs	*/
/*	with more than 4 sectors per cluster (see FillDataRoutine_Big_CF.asm).						*/
/*															  Last Modified 02-26-03.  H. Desai */
/************************************************************************************************/

.GLOBAL Small_CF;

.EXTERN pack_buffer_wrptr;
.EXTERN pack_buffer;
.EXTERN Current_Cluster;
.EXTERN Cluster_to_Sector;
.EXTERN Parameters;
.EXTERN Calc_CHS;
.EXTERN Read_MP3;
.EXTERN Get_Next_Cluster;
.EXTERN CheckPredacSpace;

.SECTION program;

/**For CFs with 4 or less sectors per cluster**/
Small_CF:
NOP;
READ_MP3:
P0.L = pack_buffer_wrptr;			//Set up DAG registers for Pack Buffer
P0.H = pack_buffer_wrptr;
R0 = [P0];
I0 = R0;
L0 = 0x1000;
R0.L = pack_buffer;
R0.H = pack_buffer;
B0 = R0;

P0.H = Current_Cluster;
P0.L = Current_Cluster;
R0 = W[P0](Z);

CALL Cluster_to_Sector;

P0.H = Parameters;
P0.L = Parameters;
R0 = [P0+0x14];						//# of sectors per cluster

P5 = R0;
LSETUP(Read_MP3_Data_BEGIN, Read_MP3_Data_END) LC0 = P5;
	Read_MP3_Data_BEGIN:	
		R0 = R5;
		CALL Calc_CHS;
		Call Read_MP3;
		R5 += 1;					//Go to next Sector
	Read_MP3_Data_END:		NOP;
NOP;

P0.H = pack_buffer_wrptr;
P0.L = pack_buffer_wrptr;
R0 = I0;
[P0] = R0;							//Save off Pack Buffer Write Pointer

CALL Get_Next_Cluster;

R6 += -1;							//Decrement # of Clusters
R0 = 0x0(Z);
cc = R6 == R0;
IF cc JUMP Done_Reading_MP3;		//If 0, done reading MP3 data

JUMP READ_MP3;

Done_Reading_MP3:
NOP;
JUMP CheckPredacSpace;

⌨️ 快捷键说明

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