decodermenu.lst
来自「MP3 整个 SDK」· LST 代码 · 共 876 行 · 第 1/3 页
LST
876 行
##############################################################################
# #
# 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\decodermenu.c #
# List file = d:\case_i_d90f\ap\ap_dsc2x_dec\list\decodermenu.lst #
# Object file = d:\case_i_d90f\ap\ap_dsc2x_dec\obj\decodermenu.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\DecoderMenu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME decodermenu(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN DRV_DetectUD
\ 0000 PUBLIC MenuInPic
\ 0000 PUBLIC MenuStrID
\ 0000 PUBLIC MenuStrIDWithCard
\ 0000 EXTERN ap_sleep
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNext
\ 0000 EXTERN fselGetTotal
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_DiskStateFlag
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_menu_active
\ 0000 EXTERN g_viewpic_vars
\ 0000 PUBLIC list
\ 0000 EXTERN need_sel_file
\ 0000 PUBLIC play_text
\ 0000 PUBLIC slider
\ 0000 PUBLIC sub_list
\ 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 ui_show_msg
\ 0000 EXTERN ui_slider
\ 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 MenuInPic:
1 /****************************************
2 * File Name: DecoderMenu.c
3 * Write By : Jack lee
4 * Date :2004-9-29 15:22
5 *
6 *
7 *****************************************/
8
9
10
11
12 #include "actos.h"
13 #include "ap_common.h"
14 #include "display.h"
15 #include "DSCDec.h"
16 #include "ap_picdec.h"
17 extern bool g_menu_active;
18 extern BYTE g_DiskStateFlag;
19 //function_menu_t Menu; //define menu
20 pop_up_list_t list;
21 pop_up_list_t sub_list;
22 slider_t slider;
23 extern bool need_sel_file; //1 表示要重新选择驱动器
24 const WORD MenuStrID[5]={MSTOP1,JPEGSET,MSTOP3,MSTOP4,MSTOP5};//,VSTOPM4};
25 const WORD MenuStrIDWithCard[6]={MSTOP1,MSTOP2,JPEGSET,MSTOP3,MSTOP4,MSTOP5};
26 const WORD play_text[2]={JPEGSET1, JPEGSET2};
27
28 int MenuInPic(void)
29 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 FDE5 PUSH IY
\ 0004 DDE5 PUSH IX
\ 0006 F5 PUSH AF
30 int result,active;
31 bool g_card_ok=FALSE;
32
33
34 result = DRV_DetectUD(1); //检查是否有卡
\ 0007 1E01 LD E,1
\ 0009 CD0000 CALL LWRD DRV_DetectUD
\ 000C 4F LD C,A
\ 000D 0600 LD B,0
\ 000F 68 LD L,B
35 if(result == 0x020)
\ 0010 60 LD H,B
\ 0011 39 ADD HL,SP
\ 0012 70 LD (HL),B
\ 0013 3E20 LD A,32
\ 0015 A9 XOR C
\ 0016 2002 JR NZ,?0003
\ 0018 ?0002:
36 g_card_ok = TRUE;
\ 0018 3601 LD (HL),1
\ 001A ?0003:
37
38 list.headid = STOPMENU;
\ 001A 21EA01 LD HL,490
\ 001D 220600 LD (list+6),HL
39 list.active=0;
\ 0020 68 LD L,B
\ 0021 60 LD H,B
\ 0022 220400 LD (list+4),HL
40 if(g_card_ok)
\ 0025 39 ADD HL,SP
\ 0026 AF XOR A
\ 0027 B6 OR (HL)
\ 0028 280B JR Z,?0005
\ 002A ?0004:
41 {
42 list.total = 6;
\ 002A 210600 LD HL,6
\ 002D 220200 LD (list+2),HL
43 list.strid = MenuStrIDWithCard;
\ 0030 210A00 LD HL,MenuStrIDWithCard
\ 0033 1809 JR ?0080
44 }
45 else
\ 0035 ?0005:
46 {
47 list.total = 5;
\ 0035 210500 LD HL,5
\ 0038 220200 LD (list+2),HL
48 list.strid = MenuStrID;
\ 003B 210000 LD HL,MenuStrID
\ 003E ?0080:
\ 003E 220000 LD (list),HL
\ 0041 ?0006:
49 }
50 list.string_id = g_comval.langid;
\ 0041 3A0C00 LD A,(g_comval+12)
\ 0044 320800 LD (list+8),A
51
52 result = ui_popup_list(&list, NULL);
\ 0047 48 LD C,B
\ 0048 C5 PUSH BC
\ 0049 C5 PUSH BC
\ 004A 110000 LD DE,list
\ 004D 3E00 LD A,BYTE3 ui_popup_list
\ 004F 210000 LD HL,LWRD ui_popup_list
\ 0052 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0055 F1 POP AF
\ 0056 F1 POP AF
\ 0057 E5 PUSH HL
\ 0058 DDE1 POP IX
53
54 if (g_card_ok)
\ 005A 69 LD L,C
\ 005B 60 LD H,B
\ 005C 39 ADD HL,SP
\ 005D AF XOR A
\ 005E B6 OR (HL)
\ 005F 2829 JR Z,?0010
\ 0061 ?0007:
55 {
56
57 if (DRV_DetectUD(1) != 0x20)
\ 0061 1E01 LD E,1
\ 0063 CD0000 CALL LWRD DRV_DetectUD
\ 0066 FE20 CP 32
\ 0068 2820 JR Z,?0010
\ 006A ?0009:
58 {
59 g_card_ok=FALSE;
60 ui_err_msg(CARDPULL,CARDPULL,g_comval.langid);//显示卡拔出
\ 006A ED4B0C00 LD BC,(g_comval+12)
\ 006E 0600 LD B,0
\ 0070 C5 PUSH BC
\ 0071 019101 LD BC,401
\ 0074 59 LD E,C
\ 0075 50 LD D,B
\ 0076 3E00 LD A,BYTE3 ui_err_msg
\ 0078 210000 LD HL,LWRD ui_err_msg
\ 007B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 007E F1 POP AF
61 g_viewpic_vars.location.disk = 'C';
\ 007F 3E43 LD A,67
\ 0081 320400 LD (g_viewpic_vars+4),A
62 return RESULT_SD_OUT;
\ 0084 213600 LD HL,54
63 }
\ 0087 C39703 JP LWRD ?0062
\ 008A ?0010:
\ 008A ?0008:
64 }
65
66 if (result != 0)
\ 008A DDE5 PUSH IX
\ 008C E1 POP HL
\ 008D 7D LD A,L
\ 008E B4 OR H
\ 008F C29403 JP NZ,?0036
\ 0092 ?0011:
67 return result;
\ 0092 ?0012:
68
69 BankSwitch((unsigned long)FSELInit >> 16);
\ 0092 1E00 LD E,BYTE3 fselInit
\ 0094 CD0000 CALL LWRD BankSwitch
70 fselGetLocation(& g_viewpic_vars.location);
\ 0097 110400 LD DE,g_viewpic_vars+4
\ 009A 3E00 LD A,BYTE3 fselGetLocation
\ 009C 210000 LD HL,LWRD fselGetLocation
\ 009F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
71
72 if(!g_card_ok)
\ 00A2 68 LD L,B
\ 00A3 60 LD H,B
\ 00A4 39 ADD HL,SP
\ 00A5 AF XOR A
\ 00A6 B6 OR (HL)
\ 00A7 ED5B0400 LD DE,(list+4)
\ 00AB C2E601 JP NZ,?0014
\ 00AE ?0013:
73 //无卡的情况
74 {
75 switch (list.active)
\ 00AE CD0000 CALL LWRD ?S_S_SWITCH_L06
\ 00B1 0000 DEFW 0
\ 00B3 0500 DEFW 5
\ 00B5 9003 DEFW ?0061
\ 00B7 C100 DEFW ?0016
\ 00B9 CC00 DEFW ?0019
\ 00BB 6801 DEFW ?0028
\ 00BD CA01 DEFW ?0033
\ 00BF 9003 DEFW ?0061
\ 00C1 ?0016:
76 {
77 case 0:
78 if (g_viewpic_vars.location.disk == 'H')
\ 00C1 3A0400 LD A,(g_viewpic_vars+4)
\ 00C4 FE48 CP 72
\ 00C6 C28A02 JP NZ,?0042
\ 00C9 ?0017:
79 {
80 g_viewpic_vars.location.disk = 'C';
\ 00C9 C30302 JP LWRD ?0095
81 FSELInit(FSEL_TYPE_DSC, FSEL_ALL_REPEATALL,FSEL_TYPE_COMMONDIR, g_viewpic_vars.location.disk);
82 fselGetLocation(& g_viewpic_vars.location);
83 need_sel_file=TRUE;
\ 00CC ?0018:
84 }
85
86 result=ui_directory(&g_viewpic_vars.location, FSEL_TYPE_DSC, g_comval.langid);
87 FSELSetMode(FSEL_ALL_SEQUENCE);
88 g_menu_active = FALSE;
89 break;
\ 00CC ?0019:
90
91 case 1:
92 sub_list.strid = play_text;
\ 00CC 211600 LD HL,play_text
\ 00CF 220900 LD (sub_list),HL
93 sub_list.total = 2;
\ 00D2 210200 LD HL,2
\ 00D5 220B00 LD (sub_list+2),HL
94 sub_list.active = g_viewpic_vars.playflag;
\ 00D8 ED4B0200 LD BC,(g_viewpic_vars+2)
\ 00DC 44 LD B,H
\ 00DD ED430D00 LD (sub_list+4),BC
95 sub_list.string_id = g_comval.langid;
\ 00E1 3A0C00 LD A,(g_comval+12)
\ 00E4 321100 LD (sub_list+8),A
96 sub_list.headid = MenuStrID[list.active];
\ 00E7 EB EX DE,HL
\ 00E8 29 ADD HL,HL
\ 00E9 010000 LD BC,MenuStrID
\ 00EC 09 ADD HL,BC
\ 00ED 46 LD B,(HL)
\ 00EE 23 INC HL
\ 00EF 66 LD H,(HL)
\ 00F0 68 LD L,B
\ 00F1 220F00 LD (sub_list+6),HL
97 result = ui_popup_list(&sub_list, NULL);
\ 00F4 4A LD C,D
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?