📄 ui_play.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:08 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_voice\ui_play.c #
# List file = d:\case_i_d913f\ap\ap_voice\list\ui_play.lst #
# Object file = d:\case_i_d913f\ap\ap_voice\obj\ui_play.r01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_voice\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_voice\List\ -q -t8 #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_VOICE\ui_play.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_play(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN Cur_Status
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN GetBattery
\ 0000 EXTERN Scroll
\ 0000 EXTERN ScrollInit
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPAVolume
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN ag8pSendCommand
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 PUBLIC c_play_string
\ 0000 PUBLIC fade_in
\ 0000 PUBLIC fade_out
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_file_name_time
\ 0000 EXTERN g_play_status
\ 0000 PUBLIC g_rSetPlayStatus
\ 0000 EXTERN g_voice_type
\ 0000 EXTERN g_voice_vars
\ 0000 PUBLIC g_volcounter
\ 0000 PUBLIC is_ff_rw
\ 0000 EXTERN itoa_2
\ 0000 EXTERN list
\ 0000 EXTERN main_ResShowPic
\ 0000 EXTERN need_sel_file
\ 0000 EXTERN numsave
\ 0000 PUBLIC play_pause
\ 0000 PUBLIC play_string
\ 0000 EXTERN show_loop
\ 0000 PUBLIC show_play
\ 0000 PUBLIC show_play_menu_flash
\ 0000 EXTERN show_replay
\ 0000 EXTERN show_speed
\ 0000 PUBLIC time_draw
\ 0000 EXTERN ui_auto_update
\ 0000 EXTERN ui_draw
\ 0000 EXTERN ui_popup_list
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_show_d
\ 0000 PUBLIC voiceSendCommand
\ 0000 PUBLIC vol_callback
\ 0000 EXTERN wavpSendCommand
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?L_MUL_L03
\ 0000 EXTERN ?SL_DIV_L03
\ 0000 EXTERN ?S_S_SWITCH_L06
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?STRCAT_L11
\ 0000 RSEG CODE
\ 0000 vol_callback:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * voice player play program.
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_play.c,v 1.2 2006/06/26 01:16:01 tangwh Exp $
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "basal.h"
14 #include "enhanced.h"
15 #include "ap_common.h"
16 #include "ap_voice.h"
17 #include "define.h"
18
19 //int FlashCount =0;
20 BYTE is_ff_rw=0; //normal: 0, fast frowarding:1, rewinding: 2
21
22 const WORD play_string[4]={VPLAYM1, VPLAYM2, VPLAYM3, VPLAYM4};
23
24 const WORD c_play_string[3]={VPLAYM1, VPLAYM3, VPLAYM4};
25
26
27 BOOL play_pause=TRUE; // 为了减少BANK的切换,增加这个变量
28 extern BOOL need_sel_file;
29 extern BOOL g_card_ok; //储存卡是否可用
30 extern BOOL g_card_in_using;
31 extern void replay();
32 ///-extern void Scroll( char * scrollstr, bool mode,char language);
33 BYTE GetRightPostion(BYTE CurrentPosition);
34 void DisplayMotive(int Count,region_t *picpos,bool Sex);
35
36 char g_volcounter=0;
37 bool g_rSetPlayStatus=FALSE;
38 /*
39 ********************************************************************************
40 * Description : 音量设置回调函数
41 *
42 * Arguments :
43 *
44 * Returns :
45 *
46 * Notes : 注意对0音量的处理
47 *
48 ********************************************************************************
49 */
50 void vol_callback(int value)
51 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
52 g_voice_vars.volume = (char)value;
\ 0002 7B LD A,E
\ 0003 320200 LD (g_voice_vars+2),A
53
54 if(g_voice_vars.volume == 0)
\ 0006 B7 OR A
\ 0007 2004 JR NZ,?0003
\ 0009 ?0002:
55 {
56 voiceSendCommand(MC_SETVOLUME, 0);
\ 0009 4F LD C,A
\ 000A 47 LD B,A
\ 000B 1803 JR ?0182
57 }
58 else
\ 000D ?0003:
59 {
60 voiceSendCommand(MC_SETVOLUME, 3);
\ 000D 010300 LD BC,3
\ 0010 ?0182:
\ 0010 1E40 LD E,64
\ 0012 CD2500 CALL LWRD ?0221
\ 0015 ?0004:
61 }
62 SetPAVolume(g_voice_vars.volume);
\ 0015 ED5B0200 LD DE,(g_voice_vars+2)
\ 0019 CD0000 CALL LWRD SetPAVolume
63 }
\ 001C E1 POP HL
\ 001D C1 POP BC
\ 001E C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0021 ?0222:
\ 0021 4D LD C,L
\ 0022 44 LD B,H
\ 0023 1E80 LD E,128
\ 0025 ?0221:
\ 0025 3E00 LD A,BYTE3 voiceSendCommand
\ 0027 212D00 LD HL,LWRD voiceSendCommand
\ 002A C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 002D voiceSendCommand:
64
65 /*
66 ******************************************************************************
67 * Description : 根据当前文件类型调用适当的basal module 函数
68 *
69 * Arguments :
70 全局变量
71 g_voice_type = 1, wav
72 g_voice_type = 2, act(ag8)
73 *
74 * Returns :
75 *
76 * Notes :
77 *
78 ********************************************************************************
79 */
80 BOOL voiceSendCommand(BYTE cmd, int param)
81 {
\ 002D DDE5 PUSH IX
\ 002F D5 PUSH DE
82 if(g_voice_type == 1 )
\ 0030 3A0000 LD A,(g_voice_type)
\ 0033 3D DEC A
\ 0034 2007 JR NZ,?0006
\ 0036 ?0005:
83 {
84 return wavpSendCommand(cmd, param);
\ 0036 3E00 LD A,BYTE3 wavpSendCommand
\ 0038 210000 LD HL,LWRD wavpSendCommand
\ 003B 180C JR ?0184
85 }
\ 003D ?0006:
86 else if(g_voice_type == 2)
\ 003D 3A0000 LD A,(g_voice_type)
\ 0040 3D DEC A
\ 0041 3D DEC A
\ 0042 200A JR NZ,?0008
\ 0044 ?0007:
87 {
88 return ag8pSendCommand(cmd, param);
\ 0044 3E00 LD A,BYTE3 ag8pSendCommand
\ 0046 210000 LD HL,LWRD ag8pSendCommand
\ 0049 ?0184:
\ 0049 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
89 }
\ 004C 1802 JR ?0009
\ 004E ?0008:
90 else ASSERT(FALSE);
91
92 return FALSE; //avoid warning
\ 004E 2E00 LD L,0
93 }
\ 0050 ?0009:
\ 0050 F1 POP AF
\ 0051 DDE1 POP IX
\ 0053 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0056 time_draw:
94
95 /*
96 ********************************************************************************
97 * Description : 显示时间
98 *
99 * Arguments : part = 0,1, long format: 00:00:00
100 part = 2,3, short format: 00:00
101 *
102 * Returns :
103 *
104 * Notes :
105 *
106 ********************************************************************************
107 */
108 void time_draw(const time_t *time, bool para)
109 {
\ 0056 FDE5 PUSH IY
\ 0058 DDE5 PUSH IX
\ 005A DD210000 LD IX,0
\ 005E DD39 ADD IX,SP
\ 0060 C5 PUSH BC
\ 0061 D5 PUSH DE
\ 0062 21ECFF LD HL,65516
\ 0065 39 ADD HL,SP
\ 0066 F9 LD SP,HL
110 char buf[9]; //00:00:00
111 long int totaltime=0;
112 long int nowtime=0;
113 int i,num;
114
115 if(g_rSetPlayStatus)
\ 0067 3A0300 LD A,(g_rSetPlayStatus)
\ 006A B7 OR A
\ 006B 2807 JR Z,?0011
\ 006D ?0010:
116 {
117 para = FALSE;
118 g_rSetPlayStatus = FALSE;
\ 006D AF XOR A
\ 006E 320300 LD (g_rSetPlayStatus),A
\ 0071 DD77FE LD (IX-2),A
\ 0074 ?0011:
119 }
120
121 totaltime=(long int)g_play_status.total_time.hour*3600+(int)g_play_status.total_time.minute*60+g_play_status.total_time.second;
\ 0074 ED4B0400 LD BC,(g_play_status+4)
\ 0078 47 LD B,A
\ 0079 113C00 LD DE,60
\ 007C CD0000 CALL LWRD ?S_MUL_L02
\ 007F EB EX DE,HL
\ 0080 7C LD A,H
\ 0081 07 RLCA
\ 0082 9F SBC A,A
\ 0083 4F LD C,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -