ui_scroll2.lst
来自「炬力方案176*132软件源码,适用于AK1025」· LST 代码 · 共 308 行
LST
308 行
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 23:49:00 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\common\ui_scroll2.c #
# List file = d:\case_i_d913f\ap\ap_music\list\ui_scroll2.lst #
# Object file = d:\case_i_d913f\ap\ap_music\obj\ui_scroll2.r01 #
# ASM file = d:\case_i_d913f\ap\ap_music\list\ui_scroll2.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_scroll2.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_scroll2(17)
\ 0000 RSEG CODE(0)
\ 0000 EXTERN CharOutRect
\ 0000 EXTERN GetOutPutErr
\ 0000 EXTERN GetTextPos
\ 0000 EXTERN PutS
\ 0000 PUBLIC ScrollInit
\ 0000 PUBLIC ScrollInit_sub
\ 0000 EXTERN SetAsciiFont
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN TextOutRect
\ 0000 EXTERN 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 CODE
\ 0000 ScrollInit:
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 #include "actos.h"
15 #include "ap_common.h"
16
17 ///-extern char *str_pt;//字符串当前指针
18 ///-extern char *strhead_pt;//字串首址记录
19 ///-extern BYTE scroll_cnt;
20
21 extern char rTmp;
22
23 void ScrollInit_sub(char *str,char language);
24
25 /* (字符串首址,是否初始化true为要初始化) */
26 void ScrollInit( char * scrollstr, char language)
27 {
\ 0000 CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0003 FCFF DEFW 65532
28 region_t tregion;
29
30 tregion.x = scrollregionx_def;
\ 0005 DD36FC30 LD (IX-4),48
31 tregion.y = scrollregiony_def;
\ 0009 DD36FD2D LD (IX-3),45
32 tregion.width = scrollregionw_def;
\ 000D DD36FE80 LD (IX-2),128
33 tregion.height = scrollregionh_def;
\ 0011 DD36FF10 LD (IX-1),16
34
35 SetAsciiFont(FONT_TYPE_LARGE);
\ 0015 1E04 LD E,4
\ 0017 CD0000 CALL LWRD SetAsciiFont
36 SetBackgdColor(Color_MENU_def);
\ 001A 010000 LD BC,0
\ 001D 11FFFF LD DE,65535
\ 0020 CD0000 CALL LWRD SetBackgdColor
37
38 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
39 ScrollInit_sub(scrollstr,language);
\ 002D DD4E04 LD C,(IX+4)
\ 0030 DD5E02 LD E,(IX+2)
\ 0033 DD5603 LD D,(IX+3)
\ 0036 3E00 LD A,BYTE3 ScrollInit_sub
\ 0038 214F00 LD HL,LWRD ScrollInit_sub
\ 003B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
40 TextOutRect(&tregion ,0);
\ 003E 0E00 LD C,0
\ 0040 69 LD L,C
\ 0041 61 LD H,C
\ 0042 39 ADD HL,SP
\ 0043 EB EX DE,HL
\ 0044 CD0000 CALL LWRD TextOutRect
41
42 ///-SetBackgdColor(Color_MENU_def);
43 SetAsciiFont(FONT_TYPE_DEFAULT);
\ 0047 1E04 LD E,4
\ 0049 CD0000 CALL LWRD SetAsciiFont
44 return;
45 }
\ 004C C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 004F ScrollInit_sub:
46 /*
47 int ReadCode_sub(char *str_pt,char language)
48 {
49 int code;
50
51 if((language>4)||(language==1))
52 {//ASCII
53 code = *str_pt;
54 }
55 else if(language==3)
56 {//jap
57 if (*str_pt >= 0x81)
58 {
59 code = *(int *)str_pt;
60 }
61 else
62 {//ASCII
63 code = *str_pt;
64 }
65 }
66 else if (*str_pt >= FirstSectionCode)
67 {//汉字
68 code = *(int *)str_pt;
69 }
70 else
71 {//ASCII
72 code = *str_pt;
73 }
74 return code;
75 }
76 */
77 void ScrollInit_sub(char *str,char language)
78 {
\ 004F CD0000 CALL LWRD ?ENT_AUTO_DIRECT_L09
\ 0052 FAFF DEFW 65530
79 int code;
80 region_t kregion;//余下部分区域
81
82 SetTextPos(scrollregionx_def, scrollregiony_def);
\ 0054 0E2D LD C,45
\ 0056 1E30 LD E,48
\ 0058 CD0000 CALL LWRD SetTextPos
83 strhead_pt = str_pt = str;
\ 005B DD6E02 LD L,(IX+2)
\ 005E DD6603 LD H,(IX+3)
\ 0061 220000 LD (str_pt),HL
\ 0064 220000 LD (strhead_pt),HL
84
85 str_pt = PutS(str_pt, -1);
\ 0067 0EFF LD C,255
\ 0069 EB EX DE,HL
\ 006A CD0000 CALL LWRD PutS
\ 006D 220000 LD (str_pt),HL
86
87 if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
\ 0070 CD0000 CALL LWRD GetOutPutErr
\ 0073 3D DEC A
\ 0074 206D JR NZ,?0003
\ 0076 ?0002:
88 {//x超限
89
90 ///code = ReadCode_sub(str_pt, language);
91 //---------------------------------------
92 if((language>4)||(language==1))
\ 0076 3E04 LD A,4
\ 0078 DDBE04 CP (IX+4)
\ 007B 3826 JR C,?0016
\ 007D DD4604 LD B,(IX+4)
\ 0080 05 DEC B
\ 0081 2820 JR Z,?0016
\ 0083 ?0006:
\ 0083 ?0007:
\ 0083 ?0004:
93 {//ASCII
94 code = *str_pt;
\ 0083 ?0005:
95 }
96 else if(language==3)
\ 0083 DD7E04 LD A,(IX+4)
\ 0086 FE03 CP 3
\ 0088 2A0000 LD HL,(str_pt)
\ 008B 7E LD A,(HL)
\ 008C 2006 JR NZ,?0010
\ 008E ?0009:
97 {//jap
98 if (*str_pt >= 0x81)
\ 008E FE81 CP 129
\ 0090 3814 JR C,?0019
\ 0092 ?0011:
99 {
100 code = *(int *)str_pt;
\ 0092 1804 JR ?0020
101 }
102 else
\ 0094 ?0012:
103 {//ASCII
104 code = *str_pt;
\ 0094 ?0013:
\ 0094 ?0010:
105 }
106 }
107 else if (*str_pt >= FirstSectionCode)
\ 0094 FEA1 CP 161
\ 0096 380B JR C,?0016
\ 0098 ?0015:
108 {//汉字
109 code = *(int *)str_pt;
\ 0098 ?0020:
\ 0098 46 LD B,(HL)
\ 0099 DD70FE LD (IX-2),B
\ 009C 23 INC HL
\ 009D 66 LD H,(HL)
\ 009E DD74FF LD (IX-1),H
110 }
111 else
\ 00A1 180B JR ?0017
\ 00A3 ?0016:
112 {//ASCII
113 code = *str_pt;
\ 00A3 2A0000 LD HL,(str_pt)
\ 00A6 ?0019:
\ 00A6 4E LD C,(HL)
\ 00A7 DD71FE LD (IX-2),C
\ 00AA DD36FF00 LD (IX-1),0
\ 00AE ?0017:
\ 00AE ?0014:
\ 00AE ?0008:
114 }
115 //---------------------------------------
116
117 GetTextPos(&kregion.x, &kregion.y);
\ 00AE 210000 LD HL,0
\ 00B1 39 ADD HL,SP
\ 00B2 010100 LD BC,1
\ 00B5 09 ADD HL,BC
\ 00B6 4D LD C,L
\ 00B7 44 LD B,H
\ 00B8 2B DEC HL
\ 00B9 EB EX DE,HL
\ 00BA CD0000 CALL LWRD GetTextPos
118
119 kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
\ 00BD 3EB0 LD A,176
\ 00BF DD96FA SUB (IX-6)
\ 00C2 DD77FC LD (IX-4),A
120 kregion.height = scrollregionh_def;
\ 00C5 DD36FD10 LD (IX-3),16
121
122 //输出最后一个字
123 CharOutRect(code, *(str_pt+1), &kregion, 0);
\ 00C9 0E00 LD C,0
\ 00CB C5 PUSH BC
\ 00CC 210200 LD HL,2
\ 00CF 39 ADD HL,SP
\ 00D0 E5 PUSH HL
\ 00D1 2A0000 LD HL,(str_pt)
\ 00D4 23 INC HL
\ 00D5 4E LD C,(HL)
\ 00D6 0600 LD B,0
\ 00D8 DD5EFE LD E,(IX-2)
\ 00DB DD56FF LD D,(IX-1)
\ 00DE CD0000 CALL LWRD CharOutRect
\ 00E1 E1 POP HL
\ 00E2 E1 POP HL
\ 00E3 ?0003:
124 }
125 str_pt = strhead_pt;
\ 00E3 2A0000 LD HL,(strhead_pt)
\ 00E6 220000 LD (str_pt),HL
126 scroll_cnt = 0;
\ 00E9 AF XOR A
\ 00EA 320000 LD (scroll_cnt),A
127 rTmp = 0;
\ 00ED 320000 LD (rTmp),A
128 }
\ 00F0 C30000 JP LWRD ?BANK_LEAVE_DIRECT_L08
\ 00F3 END
Errors: none
Warnings: none
Code size: 243
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?