📄 ui_stop_menu.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:01:09 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\ap_music\ui_stop_menu.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_stop_menu.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_stop_menu.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_stop_menu.s01 #
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w #
# -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d90f\ap\ap_music\List\ #
# -ND:\case_i_d90f\ap\ap_music\List\ -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# d:\case_i_d90f\AP\AP_MUSIC\ui_stop_menu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_stop_menu(17)
\ 0000 RSEG AP_UI_MNU_STOP(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 RSEG APC_UI_MNU_STOP(0)
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN ClearTimePara
\ 0000 EXTERN DRV_ActiveUD
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DisplayErrInfor
\ 0000 EXTERN DisplayErrMsg
\ 0000 EXTERN NoCardCaseInStopMenu
\ 0000 PUBLIC PLFileName
\ 0000 PUBLIC dir_string
\ 0000 PUBLIC dir_string_card
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNextFile
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselPlayListEnt
\ 0000 EXTERN fselSetLocation
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_DiskStateFlag
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN list
\ 0000 EXTERN musicpSendCommand
\ 0000 EXTERN ui_delete_Music
\ 0000 EXTERN ui_directory
\ 0000 EXTERN ui_licensinf
\ 0000 EXTERN ui_playlist
\ 0000 EXTERN ui_popup_list
\ 0000 PUBLIC ui_stop_menu
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_CMP_L02
\ 0000 EXTERN ?S_S_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG AP_UI_MNU_STOP
\ 0000 ui_stop_menu:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * This program demostrates how to build an AP
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: ui_stop_menu.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
9 *******************************************************************************
10 */
11 #include "ap_music.h"
12
13
14 extern int test_cow1;
15 #pragma memory=constseg(APC_UI_MNU_STOP)
16
17 const char PLFileName[5][12] = {"MYLIST A3L","ARTIST A3L","ALBUM A3L","GENRE A3L","COMPOSERA3L"
18 };
19
20
21
22 const WORD dir_string_card[6+5] =
23 {
24 MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11, MSTOP1, MSTOP2, MSTOP3, MSTOP4, MSTOP5
25 };
26
27
28 const WORD dir_string[6+4] =
29 {
30 MSTOP6, MSTOP7,MSTOP8, MSTOP9, MSTOP10, MSTOP11, MSTOP1, MSTOP3, MSTOP4, MSTOP5
31 };
32
33 #pragma memory=default
34 extern void make_dirname(void);
35 int ui_licensinf(int string_id);
36 int ui_delete_Music( int type );
37 int NoCardCaseInStopMenu(int active);
38
39 #pragma codeseg(AP_UI_MNU_STOP)
40
41 int ui_stop_menu( void )
42 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FCFF DEFW 65532
43 int result;
44 bool tmpflag = FALSE;
45 static char StopMenuactive=0; //保持选中菜单的序号
46
47 ClearScreen(NULL);
\ 0005 110000 LD DE,0
\ 0008 CD0000 CALL LWRD ClearScreen
48
49 list.headid = STOPMENU;
\ 000B 21EA01 LD HL,490
\ 000E 220600 LD (list+6),HL
50 if (DRV_DetectUD(1) == 0x20)
\ 0011 5C LD E,H
\ 0012 CD7303 CALL LWRD ?0102
\ 0015 200E JR NZ,?0004
\ 0017 ?0003:
51 {
52 //有卡时的显示
53 list.total = sizeof(dir_string_card) / 2;
\ 0017 210B00 LD HL,11
\ 001A 220200 LD (list+2),HL
54
55 list.strid = dir_string_card;
\ 001D 213C00 LD HL,dir_string_card
\ 0020 220000 LD (list),HL
56 }
57 else
\ 0023 181E JR ?0007
\ 0025 ?0004:
58 {
59 //无卡时的显示
60 list.total = sizeof(dir_string) / 2;
\ 0025 210A00 LD HL,10
\ 0028 220200 LD (list+2),HL
61 list.strid = dir_string;
\ 002B 215200 LD HL,dir_string
\ 002E 220000 LD (list),HL
62 if (StopMenuactive >= list.total)
\ 0031 ED4B0200 LD BC,(list+2)
\ 0035 2A0000 LD HL,(?0002)
\ 0038 2600 LD H,0
\ 003A CD0000 CALL LWRD ?SS_CMP_L02
\ 003D 3804 JR C,?0007
\ 003F ?0006:
63 {
64 StopMenuactive--;
\ 003F 210000 LD HL,?0002
\ 0042 35 DEC (HL)
\ 0043 ?0007:
\ 0043 ?0005:
65 }
66 }
67 list.string_id = g_comval.langid;
\ 0043 3A0C00 LD A,(g_comval+12)
\ 0046 320800 LD (list+8),A
68 list.active = StopMenuactive;
\ 0049 ED4B0000 LD BC,(?0002)
\ 004D 0600 LD B,0
\ 004F ED430400 LD (list+4),BC
69
70 CLEAR_WATCHDOG();
\ 0053 DB4E IN A,(78)
\ 0055 CBDF SET 3,A
\ 0057 D34E OUT (78),A
71 result = ui_popup_list(&list, NULL);
\ 0059 48 LD C,B
\ 005A C5 PUSH BC
\ 005B C5 PUSH BC
\ 005C 110000 LD DE,list
\ 005F 3E00 LD A,BYTE3 ui_popup_list
\ 0061 210000 LD HL,LWRD ui_popup_list
\ 0064 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0067 F1 POP AF
\ 0068 F1 POP AF
\ 0069 DD75FC LD (IX-4),L
\ 006C DD74FD LD (IX-3),H
72 StopMenuactive = list.active;
\ 006F 3A0400 LD A,(list+4)
\ 0072 320000 LD (?0002),A
73
74 if (result != 0)
\ 0075 7D LD A,L
\ 0076 B4 OR H
\ 0077 C25B03 JP NZ,?0095
\ 007A ?0008:
75 {
76 return result;
77 }
\ 007A ?0009:
78
79 //如下加快其他项的退出速度
80
81 if (DRV_DetectUD(1) == 0x20)
\ 007A CD7103 CALL LWRD ?0103
\ 007D 2022 JR NZ,?0011
\ 007F ?0010:
82 {
83 // 有卡
84 // DRV_DetectUD() 之后必须加上DRV_ActiveUD(),
85 // 否则系统无法对卡进行读写操作.
86 if(g_music_vars.location.disk == 'H')
\ 007F 3A0700 LD A,(g_music_vars+7)
\ 0082 FE48 CP 72
\ 0084 0E01 LD C,1
\ 0086 2003 JR NZ,?0013
\ 0088 ?0012:
87 DRV_ActiveUD(1, MODE_SLOW);
\ 0088 59 LD E,C
\ 0089 1801 JR ?0093
88 else
\ 008B ?0013:
89 DRV_ActiveUD(0, MODE_SLOW);
\ 008B 58 LD E,B
\ 008C ?0093:
\ 008C CD0000 CALL LWRD DRV_ActiveUD
\ 008F ?0014:
90 switch (list.active)
\ 008F ED4B0400 LD BC,(list+4)
\ 0093 3E05 LD A,5
\ 0095 A9 XOR C
\ 0096 B0 OR B
\ 0097 2812 JR Z,?0100
\ 0099 ?0016:
91 {
92 case 5://licens informations
93 ui_licensinf(g_comval.langid);
94 return RESULT_IGNORE;
95
96 case 10://exit
\ 0099 ?0017:
\ 0099 3E0A LD A,10
\ 009B A9 XOR C
\ 009C B0 OR B
\ 009D 2021 JR NZ,?0019
97 return RESULT_IGNORE;
\ 009F 183E JR ?0099
98 }
\ 00A1 ?0015:
99 }
100 else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -