📄 ui_scroll.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/Nov/107 22:38:58 #
# 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_voice\list\ui_scroll.lst #
# Object file = d:\case_i_d913f\ap\ap_voice\obj\ui_scroll.r01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_voice\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d913f\ap\ap_voice\List\ -q -t8 #
# -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 EXTERN CharOutRect
\ 0000 EXTERN GetOutPutErr
\ 0000 EXTERN GetTextPos
\ 0000 PUBLIC HoriScroll
\ 0000 EXTERN PutS
\ 0000 PUBLIC ReadCode
\ 0000 PUBLIC Scroll
\ 0000 EXTERN SetAsciiFont
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN TextOutRect
\ 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_FAST_LEAVE_L08
\ 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 //好像有八个点的误差在scroll开头
23
24 void HoriScroll(signed char step,char language);
25
26 /* (字符串首址,是否初始化true为要初始化) */
27 void Scroll( char * scrollstr, char language)
28 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 F5 PUSH AF
\ 0003 F5 PUSH AF
29 region_t tregion;
30
31 tregion.x = scrollregionx_def;
\ 0004 210000 LD HL,0
\ 0007 39 ADD HL,SP
\ 0008 3630 LD (HL),48
32 tregion.y = scrollregiony_def;
\ 000A 23 INC HL
\ 000B 362D LD (HL),45
33 tregion.width = scrollregionw_def;
\ 000D 23 INC HL
\ 000E 3680 LD (HL),128
34 tregion.height = scrollregionh_def;
\ 0010 23 INC HL
\ 0011 3610 LD (HL),16
35
36 SetAsciiFont(FONT_TYPE_LARGE);
\ 0013 1E04 LD E,4
\ 0015 CD0000 CALL LWRD SetAsciiFont
37 SetBackgdColor(Color_MENU_def);
\ 0018 010000 LD BC,0
\ 001B 11FFFF LD DE,65535
\ 001E CD0000 CALL LWRD SetBackgdColor
38
39 TextOutRect(&tregion ,1);
\ 0021 0E01 LD C,1
\ 0023 210000 LD HL,0
\ 0026 39 ADD HL,SP
\ 0027 EB EX DE,HL
\ 0028 CD0000 CALL LWRD TextOutRect
40 HoriScroll(1,language);
\ 002B 210600 LD HL,6
\ 002E 39 ADD HL,SP
\ 002F 4E LD C,(HL)
\ 0030 1E01 LD E,1
\ 0032 3E00 LD A,BYTE3 HoriScroll
\ 0034 219400 LD HL,LWRD HoriScroll
\ 0037 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
41 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
42
43 ///-SetBackgdColor(Color_MENU_def);
44 SetAsciiFont(FONT_TYPE_DEFAULT);
\ 0043 1E04 LD E,4
\ 0045 CD0000 CALL LWRD SetAsciiFont
45 }
\ 0048 E1 POP HL
\ 0049 E1 POP HL
\ 004A E1 POP HL
\ 004B E1 POP HL
\ 004C C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 004F ReadCode:
46
47 int ReadCode(char *tmpstrpt1,char language)
48 {
\ 004F FDE5 PUSH IY
\ 0051 DDE5 PUSH IX
\ 0053 C5 PUSH BC
\ 0054 D5 PUSH DE
\ 0055 DDE1 POP IX
49 int code;
50
51 if((language>4)||(language==1))
\ 0057 3E04 LD A,4
\ 0059 B9 CP C
\ 005A 3825 JR C,?0014
\ 005C 41 LD B,C
\ 005D 05 DEC B
\ 005E 2821 JR Z,?0014
\ 0060 ?0004:
\ 0060 ?0005:
\ 0060 ?0002:
52 {//ASCII
53 code = *tmpstrpt1;
\ 0060 ?0003:
54 }
55 else if(language==3)
\ 0060 210000 LD HL,0
\ 0063 39 ADD HL,SP
\ 0064 7E LD A,(HL)
\ 0065 FE03 CP 3
\ 0067 DD7E00 LD A,(IX+0)
\ 006A 2006 JR NZ,?0008
\ 006C ?0007:
56 {//jap
57 if (*tmpstrpt1 >= 0x81)
\ 006C FE81 CP 129
\ 006E 3811 JR C,?0014
\ 0070 ?0009:
58 {
59 code = *(int *)tmpstrpt1;
\ 0070 1804 JR ?0059
60 }
61 else
\ 0072 ?0010:
62 {//ASCII
63 code = *tmpstrpt1;
\ 0072 ?0011:
\ 0072 ?0008:
64 }
65 }
66 else if (*tmpstrpt1 >= FirstSectionCode)
\ 0072 FEA1 CP 161
\ 0074 380B JR C,?0014
\ 0076 ?0013:
67 {//汉字
68 code = *(int *)tmpstrpt1;
\ 0076 ?0059:
\ 0076 DD6E00 LD L,(IX+0)
\ 0079 DD6601 LD H,(IX+1)
\ 007C E5 PUSH HL
\ 007D FDE1 POP IY
69 }
70 else
\ 007F 1808 JR ?0015
\ 0081 ?0014:
71 {//ASCII
72 code = *tmpstrpt1;
\ 0081 DD4E00 LD C,(IX+0)
\ 0084 0600 LD B,0
\ 0086 C5 PUSH BC
\ 0087 FDE1 POP IY
\ 0089 ?0015:
\ 0089 ?0012:
\ 0089 ?0006:
73 }
74 return code;
\ 0089 FDE5 PUSH IY
\ 008B E1 POP HL
75 }
\ 008C F1 POP AF
\ 008D DDE1 POP IX
\ 008F FDE1 POP IY
\ 0091 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0094 HoriScroll:
76
77
78 //==========================================================
79 /*
80 滚动屏幕
81 */
82 void HoriScroll(signed char step,char language)
83 {
\ 0094 FDE5 PUSH IY
\ 0096 DDE5 PUSH IX
\ 0098 DD210000 LD IX,0
\ 009C DD39 ADD IX,SP
\ 009E C5 PUSH BC
\ 009F D5 PUSH DE
\ 00A0 F5 PUSH AF
\ 00A1 F5 PUSH AF
\ 00A2 F5 PUSH AF
\ 00A3 F5 PUSH AF
84 int code;
85 char *tmpstrpt,*tmpstrpt1;
86 region_t kregion;//余下部分区域
87 ///bool result;
88
89
90 if (*str_pt == '\0')
\ 00A4 2A0000 LD HL,(str_pt)
\ 00A7 AF XOR A
\ 00A8 B6 OR (HL)
\ 00A9 2009 JR NZ,?0017
\ 00AB ?0016:
91 {
92 scroll_cnt = 0;
\ 00AB 320000 LD (scroll_cnt),A
93 str_pt = strhead_pt;
\ 00AE 2A0000 LD HL,(strhead_pt)
\ 00B1 220000 LD (str_pt),HL
\ 00B4 ?0017:
94 }
95
96 tmpstrpt = str_pt;
\ 00B4 DD75FA LD (IX-6),L
\ 00B7 DD74FB LD (IX-5),H
97
98 if((language>4)||(language==1))
\ 00BA 3E04 LD A,4
\ 00BC B9 CP C
\ 00BD 3847 JR C,?0030
\ 00BF 41 LD B,C
\ 00C0 05 DEC B
\ 00C1 2843 JR Z,?0030
\ 00C3 ?0020:
\ 00C3 ?0021:
\ 00C3 ?0018:
99 {//ASCII
100 code = *str_pt;
101 kregion.width = 8 - scroll_cnt;
\ 00C3 ?0019:
102 }
103 else if(language==3)
\ 00C3 DD7EFE LD A,(IX-2)
\ 00C6 FE03 CP 3
\ 00C8 7E LD A,(HL)
\ 00C9 201C JR NZ,?0024
\ 00CB ?0023:
104 {//jap
105 if (*str_pt >= 0x81)
\ 00CB FE81 CP 129
\ 00CD 3837 JR C,?0030
\ 00CF ?0025:
106 {
107 code = *(int *)str_pt;
\ 00CF 46 LD B,(HL)
\ 00D0 23 INC HL
\ 00D1 66 LD H,(HL)
\ 00D2 68 LD L,B
\ 00D3 E5 PUSH HL
\ 00D4 FDE1 POP IY
108 kregion.width = 16 - scroll_cnt;
\ 00D6 3A0000 LD A,(scroll_cnt)
\ 00D9 47 LD B,A
\ 00DA 3E10 LD A,16
\ 00DC 90 SUB B
\ 00DD DD77F6 LD (IX-10),A
109 tmpstrpt++;
\ 00E0 DD34FA INC (IX-6)
\ 00E3 2031 JR NZ,?0031
\ 00E5 181A JR ?0070
110 }
111 else
\ 00E7 ?0026:
112 {//ASCII
113 code = *str_pt;
114 kregion.width = 8 - scroll_cnt;
\ 00E7 ?0027:
\ 00E7 ?0024:
115 }
116 }
117 else if (*str_pt >= FirstSectionCode)
\ 00E7 FEA1 CP 161
\ 00E9 381B JR C,?0030
\ 00EB ?0029:
118 {//汉字
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -