📄 ui_clock.lst
字号:
\ 0322 ?0037:
198
199 need_draw = TRUE;
\ 0322 DD36DF01 LD (IX-33),1
200
201 break;
\ 0326 C36205 JP LWRD ?0126
\ 0329 ?0038:
202 case AP_KEY_VOLADD | AP_KEY_UP:
203 case AP_KEY_VOL | AP_KEY_UP:
204 if(set_what >= 6) set_what = 0;
\ 0329 DD7EDC LD A,(IX-36)
\ 032C FE06 CP 6
\ 032E 3806 JR C,?0040
\ 0330 ?0039:
\ 0330 DD36DC00 LD (IX-36),0
\ 0334 1803 JR ?0041
\ 0336 ?0040:
205 else set_what++;
\ 0336 DD34DC INC (IX-36)
\ 0339 ?0041:
206 bTimeAdd=0;
\ 0339 DD36E300 LD (IX-29),0
207 need_draw = TRUE;
\ 033D DD36DF01 LD (IX-33),1
208 break;
\ 0341 C36205 JP LWRD ?0126
\ 0344 ?0042:
209 case AP_KEY_VOLSUB | AP_KEY_UP:
210 if(set_what == 0) set_what = 6;
\ 0344 AF XOR A
\ 0345 DDB6DC OR (IX-36)
\ 0348 2006 JR NZ,?0044
\ 034A ?0043:
\ 034A DD36DC06 LD (IX-36),6
\ 034E 1803 JR ?0045
\ 0350 ?0044:
211 else set_what--;
\ 0350 DD35DC DEC (IX-36)
\ 0353 ?0045:
212 need_draw = TRUE;
\ 0353 DD36DF01 LD (IX-33),1
213 bTimeAdd=0;
\ 0357 DD36E300 LD (IX-29),0
214 break;
\ 035B C36205 JP LWRD ?0126
\ 035E ?0046:
215 case AP_KEY_NEXT: //in setting clock
216 case AP_KEY_NEXT | AP_KEY_HOLD:
217 adjusting = TRUE;
\ 035E DD36E101 LD (IX-31),1
218 bSettime=0xff;
\ 0362 DD36E0FF LD (IX-32),255
219 switch(set_what)
\ 0366 DD5EDC LD E,(IX-36)
\ 0369 CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 036C 01 DEFB 1
\ 036D 0600 DEFW 6
\ 036F 2404 DEFW ?0076
\ 0371 7D03 DEFW ?0048
\ 0373 A203 DEFW ?0052
\ 0375 B403 DEFW ?0056
\ 0377 EE03 DEFW ?0064
\ 0379 0004 DEFW ?0068
\ 037B 1204 DEFW ?0072
\ 037D ?0048:
220 {
221 case 1: //year
222 if(date.year < 2098) date.year++;
\ 037D 013208 LD BC,2098
\ 0380 DD6ED4 LD L,(IX-44)
\ 0383 DD66D5 LD H,(IX-43)
\ 0386 A7 AND A
\ 0387 ED42 SBC HL,BC
\ 0389 300C JR NC,?0050
\ 038B ?0049:
\ 038B DD34D4 INC (IX-44)
\ 038E C22804 JP NZ,?0047
\ 0391 DD34D5 INC (IX-43)
\ 0394 C32804 JP LWRD ?0047
\ 0397 ?0050:
223 else date.year = 2000;
\ 0397 DD36D4D0 LD (IX-44),208
\ 039B DD36D507 LD (IX-43),7
\ 039F ?0051:
224 break;
\ 039F C32804 JP LWRD ?0047
\ 03A2 ?0052:
225 case 2: //month
226 if(date.month < 12) date.month++;
\ 03A2 DD7ED6 LD A,(IX-42)
\ 03A5 FE0C CP 12
\ 03A7 3005 JR NC,?0054
\ 03A9 ?0053:
\ 03A9 DD34D6 INC (IX-42)
\ 03AC 187A JR ?0047
\ 03AE ?0054:
227 else date.month = 1;
\ 03AE DD36D601 LD (IX-42),1
\ 03B2 ?0055:
228 break;
\ 03B2 1874 JR ?0047
\ 03B4 ?0056:
229 case 3: //day
230 days = month_days[date.month-1]; //本月天数
\ 03B4 DD4ED6 LD C,(IX-42)
\ 03B7 0600 LD B,0
\ 03B9 210300 LD HL,month_days-1
\ 03BC 09 ADD HL,BC
\ 03BD 46 LD B,(HL)
\ 03BE DD70DE LD (IX-34),B
231 if((date.year % 4 == 0) && (date.month == 2)) days++; //闰年+1
\ 03C1 DD6ED4 LD L,(IX-44)
\ 03C4 DD66D5 LD H,(IX-43)
\ 03C7 7D LD A,L
\ 03C8 E603 AND 3
\ 03CA 6F LD L,A
\ 03CB 2600 LD H,0
\ 03CD 7D LD A,L
\ 03CE B4 OR H
\ 03CF 200A JR NZ,?0058
\ 03D1 DD46D6 LD B,(IX-42)
\ 03D4 05 DEC B
\ 03D5 05 DEC B
\ 03D6 2003 JR NZ,?0058
\ 03D8 ?0060:
\ 03D8 ?0059:
\ 03D8 ?0057:
\ 03D8 DD34DE INC (IX-34)
\ 03DB ?0058:
232 if(date.day < days ) date.day++;
\ 03DB DD7ED7 LD A,(IX-41)
\ 03DE DDBEDE CP (IX-34)
\ 03E1 3005 JR NC,?0062
\ 03E3 ?0061:
\ 03E3 DD34D7 INC (IX-41)
\ 03E6 1840 JR ?0047
\ 03E8 ?0062:
233 else date.day = 1;
\ 03E8 DD36D701 LD (IX-41),1
\ 03EC ?0063:
234 break;
\ 03EC 183A JR ?0047
\ 03EE ?0064:
235 case 4: //hour
236 if(time.hour < 23) time.hour++;
\ 03EE DD7ED8 LD A,(IX-40)
\ 03F1 FE17 CP 23
\ 03F3 3005 JR NC,?0066
\ 03F5 ?0065:
\ 03F5 DD34D8 INC (IX-40)
\ 03F8 182E JR ?0047
\ 03FA ?0066:
237 else time.hour = 0;
\ 03FA DD36D800 LD (IX-40),0
\ 03FE ?0067:
238 break;
\ 03FE 1828 JR ?0047
\ 0400 ?0068:
239 case 5: //min
240 if(time.minute < 59) time.minute++;
\ 0400 DD7ED9 LD A,(IX-39)
\ 0403 FE3B CP 59
\ 0405 3005 JR NC,?0070
\ 0407 ?0069:
\ 0407 DD34D9 INC (IX-39)
\ 040A 181C JR ?0047
\ 040C ?0070:
241 else time.minute = 0;
\ 040C DD36D900 LD (IX-39),0
\ 0410 ?0071:
242 break;
\ 0410 1816 JR ?0047
\ 0412 ?0072:
243 case 6: //sec
244 if(time.second< 59) time.second++;
\ 0412 DD7EDA LD A,(IX-38)
\ 0415 FE3B CP 59
\ 0417 3005 JR NC,?0074
\ 0419 ?0073:
\ 0419 DD34DA INC (IX-38)
\ 041C 180A JR ?0047
\ 041E ?0074:
245 else time.second= 0;
\ 041E DD36DA00 LD (IX-38),0
\ 0422 ?0075:
246 break;
\ 0422 1804 JR ?0047
\ 0424 ?0076:
247 default: //no in setting
248 bSettime=0;
\ 0424 DD36E000 LD (IX-32),0
249 break;
\ 0428 ?0047:
\ 0428 ?0079:
250 } //set_what
251
252 //clear the key buffer
253 do
254 {
255 key = ap_get_message();
\ 0428 CD0000 CALL LWRD ap_get_message
\ 042B DD77DD LD (IX-35),A
256 if(key == (AP_KEY_NEXT | AP_KEY_UP))
\ 042E FE26 CP 38
\ 0430 2006 JR NZ,?0081
\ 0432 ?0080:
257 {
258 adjusting = FALSE;
\ 0432 DD36E100 LD (IX-31),0
259 break;
\ 0436 1806 JR ?0077
\ 0438 ?0081:
260 }
261 }
262 while(key != 0);
\ 0438 AF XOR A
\ 0439 DDB6DD OR (IX-35)
\ 043C 20EA JR NZ,?0047
\ 043E ?0077:
263
264 need_draw = TRUE;
\ 043E DD36DF01 LD (IX-33),1
265
266 break;
\ 0442 C36205 JP LWRD ?0126
\ 0445 ?0082:
267
268
269 case AP_KEY_PREV: //in setting clock
270 case AP_KEY_PREV | AP_KEY_HOLD:
271 adjusting = TRUE;
\ 0445 DD36E101 LD (IX-31),1
272 bSettime=0xff;
\ 0449 DD36E0FF LD (IX-32),255
273 switch(set_what)
\ 044D DD5EDC LD E,(IX-36)
\ 0450 CD0000 CALL LWRD ?C_S_SWITCH_L06
\ 0453 01 DEFB 1
\ 0454 0600 DEFW 6
\ 0456 0D05 DEFW ?0112
\ 0458 6404 DEFW ?0084
\ 045A 8D04 DEFW ?0088
\ 045C 9F04 DEFW ?0092
\ 045E DA04 DEFW ?0100
\ 0460 EB04 DEFW ?0104
\ 0462 FC04 DEFW ?0108
\ 0464 ?0084:
274 {
275 case 1: //year
276 if(date.year > 2000) date.year--;
\ 0464 DD4ED4 LD C,(IX-44)
\ 0467 DD46D5 LD B,(IX-43)
\ 046A 21D007 LD HL,2000
\ 046D A7 AND A
\ 046E ED42 SBC HL,BC
\ 0470 3010 JR NC,?0086
\ 0472 ?0085:
\ 0472 DD6ED4 LD L,(IX-44)
\ 0475 DD66D5 LD H,(IX-43)
\ 0478 2B DEC HL
\ 0479 DD75D4 LD (IX-44),L
\ 047C DD74D5 LD (IX-43),H
\ 047F C31105 JP LWRD ?0083
\ 0482 ?0086:
277 else date.year = 2098;
\ 0482 DD36D432 LD (IX-44),50
\ 0486 DD36D508 LD (IX-43),8
\ 048A ?0087:
278 break;
\ 048A C31105 JP LWRD ?0083
\ 048D ?0088:
279 case 2: //month
280 if(date.month > 1) date.month--;
\ 048D 3E01 LD A,1
\ 048F DDBED6 CP (IX-42)
\ 0492 3005 JR NC,?0090
\ 0494 ?0089:
\ 0494 DD35D6 DEC (IX-42)
\ 0497 1878 JR ?0083
\ 0499 ?0090:
281 else date.month = 12;
\ 0499 DD36D60C LD (IX-42),12
\ 049D ?0091:
282 break;
\ 049D 1872 JR ?0083
\ 049F ?0092:
283 case 3: //day
284 days = month_days[date.month-1]; //本月天数
\ 049F DD4ED6 LD C,(IX-42)
\ 04A2 0600 LD B,0
\ 04A4 210300 LD HL,month_days-1
\ 04A7 09 ADD HL,BC
\ 04A8 46 LD B,(HL)
\ 04A9 DD70DE LD (IX-34),B
285 if((date.year % 4 == 0) && (date.month == 2)) days++; //闰年+1
\ 04AC DD6ED4 LD L,(IX-44)
\ 04AF DD66D5 LD H,(IX-43)
\ 04B2 7D LD A,L
\ 04B3 E603 AND 3
\ 04B5 6F LD L,A
\ 04B6 2600 LD H,0
\ 04B8 7D LD A,L
\ 04B9 B4 OR H
\ 04BA 200A JR NZ,?0094
\ 04BC DD46D6 LD B,(IX-42)
\ 04BF 05 DEC B
\ 04C0 05 DEC B
\ 04C1 2003 JR NZ,?0094
\ 04C3 ?0096:
\ 04C3 ?0095:
\ 04C3 ?0093:
\ 04C3 DD34DE INC (IX-34)
\ 04C6 ?0094:
286 if(date.day > 1 ) date.day--;
\ 04C6 3E01 LD A,1
\ 04C8 DDBED7 CP (IX-41)
\ 04CB 3005 JR NC,?0098
\ 04CD ?0097:
\ 04CD DD35D7 DEC (IX-41)
\ 04D0 183F JR ?0083
\ 04D2 ?0098:
287 else date.day = days;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -