📄 ui_scroll_string.lst
字号:
71 if (!result)
\ 00DC B7 OR A
\ 00DD 280E JR Z,?0014
\ 00DF ?0012:
72 {
73 return;
74 }
\ 00DF ?0013:
75 //scroll_cnt = kregion.width-1;
76 scroll_cnt = kregion.width;
\ 00DF DD7EF4 LD A,(IX-12)
\ 00E2 320000 LD (scroll_cnt),A
77
78 }
79 else
\ 00E5 1806 JR ?0014
\ 00E7 ?0006:
80 {
81 str_pt = strhead_pt;
\ 00E7 2A0000 LD HL,(strhead_pt)
\ 00EA 220000 LD (str_pt),HL
82 return;
83 }
\ 00ED ?0014:
84
85 }
\ 00ED ?0015:
\ 00ED DDF9 LD SP,IX
\ 00EF DDE1 POP IX
\ 00F1 FDE1 POP IY
\ 00F3 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 00F6 HoriScrollString:
86
87 //==========================================================
88 /*
89 滚动屏幕
90 */
91 void HoriScrollString(signed char step,char language,region_t *scroll)
92 {
\ 00F6 FDE5 PUSH IY
\ 00F8 DDE5 PUSH IX
\ 00FA DD210000 LD IX,0
\ 00FE DD39 ADD IX,SP
\ 0100 C5 PUSH BC
\ 0101 D5 PUSH DE
\ 0102 21F0FF LD HL,65520
\ 0105 39 ADD HL,SP
\ 0106 F9 LD SP,HL
\ 0107 DD6E08 LD L,(IX+8)
\ 010A DD6609 LD H,(IX+9)
\ 010D E5 PUSH HL
\ 010E FDE1 POP IY
93 int code;
94 char *tmpstrpt;
95 region_t tregion;
96 region_t sregion;
97 region_t kregion;//余下部分区域
98
99 tmpstrpt = str_pt;
\ 0110 2A0000 LD HL,(str_pt)
\ 0113 DD75EC LD (IX-20),L
\ 0116 DD74ED LD (IX-19),H
100
101 //余下部分区域
102 kregion.x = scroll->x + scroll->width - step;
\ 0119 FD7E02 LD A,(IY+2)
\ 011C FD8600 ADD A,(IY+0)
\ 011F 93 SUB E
\ 0120 DD77EE LD (IX-18),A
103 kregion.y = scroll->y;
\ 0123 FD4601 LD B,(IY+1)
\ 0126 DD70EF LD (IX-17),B
104 kregion.width = step;
\ 0129 DD73F0 LD (IX-16),E
105 kregion.height = scroll->height;
\ 012C FD4603 LD B,(IY+3)
\ 012F DD70F1 LD (IX-15),B
106
107 //设定移动的源,目标区域
108 sregion.x = scroll->x + step;//暂时未考虑为负数的情况
\ 0132 FD7E00 LD A,(IY+0)
\ 0135 DD86FC ADD A,(IX-4)
\ 0138 DD77F2 LD (IX-14),A
109 tregion.x = scroll->x;
\ 013B FD4600 LD B,(IY+0)
\ 013E DD70F6 LD (IX-10),B
110 tregion.y = sregion.y = scroll->y;
\ 0141 FD4601 LD B,(IY+1)
\ 0144 DD70F3 LD (IX-13),B
\ 0147 DD70F7 LD (IX-9),B
111 sregion.width = scroll->width - step;
\ 014A FD7E02 LD A,(IY+2)
\ 014D 93 SUB E
\ 014E DD77F4 LD (IX-12),A
112 sregion.height = scroll->height;
\ 0151 FD4603 LD B,(IY+3)
\ 0154 DD70F5 LD (IX-11),B
113
114 //向左移step列
115 RegionCopy(&sregion, &tregion);
\ 0157 210A00 LD HL,10
\ 015A 39 ADD HL,SP
\ 015B 4D LD C,L
\ 015C 44 LD B,H
\ 015D 210600 LD HL,6
\ 0160 39 ADD HL,SP
\ 0161 EB EX DE,HL
\ 0162 CD0000 CALL LWRD RegionCopy
\ 0165 ?0016:
116
117
118
119 test:
120 if (*str_pt == '\0')
\ 0165 2A0000 LD HL,(str_pt)
\ 0168 AF XOR A
\ 0169 B6 OR (HL)
\ 016A 200C JR NZ,?0018
\ 016C ?0017:
121 {
122 tmpstrpt = str_pt = strhead_pt;
\ 016C 2A0000 LD HL,(strhead_pt)
\ 016F 220000 LD (str_pt),HL
\ 0172 DD75EC LD (IX-20),L
\ 0175 DD74ED LD (IX-19),H
\ 0178 ?0018:
123 }
124
125 //汉字和ASCII的不同处理
126 if ((*str_pt >= FirstSectionCode)&&(language!=1))
\ 0178 7E LD A,(HL)
\ 0179 FEA1 CP 161
\ 017B 3819 JR C,?0020
\ 017D DD46FE LD B,(IX-2)
\ 0180 05 DEC B
\ 0181 2813 JR Z,?0020
\ 0183 ?0022:
\ 0183 ?0021:
\ 0183 ?0019:
127 {//汉字
128 code = *(int *)str_pt;
\ 0183 46 LD B,(HL)
\ 0184 DD70FA LD (IX-6),B
\ 0187 23 INC HL
\ 0188 66 LD H,(HL)
\ 0189 DD74FB LD (IX-5),H
129 tmpstrpt++;
\ 018C DD34EC INC (IX-20)
\ 018F 200E JR NZ,?0023
\ 0191 DD34ED INC (IX-19)
130 }
131 else
\ 0194 1809 JR ?0023
\ 0196 ?0020:
132 {//ASCII
133 code = *str_pt;
\ 0196 4E LD C,(HL)
\ 0197 DD71FA LD (IX-6),C
\ 019A 0600 LD B,0
\ 019C DD70FB LD (IX-5),B
\ 019F ?0023:
134 }
135 tmpstrpt++;
\ 019F DD34EC INC (IX-20)
\ 01A2 2003 JR NZ,?0053
\ 01A4 DD34ED INC (IX-19)
\ 01A7 ?0053:
136
137 if (!CharOutRect(code, *(str_pt+1), &kregion, scroll_cnt))
\ 01A7 3A0000 LD A,(scroll_cnt)
\ 01AA 4F LD C,A
\ 01AB C5 PUSH BC
\ 01AC 210400 LD HL,4
\ 01AF 39 ADD HL,SP
\ 01B0 E5 PUSH HL
\ 01B1 2A0000 LD HL,(str_pt)
\ 01B4 23 INC HL
\ 01B5 4E LD C,(HL)
\ 01B6 0600 LD B,0
\ 01B8 DD5EFA LD E,(IX-6)
\ 01BB DD56FB LD D,(IX-5)
\ 01BE CD0000 CALL LWRD CharOutRect
\ 01C1 E1 POP HL
\ 01C2 E1 POP HL
\ 01C3 B7 OR A
\ 01C4 200E JR NZ,?0025
\ 01C6 ?0024:
138 {
139 //strhead_pt = str_pt;
140 str_pt = tmpstrpt;
\ 01C6 DD6EEC LD L,(IX-20)
\ 01C9 DD66ED LD H,(IX-19)
\ 01CC 220000 LD (str_pt),HL
141 scroll_cnt = 0;
\ 01CF 320000 LD (scroll_cnt),A
142 goto test;
\ 01D2 1891 JR ?0016
\ 01D4 ?0025:
143 }
144 scroll_cnt += step;//未支持负数
\ 01D4 3A0000 LD A,(scroll_cnt)
\ 01D7 DD86FC ADD A,(IX-4)
\ 01DA 320000 LD (scroll_cnt),A
145
146 }
\ 01DD C3ED00 JP LWRD ?0014
\ 01E0 CountString:
147
148 int CountString(char *str,char language,region_t *scroll) //统计字数
149 {
\ 01E0 FDE5 PUSH IY
\ 01E2 DDE5 PUSH IX
\ 01E4 C5 PUSH BC
\ 01E5 F5 PUSH AF
\ 01E6 D5 PUSH DE
\ 01E7 DDE1 POP IX
150 int n=0;
151 int m=0;
\ 01E9 210000 LD HL,0
\ 01EC 39 ADD HL,SP
\ 01ED AF XOR A
\ 01EE 77 LD (HL),A
\ 01EF 23 INC HL
\ 01F0 77 LD (HL),A
\ 01F1 FD210000 LD IY,0
\ 01F5 ?0027:
152 while(*str!=0)
\ 01F5 AF XOR A
\ 01F6 DDB600 OR (IX+0)
\ 01F9 2872 JR Z,?0026
\ 01FB ?0028:
153 {
154 if((*str >= FirstSectionCode)&&(language!=1))
\ 01FB DD7E00 LD A,(IX+0)
\ 01FE FEA1 CP 161
\ 0200 3838 JR C,?0030
\ 0202 23 INC HL
\ 0203 46 LD B,(HL)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -