📄 ui_slider.lst
字号:
79 ASSERT(slider->step > 0);
80
81 while(1)
82 {
83 if(need_draw)
\ 00DC AF XOR A
\ 00DD DDB6F5 OR (IX-11)
\ 00E0 CADA02 JP Z,?0013
\ 00E3 ?0012:
84 {
85 //clear screen
86 ClearScreen(&bar_region);
\ 00E3 210A00 LD HL,10
\ 00E6 39 ADD HL,SP
\ 00E7 EB EX DE,HL
\ 00E8 CD0000 CALL LWRD ClearScreen
87
88 //show pic
89 slider_ResShowPic(SBAR, POSITION_SLIDERBAR, 16);
\ 00EB 0E10 LD C,16
\ 00ED C5 PUSH BC
\ 00EE 0E0F LD C,15
\ 00F0 112101 LD DE,289
\ 00F3 3E00 LD A,BYTE3 slider_ResShowPic
\ 00F5 210000 LD HL,LWRD slider_ResShowPic
\ 00F8 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00FB F1 POP AF
90 start = POSITION_SLIDERBAR+1;
91 end = (POSITION_SLIDERBAR -1) +
92 SLIDER_BAR_WIDTH * (slider->value - slider->min) / (slider->max - slider->min);
\ 00FC FD4E00 LD C,(IY+0)
\ 00FF FD4601 LD B,(IY+1)
\ 0102 FD6E04 LD L,(IY+4)
\ 0105 FD6605 LD H,(IY+5)
\ 0108 A7 AND A
\ 0109 ED42 SBC HL,BC
\ 010B 4D LD C,L
\ 010C 44 LD B,H
\ 010D 116200 LD DE,98
\ 0110 CD0000 CALL LWRD ?S_MUL_L02
\ 0113 FD4E00 LD C,(IY+0)
\ 0116 FD4601 LD B,(IY+1)
\ 0119 FD6E02 LD L,(IY+2)
\ 011C FD6603 LD H,(IY+3)
\ 011F A7 AND A
\ 0120 ED42 SBC HL,BC
\ 0122 4D LD C,L
\ 0123 44 LD B,H
\ 0124 CD0000 CALL LWRD ?SS_DIV_L02
\ 0127 210E00 LD HL,14
\ 012A 19 ADD HL,DE
\ 012B DD75F0 LD (IX-16),L
\ 012E DD74F1 LD (IX-15),H
\ 0131 DD36E610 LD (IX-26),16
\ 0135 DD36E700 LD (IX-25),0
\ 0139 ?0015:
93 ASSERT(end < SCR_WIDTH);
94 //分段显示背景
95 while(start+SLIDER_BG_WIDTH < end)
\ 0139 210400 LD HL,4
\ 013C DD4EE6 LD C,(IX-26)
\ 013F DD46E7 LD B,(IX-25)
\ 0142 09 ADD HL,BC
\ 0143 DD4EF0 LD C,(IX-16)
\ 0146 DD46F1 LD B,(IX-15)
\ 0149 F680 OR 128
\ 014B ED42 SBC HL,BC
\ 014D E25101 JP PO,?0082
\ 0150 AC XOR H
\ 0151 ?0082:
\ 0151 0E10 LD C,16
\ 0153 C5 PUSH BC
\ 0154 DD4EE6 LD C,(IX-26)
\ 0157 F27401 JP P,?0014
\ 015A ?0016:
96 {
97 slider_ResShowPic(SBKGRD, start, 16);
\ 015A 116700 LD DE,103
\ 015D 3E00 LD A,BYTE3 slider_ResShowPic
\ 015F 210000 LD HL,LWRD slider_ResShowPic
\ 0162 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0165 F1 POP AF
98 start += SLIDER_BG_WIDTH;
\ 0166 210400 LD HL,4
\ 0169 39 ADD HL,SP
\ 016A 7E LD A,(HL)
\ 016B C604 ADD A,4
\ 016D 77 LD (HL),A
\ 016E 30C9 JR NC,?0015
\ 0170 23 INC HL
\ 0171 34 INC (HL)
\ 0172 18C5 JR ?0015
\ 0174 ?0014:
99 }
100 // 在背景的尽头处显示拖把
101 slider_ResShowPic(SSLIDER, start, 16);
\ 0174 112201 LD DE,290
\ 0177 3E00 LD A,BYTE3 slider_ResShowPic
\ 0179 210000 LD HL,LWRD slider_ResShowPic
\ 017C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 017F F1 POP AF
102
103 //format text <-xxxx>
104 p = buf;
\ 0180 211400 LD HL,20
\ 0183 39 ADD HL,SP
105 *p++ = '<';
\ 0184 363C LD (HL),60
106 *p++ = '<';
\ 0186 23 INC HL
\ 0187 23 INC HL
\ 0188 DD75E2 LD (IX-30),L
\ 018B DD74E3 LD (IX-29),H
\ 018E 2B DEC HL
\ 018F 363C LD (HL),60
107 if(slider->value < 0)
\ 0191 FDCB057E BIT 7,(IY+5)
\ 0195 2824 JR Z,?0018
\ 0197 ?0017:
108 {
109 value = -(slider->value);
\ 0197 FD4E04 LD C,(IY+4)
\ 019A FD4605 LD B,(IY+5)
\ 019D A7 AND A
\ 019E 210000 LD HL,0
\ 01A1 ED42 SBC HL,BC
\ 01A3 DD75E4 LD (IX-28),L
\ 01A6 DD74E5 LD (IX-27),H
110 *p++ = '-'; //显示负数
\ 01A9 DD6EE2 LD L,(IX-30)
\ 01AC DD66E3 LD H,(IX-29)
\ 01AF 23 INC HL
\ 01B0 DD75E2 LD (IX-30),L
\ 01B3 DD74E3 LD (IX-29),H
\ 01B6 2B DEC HL
\ 01B7 362D LD (HL),45
111 }
112 else
\ 01B9 180C JR ?0019
\ 01BB ?0018:
113 {
114 value = slider->value;
\ 01BB FD6E04 LD L,(IY+4)
\ 01BE DD75E4 LD (IX-28),L
\ 01C1 FD6605 LD H,(IY+5)
\ 01C4 DD74E5 LD (IX-27),H
\ 01C7 ?0019:
115 }
116
117 if(value >= 1000)
\ 01C7 01E803 LD BC,1000
\ 01CA DD6EE4 LD L,(IX-28)
\ 01CD DD66E5 LD H,(IX-27)
\ 01D0 A7 AND A
\ 01D1 ED42 SBC HL,BC
\ 01D3 3826 JR C,?0021
\ 01D5 ?0020:
118 {
119 itoa4(value, p);
\ 01D5 DD4EE2 LD C,(IX-30)
\ 01D8 DD46E3 LD B,(IX-29)
\ 01DB DD5EE4 LD E,(IX-28)
\ 01DE DD56E5 LD D,(IX-27)
\ 01E1 3E00 LD A,BYTE3 itoa4
\ 01E3 210000 LD HL,LWRD itoa4
\ 01E6 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
120 p += 4;
\ 01E9 210000 LD HL,0
\ 01EC 39 ADD HL,SP
\ 01ED 7E LD A,(HL)
\ 01EE C604 ADD A,4
\ 01F0 1862 JR ?0094
\ 01F2 23 INC HL
\ 01F3 1861 JR ?0090
\ 01F5 CE00 ADC A,0
\ 01F7 1860 JR ?0096
\ 01F9 1871 JR ?0084
\ 01FB ?0021:
121 }
122 else if(value >= 100)
\ 01FB 016400 LD BC,100
\ 01FE DD6EE4 LD L,(IX-28)
\ 0201 DD66E5 LD H,(IX-27)
\ 0204 A7 AND A
\ 0205 ED42 SBC HL,BC
\ 0207 3826 JR C,?0024
\ 0209 ?0023:
123 {
124 itoa3(value, p);
\ 0209 DD4EE2 LD C,(IX-30)
\ 020C DD46E3 LD B,(IX-29)
\ 020F DD5EE4 LD E,(IX-28)
\ 0212 DD56E5 LD D,(IX-27)
\ 0215 3E00 LD A,BYTE3 itoa3
\ 0217 210000 LD HL,LWRD itoa3
\ 021A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
125 p += 3;
\ 021D 210000 LD HL,0
\ 0220 39 ADD HL,SP
\ 0221 7E LD A,(HL)
\ 0222 C603 ADD A,3
\ 0224 182E JR ?0094
\ 0226 23 INC HL
\ 0227 182D JR ?0090
\ 0229 CE00 ADC A,0
\ 022B 182C JR ?0096
\ 022D 183D JR ?0084
\ 022F ?0024:
126 }
127 else if(value >= 10)
\ 022F 0E0A LD C,10
\ 0231 DD6EE4 LD L,(IX-28)
\ 0234 DD66E5 LD H,(IX-27)
\ 0237 A7 AND A
\ 0238 ED42 SBC HL,BC
\ 023A DD4EE2 LD C,(IX-30)
\ 023D DD46E3 LD B,(IX-29)
\ 0240 DD5EE4 LD E,(IX-28)
\ 0243 3817 JR C,?0027
\ 0245 ?0026:
128 {
129 itoa2(value, p);
\ 0245 3E00 LD A,BYTE3 itoa2
\ 0247 210000 LD HL,LWRD itoa2
\ 024A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
130 p += 2;
\ 024D 210000 LD HL,0
\ 0250 39 ADD HL,SP
\ 0251 7E LD A,(HL)
\ 0252 C602 ADD A,2
\ 0254 ?0094:
\ 0254 77 LD (HL),A
\ 0255 23 INC HL
\ 0256 ?0090:
\ 0256 7E LD A,(HL)
\ 0257 CE00 ADC A,0
\ 0259 ?0096:
\ 0259 77 LD (HL),A
131 }
132 else
\ 025A 1810 JR ?0084
\ 025C ?0027:
133 {
134 itoa1(value, p);
\ 025C 3E00 LD A,BYTE3 itoa1
\ 025E 210000 LD HL,LWRD itoa1
\ 0261 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
135 p++;
\ 0264 DD34E2 INC (IX-30)
\ 0267 2003 JR NZ,?0084
\ 0269 DD34E3 INC (IX-29)
\ 026C ?0084:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -