sub_function3.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 981 行 · 第 1/2 页

S01
981
字号
?0047:
; 177.	            
; 178.	        //找到目录的第一个文件
; 179.	        if (StartFileSelector() == 0)
	CALL	LWRD ?0210
	JR	NZ,?0053
?0048:
; 180.	        {
; 181.	            return 0;
	JR	?0145
; 182.	        }               
?0049:
; 183.	            return 1;             
; 184.	    }
?0045:
; 185.	    else if (result == 2) // == 2 表示该目录是空
	LD	B,(IX-2)
	DEC	B
	DEC	B
	JR	NZ,?0051
?0050:
; 186.	    {
; 187.	        //找到目录的第一个文件
; 188.	        if (StartFileSelector() == 0)
	CALL	LWRD ?0210
	JR	Z,?0145
?0052:
; 189.	        {
; 190.	            return 0;
; 191.	        }
?0053:
; 192.	        return 1;               
	LD	HL,1
; 193.	             
; 194.	    }
	JR	?0063
?0051:
; 195.	
; 196.	    ClearTimePara();//时间断点参数从0开始           
	LD	A,BYTE3 ClearTimePara
	LD	HL,LWRD ClearTimePara
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 197.	    g_music_vars.location.filename[0] = '\0';//找不到对应文件时要回到目录第一个文件
	XOR	A
	LD	(g_music_vars+33),A
; 198.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 199.	
; 200.	    result = FSELSetLocation(& g_music_vars.location);
	LD	DE,g_music_vars+7
	LD	A,BYTE3 fselSetLocation
	LD	HL,LWRD fselSetLocation
	CALL	LWRD ?0203
; 201.	
; 202.	    if (result != 0)//set 目录 
	JR	Z,?0055
?0054:
; 203.	    {            
; 204.	        //找到目录的第一个文件
; 205.	        if (StartFileSelector() == 0)
	CALL	LWRD ?0210
	JR	NZ,?0062
?0056:
; 206.	        {
; 207.	            return 0;
	JR	?0145
; 208.	        }
?0057:
; 209.	    }    
; 210.	    
; 211.	    else
?0055:
; 212.	    {
; 213.	        // 初始化文件选择器
; 214.	        if (InitFileSelector() == 0)
	LD	A,BYTE3 InitFileSelector
	LD	HL,LWRD InitFileSelector
	CALL	LWRD ?0211
	JR	Z,?0145
?0059:
; 215.	        {
; 216.	            return 0;
; 217.	        }
?0060:
; 218.	        //找到目录的第一个文件
; 219.	        if (StartFileSelector() == 0)
	CALL	LWRD ?0210
	JR	NZ,?0062
?0061:
; 220.	        {
; 221.	            return 0;
?0145:
	LD	L,C
	LD	H,C
; 222.	        }        
	JR	?0063
?0062:
?0058:
; 223.	    }
; 224.	
; 225.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);                      
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 226.	}
?0063:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0204:
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
?0203:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	RET
?0210:
	LD	A,BYTE3 StartFileSelector
	LD	HL,LWRD StartFileSelector
?0211:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	RET
StartFileSelector:
; 227.	
; 228.	
; 229.	
; 230.	/******************************************************************************
; 231.	** 名字:  
; 232.	** 接口:
; 233.	** 描述:
; 234.	** 输入参数:
; 235.	** 输出参数: 
; 236.	** 使用说明: //注,这函数是在初始化完文件选择器或set 完目录后调用的
; 237.	********************************************************************************/
; 238.	int StartFileSelector(void)
; 239.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65534
; 240.	    int result;    
; 241.	    
; 242.	    if (g_music_vars.location.disk == 'C')
	LD	A,(g_music_vars+7)
	CP	67
	LD	DE,g_music_vars+33
	LD	A,BYTE3 fselGetNextFile
	LD	HL,LWRD fselGetNextFile
	JP	NZ,?0065
?0064:
; 243.	    {
; 244.	        if (FSELGetNext(g_music_vars.location.filename) != 0)        
	CALL	LWRD ?0203
	JR	NZ,?0169
?0066:
; 245.	        {
; 246.	            return 1;
; 247.	        }
?0067:
; 248.	        
; 249.	        if (FSELGetErrID() == 0)
	CALL	LWRD ?0206
	INC	L
	DEC	L
	JP	Z,?0114
?0068:
; 250.	        {
; 251.	            return 0;//非法
; 252.	        }
?0069:
; 253.	        //再查一次,因为可能这目录前面还有文件
; 254.	        if (InitFileSelector() == 0)
	LD	A,BYTE3 InitFileSelector
	LD	HL,LWRD InitFileSelector
	CALL	LWRD ?0211
	JP	Z,?0114
?0070:
; 255.	        {
; 256.	            return 0;
; 257.	        }                
?0071:
; 258.	        if (FSELGetNext(g_music_vars.location.filename) != 0)
	CALL	LWRD ?0204
	JR	Z,?0073
?0072:
; 259.	        {
; 260.	            return 1;
?0169:
	JP	LWRD ?0173
; 261.	        }            
?0073:
; 262.	            
; 263.	        if (FSELGetErrID() == 0)
	CALL	LWRD ?0206
	INC	L
	DEC	L
	JP	Z,?0114
?0074:
; 264.	        {
; 265.	            return 0;//非法
; 266.	        }
?0075:
; 267.	
; 268.	        if (g_music_vars.location.disk == 'H')
	LD	A,(g_music_vars+7)
	CP	72
	JR	NZ,?0077
?0076:
; 269.	        {
; 270.	           if((g_DiskStateFlag & SetCardOKFlag_def)!=0)
	LD	A,(g_DiskStateFlag)
	BIT	3,A
	JR	Z,?0079
?0078:
; 271.	            DisplayErrInfor(CFILEOUT);//显示卡无文件
	CALL	LWRD ?0208
; 272.	           else 
?0079:
; 273.	             g_music_vars.location.disk=='C'; 
?0080:
; 274.	            return 0; //因为前面已从 'C' 查到 'H' 了,已查完,未找到文件
	JP	LWRD ?0114
; 275.	        }
?0077:
; 276.	        else //还在 'C'
; 277.	        {
; 278.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	LD	DE,628
	CALL	LWRD ?0209
; 279.	
; 280.	            //检测 sd 卡是否存在
; 281.	            if ((DRV_DetectUD(1) == 0x20)&&((g_DiskStateFlag & SetCardOKFlag_def)!=0))
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0082
	LD	A,(g_DiskStateFlag)
	BIT	3,A
	JR	Z,?0082
?0084:
?0083:
?0081:
; 282.	            {//有卡                
; 283.	                g_music_vars.location.disk = 'H';
	LD	A,72
	LD	(g_music_vars+7),A
; 284.	                if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'H'))
	LD	C,A
	PUSH	BC
	LD	HL,g_music_vars+81
	LD	C,(HL)
	PUSH	BC
	CALL	LWRD ?0205
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0088
?0085:
; 285.	                {
; 286.	                    if (FSELGetNext(g_music_vars.location.filename) != 0)
	CALL	LWRD ?0204
	JR	NZ,?0172
?0087:
; 287.	                    {
; 288.	                        return 1;
; 289.	                    }                                    
?0088:
?0086:
; 290.	                }
; 291.	                result = FSELGetErrID();
	CALL	LWRD ?0206
; 292.	                if (FSELGetErrID() != 0)
	CALL	LWRD ?0206
	INC	L
	DEC	L
	JR	Z,?0090
?0089:
; 293.	                {
; 294.	                    DisplayErrInfor(CFILEOUT);//显示卡无文件
	LD	DE,629
	JR	?0177
; 295.	                    return 0;
; 296.	                }
?0090:
; 297.	                return 0;//非法
	JR	?0114
; 298.	            }
?0082:
; 299.	            else
; 300.	            {   
; 301.	               g_music_vars.location.disk = 'C';
	LD	A,67
	LD	(g_music_vars+7),A
; 302.	                return 0;//没卡退出
	JR	?0114
; 303.	            }                                                        
; 304.	        }
; 305.	        return 0;            
; 306.	    }
?0065:
; 307.	    else //g_music_vars.location.disk == 'H'
; 308.	    {
; 309.	        if (FSELGetNext(g_music_vars.location.filename) != 0)
	CALL	LWRD ?0203
	JR	NZ,?0172
?0091:
; 310.	        {
; 311.	            return 1;//找到文件                                
; 312.	        }
?0092:
; 313.	            
; 314.	        if (FSELGetErrID() == 0)
	CALL	LWRD ?0206
	INC	L
	DEC	L
	JR	Z,?0114
?0093:
; 315.	        {
; 316.	            return 0;//非法                        
; 317.	        }
?0094:
; 318.	
; 319.	        //再查一次,因为可能这目录前面还有文件(虽然后面已无文件)
; 320.	        if (InitFileSelector() == 0)
	LD	A,BYTE3 InitFileSelector
	LD	HL,LWRD InitFileSelector
	CALL	LWRD ?0211
	JR	Z,?0114
?0095:
; 321.	        {
; 322.	            return 0;
; 323.	        }            
?0096:
; 324.	
; 325.	        if (FSELGetNext(g_music_vars.location.filename) != 0)                
	CALL	LWRD ?0204
	JR	Z,?0098
?0097:
; 326.	        {
; 327.	            return 1;//找到文件                        
?0172:
	JR	?0173
; 328.	        }
?0098:
; 329.	                
; 330.	        if (FSELGetErrID() == 0)
	CALL	LWRD ?0206
	INC	L
	DEC	L
	JR	Z,?0114
?0099:
; 331.	        {
; 332.	            return 0;//非法                        
; 333.	        }
?0100:
; 334.	        
; 335.	        if (g_music_vars.location.disk == 'C')
	LD	A,(g_music_vars+7)
	CP	67
	JR	Z,?0178
?0101:
; 336.	        {
; 337.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
; 338.	            return 0; //因为前面已从 'H' 查到 'C' 了,已查完,未找到文件            
; 339.	        } 
?0102:
; 340.	    
; 341.	        if((g_DiskStateFlag & SetCardOKFlag_def)!=0)       
	LD	A,(g_DiskStateFlag)
	BIT	3,A
	JR	Z,?0104
?0103:
; 342.	        DisplayErrInfor(CFILEOUT);//显示卡无文件
	CALL	LWRD ?0208
?0104:
; 343.	
; 344.	        g_music_vars.location.disk = 'C';
	LD	A,67
	LD	(g_music_vars+7),A
; 345.	        if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
	LD	A,(g_DiskStateFlag)
	BIT	7,A
	JR	Z,?0114
?0105:
; 346.	        {
; 347.	            return 0;
; 348.	        }
?0106:
; 349.	        
; 350.	        if ((g_DiskStateFlag & SetDiskNoFile_def) != 0)
	BIT	6,A
	JR	Z,?0108
?0107:
; 351.	        {
; 352.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
?0178:
	LD	DE,628
?0177:
	CALL	LWRD ?0209
; 353.	            return 0;
	JR	?0114
; 354.	        }
?0108:
; 355.	        
; 356.	        if (FSELInit(FSEL_TYPE_MUSIC, FSEL_ALL_SEQUENCE, g_music_vars.fselmod, 'C'))
	LD	C,67
	PUSH	BC
	LD	HL,g_music_vars+81
	LD	C,(HL)
	PUSH	BC
	CALL	LWRD ?0205
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	Z,?0112
?0109:
; 357.	        {
; 358.	            if (FSELGetNext(g_music_vars.location.filename) != 0)                
	CALL	LWRD ?0204
	JR	Z,?0112
?0111:
; 359.	            {
; 360.	                return 1;//找到文件                        
?0173:
	LD	HL,1
; 361.	            }                        
	JR	?0115
?0112:
?0110:
; 362.	        }
; 363.	        result = FSELGetErrID();
	CALL	LWRD ?0206
; 364.	        
; 365.	        if (result != 0)
	LD	A,L
	OR	A
	JR	Z,?0114
?0113:
; 366.	        {
; 367.	            DisplayErrInfor(DFILEOUT);//显示磁盘无文件
	CALL	LWRD ?0207
; 368.	            g_DiskStateFlag |= SetDiskNoFile_def;//标志磁盘无文件
; 369.	            return 0;//
; 370.	        }
?0114:
; 371.	        return 0;                            
	LD	HL,0
; 372.	    }
?0115:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
; 373.	}
; 374.	
; 375.	
; 376.	/*
; 377.	// error information defines in file selector
; 378.	#define FSEL_ERR_OUTOF          1
; 379.	#define FSEL_ERR_EMPTY          2
; 380.	#define FSEL_ERR_SETDIR         3
; 381.	#define FSEL_ERR_SETFILE        4
; 382.	#define FSEL_ERR_EXCEPTION      5
; 383.	
; 384.	
; 385.	#define FSEL_ERR_FS             20
; 386.	#define FSEL_ERR_FAIL           21
; 387.	#define FSEL_ERR_DISK           22
; 388.	#define FSEL_ERR_PLAYLIST       23
; 389.	*/
; 390.	
; 391.	/*
; 392.	//error information display
; 393.	1) 磁盘错  : 在 main.c 中已报
; 394.	2) 卡错    : 在 main.c 中已报
; 395.	
; 396.	3) 磁盘无文件
; 397.	4) 卡无文件
; 398.	
; 399.	5) 空间满    :在 ui_follow.c 文件中已报
; 400.	7) 目录已满     :在 ui_follow.c 文件中已报
; 401.	
; 402.	6) 电量不足!:
; 403.	8) 格式错误
; 404.	9) 卡已拔出      
; 405.	
; 406.	*/
	END

⌨️ 快捷键说明

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