📄 ui_stop_menu.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:14 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_voice\ui_stop_menu.c #
# List file = d:\case_i_d913f\ap\ap_voice\list\ui_stop_menu.lst #
# Object file = d:\case_i_d913f\ap\ap_voice\obj\ui_stop_menu.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_stop_menu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_stop_menu(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DisablePA
\ 0000 EXTERN EnablePA
\ 0000 PUBLIC dir_string
\ 0000 PUBLIC dir_string_card
\ 0000 PUBLIC do_play
\ 0000 EXTERN fade_in
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_DiskStateFlag
\ 0000 EXTERN g_card_in_using
\ 0000 EXTERN g_card_ok
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_menu_active
\ 0000 EXTERN g_voice_vars
\ 0000 EXTERN list
\ 0000 EXTERN need_restore
\ 0000 PUBLIC need_sel_file
\ 0000 EXTERN show_play
\ 0000 PUBLIC show_stop_menu
\ 0000 EXTERN ui_delete
\ 0000 EXTERN ui_delete_all
\ 0000 EXTERN ui_directory
\ 0000 EXTERN ui_err_msg
\ 0000 EXTERN ui_popup_list
\ 0000 EXTERN voiceSendCommand
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_S_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CODE
\ 0000 do_play:
1
2 /*
3 *******************************************************************************
4 * ACTOS AP
5 * voice player stop program.
6 *
7 * (c) Copyright, Actions Co,Ld.
8 * All Right Reserved
9 *
10 * $Id: ui_stop_menu.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
11 *******************************************************************************
12 */
13 #include "actos.h"
14 #include "basal.h"
15 #include "enhanced.h"
16 #include "ap_common.h"
17 #include "ap_voice.h"
18
19 //全局常量
20
21 const WORD dir_string[]={VSTOPM1,/*VSTOPM2,*/VSTOPM3,VSTOPM4,VSTOPM5};
22
23
24 const WORD dir_string_card[]={VSTOPM1,VSTOPM2,VSTOPM3,VSTOPM4,VSTOPM5};
25
26 BOOL need_sel_file;
27 extern BOOL need_restore;
28 extern BOOL g_menu_active;
29 extern BOOL g_card_in_using; //储存卡是否在使用
30 extern BOOL g_card_ok; //储存卡是否可用
31 extern BOOL g_card_in_using; //储存卡是否在使用
32 extern int do_play(BOOL need_restore);
33 extern void make_dirname(void);
34 extern BOOL fade_in(BYTE to_volume);
35 extern BYTE g_DiskStateFlag;
36 /*
37 ********************************************************************************
38 * Description : 执行播放的过程
39 *
40 * Arguments : need_restore, 是否使用restore模式播放
41 全局变量
42 g_voice_vars.resore_pointer
43 g_voice_vars.location.filename
44 *
45 * Returns : 结果消息和0
46 全局变量
47 g_voice_vars.restore_time
48 g_voice_vars.resore_pointer
49 g_voice_vars.location
50 *
51 * Notes :
52 *
53 ********************************************************************************
54 */
55 int do_play(BOOL need_restore)
56 {
\ 0000 C5 PUSH BC
\ 0001 DDE5 PUSH IX
\ 0003 D5 PUSH DE
\ 0004 F5 PUSH AF
\ 0005 F5 PUSH AF
\ 0006 F5 PUSH AF
\ 0007 F5 PUSH AF
57 BOOL mc_result;
58 int result;
59
60 //start codec
61 // if(!pa_enabled)
62 {
63 //power on DAC/PA
64 pa_t pa;
65
66 pa.pa_in.dacin = 1;
\ 0008 210300 LD HL,3
\ 000B 39 ADD HL,SP
\ 000C CBC6 SET 0,(HL)
67 pa.pa_in.fmin = 0;
\ 000E CB8E RES 1,(HL)
68 pa.pa_in.linein = 0;
\ 0010 CB96 RES 2,(HL)
69 pa.pa_in.micin = 0;
\ 0012 CB9E RES 3,(HL)
70 pa.volume = g_voice_vars.volume;
\ 0014 3A0200 LD A,(g_voice_vars+2)
\ 0017 23 INC HL
\ 0018 77 LD (HL),A
71 //pa.volume = 0;
72 EnablePA(&pa);
\ 0019 2B DEC HL
\ 001A EB EX DE,HL
\ 001B CD0000 CALL LWRD EnablePA
73
74 // pa_enabled = TRUE;
75 }
76 mc_result = voiceSendCommand(MC_OPEN, 0);
\ 001E 010000 LD BC,0
\ 0021 1E01 LD E,1
\ 0023 CDA900 CALL LWRD ?0073
77
78 //set volume
79 voiceSendCommand(MC_SETVOLUME, g_voice_vars.volume);
\ 0026 ED4B0200 LD BC,(g_voice_vars+2)
\ 002A 0600 LD B,0
\ 002C 1E40 LD E,64
\ 002E CDA900 CALL LWRD ?0073
80 voiceSendCommand(MC_SETSPEED, g_voice_vars.play_rate);
\ 0031 ED4B0500 LD BC,(g_voice_vars+5)
\ 0035 79 LD A,C
\ 0036 07 RLCA
\ 0037 9F SBC A,A
\ 0038 47 LD B,A
\ 0039 1E46 LD E,70
\ 003B CDA900 CALL LWRD ?0073
81
82 //check if need restore
83 if(need_restore)
\ 003E 210800 LD HL,8
\ 0041 39 ADD HL,SP
\ 0042 AF XOR A
\ 0043 B6 OR (HL)
\ 0044 2808 JR Z,?0003
\ 0046 ?0002:
84 {
85 //debug
86 //if(g_voice_vars.resore_pointer == 0) DUMP("restore ptr:", 0);
87
88 voiceSendCommand(MC_RESTORE, (int)&g_voice_vars.resore_pointer);
\ 0046 013100 LD BC,g_voice_vars+49
\ 0049 1E45 LD E,69
\ 004B CDA900 CALL LWRD ?0073
\ 004E ?0003:
89 }
90
91 fade_in(0); // 淡入
\ 004E 1E00 LD E,0
\ 0050 3E00 LD A,BYTE3 fade_in
\ 0052 210000 LD HL,LWRD fade_in
\ 0055 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
92 mc_result = voiceSendCommand(MC_LOAD, (int)g_voice_vars.location.filename);
\ 0058 012000 LD BC,g_voice_vars+32
\ 005B 1E03 LD E,3
\ 005D CDA900 CALL LWRD ?0073
93 ASSERT(mc_result);
94
95 //change to play ui
96 result = show_play();
\ 0060 3E00 LD A,BYTE3 show_play
\ 0062 210000 LD HL,LWRD show_play
\ 0065 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0068 E5 PUSH HL
\ 0069 DDE1 POP IX
97
98 //keep restore point
99 voiceSendCommand(MC_GETTIME, (int)&g_voice_vars.restore_time);
\ 006B 013500 LD BC,g_voice_vars+53
\ 006E 1E80 LD E,128
\ 0070 CDA900 CALL LWRD ?0073
100
101 //stop codec
102 voiceSendCommand(MC_STOP, 0);
\ 0073 010000 LD BC,0
\ 0076 1E06 LD E,6
\ 0078 CDA900 CALL LWRD ?0073
103 voiceSendCommand(MC_BACKUP, (int)&g_voice_vars.resore_pointer);
\ 007B 013100 LD BC,g_voice_vars+49
\ 007E 1E44 LD E,68
\ 0080 CDA900 CALL LWRD ?0073
104 voiceSendCommand(MC_CLOSE, 0);
\ 0083 010000 LD BC,0
\ 0086 1E02 LD E,2
\ 0088 CDA900 CALL LWRD ?0073
105 DisablePA();
\ 008B CD0000 CALL LWRD DisablePA
106 // basal运行的过程中不能调用enhanced
107 mc_result = fselGetLocation(&g_voice_vars.location);
\ 008E 110600 LD DE,g_voice_vars+6
\ 0091 3E00 LD A,BYTE3 fselGetLocation
\ 0093 210000 LD HL,LWRD fselGetLocation
\ 0096 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
108 ASSERT(mc_result);
109
110 return result;
\ 0099 DDE5 PUSH IX
\ 009B E1 POP HL
111 }
\ 009C EB EX DE,HL
\ 009D 210A00 LD HL,10
\ 00A0 39 ADD HL,SP
\ 00A1 F9 LD SP,HL
\ 00A2 EB EX DE,HL
\ 00A3 DDE1 POP IX
\ 00A5 C1 POP BC
\ 00A6 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00A9 ?0073:
\ 00A9 3E00 LD A,BYTE3 voiceSendCommand
\ 00AB 210000 LD HL,LWRD voiceSendCommand
\ 00AE C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 00B1 show_stop_menu:
112
113 /*
114 ********************************************************************************
115 * Description : 停止界面菜单
116 *
117 * Arguments :
118 *
119 * Returns : 结果消息或0
120 *
121 * Notes : 改变目录 或者 删除文件 会有事件发生
122 *
123 ********************************************************************************
124 */
125 int show_stop_menu(void)
126 {
\ 00B1 C5 PUSH BC
\ 00B2 D5 PUSH DE
\ 00B3 DDE5 PUSH IX
127 int result;
128 static char active=0; //保持选中菜单的序号
129 int temp;
130
131 result = DRV_DetectUD(1); //检查是否有卡
\ 00B5 1E01 LD E,1
\ 00B7 CD0000 CALL LWRD DRV_DetectUD
\ 00BA 4F LD C,A
132 if(result == 0x020)
\ 00BB 3E20 LD A,32
\ 00BD A9 XOR C
\ 00BE 2005 JR NZ,?0006
\ 00C0 ?0005:
133 g_card_ok = TRUE;
\ 00C0 3E01 LD A,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -