📄 ui_stop.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:35:42 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_reader\ui_stop.c #
# List file = d:\case_i_d913f\ap\ap_reader\list\ui_stop.lst #
# Object file = d:\case_i_d913f\ap\ap_reader\obj\ui_stop.r01 #
# ASM file = d:\case_i_d913f\ap\ap_reader\list\ui_stop.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_reader\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_reader\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_reader\List\ #
# -ND:\case_i_d913f\ap\ap_reader\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_READER\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 MenuInReader
\ 0000 EXTERN PutS
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetPenColor
\ 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 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_from_browser
\ 0000 EXTERN g_menu_active
\ 0000 EXTERN g_reader_vars
\ 0000 PUBLIC make_dirname
\ 0000 PUBLIC menu_pos
\ 0000 PUBLIC need_sel_file
\ 0000 EXTERN read_idm_data_reader
\ 0000 EXTERN reinit_idm_buf_reader
\ 0000 EXTERN reset_cur_list_bg_color_reader
\ 0000 PUBLIC sel_next
\ 0000 PUBLIC sel_prev
\ 0000 EXTERN show_active_list_reader
\ 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:52:52 tangwh Exp $
10 *******************************************************************************
11 */
12 #include "actos.h"
13 #include "enhanced.h"
14 #include "ap_common.h"
15 #include "display.h"
16 #include "ap_reader.h"
17 extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
18 int active; //当前文件序号
19 int g_file_total; //总文件数
20 bool need_sel_file;
21 char fileName[50]; //用作存放一些局部变量的buffer,避免过多的局部变量造成堆栈溢出
22 const char menu_pos[6] = {22,22+18,22+18*2,22+18*3,22+18*4,22+18*5};
23
24 #pragma codeseg(CODE_1)
25 /*
26 ********************************************************************************
27 *
28 ********************************************************************************
29 */
30 void make_dirname(void)
31 {
\ 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
32 int result;
33
34 char Backbuf[32];
35 fselGetLocation(&g_reader_vars.location);
\ 0009 CD8900 CALL LWRD ?0116
36 if(g_reader_vars.location.path[0]==':')
\ 000C 3A1400 LD A,(g_reader_vars+20)
\ 000F FE3A CP 58
\ 0011 200B JR NZ,?0003
\ 0013 ?0002:
37 {
38 strcpy(dir_name,"ROOT");
\ 0013 110000 LD DE,?0004
\ 0016 210000 LD HL,dir_name
\ 0019 CD0000 CALL LWRD ?STRCPY_L11
39 }
40 else
\ 001C 185F JR ?0005
\ 001E ?0003:
41 {
42
43 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 001E 210000 LD HL,0
\ 0021 E5 PUSH HL
\ 0022 0E02 LD C,2
\ 0024 23 INC HL
\ 0025 23 INC HL
\ 0026 39 ADD HL,SP
\ 0027 EB EX DE,HL
\ 0028 CD0000 CALL LWRD FS_Backup
\ 002B E1 POP HL
44 FS_CD("\\");
\ 002C 110500 LD DE,?0006
\ 002F CD0000 CALL LWRD FS_CD
45 memcpy(dir_name, g_reader_vars.location.path, 12);
\ 0032 010C00 LD BC,12
\ 0035 110000 LD DE,dir_name
\ 0038 211400 LD HL,g_reader_vars+20
\ 003B EDB0 LDIR
46 result = FS_GetName(dir_name, 14); //取出长名
\ 003D 0E0E LD C,14
\ 003F 110000 LD DE,dir_name
\ 0042 CD0000 CALL LWRD FS_GetName
\ 0045 0600 LD B,0
47 if (result != 0)
\ 0047 B7 OR A
\ 0048 2815 JR Z,?0008
\ 004A ?0007:
48 {
49 unitochar(dir_name, sizeof(dir_name), g_comval.langid);
\ 004A 210C00 LD HL,g_comval+12
\ 004D 4E LD C,(HL)
\ 004E C5 PUSH BC
\ 004F 0E1E LD C,30
\ 0051 110000 LD DE,dir_name
\ 0054 3E00 LD A,BYTE3 unitochar
\ 0056 210000 LD HL,LWRD unitochar
\ 0059 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 005C F1 POP AF
50 }
51 else
\ 005D 1810 JR ?0009
\ 005F ?0008:
52 {
53 memcpy(dir_name, g_reader_vars.location.path, 12);
\ 005F 0E0C LD C,12
\ 0061 110000 LD DE,dir_name
\ 0064 211400 LD HL,g_reader_vars+20
\ 0067 EDB0 LDIR
54 dir_name[8]=0;
\ 0069 320800 LD (dir_name+8),A
55 dir_name[9]=0;
\ 006C 320900 LD (dir_name+9),A
\ 006F ?0009:
56
57 }
58 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 006F 210000 LD HL,0
\ 0072 E5 PUSH HL
\ 0073 0E02 LD C,2
\ 0075 23 INC HL
\ 0076 23 INC HL
\ 0077 39 ADD HL,SP
\ 0078 EB EX DE,HL
\ 0079 CD0000 CALL LWRD FS_Restore
\ 007C E1 POP HL
\ 007D ?0005:
59
60 }
61 }
\ 007D 212000 LD HL,32
\ 0080 39 ADD HL,SP
\ 0081 F9 LD SP,HL
\ 0082 DDE1 POP IX
\ 0084 D1 POP DE
\ 0085 C1 POP BC
\ 0086 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0089 ?0116:
\ 0089 110600 LD DE,g_reader_vars+6
\ 008C 3E00 LD A,BYTE3 fselGetLocation
\ 008E 210000 LD HL,LWRD fselGetLocation
\ 0091 C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 0094 sel_next:
62
63
64
65 BOOL sel_next(BOOL select_all)
66 {
\ 0094 C5 PUSH BC
\ 0095 D5 PUSH DE
\ 0096 F5 PUSH AF
67 BOOL mc_result;
68
69 mc_result = FSELSetMode(FSEL_DIR_REPEATALL);
\ 0097 1E03 LD E,3
\ 0099 3E00 LD A,BYTE3 fselSetMode
\ 009B 210000 LD HL,LWRD fselSetMode
\ 009E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
70
71 mc_result = fselGetNext(g_reader_vars.location.filename);
\ 00A1 112000 LD DE,g_reader_vars+32
\ 00A4 3E00 LD A,BYTE3 fselGetNext
\ 00A6 210000 LD HL,LWRD fselGetNext
\ 00A9 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00AC 45 LD B,L
72 if(!mc_result)
\ 00AD AF XOR A
\ 00AE B0 OR B
\ 00AF 200D JR NZ,?0011
\ 00B1 ?0010:
73 {
74 if(fselGetErrID() == FSEL_ERR_OUTOF) {return FALSE;}
\ 00B1 3E00 LD A,BYTE3 fselGetErrID
\ 00B3 210000 LD HL,LWRD fselGetErrID
\ 00B6 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00B9 2D DEC L
\ 00BA 2014 JR NZ,?0014
\ 00BC ?0012:
\ 00BC 1812 JR ?0014
\ 00BE ?0013:
75 }
76 else //normal next file
\ 00BE ?0011:
77 {
78 mc_result = fselGetLocation(&g_reader_vars.location);
\ 00BE CD8900 CALL LWRD ?0116
79 fselSetLocation(&g_reader_vars.location);
\ 00C1 110600 LD DE,g_reader_vars+6
\ 00C4 3E00 LD A,BYTE3 fselSetLocation
\ 00C6 210000 LD HL,LWRD fselSetLocation
\ 00C9 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
80 return TRUE;
\ 00CC 2E01 LD L,1
81 }
\ 00CE 1801 JR ?0015
\ 00D0 ?0014:
82
83 return FALSE;
\ 00D0 68 LD L,B
84 }
\ 00D1 ?0015:
\ 00D1 F1 POP AF
\ 00D2 F1 POP AF
\ 00D3 C1 POP BC
\ 00D4 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00D7 sel_prev:
85
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -