ui_scroll.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 613 行 · 第 1/2 页
LST
613 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 19/Nov/107 00:08:24 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_scroll.c #
# List file = d:\case_i_d913f\ap\ap_music\list\ui_scroll.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\ui_scroll.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\ui_scroll.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\COMMON\ui_scroll.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_scroll(17)
\ 0000 RSEG COM_SCROLL(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN CharOutRect
\ 0000 EXTERN GetOutPutErr
\ 0000 EXTERN GetTextPos
\ 0000 PUBLIC HoriScroll
\ 0000 EXTERN PutS
\ 0000 PUBLIC Scroll
\ 0000 EXTERN SetAsciiFont
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN TextOutRect
\ 0000 PUBLIC rTmp
\ 0000 EXTERN scroll_cnt
\ 0000 EXTERN str_pt
\ 0000 EXTERN strhead_pt
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 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 RSEG COM_SCROLL
\ 0000 Scroll:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * wma player basal module implementation
5 *
6 * (c) Copyright Actions Co,Ld.
7 *
8 * $Id: ui_scroll.c,v 1.3 2004/12/30 09:22:32 ybfu Exp $
9 *******************************************************************************
10 */
11 /*
12 这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL
13 */
14 #pragma codeseg(COM_SCROLL)
15 #include "actos.h"
16 #include "ap_common.h"
17
18 ///-char *str_pt;//字符串当前指针
19 ///-char *strhead_pt;//字串首址记录
20 ///-BYTE scroll_cnt;
21
22 char rTmp=0;
23
24 //好像有八个点的误差在scroll开头
25
26 void HoriScroll(signed char step,char language);
27
28 /* (字符串首址,是否初始化true为要初始化) */
29 void Scroll( char * scrollstr, char language)
30 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FCFF DEFW 65532
31 region_t tregion;
32
33 tregion.x = scrollregionx_def;
\ 0005 DD36FC30 LD (IX-4),48
34 tregion.y = scrollregiony_def;
\ 0009 DD36FD2D LD (IX-3),45
35 tregion.width = scrollregionw_def;
\ 000D DD36FE80 LD (IX-2),128
36 tregion.height = scrollregionh_def;
\ 0011 DD36FF10 LD (IX-1),16
37
38 SetAsciiFont(FONT_TYPE_LARGE);
\ 0015 1E04 LD E,4
\ 0017 CD0000 CALL LWRD SetAsciiFont
39 SetBackgdColor(Color_MENU_def);
\ 001A 010000 LD BC,0
\ 001D 11FFFF LD DE,65535
\ 0020 CD0000 CALL LWRD SetBackgdColor
40
41 TextOutRect(&tregion ,1);
\ 0023 0E01 LD C,1
\ 0025 210000 LD HL,0
\ 0028 39 ADD HL,SP
\ 0029 EB EX DE,HL
\ 002A CD0000 CALL LWRD TextOutRect
42 HoriScroll(1,language);
\ 002D DD4E04 LD C,(IX+4)
\ 0030 1E01 LD E,1
\ 0032 3E00 LD A,BYTE3 HoriScroll
\ 0034 214B00 LD HL,LWRD HoriScroll
\ 0037 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
43 TextOutRect(&tregion ,0);
\ 003A 0E00 LD C,0
\ 003C 69 LD L,C
\ 003D 61 LD H,C
\ 003E 39 ADD HL,SP
\ 003F EB EX DE,HL
\ 0040 CD0000 CALL LWRD TextOutRect
44
45 ///-SetBackgdColor(Color_MENU_def);
46 SetAsciiFont(FONT_TYPE_DEFAULT);
\ 0043 1E04 LD E,4
\ 0045 CD0000 CALL LWRD SetAsciiFont
47 }
\ 0048 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 004B HoriScroll:
48 /*
49 int ReadCode(char *tmpstrpt1,char language)
50 {
51 int code;
52
53 if((language>4)||(language==1))
54 {//ASCII
55 code = *tmpstrpt1;
56 }
57 else if(language==3)
58 {//jap
59 if (*tmpstrpt1 >= 0x81)
60 {
61 code = *(int *)tmpstrpt1;
62 }
63 else
64 {//ASCII
65 code = *tmpstrpt1;
66 }
67 }
68 else if (*tmpstrpt1 >= FirstSectionCode)
69 {//汉字
70 code = *(int *)tmpstrpt1;
71 }
72 else
73 {//ASCII
74 code = *tmpstrpt1;
75 }
76 return code;
77 }
78 */
79
80 //==========================================================
81 /*
82 滚动屏幕
83 */
84 void HoriScroll(signed char step,char language)
85 {
\ 004B CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 004E F8FF DEFW -8
\ 0050 FDE5 PUSH IY
86 int code;
87 char *tmpstrpt,*tmpstrpt1;
88 region_t kregion;//余下部分区域
89
90 if (*str_pt == '\0')
\ 0052 2A0000 LD HL,(str_pt)
\ 0055 AF XOR A
\ 0056 B6 OR (HL)
\ 0057 200C JR NZ,?0003
\ 0059 ?0002:
91 {
92 scroll_cnt = 0;
\ 0059 320000 LD (scroll_cnt),A
93 rTmp = 0;
\ 005C 320000 LD (rTmp),A
94 str_pt = strhead_pt;
\ 005F 2A0000 LD HL,(strhead_pt)
\ 0062 220000 LD (str_pt),HL
\ 0065 ?0003:
95 }
96
97 tmpstrpt = str_pt;
\ 0065 DD75FC LD (IX-4),L
\ 0068 DD74FD LD (IX-3),H
98
99 if((language>4)||(language==1))
\ 006B 3E04 LD A,4
\ 006D B9 CP C
\ 006E 3831 JR C,?0015
\ 0070 41 LD B,C
\ 0071 05 DEC B
\ 0072 282D JR Z,?0015
\ 0074 ?0006:
\ 0074 ?0007:
\ 0074 ?0004:
100 {//ASCII
101 ///code = *str_pt;
102 ///kregion.width = 8 - scroll_cnt;
103 goto L_ASCII_COMMON;
\ 0074 ?0005:
104 }
105 else if(language==3)
\ 0074 DD7E04 LD A,(IX+4)
\ 0077 FE03 CP 3
\ 0079 7E LD A,(HL)
\ 007A 2006 JR NZ,?0010
\ 007C ?0009:
106 {//jap
107 if (*str_pt >= 0x81)
\ 007C FE81 CP 129
\ 007E 3821 JR C,?0015
\ 0080 ?0011:
108 {
109 ///code = *(int *)str_pt;
110 ///kregion.width = 16 - scroll_cnt;
111 ///tmpstrpt++;
112 goto L_2BYTE_COMMON;
\ 0080 1804 JR ?0014
\ 0082 ?0012:
113 }
114 else
115 {//ASCII
116 ///code = *str_pt;
117 ///kregion.width = 8 - scroll_cnt;
118 goto L_ASCII_COMMON;
\ 0082 ?0010:
119 }
120 }
121 else if (*str_pt >= FirstSectionCode)
\ 0082 FEA1 CP 161
\ 0084 381B JR C,?0015
\ 0086 ?0014:
\ 0086 ?0013:
122 {//汉字
123 L_2BYTE_COMMON:
124 code = *(int *)str_pt;
\ 0086 46 LD B,(HL)
\ 0087 23 INC HL
\ 0088 66 LD H,(HL)
\ 0089 68 LD L,B
\ 008A E5 PUSH HL
\ 008B FDE1 POP IY
125 kregion.width = 16 - scroll_cnt;
\ 008D 3A0000 LD A,(scroll_cnt)
\ 0090 47 LD B,A
\ 0091 3E10 LD A,16
\ 0093 90 SUB B
\ 0094 DD77FA LD (IX-6),A
126 tmpstrpt++;
\ 0097 DD34FC INC (IX-4)
\ 009A 2015 JR NZ,?0016
\ 009C DD34FD INC (IX-3)
127 }
128 else
\ 009F 1810 JR ?0016
\ 00A1 ?0015:
\ 00A1 ?0008:
129 {//ASCII
130 L_ASCII_COMMON:
131 code = *str_pt;
\ 00A1 4E LD C,(HL)
\ 00A2 0600 LD B,0
\ 00A4 C5 PUSH BC
\ 00A5 FDE1 POP IY
132 kregion.width = 8 - scroll_cnt;
\ 00A7 3A0000 LD A,(scroll_cnt)
\ 00AA 47 LD B,A
\ 00AB 3E08 LD A,8
\ 00AD 90 SUB B
\ 00AE DD77FA LD (IX-6),A
\ 00B1 ?0016:
133 }
134
135 tmpstrpt++;
\ 00B1 DD34FC INC (IX-4)
\ 00B4 2003 JR NZ,?0056
\ 00B6 DD34FD INC (IX-3)
\ 00B9 ?0056:
136
137 kregion.x = scrollregionx_def;
\ 00B9 DD36F830 LD (IX-8),48
138 kregion.y = scrollregiony_def;
\ 00BD DD36F92D LD (IX-7),45
139 kregion.height = scrollregionh_def;
\ 00C1 DD36FB10 LD (IX-5),16
140
141 if(!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
\ 00C5 48 LD C,B
\ 00C6 C5 PUSH BC
\ 00C7 210400 LD HL,4
\ 00CA 39 ADD HL,SP
\ 00CB E5 PUSH HL
\ 00CC 2A0000 LD HL,(str_pt)
\ 00CF CDFE01 CALL LWRD ?0061
\ 00D2 E1 POP HL
\ 00D3 E1 POP HL
\ 00D4 B7 OR A
\ 00D5 2020 JR NZ,?0018
\ 00D7 ?0017:
142 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?