📄 music_list_menu.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:58:12 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_music\music_list_menu.c #
# List file = d:\case_i_d913f\ap\ap_music\list\music_list_menu.lst#
# Object file = d:\case_i_d913f\ap\ap_music\obj\music_list_menu.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\music_list_menu.s01#
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_music\Obj\ -e -K #
# -w -gA -z9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_music\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_music\List\ #
# -ND:\case_i_d913f\ap\ap_music\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# D:\CASE_I_D913F\AP\AP_MUSIC\music_list_menu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME music_list_menu(17)
\ 0000 RSEG AP_MUSIC_LIST(0)
\ 0000 RSEG APC_MUSIC_LIST(0)
\ 0000 RSEG APD_MUSIC_LIST(0)
\ 0000 PUBLIC ActiveSeekNum
\ 0000 PUBLIC BLANKSTRING
\ 0000 PUBLIC BlankInfor
\ 0000 EXTERN FS_FClose
\ 0000 EXTERN FS_FRead
\ 0000 EXTERN FS_FSeek
\ 0000 PUBLIC HeadIDDisplay
\ 0000 PUBLIC LastSeekNum
\ 0000 EXTERN PutS
\ 0000 PUBLIC ReadListBuffer
\ 0000 PUBLIC ReadOneSectorData
\ 0000 EXTERN ResShowMultiString
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN ScrollFlag
\ 0000 EXTERN ScrollString
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetTextOutMode
\ 0000 EXTERN SetTextPos
\ 0000 PUBLIC active_location
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_file_list_total
\ 0000 EXTERN g_music_vars
\ 0000 EXTERN list_fp
\ 0000 EXTERN menu_pos_list
\ 0000 EXTERN menulist_bck_pic
\ 0000 EXTERN region_scroll
\ 0000 EXTERN scroll_buf
\ 0000 PUBLIC show_active_musiclist
\ 0000 PUBLIC show_music_list
\ 0000 PUBLIC ui_music_list
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?US_DIV_L02
\ 0000 EXTERN ?US_MOD_L02
\ 0000 EXTERN ?S_MUL_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 EXTERN ?STRLEN_L11
\ 0000 RSEG AP_MUSIC_LIST
\ 0000 show_active_musiclist:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * This program demostrates how to build an AP
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: music_list_menu.c,v 1.1.1.1 2007/03/02 16:31:22 mars Exp $
9 *******************************************************************************
10 */
11 #include "ap_music.h"
12 #define ListDisplayNum 6 //一屏最多显示的列表数目
13 #define OneSectorListNum 7 //每个扇区存储的列表数目
14 #define ListPerByte 71 //每个列表项总的字节数
15 #define OneLocationBYTE 41 //sizeof(location)
16 #define Color_BULE_Scroll_def 0x0000001f//深蓝
17 extern handle list_fp;
18 extern char ScrollFlag; //滚动标志位
19 extern char scroll_buf[]; //滚屏buffer区
20 extern region_t region_scroll; //滚屏区域
21 extern const char menu_pos_list[];
22 extern const WORD menulist_bck_pic[];
23
24 #pragma memory=constseg(APC_MUSIC_LIST)
25 const char BLANKSTRING[4] = "[]--";
26 #pragma memory=dataseg(APD_MUSIC_LIST)
27 char ReadListBuffer[512];
28 file_location_t active_location; //当前选择列表文件的路径
29 char BlankInfor[16];
30 unsigned int ActiveSeekNum; //
31 unsigned int LastSeekNum;
32 WORD HeadIDDisplay; //列表类型显示
33 #pragma memory=default
34
35
36 #pragma codeseg(AP_MUSIC_LIST)
37 void ReadOneSectorData(unsigned int currentlist);
38 void show_active_musiclist(unsigned int active_one)
39 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FEFF DEFW 65534
40 BYTE buf_num = active_one% OneSectorListNum;
\ 0005 010700 LD BC,7
\ 0008 DD5E02 LD E,(IX+2)
\ 000B DD5603 LD D,(IX+3)
\ 000E CD0000 CALL LWRD ?US_MOD_L02
\ 0011 DD73FF LD (IX-1),E
41 BYTE pos_num = active_one% ListDisplayNum;
\ 0014 0B DEC BC
\ 0015 DD5E02 LD E,(IX+2)
\ 0018 DD5603 LD D,(IX+3)
\ 001B CD0000 CALL LWRD ?US_MOD_L02
\ 001E DD73FE LD (IX-2),E
42 if(LastSeekNum!= ActiveSeekNum) //当前选中列表文件数据不在buffer中
\ 0021 2A3B02 LD HL,(ActiveSeekNum)
\ 0024 ED4B3D02 LD BC,(LastSeekNum)
\ 0028 A7 AND A
\ 0029 ED42 SBC HL,BC
\ 002B 2809 JR Z,?0003
\ 002D ?0002:
43 ReadOneSectorData(active_one);
\ 002D DD5E02 LD E,(IX+2)
\ 0030 DD5603 LD D,(IX+3)
\ 0033 CD0601 CALL LWRD ?0078
\ 0036 ?0003:
44 memcpy(&active_location,&ReadListBuffer[buf_num*ListPerByte+30],OneLocationBYTE); //将当前active的路径保存起来
\ 0036 012900 LD BC,41
\ 0039 211E00 LD HL,ReadListBuffer+30
\ 003C DD4EFF LD C,(IX-1)
\ 003F 114700 LD DE,71
\ 0042 CD0000 CALL LWRD ?S_MUL_L02
\ 0045 19 ADD HL,DE
\ 0046 110002 LD DE,active_location
\ 0049 0E29 LD C,41
\ 004B EDB0 LDIR
45 ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[pos_num]-1);
\ 004D DD4EFE LD C,(IX-2)
\ 0050 210000 LD HL,menu_pos_list
\ 0053 09 ADD HL,BC
\ 0054 7E LD A,(HL)
\ 0055 C6FF ADD A,255
\ 0057 4F LD C,A
\ 0058 C5 PUSH BC
\ 0059 CD5001 CALL LWRD ?0087
\ 005C F1 POP AF
46 ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[pos_num]-4);
\ 005D DD4EFE LD C,(IX-2)
\ 0060 0600 LD B,0
\ 0062 210000 LD HL,menu_pos_list
\ 0065 09 ADD HL,BC
\ 0066 7E LD A,(HL)
\ 0067 C6FC ADD A,252
\ 0069 4F LD C,A
\ 006A C5 PUSH BC
\ 006B 0E1E LD C,30
\ 006D 112C00 LD DE,44
\ 0070 CD5501 CALL LWRD ?0088
\ 0073 F1 POP AF
47 ResShowPic(DHTHK,194,menu_pos_list[pos_num]+6);
\ 0074 DD4EFE LD C,(IX-2)
\ 0077 0600 LD B,0
\ 0079 210000 LD HL,menu_pos_list
\ 007C 09 ADD HL,BC
\ 007D 7E LD A,(HL)
\ 007E C606 ADD A,6
\ 0080 4F LD C,A
\ 0081 C5 PUSH BC
\ 0082 0EC2 LD C,194
\ 0084 112700 LD DE,39
\ 0087 CD5501 CALL LWRD ?0088
\ 008A F1 POP AF
48 if(ReadListBuffer[buf_num*ListPerByte]!=0)
\ 008B DD4EFF LD C,(IX-1)
\ 008E CD4101 CALL LWRD ?0085
\ 0091 2846 JR Z,?0005
\ 0093 ?0004:
49 {
50 memcpy(scroll_buf,&ReadListBuffer[buf_num*ListPerByte],30); //取要滚动的数据到buf
\ 0093 114700 LD DE,71
\ 0096 CD0000 CALL LWRD ?S_MUL_L02
\ 0099 210000 LD HL,ReadListBuffer
\ 009C 19 ADD HL,DE
\ 009D 110000 LD DE,scroll_buf
\ 00A0 0E1E LD C,30
\ 00A2 EDB0 LDIR
51 region_scroll.y = menu_pos_list[pos_num]-2; //滚动纵坐标的位置
\ 00A4 DD4EFE LD C,(IX-2)
\ 00A7 210000 LD HL,menu_pos_list
\ 00AA 09 ADD HL,BC
\ 00AB 7E LD A,(HL)
\ 00AC C6FE ADD A,254
\ 00AE 320100 LD (region_scroll+1),A
52 ScrollString(scroll_buf, TRUE,g_comval.langid,®ion_scroll); //滚动第一屏
\ 00B1 210000 LD HL,region_scroll
\ 00B4 E5 PUSH HL
\ 00B5 210C00 LD HL,g_comval+12
\ 00B8 4E LD C,(HL)
\ 00B9 C5 PUSH BC
\ 00BA 0E01 LD C,1
\ 00BC CD5D01 CALL LWRD ?0089
\ 00BF E1 POP HL
\ 00C0 E1 POP HL
53 if(strlen(scroll_buf)<20)
\ 00C1 210000 LD HL,scroll_buf
\ 00C4 CD0000 CALL LWRD ?STRLEN_L11
\ 00C7 011400 LD BC,20
\ 00CA A7 AND A
\ 00CB ED42 SBC HL,BC
\ 00CD 3003 JR NC,?0007
\ 00CF ?0006:
54 ScrollFlag=0;
\ 00CF AF XOR A
\ 00D0 1802 JR ?0070
55 else
\ 00D2 ?0007:
56 ScrollFlag=1;
\ 00D2 3E01 LD A,1
\ 00D4 ?0070:
\ 00D4 320000 LD (ScrollFlag),A
\ 00D7 ?0008:
57 }
58
59 else
\ 00D7 181C JR ?0009
\ 00D9 ?0005:
60 {
61 ScrollFlag = 0;
\ 00D9 320000 LD (ScrollFlag),A
62 memcpy(BlankInfor,BLANKSTRING,4);
\ 00DC 0E04 LD C,4
\ 00DE 112B02 LD DE,BlankInfor
\ 00E1 210000 LD HL,BLANKSTRING
\ 00E4 EDB0 LDIR
63 memcpy(&BlankInfor[4],&ReadListBuffer[buf_num*ListPerByte+56],12); //取短名
\ 00E6 213800 LD HL,ReadListBuffer+56
\ 00E9 DD4EFF LD C,(IX-1)
\ 00EC CD3201 CALL LWRD ?0083
64 SetTextPos(explorer_str_x_def, menu_pos_list[pos_num]-2);
\ 00EF DD4EFE LD C,(IX-2)
\ 00F2 CD6801 CALL LWRD ?0090
65 PutS(BlankInfor,-1);
\ 00F5 ?0009:
66 }
67 }
\ 00F5 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00F8 ?0081:
\ 00F8 0B DEC BC
\ 00F9 ?0080:
\ 00F9 FDE5 PUSH IY
\ 00FB D1 POP DE
\ 00FC CD0000 CALL LWRD ?US_DIV_L02
\ 00FF EB EX DE,HL
\ 0100 29 ADD HL,HL
\ 0101 4D LD C,L
\ 0102 44 LD B,H
\ 0103 29 ADD HL,HL
\ 0104 ?0079:
\ 0104 09 ADD HL,BC
\ 0105 EB EX DE,HL
\ 0106 ?0078:
\ 0106 3E00 LD A,BYTE3 ReadOneSectorData
\ 0108 214705 LD HL,LWRD ReadOneSectorData
\ 010B C30000 JP LWRD ?BANK_CALL_DIRECT_L08
\ 010E ?0082:
\ 010E DD5EFE LD E,(IX-2)
\ 0111 50 LD D,B
\ 0112 0E47 LD C,71
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -