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

📄 ui_follow.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_follow(17)
	RSEG	AP_UI_FL(0)
	RSEG	CSTR(0)
	EXTERN	ABPointTimeSize
	EXTERN	BankSwitch
	EXTERN	ChangeVolume
	EXTERN	DealForExitRec
	EXTERN	DealPlayKey
	EXTERN	DisplayErrMsg
	EXTERN	FS_FClose
	EXTERN	FS_FCreate
	EXTERN	FS_FRemove
	EXTERN	FS_FWrite
	EXTERN	FS_GetInfo
	EXTERN	FS_GetSpace
	EXTERN	GetBattery
	EXTERN	OpenMusic
	EXTERN	RePlayStatus
	EXTERN	RefreshMainScreen
	EXTERN	Replaytimes_CNT
	EXTERN	ReturnNotInit
	EXTERN	ShowNowTime
	EXTERN	Show_time_FC
	EXTERN	UpDisplayFlag
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	g_2HZ_CNT
	EXTERN	g_FCexitflag
	EXTERN	g_comval
	EXTERN	g_music_vars
	EXTERN	g_result
	EXTERN	musicpSendCommand
	EXTERN	need_draw
	EXTERN	return_to_play
	EXTERN	ui_auto_update
	PUBLIC	ui_followAB
	PUBLIC	ui_followRec
	EXTERN	ui_run_realtime
	EXTERN	ui_show_batt
	EXTERN	wavrProceed
	EXTERN	wavrSendCommand
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_CMP_L02
	EXTERN	?SL_CMP_L03
	EXTERN	?L_INC_L03
	EXTERN	?L_DEC_L03
	EXTERN	?L_DECASG_L03
	EXTERN	?S_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	AP_UI_FL
ui_followRec:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                        SDK30F_D1
; 4.	*                     music player follow compare sub
; 5.	*
; 6.	*                (c) Copyright 2002, Actions Co,Ld.
; 7.	*                        All Right Reserved
; 8.	*
; 9.	* File: ui_follow.c
; 10.	* By  : rcmai
; 11.	* Version: 1> v1.00     first version     2004-3-19 8:28
; 12.	*******************************************************************************
; 13.	* $Id: ui_follow.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 14.	*******************************************************************************
; 15.	*/
; 16.	
; 17.	#include "ap_music.h"
; 18.	
; 19.	#define DEF_RecLowBatt 5//定义最低能录音的电压
; 20.	
; 21.	//判断是低电的次数,当电压值低于DEF_RecLowBatt值次数超过这个值时确认为低电
; 22.	#define DEF_RecLowBatTime 5
; 23.	extern char return_to_play;        //为一表示从其他界面返回播放界面
; 24.	extern BYTE Replaytimes_CNT; //
; 25.	extern bool ReturnNotInit;   //TRUE:表示下一个调用不用初始化,
; 26.	extern WORD ABPointTimeSize;
; 27.	extern bool g_FCexitflag;
; 28.	
; 29.	void DealForExitRec( void ); //退出录音时的处理
; 30.	void Show_time_FC( void );
; 31.	void OpenMusic( void );
; 32.	
; 33.	#pragma codeseg(AP_UI_FL)
; 34.	/*
; 35.	********************************************************************************
; 36.	*             int ui_followRec( void )
; 37.	*
; 38.	* Description : 跟读--------录音子状态
; 39.	*
; 40.	* Arguments   : void
; 41.	*
; 42.	* Returns     : int
; 43.	*               RESULT_UI_STOP: 表示要进入停止状态,此时所有module已关闭
; 44.	*               key: 热健消息
; 45.	*               NULL: 表示正常退出
; 46.	*
; 47.	* Notes       : 在此状态下,按play到stop状态;按mode到play;按NEXT到对比状态;
; 48.	*
; 49.	********************************************************************************
; 50.	*/
; 51.	int ui_followRec( void )
; 52.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65522
	PUSH	IY
; 53.	    int key;
; 54.	    long DiskSpace;
; 55.	    HANDLE TempFileHandle;
; 56.	    BYTE LowBatt_CNT = 0;//低电计数器
	LD	(IX-6),0
; 57.	    int result;
; 58.	
; 59.	    if (++Replaytimes_CNT > g_music_vars.replaytimes)
	LD	HL,Replaytimes_CNT
	INC	(HL)
	LD	B,(HL)
	LD	A,(g_music_vars+4)
	CP	B
	LD	DE,?0004
	JR	NC,?0003
?0002:
; 60.	    {
; 61.	        FS_FRemove(FollowReadTempFileName); //如有这个文件就删除
	CALL	LWRD FS_FRemove
; 62.	        OpenMusic();
	CALL	LWRD ?0134
; 63.	        RePlayStatus = ABLoopPlay;
; 64.	        UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 65.	        need_draw = TRUE;
	JR	?0092
; 66.	        return NULL;
; 67.	    }
?0003:
; 68.	
; 69.	
; 70.	    FS_FRemove(FollowReadTempFileName); //如有这个文件就删除
	CALL	LWRD FS_FRemove
; 71.	    DiskSpace = FS_GetSpace(1);
	LD	E,1
	CALL	LWRD FS_GetSpace
	LD	(IX-12),L
	LD	(IX-11),H
	LD	(IX-10),C
	LD	(IX-9),B
; 72.	
; 73.	    //如果磁盘空间少于100k不能跟读
; 74.	    //if( DiskSpace  <= 32 + 20 )
; 75.	    if( DiskSpace  <= 200 )
	PUSH	BC
	PUSH	HL
	LD	BC,0
	LD	HL,200
	CALL	LWRD ?SL_CMP_L03
	JR	C,?0006
?0005:
; 76.	    {
; 77.	        DisplayErrMsg(MWRIERR);
	CALL	LWRD ?0136
; 78.	        OpenMusic();
	LD	A,BYTE3 OpenMusic
	LD	HL,LWRD OpenMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 79.	        RePlayStatus = ABLoopPlay;
	LD	A,3
	LD	(RePlayStatus),A
; 80.	        //UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 81.	        SetFullInterface();
	XOR	A
	LD	(ui_auto_update),A
	LD	HL,UpDisplayFlag
	LD	A,(HL)
	OR	193
	LD	(HL),A
	INC	HL
	LD	(HL),255
; 82.	        need_draw = TRUE;
?0092:
	JR	?0093
; 83.	        return NULL;
; 84.	    }
?0006:
; 85.	
; 86.	    TempFileHandle = FS_FCreate(FollowReadTempFileName);
	LD	DE,?0004
	CALL	LWRD FS_FCreate
	LD	(IX-8),L
	LD	(IX-7),H
; 87.	    if( TempFileHandle == NULL )
	LD	A,L
	OR	H
	JR	NZ,?0008
?0007:
; 88.	    {
; 89.	        switch ( FS_GetInfo() )
	CALL	LWRD FS_GetInfo
	CP	6
	JR	NZ,?0011
?0010:
; 90.	        {
; 91.	        case FS_INFO_SPACE_OUT:       //6      表示文件操作或目录操作没有磁盘空间,不能写数据或者扩展子目录
; 92.	            DisplayErrMsg(MWRIERR);
	LD	DE,394
	JR	?0079
; 93.	            break;
?0011:
	CP	7
	JR	NZ,?0009
; 94.	        case FS_INFO_DIR_OUT:         //7      文件操作根目录目录项满
; 95.	            DisplayErrMsg(MDIROUT);
	LD	DE,397
?0079:
	CALL	LWRD ?0137
; 96.	            break;
?0012:
; 97.	
; 98.	        default:
; 99.	            break;
?0009:
; 100.	        }
; 101.	        OpenMusic();
	CALL	LWRD ?0134
; 102.	        RePlayStatus = ABLoopPlay;
; 103.	        UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 104.	        need_draw = TRUE;
?0093:
	JR	?0094
; 105.	        return NULL;
; 106.	    }
?0008:
; 107.	    {
; 108.	        char *i;
; 109.	        i = (char *)0x1000;
	LD	(IX-2),16
; 110.	        FS_FWrite(i, 1, TempFileHandle);
	PUSH	HL
	LD	C,1
	LD	E,B
	LD	D,(IX-2)
	CALL	LWRD FS_FWrite
	POP	HL
; 111.	    }
; 112.	    FS_FClose( TempFileHandle );
	LD	E,(IX-8)
	LD	D,(IX-7)
	CALL	LWRD FS_FClose
; 113.	    FS_FRemove(FollowReadTempFileName);
	LD	DE,?0004
	CALL	LWRD FS_FRemove
; 114.	
; 115.	
; 116.	    // 如电量不足够,就退出。
; 117.	    g_result = GetBattery();
	CALL	LWRD GetBattery
	LD	C,A
	LD	B,0
	LD	(g_result),BC
; 118.	    if(g_result <= DEF_RecLowBatt)
	LD	HL,5
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0014
?0013:
; 119.	    {
; 120.	        DisplayErrMsg( MPWROUT );
	LD	DE,396
	CALL	LWRD ?0135
; 121.	        OpenMusic();
; 122.	        //RePlayStatus = ABLoopPlay;
; 123.	        RePlayStatus = NormalPlay;
; 124.	        UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 125.	        need_draw = TRUE;
?0094:
	JR	?0095
; 126.	        return NULL;
; 127.	    }
?0014:
; 128.	
; 129.	    //使控件不能出来
; 130.	    ui_run_realtime = TRUE;
	LD	A,1
	LD	(ui_run_realtime),A
; 131.	
; 132.	    BankSwitch((unsigned long)wavrSendCommand >> 16);
	LD	E,BYTE3 wavrSendCommand
	LD	C,B
	CALL	LWRD BankSwitch
; 133.	    wavrSendCommand(MC_OPEN, NULL);
	LD	E,1
	CALL	LWRD ?0138
; 134.	    if( !wavrSendCommand(MC_LOAD, (int)FollowReadTempFileName) )
	LD	BC,?0004
	LD	E,3
	CALL	LWRD ?0138
	INC	L
	DEC	L
	JR	NZ,?0016
?0015:
; 135.	    {
; 136.	        DisplayErrMsg( MWRIERR );
	CALL	LWRD ?0136
; 137.	        OpenMusic();
	CALL	LWRD ?0134
; 138.	        RePlayStatus = ABLoopPlay;
; 139.	        UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 140.	        need_draw = TRUE;
?0095:
	JP	LWRD ?0099
; 141.	        return NULL;
; 142.	    }
?0016:
?0018:
; 143.	
; 144.	    //在开始前把清按键,下面才开始响应按键
; 145.	    while (ap_get_message() != 0);
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0016
?0019:
?0017:
; 146.	
; 147.	    wavrSendCommand(MC_RECORD, NULL);
	LD	C,A
	LD	B,A
	LD	E,8
	CALL	LWRD ?0138
; 148.	    UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
	LD	HL,UpDisplayFlag
	INC	HL
	SET	3,(HL)
; 149.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 150.	    g_2HZ_CNT = 0;
	LD	HL,0
	LD	(g_2HZ_CNT),HL
?0021:
; 151.	
; 152.	
; 153.	    while (1)
; 154.	    {
; 155.	        result = wavrProceed();
	LD	A,BYTE3 wavrProceed
	LD	HL,LWRD wavrProceed
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 156.	
; 157.	        //if( wavrProceed() == 1 )
; 158.	        if( result == 1 )
	LD	A,1
	XOR	L
	OR	H
	JR	NZ,?0024
?0023:
; 159.	        {
; 160.	            if( DiskSpace--  <= 200 )
	LD	L,(IX-12)
	LD	H,(IX-11)
	LD	C,(IX-10)
	LD	B,(IX-9)
	PUSH	BC
	PUSH	HL
	CALL	LWRD ?L_DEC_L03
	LD	(IX-12),L
	LD	(IX-11),H
	LD	(IX-10),C
	LD	(IX-9),B
	LD	C,A
	LD	B,A
	LD	HL,200
	CALL	LWRD ?SL_CMP_L03
	JR	C,?0029
?0025:
; 161.	            {
; 162.	                DealForExitRec();
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 163.	                DisplayErrMsg(MWRIERR);
	CALL	LWRD ?0136
; 164.	                RePlayStatus = FollowAB;
	LD	A,5
	LD	(RePlayStatus),A
; 165.	              //  SetFullInterface();   
; 166.	                return_to_play=1; 
	LD	A,1
	LD	(return_to_play),A
; 167.	                return NULL;
	JP	LWRD ?0080
; 168.	            }
?0026:
?0024:
; 169.	        }
; 170.	        else if ( result == -1 )
	LD	A,L
	AND	H
	INC	A
	JR	NZ,?0029
?0028:
; 171.	        {
; 172.	            DealForExitRec();
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 173.	            DisplayErrMsg(MREADERR);
	LD	DE,393
	JP	LWRD ?0100
; 174.	            OpenMusic();
; 175.	            RePlayStatus = NormalPlay;
; 176.	            UpDisplayFlag = UpDisplayFlag | up_MPRLmode;
; 177.	            need_draw = TRUE;
; 178.	            return NULL;
; 179.	        }
?0029:
?0027:
; 180.	
; 181.	
; 182.	    ///wavrProceed();
; 183.	        if (need_draw)
	LD	A,(need_draw)
	OR	A
	JR	Z,?0031
?0030:
; 184.	        {
; 185.	            Show_time_FC(); //显示比特率
	LD	A,BYTE3 Show_time_FC
	LD	HL,LWRD Show_time_FC
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 186.	            RefreshMainScreen();
	LD	A,BYTE3 RefreshMainScreen
	LD	HL,LWRD RefreshMainScreen
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 187.	            need_draw = FALSE;
	XOR	A
	LD	(need_draw),A
?0031:
; 188.	        }
; 189.	
; 190.	        key = ap_get_message();
	CALL	LWRD ?0139
; 191.	
; 192.	        switch (key)
	CALL	LWRD ?S_V_SWITCH_L06
	DEFW	7
	DEFW	28
	DEFW	29
	DEFW	33
	DEFW	37
	DEFW	38
	DEFW	48
	DEFW	49
	DEFW	?0044
	DEFW	?0035
	DEFW	?0036
	DEFW	?0035
	DEFW	?0037
	DEFW	?0034
	DEFW	?0032
	DEFW	?0038
?0033:
; 193.	        {
; 194.	            case AP_MSG_STANDBY:
; 195.	                break;
?0034:
; 196.	
; 197.	            case AP_KEY_PLAY | AP_KEY_UP:                   //进入stop状态
; 198.	                DealForExitRec();//关闭录音模块
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 199.	                RePlayStatus = NormalPlay;
; 200.	                    /*
; 201.	                    //************
; 202.	                    //注:因为这里退出时外面要淡出,所以会发出声音,
; 203.	                    //这里把音量设为0就相当于不淡出,这只是权余之计
; 204.	                    //以后希望能改掉
; 205.	                    SetPAVolume(0);
; 206.	
; 207.	                    //由于在MC_PLAY命令中用这个标志来判断是否要设音量,这里送
; 208.	                    //个非0就是为了认音量为0,从而在开始放MUSIC后不送出声音
; 209.	                    g_FadeInStatusFlag = 2;
; 210.	                    OpenMusic();
; 211.	                    g_FadeInStatusFlag = 0;
; 212.	                    //*************
; 213.	                    */
; 214.	
; 215.	                g_FCexitflag = TRUE;
; 216.	                OpenMusic();
	CALL	LWRD ?0133
; 217.	                //musicpSendCommand(MC_SETVOLUME, 0);    //让音量为0,这可在淡出时没声
; 218.	
; 219.	                //UpDisplayFlag=UpDisplayFlag | up_MPRLmode;
; 220.	                SetFullInterface();
; 221.	                need_draw = TRUE;
; 222.	                return RESULT_UI_STOP2; //选关播放后回到停止界面
	LD	HL,103
; 223.	
; 224.	            case AP_KEY_AB | AP_KEY_UP:
	JP	LWRD ?0052
?0035:
; 225.	            case AP_KEY_NEXT | AP_KEY_UP:                   //进入对比状态
; 226.	                DealForExitRec();//关闭录音模块
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 227.	                RePlayStatus = CompareAB;
	LD	A,7
	JP	LWRD ?0091
; 228.	                //UpDisplayFlag=UpDisplayFlag | up_MPRLmode;
; 229.	                //need_draw = TRUE;
; 230.	                return NULL;
; 231.	
; 232.	            case AP_KEY_MODE | AP_KEY_UP:                   //进入正常播放状态
?0036:
; 233.	                DealForExitRec();//关闭录音模块
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 234.	                OpenMusic();
	LD	A,BYTE3 OpenMusic
	LD	HL,LWRD OpenMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 235.	                RePlayStatus = NormalPlay;
	XOR	A
	LD	(RePlayStatus),A
; 236.	                SetFullInterface();
	JR	?0101
; 237.	                need_draw = TRUE;
; 238.	                return NULL;
; 239.	
; 240.	            case AP_KEY_PREV | AP_KEY_UP:                   //进入ab播放状态
?0037:
; 241.	                DealForExitRec();//关闭录音模块
	LD	A,BYTE3 DealForExitRec
	LD	HL,LWRD DealForExitRec
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 242.	                OpenMusic();
	LD	A,BYTE3 OpenMusic
	LD	HL,LWRD OpenMusic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 243.	                RePlayStatus = ABLoopPlay;
	LD	A,3
	LD	(RePlayStatus),A
; 244.	                //UpDisplayFlag=UpDisplayFlag | up_MPRLmode |;

⌨️ 快捷键说明

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