📄 ui_stop.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:39:12 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_voice\ui_stop.c #
# List file = d:\case_i_d913f\ap\ap_voice\list\ui_stop.lst #
# Object file = d:\case_i_d913f\ap\ap_voice\obj\ui_stop.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.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_stop(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 PUBLIC Cur_Status
\ 0000 EXTERN DRV_ActiveDrive
\ 0000 EXTERN GetBattery
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN Scroll
\ 0000 EXTERN ScrollInit
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN UpdateFileSelector
\ 0000 EXTERN ap_get_event
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN ap_sleep
\ 0000 EXTERN do_play
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNextFile
\ 0000 EXTERN fselGetNo
\ 0000 EXTERN fselGetTotal
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetLocation
\ 0000 EXTERN g_autoswitch_counter
\ 0000 EXTERN g_bit_rate_pic
\ 0000 EXTERN g_bit_rate_value
\ 0000 EXTERN g_card_in_using
\ 0000 EXTERN g_card_ok
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_file_name_time
\ 0000 EXTERN g_file_no
\ 0000 EXTERN g_file_total
\ 0000 EXTERN g_first_start
\ 0000 PUBLIC g_firstplay_flag
\ 0000 EXTERN g_from_browser
\ 0000 PUBLIC g_menu_active
\ 0000 EXTERN g_play_format
\ 0000 EXTERN g_play_status
\ 0000 EXTERN g_voice_type
\ 0000 EXTERN g_voice_vars
\ 0000 EXTERN is_ff_rw
\ 0000 EXTERN main_ResShowPic
\ 0000 EXTERN make_dirname
\ 0000 PUBLIC need_restore
\ 0000 EXTERN need_sel_file
\ 0000 EXTERN numsave
\ 0000 EXTERN parse_file
\ 0000 EXTERN sel_next
\ 0000 EXTERN sel_prev
\ 0000 EXTERN show_error
\ 0000 PUBLIC show_stop
\ 0000 EXTERN show_stop_menu
\ 0000 EXTERN time_cmp
\ 0000 EXTERN time_draw
\ 0000 EXTERN ui_draw
\ 0000 EXTERN ui_show_batt
\ 0000 EXTERN ui_show_d
\ 0000 EXTERN ui_show_msg
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_MUL_L02
\ 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 RSEG CODE
\ 0000 show_stop:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * voice player stop program.
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_stop.c,v 1.1.1.1 2006/05/22 03:23:59 selina 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 BOOL g_menu_active;
18 bool g_firstplay_flag = TRUE;
19 extern BOOL need_sel_file;
20 extern BYTE is_ff_rw;
21 BOOL need_restore; //需要断点播放
22
23 char Cur_Status=0;
24 extern BOOL g_card_ok; //储存卡是否可用
25 extern BOOL g_card_in_using; //储存卡是否在使用
26 extern int do_play(BOOL need_restore);
27 extern int show_stop_menu(void);
28 extern void vol_callback(int value);
29 extern void make_dirname(void);
30 /*
31 ********************************************************************************
32 * Description : 停止界面
33 *
34 * Arguments :
35 *
36 * Returns : 结果消息或0
37 *
38 * Notes :
39 *
40 ********************************************************************************
41 */
42 int show_stop(void)
43 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 FDE5 PUSH IY
\ 0004 DDE5 PUSH IX
\ 0006 DD210000 LD IX,0
\ 000A DD39 ADD IX,SP
\ 000C 21EAFF LD HL,65514
\ 000F 39 ADD HL,SP
\ 0010 F9 LD SP,HL
44 int result;
45 WORD event;
46 char key;
47 char card_status;
48 BOOL mc_result;
49 BOOL need_draw=TRUE;
50 BOOL need_parse=TRUE; //need to parse the voice info
51 BOOL cont_playing=FALSE; //连续播放
52 // BOOL need_restore; //需要断点播放
53 BOOL format_ok=TRUE; //文件格式是否有效
54 BOOL file_changed=TRUE; //文件改变
55 // BOOL pa_enabled=FALSE; //pa 是否已经打开
56 need_sel_file = TRUE;
\ 0011 3E01 LD A,1
\ 0013 320000 LD (need_sel_file),A
57 g_menu_active = TRUE;
\ 0016 320000 LD (g_menu_active),A
58 // 断点播放
59 if(g_voice_vars.resore_pointer == 0L) need_restore = FALSE;
\ 0019 DD77F1 LD (IX-15),A
\ 001C DD77F2 LD (IX-14),A
\ 001F DD36F300 LD (IX-13),0
\ 0023 DD77F4 LD (IX-12),A
\ 0026 DD77F5 LD (IX-11),A
\ 0029 213100 LD HL,g_voice_vars+49
\ 002C 5E LD E,(HL)
\ 002D 23 INC HL
\ 002E 56 LD D,(HL)
\ 002F 23 INC HL
\ 0030 4E LD C,(HL)
\ 0031 23 INC HL
\ 0032 46 LD B,(HL)
\ 0033 EB EX DE,HL
\ 0034 7D LD A,L
\ 0035 B4 OR H
\ 0036 B1 OR C
\ 0037 B0 OR B
\ 0038 2802 JR Z,?0159
\ 003A ?0002:
\ 003A ?0003:
60 else need_restore = TRUE;
\ 003A 3E01 LD A,1
\ 003C ?0159:
\ 003C 320100 LD (need_restore),A
\ 003F ?0004:
61
62 if(g_first_start)
\ 003F 3A0000 LD A,(g_first_start)
\ 0042 B7 OR A
\ 0043 2810 JR Z,?0006
\ 0045 ?0005:
63 {
64 mc_result = fselInit(FSEL_TYPE_VOICE, FSEL_ALL_REPEATALL, FSEL_TYPE_COMMONDIR,g_voice_vars.location.disk);
\ 0045 210600 LD HL,g_voice_vars+6
\ 0048 4E LD C,(HL)
\ 0049 C5 PUSH BC
\ 004A 0E00 LD C,0
\ 004C C5 PUSH BC
\ 004D CDE005 CALL LWRD ?0178
\ 0050 F1 POP AF
\ 0051 F1 POP AF
65 mc_result = sel_next(TRUE);
\ 0052 CDEC05 CALL LWRD ?0179
\ 0055 ?0006:
\ 0055 ?0008:
66 }
67
68 while(1)
69 {
70 if(need_sel_file)
\ 0055 3A0000 LD A,(need_sel_file)
\ 0058 B7 OR A
\ 0059 CA1B01 JP Z,?0011
\ 005C ?0010:
71 { // 设置路径,初始化驱动器
72 //re-fix filename empty the fselSetLocation() return TRUE
73 BYTE err_id;
74 if(g_card_ok == FALSE)
\ 005C 3A0000 LD A,(g_card_ok)
\ 005F B7 OR A
\ 0060 2009 JR NZ,?0013
\ 0062 ?0012:
75 {
76 g_voice_vars.location.disk = 'C';
\ 0062 3E43 LD A,67
\ 0064 320600 LD (g_voice_vars+6),A
77 g_card_in_using = FALSE;
\ 0067 AF XOR A
\ 0068 320000 LD (g_card_in_using),A
\ 006B ?0013:
78 }
79
80 mc_result = fselInit(FSEL_TYPE_VOICE, FSEL_ALL_REPEATALL, FSEL_TYPE_COMMONDIR,g_voice_vars.location.disk);
\ 006B 210600 LD HL,g_voice_vars+6
\ 006E 4E LD C,(HL)
\ 006F C5 PUSH BC
\ 0070 0E00 LD C,0
\ 0072 C5 PUSH BC
\ 0073 CDE005 CALL LWRD ?0178
\ 0076 F1 POP AF
\ 0077 F1 POP AF
81 output8(0x4e,input8(0x4e)|0x8);
\ 0078 DB4E IN A,(78)
\ 007A CBDF SET 3,A
\ 007C D34E OUT (78),A
82 mc_result = fselGetNextFile(g_file_name_time);
\ 007E 110000 LD DE,g_file_name_time
\ 0081 3E00 LD A,BYTE3 fselGetNextFile
\ 0083 210000 LD HL,LWRD fselGetNextFile
\ 0086 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0089 DD75F0 LD (IX-16),L
83 if(mc_result == 1)
\ 008C 2D DEC L
\ 008D 204D JR NZ,?0020
\ 008F ?0014:
84 {
85 //output8(0x4e,input8(0x4e)|0x8);
86 mc_result = fselSetLocation(&g_voice_vars.location);
\ 008F 110600 LD DE,g_voice_vars+6
\ 0092 3E00 LD A,BYTE3 fselSetLocation
\ 0094 210000 LD HL,LWRD fselSetLocation
\ 0097 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 009A DD75F0 LD (IX-16),L
87 if(mc_result != 1)
\ 009D 2D DEC L
\ 009E 282D JR Z,?0017
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -