ui_stop.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,133 行 · 第 1/4 页
LST
1,133 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:01:06 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_music\ui_stop.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_stop.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_stop.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_stop.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\AP\AP_MUSIC\ui_stop.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_stop(17)
\ 0000 RSEG AP_UI_STP(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN BackupCurrentTime
\ 0000 PUBLIC CaltimeFlag
\ 0000 EXTERN ChangeMusic
\ 0000 EXTERN CheckMusicType
\ 0000 EXTERN DisplayErrMsg
\ 0000 EXTERN DisplayTimeRollback
\ 0000 EXTERN ErrReport
\ 0000 EXTERN FadeOut
\ 0000 EXTERN GetInformation
\ 0000 EXTERN PlayStatus
\ 0000 EXTERN RefreshMainScreen
\ 0000 EXTERN UpDisplayFlag
\ 0000 EXTERN UpdateFileSelector
\ 0000 PUBLIC WaitForCaltimeCNT
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNextFile
\ 0000 EXTERN fselGetNo
\ 0000 EXTERN fselGetPrevFile
\ 0000 EXTERN fselGetTotal
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_FCexitflag
\ 0000 EXTERN g_OldSecTempBackup
\ 0000 EXTERN g_Openparam
\ 0000 EXTERN g_PowerOffFlag
\ 0000 EXTERN g_ScrollFlag
\ 0000 EXTERN g_TagInfoBuf
\ 0000 EXTERN g_TagInfoBuf1
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_currentMusicType
\ 0000 EXTERN g_introCNT
\ 0000 EXTERN g_introCntMode
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN g_musicamount
\ 0000 EXTERN g_musicsequence
\ 0000 EXTERN g_result
\ 0000 EXTERN ifSelBuffToltalTimeFlag
\ 0000 EXTERN make_dirname
\ 0000 EXTERN musicpSendCommand
\ 0000 EXTERN need_draw
\ 0000 EXTERN slider
\ 0000 PUBLIC testram
\ 0000 EXTERN ui_auto_update
\ 0000 EXTERN ui_play
\ 0000 EXTERN ui_slider
\ 0000 PUBLIC ui_stop
\ 0000 PUBLIC ui_stop_loop
\ 0000 EXTERN ui_stop_menu
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG AP_UI_STP
\ 0000 ui_stop:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * This program demostrates how to build an AP
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: ui_stop.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
9 *******************************************************************************
10 */
11 #include "ap_music.h"
12 char testram = 0;
13
14 char WaitForCaltimeCNT;//在停止状态下先不计时,到无按键动作一定时间后再开始计时
15 // 这样可以提高在停止状态时按next 跳歌的速度.
16 bool CaltimeFlag; //true: 不用再算时间
17 extern void make_dirname(void); //false: 未算时间
18
19 extern bool g_FCexitflag;
20
21 int ui_stop_loop(void);
22 int DealForDRMsong(void);
23 void ttest(void);
24 bool DisplayTimeRollback(void);
25
26 #pragma codeseg(AP_UI_STP)
27 //======================================================================================
28 //RESULT_CURR_UI: 还要处在当前界面
29 //RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
30 //RESULT_LAST_UI: 到上一级界面
31 //--------------------------------------------------------------------------------------
32 int ui_stop(void)
33 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
34 int result;
35 ap_message_init(NULL);//开始算STANDBY 时间
\ 0002 CDDD00 CALL LWRD ?0136
\ 0005 ?0004:
36
37 do
38 {
39 if (UpdateFileSelector() == 0)
\ 0005 3E00 LD A,BYTE3 UpdateFileSelector
\ 0007 210000 LD HL,LWRD UpdateFileSelector
\ 000A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 000D 7D LD A,L
\ 000E B4 OR H
\ 000F CAD500 JP Z,?0111
\ 0012 ?0005:
40 {
41 return 0;
42 }
\ 0012 ?0006:
43
44 g_musicamount = FSELGetTotal();
\ 0012 3E00 LD A,BYTE3 fselGetTotal
\ 0014 210000 LD HL,LWRD fselGetTotal
\ 0017 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 001A 220000 LD (g_musicamount),HL
45 g_musicsequence = FSELGetNo();
\ 001D 3E00 LD A,BYTE3 fselGetNo
\ 001F 210000 LD HL,LWRD fselGetNo
\ 0022 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0025 220000 LD (g_musicsequence),HL
46 FSELSetMode(g_music_vars.repeat_mode);
\ 0028 CD9701 CALL LWRD ?0142
47 make_dirname();
\ 002B 3E00 LD A,BYTE3 make_dirname
\ 002D 210000 LD HL,LWRD make_dirname
\ 0030 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
48 g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
\ 0033 112100 LD DE,g_music_vars+33
\ 0036 3E00 LD A,BYTE3 CheckMusicType
\ 0038 210000 LD HL,LWRD CheckMusicType
\ 003B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 003E 7D LD A,L
\ 003F 320000 LD (g_currentMusicType),A
49
50 //TEST_UIST =0x73;
51 FSELSetMode( FSEL_ALL_REPEATALL );
52 FSELGetNext(g_music_vars.location.filename);
53 fselGetLocation(& g_music_vars.location);
54 GetInformation();
\ 0042 CD6F01 CALL LWRD ?0139
55 memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
\ 0045 011400 LD BC,20
\ 0048 110000 LD DE,g_TagInfoBuf1
\ 004B 210000 LD HL,g_TagInfoBuf
\ 004E EDB0 LDIR
56 FSELGetPrev(g_music_vars.location.filename);
\ 0050 112100 LD DE,g_music_vars+33
\ 0053 3E00 LD A,BYTE3 fselGetPrevFile
\ 0055 210000 LD HL,LWRD fselGetPrevFile
\ 0058 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
57 fselGetLocation(& g_music_vars.location);
\ 005B 110700 LD DE,g_music_vars+7
\ 005E 3E00 LD A,BYTE3 fselGetLocation
\ 0060 210000 LD HL,LWRD fselGetLocation
\ 0063 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
58 FSELSetMode(g_music_vars.repeat_mode);
\ 0066 CD9701 CALL LWRD ?0142
59 GetInformation(); //取文件信息
\ 0069 CD8F01 CALL LWRD ?0140
60 musicpSendCommand( MC_OPEN, (int)& g_Openparam );
\ 006C 010000 LD BC,g_Openparam
\ 006F 1E01 LD E,1
\ 0071 CDA701 CALL LWRD ?0143
61 musicpSendCommand(MC_LOAD, NULL);//04-4-23 9:32
\ 0074 010000 LD BC,0
\ 0077 1E03 LD E,3
\ 0079 CDA701 CALL LWRD ?0143
62 SetFullInterface();
\ 007C AF XOR A
\ 007D 320000 LD (ui_auto_update),A
\ 0080 210000 LD HL,UpDisplayFlag
\ 0083 7E LD A,(HL)
\ 0084 F6C1 OR 193
\ 0086 77 LD (HL),A
\ 0087 23 INC HL
\ 0088 36FF LD (HL),255
63 if(PlayStatus==PauseSta) //add by zxs for not refresh background when pause
\ 008A 3A0000 LD A,(PlayStatus)
\ 008D 3D DEC A
\ 008E 2010 JR NZ,?0008
\ 0090 ?0007:
64 {
65 UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic;
\ 0090 210000 LD HL,UpDisplayFlag
\ 0093 CB86 RES 0,(HL)
66 UpDisplayFlag=UpDisplayFlag & clr_musiccurrenttime;
\ 0095 23 INC HL
\ 0096 CB8E RES 1,(HL)
67 UpDisplayFlag=UpDisplayFlag & clr_musicbitrate;
\ 0098 210000 LD HL,UpDisplayFlag
\ 009B 23 INC HL
\ 009C CBAE RES 5,(HL)
68 }
69 else
\ 009E 1804 JR ?0009
\ 00A0 ?0008:
70 PlayStatus = StopSta;
\ 00A0 AF XOR A
\ 00A1 320000 LD (PlayStatus),A
\ 00A4 ?0009:
71 need_draw = TRUE;
\ 00A4 3E01 LD A,1
\ 00A6 320000 LD (need_draw),A
72 musicpSendCommand(MC_CALTIME, NULL); //zxs add
\ 00A9 010000 LD BC,0
\ 00AC CDA501 CALL LWRD ?0144
73 CaltimeFlag=TRUE;
\ 00AF 3E01 LD A,1
\ 00B1 320100 LD (CaltimeFlag),A
74 g_result = ui_stop_loop();
\ 00B4 3E00 LD A,BYTE3 ui_stop_loop
\ 00B6 21AF01 LD HL,LWRD ui_stop_loop
\ 00B9 CD5B01 CALL LWRD ?0138
75 }while( (g_result == RESULT_CURR_UI)
76 || (g_result == RESULT_UI_STOP)
77 || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
\ 00BC 7D LD A,L
\ 00BD B4 OR H
\ 00BE CA0500 JP Z,?0004
\ 00C1 3E66 LD A,102
\ 00C3 AD XOR L
\ 00C4 B4 OR H
\ 00C5 CA0500 JP Z,?0004
\ 00C8 3E67 LD A,103
\ 00CA AD XOR L
\ 00CB B4 OR H
\ 00CC CA0500 JP Z,?0004
\ 00CF ?0002:
78 if (g_result == RESULT_LAST_UI)
\ 00CF 3E65 LD A,101
\ 00D1 AD XOR L
\ 00D2 B4 OR H
\ 00D3 2003 JR NZ,?0013
\ 00D5 ?0012:
79 {
80 return NULL;//不带参数回到上一级
\ 00D5 ?0111:
\ 00D5 210000 LD HL,0
81 }
\ 00D8 ?0013:
82 return g_result;//带参数回到上一级
83 }
\ 00D8 ?0014:
\ 00D8 D1 POP DE
\ 00D9 C1 POP BC
\ 00DA C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00DD ?0136:
\ 00DD 110000 LD DE,0
\ 00E0 3E00 LD A,BYTE3 ap_message_init
\ 00E2 210000 LD HL,LWRD ap_message_init
\ 00E5 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 00E8 ?0137:
\ 00E8 011400 LD BC,20
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?