📄 ui_playlist.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:32 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_playlist.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_playlist.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_playlist.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_playlist.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\COMMON\ui_playlist.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_playlist(17)
\ 0000 RSEG COM_PLAYLIST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 EXTERN PlaylistClassTotal
\ 0000 EXTERN PlaylistCurClass
\ 0000 EXTERN ScrollFlag
\ 0000 EXTERN SetSWAPAddress
\ 0000 EXTERN ShowPlaylist
\ 0000 EXTERN ap_get_message
\ 0000 EXTERN ap_handle_hotkey
\ 0000 EXTERN ap_message_init
\ 0000 PUBLIC cur_grouplist
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselGetNextGroup
\ 0000 EXTERN fselGetPrevGroup
\ 0000 EXTERN fselSetLocation
\ 0000 PUBLIC playlist_active
\ 0000 EXTERN reinit_idm_buf_playlist
\ 0000 PUBLIC ui_playlist
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?US_DIV_L02
\ 0000 EXTERN ?C_V_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?ENT_PARM_DIRECT_L09
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 EXTERN ?LEAVE_DIRECT_L09
\ 0000 EXTERN ?MEMSET_L11
\ 0000 RSEG COM_PLAYLIST
\ 0000 ui_playlist:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib, directory control file
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 * $Id: ui_playlist.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
10 *******************************************************************************
11 */
12 #pragma codeseg(COM_PLAYLIST)
13
14 #include "ap_common.h"
15 #include "list.h"
16 #include "filesys.h"
17
18 WORD playlist_active,cur_grouplist; //目录总数,文件总数和浏览项数,浏览活动项
19 extern WORD PlaylistClassTotal;
20 extern WORD PlaylistCurClass;
21 extern BYTE ScrollFlag;
22
23 #pragma memory=dataseg(RCODE)
24 #pragma memory=default
25 void ShowPlaylist(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,char *Longnamebuf,BYTE string_id,BYTE ScrollMode);
26 void reinit_idm_buf_playlist(int top, int bottom, char *Longnamebuf, BYTE string_id,BOOL direction);
27
28 static void DmaCpy(WORD descadd, BYTE descpg, WORD srcadd, BYTE srcpg, WORD Length);
29
30 /********************************************************************************
31 * Description : select the directory.
32 *
33 * Arguments :
34 * location: get thedisk type
35 * type : show file kind
36 * string_id: language type
37 * Returns :
38 * other: Successful
39 * 0: Fail, detail information in fselError
40 * Notes : only select the valid directory
41 *
42 ********************************************************************************/
43
44 int ui_playlist(file_location_t *location, BYTE type,BYTE string_id)
45 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 F6FF DEFW -10
\ 0005 FDE5 PUSH IY
46 BYTE i, pagebak,TimeoutCnt;
47 char * Strname;
48 BYTE result;
49 char key;
50 int top, bottom;
51
52 if ( !fselSetLocation(location) )
\ 0007 CD0E03 CALL LWRD ?0072
\ 000A 2C INC L
\ 000B 2D DEC L
\ 000C 2807 JR Z,?0070
\ 000E ?0002:
53 {
54 return RESULT_IGNORE;
55 }
\ 000E ?0003:
56
57 if (PlaylistClassTotal == 0)
\ 000E 2A0000 LD HL,(PlaylistClassTotal)
\ 0011 7D LD A,L
\ 0012 B4 OR H
\ 0013 2006 JR NZ,?0005
\ 0015 ?0004:
58 return RESULT_IGNORE;
\ 0015 ?0070:
\ 0015 213400 LD HL,52
\ 0018 C3FB02 JP LWRD ?0064
\ 001B ?0005:
59
60 ////////////////////////////////换页//////////////////////////////////////
61 DmaCpy( 0x4000, 0x06, 0x4000, 0x07, 0x2000-1 ); //备份第7页0x4000~0x6000的8K代码到第6页0x4000~0x6000
\ 001B 21FF1F LD HL,8191
\ 001E E5 PUSH HL
\ 001F 0E07 LD C,7
\ 0021 C5 PUSH BC
\ 0022 210040 LD HL,16384
\ 0025 E5 PUSH HL
\ 0026 0E06 LD C,6
\ 0028 EB EX DE,HL
\ 0029 CD7303 CALL LWRD DmaCpy
\ 002C E1 POP HL
\ 002D E1 POP HL
\ 002E E1 POP HL
62 i = input8(0x05);
\ 002F DB05 IN A,(5)
\ 0031 DD77FE LD (IX-2),A
63 output8(0x05, 0xf6);
\ 0034 3EF6 LD A,246
\ 0036 D305 OUT (5),A
64 pagebak = SetSWAPAddress(0x06);
\ 0038 1E06 LD E,6
\ 003A CD0000 CALL LWRD SetSWAPAddress
\ 003D DD77FD LD (IX-3),A
65 Strname = (char *)STRNAMEBUF;
\ 0040 DD36F800 LD (IX-8),0
\ 0044 DD36F970 LD (IX-7),112
66 ////////////////////////////////换页//////////////////////////////////////
67
68 memset(Strname, 0x00, LISTNAME_DISP_LENNGTH+1);
\ 0048 010102 LD BC,513
\ 004B 110070 LD DE,28672
\ 004E 6B LD L,E
\ 004F CD0000 CALL LWRD ?MEMSET_L11
\ 0052 ?0007:
69 while(PlaylistCurClass>1) //返回根目录
\ 0052 ED4B0000 LD BC,(PlaylistCurClass)
\ 0056 210100 LD HL,1
\ 0059 A7 AND A
\ 005A ED42 SBC HL,BC
\ 005C 3010 JR NC,?0006
\ 005E ?0008:
70 {
71 fselGetPrevGroup(Strname);
\ 005E DD5EF8 LD E,(IX-8)
\ 0061 DD56F9 LD D,(IX-7)
\ 0064 3E00 LD A,BYTE3 fselGetPrevGroup
\ 0066 210000 LD HL,LWRD fselGetPrevGroup
\ 0069 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 006C 18E4 JR ?0007
\ 006E ?0006:
72 }
73 top=0;
74 bottom=4;
75 playlist_active=0;
\ 006E 210000 LD HL,0
\ 0071 220000 LD (playlist_active),HL
76 cur_grouplist=0;
\ 0074 220200 LD (cur_grouplist),HL
77 if(PlaylistClassTotal<5)
\ 0077 AF XOR A
\ 0078 DD77F6 LD (IX-10),A
\ 007B DD77F7 LD (IX-9),A
\ 007E FD210400 LD IY,4
\ 0082 010500 LD BC,5
\ 0085 2A0000 LD HL,(PlaylistClassTotal)
\ 0088 ED42 SBC HL,BC
\ 008A 300B JR NC,?0010
\ 008C ?0009:
78 bottom=PlaylistClassTotal-1;
\ 008C 21FFFF LD HL,65535
\ 008F ED4B0000 LD BC,(PlaylistClassTotal)
\ 0093 09 ADD HL,BC
\ 0094 E5 PUSH HL
\ 0095 FDE1 POP IY
\ 0097 ?0010:
79 FSELGetLocation(location); //保存location
\ 0097 CD0003 CALL LWRD ?0071
80 reinit_idm_buf_playlist(top, bottom, Strname, string_id,TRUE);
\ 009A 0E01 LD C,1
\ 009C C5 PUSH BC
\ 009D DD6E0A LD L,(IX+10)
\ 00A0 E5 PUSH HL
\ 00A1 DD6EF8 LD L,(IX-8)
\ 00A4 DD66F9 LD H,(IX-7)
\ 00A7 E5 PUSH HL
\ 00A8 CD1C03 CALL LWRD ?0073
\ 00AB E1 POP HL
\ 00AC E1 POP HL
\ 00AD E1 POP HL
81 FSELSetLocation(location);
\ 00AE CD0E03 CALL LWRD ?0072
82 ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,1);
\ 00B1 0E01 LD C,1
\ 00B3 C5 PUSH BC
\ 00B4 DD6E0A LD L,(IX+10)
\ 00B7 E5 PUSH HL
\ 00B8 DD6EF8 LD L,(IX-8)
\ 00BB DD66F9 LD H,(IX-7)
\ 00BE E5 PUSH HL
\ 00BF 3A0000 LD A,(playlist_active)
\ 00C2 4F LD C,A
\ 00C3 C5 PUSH BC
\ 00C4 4F LD C,A
\ 00C5 C5 PUSH BC
\ 00C6 CD2D03 CALL LWRD ?0074
\ 00C9 E1 POP HL
\ 00CA E1 POP HL
\ 00CB E1 POP HL
\ 00CC E1 POP HL
\ 00CD E1 POP HL
\ 00CE ?0012:
83 while(ap_get_message()!=0) {;} //丢掉多余按键
\ 00CE CD0000 CALL LWRD ap_get_message
\ 00D1 B7 OR A
\ 00D2 20FA JR NZ,?0012
\ 00D4 ?0013:
\ 00D4 ?0011:
84
85 ap_message_init(NULL);
\ 00D4 5F LD E,A
\ 00D5 57 LD D,A
\ 00D6 3E00 LD A,BYTE3 ap_message_init
\ 00D8 210000 LD HL,LWRD ap_message_init
\ 00DB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00DE ?0015:
86 while(1)
87 {
88 //handle msg
89 key = ap_get_message();
\ 00DE CD0000 CALL LWRD ap_get_message
90 switch(key)
\ 00E1 5F LD E,A
\ 00E2 CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 00E5 0B00 DEFW 11
\ 00E7 05 DEFB 5
\ 00E8 06 DEFB 6
\ 00E9 1C DEFB 28
\ 00EA 1E DEFB 30
\ 00EB 21 DEFB 33
\ 00EC 30 DEFB 48
\ 00ED 37 DEFB 55
\ 00EE 38 DEFB 56
\ 00EF 45 DEFB 69
\ 00F0 46 DEFB 70
\ 00F1 90 DEFB 144
\ 00F2 7702 DEFW ?0056
\ 00F4 2F02 DEFW ?0040
\ 00F6 0A01 DEFW ?0018
\ 00F8 AC01 DEFW ?0029
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -