📄 ui_clock.lst
字号:
\ 04D2 DD46DE LD B,(IX-34)
\ 04D5 DD70D7 LD (IX-41),B
\ 04D8 ?0099:
288 break;
\ 04D8 1837 JR ?0083
\ 04DA ?0100:
289 case 4: //hour
290 if(time.hour > 0) time.hour--;
\ 04DA AF XOR A
\ 04DB DDB6D8 OR (IX-40)
\ 04DE 2805 JR Z,?0102
\ 04E0 ?0101:
\ 04E0 DD35D8 DEC (IX-40)
\ 04E3 182C JR ?0083
\ 04E5 ?0102:
291 else time.hour = 23;
\ 04E5 DD36D817 LD (IX-40),23
\ 04E9 ?0103:
292 break;
\ 04E9 1826 JR ?0083
\ 04EB ?0104:
293 case 5: //min
294 if(time.minute > 0) time.minute--;
\ 04EB DD7ED9 LD A,(IX-39)
\ 04EE B7 OR A
\ 04EF 2805 JR Z,?0106
\ 04F1 ?0105:
\ 04F1 DD35D9 DEC (IX-39)
\ 04F4 181B JR ?0083
\ 04F6 ?0106:
295 else time.minute = 59;
\ 04F6 DD36D93B LD (IX-39),59
\ 04FA ?0107:
296 break;
\ 04FA 1815 JR ?0083
\ 04FC ?0108:
297 case 6: //sec
298 if(time.second> 0) time.second--;
\ 04FC DD7EDA LD A,(IX-38)
\ 04FF B7 OR A
\ 0500 2805 JR Z,?0110
\ 0502 ?0109:
\ 0502 DD35DA DEC (IX-38)
\ 0505 180A JR ?0083
\ 0507 ?0110:
299 else time.second = 59;
\ 0507 DD36DA3B LD (IX-38),59
\ 050B ?0111:
300 break;
\ 050B 1804 JR ?0083
\ 050D ?0112:
301 default: //no in setting
302 bSettime=0;
\ 050D DD36E000 LD (IX-32),0
303 break;
\ 0511 ?0083:
\ 0511 ?0115:
304 } //set_what
305
306 //clear the key buffer
307 do
308 {
309 key = ap_get_message();
\ 0511 CD0000 CALL LWRD ap_get_message
\ 0514 DD77DD LD (IX-35),A
310 if(key == (AP_KEY_PREV | AP_KEY_UP))
\ 0517 FE25 CP 37
\ 0519 2006 JR NZ,?0117
\ 051B ?0116:
311 {
312 adjusting = FALSE;
\ 051B DD36E100 LD (IX-31),0
313 break;
\ 051F 1806 JR ?0113
\ 0521 ?0117:
314 }
315 }
316 while(key != 0);
\ 0521 AF XOR A
\ 0522 DDB6DD OR (IX-35)
\ 0525 20EA JR NZ,?0083
\ 0527 ?0113:
317
318 need_draw = TRUE;
\ 0527 DD36DF01 LD (IX-33),1
319
320 break;
\ 052B 1835 JR ?0126
\ 052D ?0118:
321
322
323 case AP_KEY_NEXT | AP_KEY_UP:
324 case AP_KEY_PREV| AP_KEY_UP:
325 adjusting = FALSE;
\ 052D DD36E100 LD (IX-31),0
326
327 break;
\ 0531 182F JR ?0126
\ 0533 ?0119:
328 case AP_MSG_WAIT_TIMEOUT: //子菜单界面在8秒后返回系统功能菜单, add by ccm 2004/07/15
329 //case AP_KEY_PLAY | AP_KEY_UP:
330 bSettime=0;
\ 0533 DD36E000 LD (IX-32),0
\ 0537 ?0120:
331 case AP_KEY_MODE | AP_KEY_UP:
332 //return 0; //退出
333
334 key = 0;
\ 0537 DD36DD00 LD (IX-35),0
335 set_ok = TRUE;
\ 053B DD36E401 LD (IX-28),1
336
337 break;
\ 053F 1821 JR ?0126
\ 0541 ?0121:
338 default:
339 key = ap_handle_hotkey(key);
\ 0541 DD5EDD LD E,(IX-35)
\ 0544 CD0000 CALL LWRD ap_handle_hotkey
\ 0547 DD77DD LD (IX-35),A
340 if(key == RESULT_REDRAW)
\ 054A FE32 CP 50
\ 054C 200A JR NZ,?0123
\ 054E ?0122:
341 {
342 need_draw_backgroud = TRUE;
\ 054E DD36E501 LD (IX-27),1
343 need_draw = TRUE;
\ 0552 DD36DF01 LD (IX-33),1
\ 0556 180A JR ?0126
\ 0558 ?0123:
344 }
345 else if(key != 0)
\ 0558 AF XOR A
\ 0559 DDB6DD OR (IX-35)
\ 055C 2804 JR Z,?0126
\ 055E ?0125:
346 {
347 set_ok = TRUE;
\ 055E DD36E401 LD (IX-28),1
\ 0562 ?0126:
\ 0562 ?0124:
\ 0562 ?0033:
348 }
349 } //switch(key)
350
351 //set ok?
352 if(set_ok) break;
\ 0562 AF XOR A
\ 0563 DDB6E4 OR (IX-28)
\ 0566 CA6D00 JP Z,?0005
\ 0569 ?0127:
\ 0569 1803 JR ?0004
\ 056B ?0128:
\ 056B C36D00 JP LWRD ?0005
\ 056E ?0004:
353 }//while(1)
354 if(bSettime==0)
\ 056E AF XOR A
\ 056F DDB6E0 OR (IX-32)
\ 0572 2008 JR NZ,?0130
\ 0574 ?0129:
355 {
356 return key;
\ 0574 DD6EDD LD L,(IX-35)
\ 0577 2600 LD H,0
357 }
\ 0579 C32106 JP LWRD ?0139
\ 057C ?0130:
358 else if ( key != 0 ) //不是按mode退出的都不保存设置,如USB线插上等
\ 057C AF XOR A
\ 057D DDB6DD OR (IX-35)
\ 0580 2808 JR Z,?0132
\ 0582 ?0131:
359 {
360 return key;
\ 0582 DD6EDD LD L,(IX-35)
\ 0585 2600 LD H,0
361 }
\ 0587 C32106 JP LWRD ?0139
\ 058A ?0132:
362
363 // SetAsciiFont(FONT_TYPE_DEFAULT);
364
365 //re-check the date/time format
366 days = month_days[date.month - 1];
\ 058A DD4ED6 LD C,(IX-42)
\ 058D 0600 LD B,0
\ 058F 210300 LD HL,month_days-1
\ 0592 09 ADD HL,BC
\ 0593 46 LD B,(HL)
\ 0594 DD70DE LD (IX-34),B
367 if((date.year % 4 == 0) && (date.month == 2)) days++; //润年
\ 0597 DD6ED4 LD L,(IX-44)
\ 059A DD66D5 LD H,(IX-43)
\ 059D 7D LD A,L
\ 059E E603 AND 3
\ 05A0 6F LD L,A
\ 05A1 2600 LD H,0
\ 05A3 7D LD A,L
\ 05A4 B4 OR H
\ 05A5 200A JR NZ,?0134
\ 05A7 DD46D6 LD B,(IX-42)
\ 05AA 05 DEC B
\ 05AB 05 DEC B
\ 05AC 2003 JR NZ,?0134
\ 05AE ?0136:
\ 05AE ?0135:
\ 05AE ?0133:
\ 05AE DD34DE INC (IX-34)
\ 05B1 ?0134:
368 if(date.day > days) date.day = days;
\ 05B1 DD7EDE LD A,(IX-34)
\ 05B4 DDBED7 CP (IX-41)
\ 05B7 3006 JR NC,?0138
\ 05B9 ?0137:
\ 05B9 DD46DE LD B,(IX-34)
\ 05BC DD70D7 LD (IX-41),B
\ 05BF ?0138:
369
370 //save date & time
371 result = TM_SetDate(&date, 0);
\ 05BF 0E00 LD C,0
\ 05C1 210000 LD HL,0
\ 05C4 39 ADD HL,SP
\ 05C5 5D LD E,L
\ 05C6 54 LD D,H
\ 05C7 CD0000 CALL LWRD TM_SetDate
\ 05CA DD77E2 LD (IX-30),A
372 //DUMP("set date", 0);
373 ASSERT(result);
374 result = TM_SetTime(&time);
\ 05CD 210400 LD HL,4
\ 05D0 39 ADD HL,SP
\ 05D1 5D LD E,L
\ 05D2 54 LD D,H
\ 05D3 CD0000 CALL LWRD TM_SetTime
\ 05D6 DD77E2 LD (IX-30),A
375 //DUMP("set time", 0);
376 ASSERT(result);
377
378 //将systemtime 和 gwtime写回到VRAM中
379 VMRead(&kval, VM_KERNEL, sizeof(kval_t));
\ 05D9 210B00 LD HL,11
\ 05DC E5 PUSH HL
\ 05DD 010000 LD BC,0
\ 05E0 212200 LD HL,34
\ 05E3 39 ADD HL,SP
\ 05E4 5D LD E,L
\ 05E5 54 LD D,H
\ 05E6 CD0000 CALL LWRD VMRead
\ 05E9 E1 POP HL
380 kval.systemtime = systemtime; //全局变量
\ 05EA ED4B0200 LD BC,(systemtime+2)
\ 05EE 2A0000 LD HL,(systemtime)
\ 05F1 DD75F6 LD (IX-10),L
\ 05F4 DD74F7 LD (IX-9),H
\ 05F7 DD71F8 LD (IX-8),C
\ 05FA DD70F9 LD (IX-7),B
381 kval.gwtime = gwtime; //全局变量
\ 05FD ED4B0200 LD BC,(gwtime+2)
\ 0601 2A0000 LD HL,(gwtime)
\ 0604 DD75FA LD (IX-6),L
\ 0607 DD74FB LD (IX-5),H
\ 060A DD71FC LD (IX-4),C
\ 060D DD70FD LD (IX-3),B
382 VMWrite(&kval, VM_KERNEL);
\ 0610 010000 LD BC,0
\ 0613 212000 LD HL,32
\ 0616 39 ADD HL,SP
\ 0617 5D LD E,L
\ 0618 54 LD D,H
\ 0619 CD0000 CALL LWRD VMWrite
383
384 return key;
\ 061C DD6EDD LD L,(IX-35)
\ 061F 2600 LD H,0
385 }
\ 0621 ?0139:
\ 0621 DDF9 LD SP,IX
\ 0623 DDE1 POP IX
\ 0625 D1 POP DE
\ 0626 C1 POP BC
\ 0627 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
386
\ 0000 RSEG CONST
\ 0000 clock_region:
\ 0000 22 DEFB '"'
\ 0001 28 DEFB '('
\ 0002 3C DEFB '<'
\ 0003 10 DEFB 16
\ 0004 month_days:
\ 0004 1F DEFB 31
\ 0005 1C DEFB 28
\ 0006 1F DEFB 31
\ 0007 1E DEFB 30
\ 0008 1F DEFB 31
\ 0009 1E DEFB 30
\ 000A 1F DEFB 31
\ 000B 1F DEFB 31
\ 000C 1E DEFB 30
\ 000D 1F DEFB 31
\ 000E 1E DEFB 30
\ 000F 1F DEFB 31
\ 0010 ?0002:
\ 0010 D707 DEFW 2007
\ 0012 01 DEFB 1
\ 0013 01 DEFB 1
\ 0014 ?0003:
\ 0014 0C DEFB 12
\ 0015 00 DEFB 0
\ 0016 00 DEFB 0
\ 0017 END
Errors: none
Warnings: none
Code size: 1578
Constant size: 23
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -