📄 ui_slider.lst
字号:
\ 011F 4D LD C,L
\ 0120 44 LD B,H
\ 0121 CD0000 CALL LWRD ?SS_DIV_L02
\ 0124 210E00 LD HL,14
\ 0127 19 ADD HL,DE
\ 0128 DD75F0 LD (IX-16),L
\ 012B DD74F1 LD (IX-15),H
\ 012E DD36E610 LD (IX-26),16
\ 0132 DD36E700 LD (IX-25),0
\ 0136 ?0015:
93 ASSERT(end < SCR_WIDTH);
94 //分段显示背景
95 while(start+SLIDER_BG_WIDTH < end)
\ 0136 210400 LD HL,4
\ 0139 DD4EE6 LD C,(IX-26)
\ 013C DD46E7 LD B,(IX-25)
\ 013F 09 ADD HL,BC
\ 0140 DD4EF0 LD C,(IX-16)
\ 0143 DD46F1 LD B,(IX-15)
\ 0146 F680 OR 128
\ 0148 ED42 SBC HL,BC
\ 014A E24E01 JP PO,?0060
\ 014D AC XOR H
\ 014E ?0060:
\ 014E 0E10 LD C,16
\ 0150 C5 PUSH BC
\ 0151 DD4EE6 LD C,(IX-26)
\ 0154 F27101 JP P,?0014
\ 0157 ?0016:
96 {
97 slider_ResShowPic(SBKGRD, start, 16);
\ 0157 11DB01 LD DE,475
\ 015A 3E00 LD A,BYTE3 slider_ResShowPic
\ 015C 210000 LD HL,LWRD slider_ResShowPic
\ 015F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0162 F1 POP AF
98 start += SLIDER_BG_WIDTH;
\ 0163 210400 LD HL,4
\ 0166 39 ADD HL,SP
\ 0167 7E LD A,(HL)
\ 0168 C604 ADD A,4
\ 016A 77 LD (HL),A
\ 016B 30C9 JR NC,?0015
\ 016D 23 INC HL
\ 016E 34 INC (HL)
\ 016F 18C5 JR ?0015
\ 0171 ?0014:
99 }
100 // 在背景的尽头处显示拖把
101 slider_ResShowPic(SSLIDER, start, 16);
\ 0171 11DE01 LD DE,478
\ 0174 3E00 LD A,BYTE3 slider_ResShowPic
\ 0176 210000 LD HL,LWRD slider_ResShowPic
\ 0179 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 017C F1 POP AF
102
103 //format text <-xxxx>
104 p = buf;
\ 017D 211400 LD HL,20
\ 0180 39 ADD HL,SP
105 *p++ = '<';
\ 0181 363C LD (HL),60
106 *p++ = '<';
\ 0183 23 INC HL
\ 0184 23 INC HL
\ 0185 DD75E2 LD (IX-30),L
\ 0188 DD74E3 LD (IX-29),H
\ 018B 2B DEC HL
\ 018C 363C LD (HL),60
107 if(slider->value < 0)
\ 018E FDCB057E BIT 7,(IY+5)
\ 0192 2824 JR Z,?0018
\ 0194 ?0017:
108 {
109 value = -(slider->value);
\ 0194 FD4E04 LD C,(IY+4)
\ 0197 FD4605 LD B,(IY+5)
\ 019A A7 AND A
\ 019B 210000 LD HL,0
\ 019E ED42 SBC HL,BC
\ 01A0 DD75E4 LD (IX-28),L
\ 01A3 DD74E5 LD (IX-27),H
110 *p++ = '-'; //显示负数
\ 01A6 DD6EE2 LD L,(IX-30)
\ 01A9 DD66E3 LD H,(IX-29)
\ 01AC 23 INC HL
\ 01AD DD75E2 LD (IX-30),L
\ 01B0 DD74E3 LD (IX-29),H
\ 01B3 2B DEC HL
\ 01B4 362D LD (HL),45
111 }
112 else
\ 01B6 180C JR ?0019
\ 01B8 ?0018:
113 {
114 value = slider->value;
\ 01B8 FD6E04 LD L,(IY+4)
\ 01BB DD75E4 LD (IX-28),L
\ 01BE FD6605 LD H,(IY+5)
\ 01C1 DD74E5 LD (IX-27),H
\ 01C4 ?0019:
115 }
116
117 if(value >= 1000)
\ 01C4 01E803 LD BC,1000
\ 01C7 DD6EE4 LD L,(IX-28)
\ 01CA DD66E5 LD H,(IX-27)
\ 01CD A7 AND A
\ 01CE ED42 SBC HL,BC
\ 01D0 3826 JR C,?0021
\ 01D2 ?0020:
118 {
119 itoa_4(value, p);
\ 01D2 DD4EE2 LD C,(IX-30)
\ 01D5 DD46E3 LD B,(IX-29)
\ 01D8 DD5EE4 LD E,(IX-28)
\ 01DB DD56E5 LD D,(IX-27)
\ 01DE 3E00 LD A,BYTE3 itoa_4
\ 01E0 210000 LD HL,LWRD itoa_4
\ 01E3 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
120 p += 4;
\ 01E6 210000 LD HL,0
\ 01E9 39 ADD HL,SP
\ 01EA 7E LD A,(HL)
\ 01EB C604 ADD A,4
\ 01ED 1862 JR ?0070
\ 01EF 23 INC HL
\ 01F0 1861 JR ?0066
\ 01F2 CE00 ADC A,0
\ 01F4 1860 JR ?0072
\ 01F6 1871 JR ?0062
\ 01F8 ?0021:
121 }
122 else if(value >= 100)
\ 01F8 016400 LD BC,100
\ 01FB DD6EE4 LD L,(IX-28)
\ 01FE DD66E5 LD H,(IX-27)
\ 0201 A7 AND A
\ 0202 ED42 SBC HL,BC
\ 0204 3826 JR C,?0024
\ 0206 ?0023:
123 {
124 itoa_3(value, p);
\ 0206 DD4EE2 LD C,(IX-30)
\ 0209 DD46E3 LD B,(IX-29)
\ 020C DD5EE4 LD E,(IX-28)
\ 020F DD56E5 LD D,(IX-27)
\ 0212 3E00 LD A,BYTE3 itoa_3
\ 0214 210000 LD HL,LWRD itoa_3
\ 0217 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
125 p += 3;
\ 021A 210000 LD HL,0
\ 021D 39 ADD HL,SP
\ 021E 7E LD A,(HL)
\ 021F C603 ADD A,3
\ 0221 182E JR ?0070
\ 0223 23 INC HL
\ 0224 182D JR ?0066
\ 0226 CE00 ADC A,0
\ 0228 182C JR ?0072
\ 022A 183D JR ?0062
\ 022C ?0024:
126 }
127 else if(value >= 10)
\ 022C 0E0A LD C,10
\ 022E DD6EE4 LD L,(IX-28)
\ 0231 DD66E5 LD H,(IX-27)
\ 0234 A7 AND A
\ 0235 ED42 SBC HL,BC
\ 0237 DD4EE2 LD C,(IX-30)
\ 023A DD46E3 LD B,(IX-29)
\ 023D DD5EE4 LD E,(IX-28)
\ 0240 3817 JR C,?0027
\ 0242 ?0026:
128 {
129 itoa_2(value, p);
\ 0242 3E00 LD A,BYTE3 itoa_2
\ 0244 210000 LD HL,LWRD itoa_2
\ 0247 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
130 p += 2;
\ 024A 210000 LD HL,0
\ 024D 39 ADD HL,SP
\ 024E 7E LD A,(HL)
\ 024F C602 ADD A,2
\ 0251 ?0070:
\ 0251 77 LD (HL),A
\ 0252 23 INC HL
\ 0253 ?0066:
\ 0253 7E LD A,(HL)
\ 0254 CE00 ADC A,0
\ 0256 ?0072:
\ 0256 77 LD (HL),A
131 }
132 else
\ 0257 1810 JR ?0062
\ 0259 ?0027:
133 {
134 itoa_1(value, p);
\ 0259 3E00 LD A,BYTE3 itoa_1
\ 025B 210000 LD HL,LWRD itoa_1
\ 025E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
135 p++;
\ 0261 DD34E2 INC (IX-30)
\ 0264 2003 JR NZ,?0062
\ 0266 DD34E3 INC (IX-29)
\ 0269 ?0062:
\ 0269 ?0028:
\ 0269 ?0025:
\ 0269 ?0022:
136 }
137 *p++ = '>';
\ 0269 DD6EE2 LD L,(IX-30)
\ 026C DD66E3 LD H,(IX-29)
\ 026F 363E LD (HL),62
138 *p++ = '>';
\ 0271 23 INC HL
\ 0272 23 INC HL
\ 0273 DD75E2 LD (IX-30),L
\ 0276 DD74E3 LD (IX-29),H
\ 0279 2B DEC HL
\ 027A 363E LD (HL),62
139 *p = 0;
\ 027C DD6EE2 LD L,(IX-30)
\ 027F DD66E3 LD H,(IX-29)
\ 0282 3600 LD (HL),0
140
141 //show text <-xxxx>
142 SetTextPos((SCR_WIDTH - (BYTE)get_text_width(buf)) / 2, 8);
\ 0284 0E08 LD C,8
\ 0286 C5 PUSH BC
\ 0287 211600 LD HL,22
\ 028A 39 ADD HL,SP
\ 028B EB EX DE,HL
\ 028C 3E00 LD A,BYTE3 get_text_width
\ 028E 210000 LD HL,LWRD get_text_width
\ 0291 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0294 5D LD E,L
\ 0295 1600 LD D,0
\ 0297 218000 LD HL,128
\ 029A A7 AND A
\ 029B ED52 SBC HL,DE
\ 029D EB EX DE,HL
\ 029E 010200 LD BC,2
\ 02A1 CD0000 CALL LWRD ?SS_DIV_L02
\ 02A4 C1 POP BC
\ 02A5 CD0000 CALL LWRD SetTextPos
143 ClearScreen(&num_region);
\ 02A8 210600 LD HL,6
\ 02AB 39 ADD HL,SP
\ 02AC EB EX DE,HL
\ 02AD CD0000 CALL LWRD ClearScreen
144 PutS(buf, -1);
\ 02B0 0EFF LD C,255
\ 02B2 211400 LD HL,20
\ 02B5 39 ADD HL,SP
\ 02B6 EB EX DE,HL
\ 02B7 CD0000 CALL LWRD PutS
145 if(ui_auto_update) UpdateScreen(&num_region);
\ 02BA 3A0000 LD A,(ui_auto_update)
\ 02BD B7 OR A
\ 02BE 2808 JR Z,?0030
\ 02C0 ?0029:
\ 02C0 210600 LD HL,6
\ 02C3 39 ADD HL,SP
\ 02C4 EB EX DE,HL
\ 02C5 CD0000 CALL LWRD UpdateScreen
\ 02C8 ?0030:
146
147 //check if auto_update
148 if(!ui_auto_update) UpdateScreen(NULL);
\ 02C8 3A0000 LD A,(ui_auto_update)
\ 02CB B7 OR A
\ 02CC 2005 JR NZ,?0032
\ 02CE ?0031:
\ 02CE 5F LD E,A
\ 02CF 57 LD D,A
\ 02D0 CD0000 CALL LWRD UpdateScreen
\ 02D3 ?0032:
149
150 need_draw = FALSE;
\ 02D3 DD36F400 LD (IX-12),0
\ 02D7 ?0013:
151
152 }//need draw
153
154 //handle message
155 key = ap_get_message();
\ 02D7 CD0000 CALL LWRD ap_get_message
156 switch( key)
\ 02DA 5F LD E,A
\ 02DB CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 02DE 0B00 DEFW 11
\ 02E0 03 DEFB 3
\ 02E1 04 DEFB 4
\ 02E2 05 DEFB 5
\ 02E3 06 DEFB 6
\ 02E4 1E DEFB 30
\ 02E5 21 DEFB 33
\ 02E6 27 DEFB 39
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -