📄 ui_playlist3.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:40 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_playlist3.c #
# List file = d:\case_i_d90f\ap\ap_music\list\ui_playlist3.lst #
# Object file = d:\case_i_d90f\ap\ap_music\obj\ui_playlist3.r01 #
# ASM file = d:\case_i_d90f\ap\ap_music\list\ui_playlist3.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_playlist3.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_playlist3(17)
\ 0000 RSEG PLAYLIST_FUN(0)
\ 0000 EXTERN CharOutRect
\ 0000 PUBLIC Count_playlist
\ 0000 EXTERN GetTextPos
\ 0000 PUBLIC HoriScroll_PlayList
\ 0000 EXTERN PutS
\ 0000 EXTERN RegionCopy
\ 0000 PUBLIC ScrollInit_PlayList
\ 0000 PUBLIC Scroll_PlayList
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN scroll_cnt
\ 0000 EXTERN str_pt
\ 0000 EXTERN strhead_pt
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?SS_CMP_L02
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_LEAVE_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 EXTERN ?ENT_PARM_DIRECT_L09
\ 0000 EXTERN ?ENT_AUTO_DIRECT_L09
\ 0000 RSEG PLAYLIST_FUN
\ 0000 Scroll_PlayList:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * wma player basal module implementation
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: ui_playlist3.c,v 1.2 2006/04/25 10:50:14 jmzhang Exp $
9 *******************************************************************************
10 */
11 /*
12 这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL
13 */
14 #pragma codeseg(PLAYLIST_FUN)
15 #include "actos.h"
16 #include "ap_common.h"
17
18 extern char *str_pt;//字符串当前指针
19 extern char *strhead_pt;//字串首址记录
20 extern BYTE scroll_cnt;
21
22 int Count_playlist(char *str,char language,region_t *scroll); //统计字数
23 void ScrollInit_PlayList(char *str,char language,region_t *scroll);
24 void HoriScroll_PlayList(signed char step,char language,region_t *scroll);
25
26
27 /* (字符串首址,是否初始化true为要初始化) */
28 void Scroll_PlayList( char * scrollstr, bool mode ,char language,region_t *scroll)
29 {
\ 0000 CD0000 CALL LWRD ?ENT_PARM_DIRECT_L09
30
31 if (mode)
\ 0003 0C INC C
\ 0004 0D DEC C
\ 0005 DD6E0C LD L,(IX+12)
\ 0008 DD660D LD H,(IX+13)
\ 000B E5 PUSH HL
\ 000C DD4E0A LD C,(IX+10)
\ 000F 280A JR Z,?0003
\ 0011 ?0002:
32 {
33 //初始化滚屏(第一次调用时先显示一串字符)
34 ScrollInit_PlayList(scrollstr,language,scroll);
\ 0011 3E00 LD A,BYTE3 ScrollInit_PlayList
\ 0013 212900 LD HL,LWRD ScrollInit_PlayList
\ 0016 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0019 180A JR ?0038
35 return;
36 }
\ 001B ?0003:
37 HoriScroll_PlayList(1,language,scroll);
\ 001B 1E01 LD E,1
\ 001D 3E00 LD A,BYTE3 HoriScroll_PlayList
\ 001F 21DE00 LD HL,LWRD HoriScroll_PlayList
\ 0022 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0025 ?0038:
\ 0025 E1 POP HL
38
39 }
\ 0026 ?0004:
\ 0026 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 0029 ScrollInit_PlayList:
40
41 void ScrollInit_PlayList(char *str,char language,region_t *scroll)
42 {
\ 0029 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 002C F6FF DEFW 65526
\ 002E FDE5 PUSH IY
\ 0030 DD6E0A LD L,(IX+10)
\ 0033 DD660B LD H,(IX+11)
\ 0036 E5 PUSH HL
\ 0037 FDE1 POP IY
43 int code;
44 int count;
45 bool result;
46 region_t kregion;//余下部分区域
47 scroll_cnt = 0;
\ 0039 AF XOR A
\ 003A 320000 LD (scroll_cnt),A
48
49 SetTextPos(scroll->x, scroll->y);
\ 003D FD4E01 LD C,(IY+1)
\ 0040 FD5E00 LD E,(IY+0)
\ 0043 CD0000 CALL LWRD SetTextPos
50 strhead_pt = str_pt = str;
\ 0046 DD6E02 LD L,(IX+2)
\ 0049 DD6603 LD H,(IX+3)
\ 004C 220000 LD (str_pt),HL
\ 004F 220000 LD (strhead_pt),HL
51 //tmpstr = str;
52 count=Count_playlist(str_pt,language,scroll);
\ 0052 FDE5 PUSH IY
\ 0054 DD4E04 LD C,(IX+4)
\ 0057 EB EX DE,HL
\ 0058 3E00 LD A,BYTE3 Count_playlist
\ 005A 21C001 LD HL,LWRD Count_playlist
\ 005D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0060 F1 POP AF
53 str_pt = PutS(str_pt, count);
\ 0061 4D LD C,L
\ 0062 ED5B0000 LD DE,(str_pt)
\ 0066 CD0000 CALL LWRD PutS
\ 0069 220000 LD (str_pt),HL
54
55
56
57 if(*str_pt!=0)
\ 006C AF XOR A
\ 006D B6 OR (HL)
\ 006E 2863 JR Z,?0006
\ 0070 ?0005:
58 {
59 GetTextPos(&kregion.x, &kregion.y);
\ 0070 210200 LD HL,2
\ 0073 39 ADD HL,SP
\ 0074 010100 LD BC,1
\ 0077 09 ADD HL,BC
\ 0078 4D LD C,L
\ 0079 44 LD B,H
\ 007A 2B DEC HL
\ 007B EB EX DE,HL
\ 007C CD0000 CALL LWRD GetTextPos
60
61 kregion.width =scroll->x+scroll->width-kregion.x;
\ 007F FD7E02 LD A,(IY+2)
\ 0082 FD8600 ADD A,(IY+0)
\ 0085 DD96F6 SUB (IX-10)
\ 0088 DD77F8 LD (IX-8),A
62 kregion.height = scroll->height;
\ 008B FD4603 LD B,(IY+3)
\ 008E DD70F9 LD (IX-7),B
63 //汉字和ASCII的不同处理
64 if ((*str_pt >= FirstSectionCode)&&(language!=1))
\ 0091 2A0000 LD HL,(str_pt)
\ 0094 7E LD A,(HL)
\ 0095 FEA1 CP 161
\ 0097 3811 JR C,?0008
\ 0099 DD4604 LD B,(IX+4)
\ 009C 05 DEC B
\ 009D 280B JR Z,?0008
\ 009F ?0010:
\ 009F ?0009:
\ 009F ?0007:
65 {//汉字
66 code = *(int *)str_pt;
\ 009F 46 LD B,(HL)
\ 00A0 DD70FA LD (IX-6),B
\ 00A3 23 INC HL
\ 00A4 66 LD H,(HL)
\ 00A5 DD74FB LD (IX-5),H
67 }
68 else
\ 00A8 1809 JR ?0011
\ 00AA ?0008:
69 {//ASCII
70 code = *str_pt;
\ 00AA 4E LD C,(HL)
\ 00AB DD71FA LD (IX-6),C
\ 00AE 0600 LD B,0
\ 00B0 DD70FB LD (IX-5),B
\ 00B3 ?0011:
71 }
72
73
74 //输出最后一个字
75 result = CharOutRect(code, &kregion, scroll_cnt);
\ 00B3 3A0000 LD A,(scroll_cnt)
\ 00B6 4F LD C,A
\ 00B7 C5 PUSH BC
\ 00B8 210400 LD HL,4
\ 00BB 39 ADD HL,SP
\ 00BC 4D LD C,L
\ 00BD 44 LD B,H
\ 00BE DD5EFA LD E,(IX-6)
\ 00C1 DD56FB LD D,(IX-5)
\ 00C4 CD0000 CALL LWRD CharOutRect
\ 00C7 E1 POP HL
76 if (!result)
\ 00C8 B7 OR A
\ 00C9 280E JR Z,?0014
\ 00CB ?0012:
77 {
78 return;
79 }
\ 00CB ?0013:
80 //scroll_cnt = kregion.width-1;
81 scroll_cnt = kregion.width;
\ 00CB DD7EF8 LD A,(IX-8)
\ 00CE 320000 LD (scroll_cnt),A
82
83 }
84 else
\ 00D1 1806 JR ?0014
\ 00D3 ?0006:
85 {
86 str_pt = strhead_pt;
\ 00D3 2A0000 LD HL,(strhead_pt)
\ 00D6 220000 LD (str_pt),HL
87 return;
88 }
\ 00D9 ?0014:
89
90 }
\ 00D9 ?0015:
\ 00D9 FDE1 POP IY
\ 00DB C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00DE HoriScroll_PlayList:
91
92 //==========================================================
93 /*
94 滚动屏幕
95 */
96 void HoriScroll_PlayList(signed char step,char language,region_t *scroll)
97 {
\ 00DE CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 00E1 F0FF DEFW 65520
\ 00E3 FDE5 PUSH IY
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -