ui_stop.lst
来自「MP3 整个 SDK」· LST 代码 · 共 1,232 行 · 第 1/4 页
LST
1,232 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 16:59:35 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_dsc2x_dec\ui_stop.c #
# List file = d:\case_i_d90f\ap\ap_dsc2x_dec\list\ui_stop.lst #
# Object file = d:\case_i_d90f\ap\ap_dsc2x_dec\obj\ui_stop.r01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\Ap_DSC2X_DEC\Obj\ -e #
# -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d90f\ap\Ap_DSC2X_DEC\List\ -q -t8 #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\ap\ap_dsc2x_dec\ui_stop.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_stop(17)
\ 0000 RSEG CODE_1(0)
\ 0000 RSEG CSTR(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 EXTERN FS_Backup
\ 0000 EXTERN FS_CD
\ 0000 EXTERN FS_GetName
\ 0000 EXTERN FS_Restore
\ 0000 EXTERN MenuInPic
\ 0000 EXTERN PutS
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN UpdateFileSelector
\ 0000 PUBLIC active
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 EXTERN dir_name
\ 0000 EXTERN do_play
\ 0000 PUBLIC fileName
\ 0000 EXTERN file_name
\ 0000 EXTERN fselGetByNO
\ 0000 EXTERN fselGetErrID
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNext
\ 0000 EXTERN fselGetNo
\ 0000 EXTERN fselGetPrev
\ 0000 EXTERN fselGetTotal
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetLocation
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_comval
\ 0000 PUBLIC g_file_total
\ 0000 EXTERN g_menu_active
\ 0000 EXTERN g_viewpic_vars
\ 0000 PUBLIC make_dirname
\ 0000 PUBLIC menu_pos
\ 0000 PUBLIC need_sel_file
\ 0000 EXTERN read_idm_data_pic
\ 0000 EXTERN reinit_idm_buf_pic
\ 0000 PUBLIC reset_cur_list_bg_color_pic
\ 0000 PUBLIC sel_next
\ 0000 PUBLIC sel_prev
\ 0000 EXTERN show_active_list_pic
\ 0000 PUBLIC show_stop
\ 0000 EXTERN ui_err_msg
\ 0000 EXTERN unitochar
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_DIV_L02
\ 0000 EXTERN ?S_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?STRCPY_L11
\ 0000 RSEG CODE_1
\ 0000 make_dirname:
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.2 2006/07/14 06:44:15 tangwh Exp $
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "enhanced.h"
14 #include "ap_common.h"
15 #include "display.h"
16 #include "DSCDec.h"
17 #include "ap_picdec.h"
18
19 //#define DEBUG
20 extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
21 int active; //当前文件序号
22 int g_file_total; //总文件数
23 bool need_sel_file;
24 char fileName[50];
25 const char menu_pos[6] = {POSITION_MENU6,
26 POSITION_MENU5,POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1}; //zxs add
27
28 #pragma codeseg(CODE_1)
29 /*
30 ********************************************************************************
31 *
32 ********************************************************************************
33 */
34 void make_dirname(void)
35 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 DDE5 PUSH IX
\ 0004 21E0FF LD HL,65504
\ 0007 39 ADD HL,SP
\ 0008 F9 LD SP,HL
36 int result;
37 char Backbuf[32];
38 // fselGetLocation(&g_viewpic_vars.location);
39 if(g_viewpic_vars.location.path[0]==':')
\ 0009 3A1200 LD A,(g_viewpic_vars+18)
\ 000C FE3A CP 58
\ 000E 200B JR NZ,?0003
\ 0010 ?0002:
40 {
41 strcpy(dir_name,"ROOT");
\ 0010 110000 LD DE,?0004
\ 0013 210000 LD HL,dir_name
\ 0016 CD0000 CALL LWRD ?STRCPY_L11
42 }
43 else
\ 0019 185F JR ?0005
\ 001B ?0003:
44 {
45
46 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 001B 210000 LD HL,0
\ 001E E5 PUSH HL
\ 001F 0E02 LD C,2
\ 0021 23 INC HL
\ 0022 23 INC HL
\ 0023 39 ADD HL,SP
\ 0024 EB EX DE,HL
\ 0025 CD0000 CALL LWRD FS_Backup
\ 0028 E1 POP HL
47 FS_CD("\\");
\ 0029 110500 LD DE,?0006
\ 002C CD0000 CALL LWRD FS_CD
48 memcpy(dir_name, g_viewpic_vars.location.path, 12);
\ 002F 010C00 LD BC,12
\ 0032 110000 LD DE,dir_name
\ 0035 211200 LD HL,g_viewpic_vars+18
\ 0038 EDB0 LDIR
49 result = FS_GetName(dir_name, 14); //取出长名
\ 003A 0E0E LD C,14
\ 003C 110000 LD DE,dir_name
\ 003F CD0000 CALL LWRD FS_GetName
\ 0042 0600 LD B,0
50 if (result != 0)
\ 0044 B7 OR A
\ 0045 2815 JR Z,?0008
\ 0047 ?0007:
51 {
52 unitochar(dir_name, sizeof(dir_name), g_comval.langid);
\ 0047 210C00 LD HL,g_comval+12
\ 004A 4E LD C,(HL)
\ 004B C5 PUSH BC
\ 004C 0E1E LD C,30
\ 004E 110000 LD DE,dir_name
\ 0051 3E00 LD A,BYTE3 unitochar
\ 0053 210000 LD HL,LWRD unitochar
\ 0056 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0059 F1 POP AF
53 }
54 else
\ 005A 1810 JR ?0009
\ 005C ?0008:
55 {
56 memcpy(dir_name, g_viewpic_vars.location.path, 12);
\ 005C 0E0C LD C,12
\ 005E 110000 LD DE,dir_name
\ 0061 211200 LD HL,g_viewpic_vars+18
\ 0064 EDB0 LDIR
57 dir_name[8]=0;
\ 0066 320800 LD (dir_name+8),A
58 dir_name[9]=0;
\ 0069 320900 LD (dir_name+9),A
\ 006C ?0009:
59 }
60 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 006C 210000 LD HL,0
\ 006F E5 PUSH HL
\ 0070 0E02 LD C,2
\ 0072 23 INC HL
\ 0073 23 INC HL
\ 0074 39 ADD HL,SP
\ 0075 EB EX DE,HL
\ 0076 CD0000 CALL LWRD FS_Restore
\ 0079 E1 POP HL
\ 007A ?0005:
61
62 }
63 }
\ 007A 212000 LD HL,32
\ 007D 39 ADD HL,SP
\ 007E F9 LD SP,HL
\ 007F DDE1 POP IX
\ 0081 D1 POP DE
\ 0082 C1 POP BC
\ 0083 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0086 sel_next:
64
65
66
67 BOOL sel_next(BOOL select_all)
68 {
\ 0086 C5 PUSH BC
\ 0087 D5 PUSH DE
\ 0088 F5 PUSH AF
69 BOOL mc_result;
70
71 mc_result = FSELSetMode(FSEL_DIR_REPEATALL);
\ 0089 1E03 LD E,3
\ 008B 3E00 LD A,BYTE3 fselSetMode
\ 008D 210000 LD HL,LWRD fselSetMode
\ 0090 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
72
73 mc_result = fselGetNext(g_viewpic_vars.location.filename);
\ 0093 111E00 LD DE,g_viewpic_vars+30
\ 0096 3E00 LD A,BYTE3 fselGetNext
\ 0098 210000 LD HL,LWRD fselGetNext
\ 009B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 009E 45 LD B,L
74 if(!mc_result)
\ 009F AF XOR A
\ 00A0 B0 OR B
\ 00A1 200D JR NZ,?0011
\ 00A3 ?0010:
75 {
76 if(fselGetErrID() == FSEL_ERR_OUTOF) {return FALSE;}
\ 00A3 3E00 LD A,BYTE3 fselGetErrID
\ 00A5 210000 LD HL,LWRD fselGetErrID
\ 00A8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00AB 2D DEC L
\ 00AC 2009 JR NZ,?0014
\ 00AE ?0012:
\ 00AE 1807 JR ?0014
\ 00B0 ?0013:
77 }
78 else //normal next file
\ 00B0 ?0011:
79 {
80 mc_result = fselGetLocation(&g_viewpic_vars.location);
\ 00B0 CDBE00 CALL LWRD ?0118
81 return TRUE;
\ 00B3 2E01 LD L,1
82 }
\ 00B5 1801 JR ?0015
\ 00B7 ?0014:
83
84 return FALSE;
\ 00B7 68 LD L,B
85 }
\ 00B8 ?0015:
\ 00B8 F1 POP AF
\ 00B9 F1 POP AF
\ 00BA C1 POP BC
\ 00BB C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00BE ?0118:
\ 00BE 110400 LD DE,g_viewpic_vars+4
\ 00C1 3E00 LD A,BYTE3 fselGetLocation
\ 00C3 210000 LD HL,LWRD fselGetLocation
\ 00C6 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 00C9 sel_prev:
86
87 BOOL sel_prev(BOOL select_all)
88 {
\ 00C9 C5 PUSH BC
\ 00CA D5 PUSH DE
\ 00CB F5 PUSH AF
89 BOOL mc_result;
90 mc_result = FSELSetMode(FSEL_DIR_REPEATALL);;
\ 00CC 1E03 LD E,3
\ 00CE 3E00 LD A,BYTE3 fselSetMode
\ 00D0 210000 LD HL,LWRD fselSetMode
\ 00D3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
91
92 mc_result = fselGetPrev(g_viewpic_vars.location.filename);
\ 00D6 111E00 LD DE,g_viewpic_vars+30
\ 00D9 3E00 LD A,BYTE3 fselGetPrev
\ 00DB 210000 LD HL,LWRD fselGetPrev
\ 00DE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00E1 45 LD B,L
93 if(!mc_result)
\ 00E2 AF XOR A
\ 00E3 B0 OR B
\ 00E4 200D JR NZ,?0017
\ 00E6 ?0016:
94 {
95 if(fselGetErrID() == FSEL_ERR_OUTOF) {return FALSE;}//normal end
\ 00E6 3E00 LD A,BYTE3 fselGetErrID
\ 00E8 210000 LD HL,LWRD fselGetErrID
\ 00EB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?