📄 ui_main.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 12/Apr/106 09:56:15 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d35f\ap\common\ui_main.c #
# List file = d:\case_i_d35f\ap\ap_main\list\ui_main.lst #
# Object file = d:\case_i_d35f\ap\ap_main\release\obj\ui_main.r01 #
# Command line = -v0 -mb -OD:\case_i_d35f\ap\ap_main\release\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d35f\ap\ap_main\List\ -q -t8 -X #
# -Id:\sdk_i_35f\inc\ -Id:\case_i_d35f\inc\ #
# d:\case_i_d35f\AP\COMMON\ui_main.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_main(17)
\ 0000 RSEG COM_MAIN(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 RSEG COM_MAIN_D(0)
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN PutS
\ 0000 EXTERN PutSDImage
\ 0000 EXTERN ResShowLogo
\ 0000 EXTERN SD_FRead
\ 0000 EXTERN SD_FSeek
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN UpdateScreen
\ 0000 EXTERN ap_sleep
\ 0000 PUBLIC batt_id
\ 0000 PUBLIC itoa1
\ 0000 PUBLIC itoa2
\ 0000 PUBLIC itoa3
\ 0000 PUBLIC itoa4
\ 0000 PUBLIC main_ResShowPic
\ 0000 PUBLIC region_a
\ 0000 PUBLIC region_b
\ 0000 PUBLIC region_batt
\ 0000 PUBLIC region_c
\ 0000 PUBLIC region_cd
\ 0000 PUBLIC region_d
\ 0000 PUBLIC region_d2
\ 0000 PUBLIC region_e
\ 0000 PUBLIC region_ef
\ 0000 PUBLIC region_f
\ 0000 PUBLIC region_g
\ 0000 EXTERN res_entry
\ 0000 EXTERN res_fp
\ 0000 EXTERN res_region
\ 0000 EXTERN ui_auto_update
\ 0000 PUBLIC ui_show_a
\ 0000 PUBLIC ui_show_b
\ 0000 PUBLIC ui_show_batt
\ 0000 PUBLIC ui_show_c
\ 0000 PUBLIC ui_show_cd
\ 0000 PUBLIC ui_show_d
\ 0000 PUBLIC ui_show_d2
\ 0000 PUBLIC ui_show_d_pic
\ 0000 PUBLIC ui_show_e
\ 0000 PUBLIC ui_show_ef
\ 0000 PUBLIC ui_show_f
\ 0000 PUBLIC ui_show_g
\ 0000 PUBLIC ui_show_lock
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?UC_DIV_L01
\ 0000 EXTERN ?UC_MOD_L01
\ 0000 EXTERN ?US_DIV_L02
\ 0000 EXTERN ?US_MOD_L02
\ 0000 EXTERN ?L_LSH_L03
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG COM_MAIN
\ 0000 itoa1:
1 /*
2 *******************************************************************************
3 * ACTOS AP
4 * ap common lib , main ui control
5 *
6 * (c) Copyright, Actions Co,Ld.
7 * All Right Reserved
8 *
9 *******************************************************************************
10 */
11 #pragma codeseg(COM_MAIN)
12
13 #include "ap_common.h"
14
15 //主界面为了不用bank切换而使用 ResShowPic()
16 extern res_entry_t res_entry;
17 extern region_t res_region;
18
19 //bank const
20 /*注意-以下函数必须能访问到这些常量 */
21 #pragma memory=constseg(COM_MAIN_D)
22 const region_t region_a = {POSITION_A, 0, 15, 16};
23 const region_t region_b = {POSITION_B, 0, 21, 16};
24 const region_t region_c = {POSITION_C, 0, 11, 16};
25 const region_t region_d2 = {POSITION_D-6, 0, 23, 16};
26 const region_t region_d = {POSITION_D, 0, 17, 16};
27 const region_t region_cd = {POSITION_C, 0, 11+17+1, 16};
28 const region_t region_e = {POSITION_E, 0, 16, 16};
29 const region_t region_f = {POSITION_F, 0, 29, 16};
30 const region_t region_ef = {POSITION_E, 0, 15+29+3, 16};
31 const region_t region_g = {POSITION_G, 16, 128, 16};
32 const region_t region_batt = {POSITION_BATT, 0, 13, 16};
33
34 const WORD batt_id[9] = {BATTLVL1, BATTLVL2, BATTLVL3, BATTLVL4,
35 BATTLVL5, BATTLVL6, BATTLVL7, BATTLVL8, BATTLVL9}; //对应1~9级电量的图标
36 #pragma memory=default
37
38 /*
39 ********************************************************************************
40 * Description : 数字转换成字符串
41 *
42 * Arguments : i, 数字
43 * buf, 输出字符串指针, 3 bytes
44 *
45 * Returns : 成功, 输出字符串指针
46 *
47 * Notes : 数字只能是 0~9
48 *
49 ********************************************************************************
50 */
51 char *itoa1(BYTE i, char *buf)
52 {
\ 0000 DDE5 PUSH IX
\ 0002 C5 PUSH BC
\ 0003 DDE1 POP IX
53 //ASSERT(buf != NULL);
54 /*
55 buf[0] = mychar[i % 10];
56 buf[1] = 0;
57 */
58 buf[0] = (i % 10) + '0';
\ 0005 060A LD B,10
\ 0007 7B LD A,E
\ 0008 CD0000 CALL LWRD ?UC_MOD_L01
\ 000B C630 ADD A,48
\ 000D DD7700 LD (IX+0),A
59 buf[1] = 0;
\ 0010 DD360100 LD (IX+1),0
60 return buf;
\ 0014 ?0120:
\ 0014 DDE5 PUSH IX
\ 0016 E1 POP HL
61 }
\ 0017 DDE1 POP IX
\ 0019 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001C itoa2:
62
63 /*
64 ********************************************************************************
65 * Description : 数字转换成字符串
66 *
67 * Arguments : i, 数字
68 * buf, 输出字符串指针, 3 bytes
69 *
70 * Returns : 成功, 输出字符串指针
71 *
72 * Notes : 数字只能是 00~99
73 *
74 ********************************************************************************
75 */
76 char *itoa2(BYTE i, char *buf)
77 {
\ 001C DDE5 PUSH IX
\ 001E C5 PUSH BC
\ 001F DDE1 POP IX
\ 0021 53 LD D,E
78 //ASSERT(buf != NULL);
79 /*
80 buf[0] = mychar[(i % 100) / 10];
81 buf[1] = mychar[i % 10];
82 buf[2] = 0;
83 */
84 buf[0] = (i % 100) / 10 + '0';
\ 0022 0664 LD B,100
\ 0024 7B LD A,E
\ 0025 CD0000 CALL LWRD ?UC_MOD_L01
\ 0028 060A LD B,10
\ 002A CD0000 CALL LWRD ?UC_DIV_L01
\ 002D C630 ADD A,48
\ 002F DD7700 LD (IX+0),A
85 buf[1] = (i % 10) + '0';
\ 0032 7A LD A,D
\ 0033 CD0000 CALL LWRD ?UC_MOD_L01
\ 0036 C630 ADD A,48
\ 0038 DD7701 LD (IX+1),A
86 buf[2] = 0;
\ 003B DD360200 LD (IX+2),0
87 return buf;
\ 003F C31400 JP LWRD ?0120
88 }
\ 0042 itoa3:
89 /*
90 ********************************************************************************
91 * Description : 数字转换成字符串
92 *
93 * Arguments : i, 数字
94 * buf, 输出字符串指针,4 bytes
95 *
96 * Returns : 成功, 输出字符串指针
97 *
98 * Notes : 数字只能是 000~999
99 *
100 ********************************************************************************
101 */
102 char *itoa3(WORD i, char *buf)
103 {
\ 0042 FDE5 PUSH IY
\ 0044 DDE5 PUSH IX
\ 0046 C5 PUSH BC
\ 0047 DDE1 POP IX
\ 0049 D5 PUSH DE
\ 004A FDE1 POP IY
104 //ASSERT(buf != NULL);
105 /*
106 buf[0] = mychar[(i % 1000) / 100];
107 buf[1] = mychar[(i % 100) / 10];
108 buf[2] = mychar[i % 10];
109 buf[3] = 0;
110 */
111 buf[0] = (i % 1000) / 100 + '0';
\ 004C 01E803 LD BC,1000
\ 004F CD0000 CALL LWRD ?US_MOD_L02
\ 0052 016400 LD BC,100
112 buf[1] = (i % 100) / 10 + '0';
\ 0055 CD7900 CALL LWRD ?0124
\ 0058 0E0A LD C,10
\ 005A CD0000 CALL LWRD ?US_DIV_L02
\ 005D 7B LD A,E
\ 005E C630 ADD A,48
\ 0060 DD7701 LD (IX+1),A
113 buf[2] = (i % 10) + '0';
\ 0063 CD8200 CALL LWRD ?0125
\ 0066 7B LD A,E
\ 0067 C630 ADD A,48
\ 0069 DD7702 LD (IX+2),A
114 buf[3] = 0;
\ 006C DD7003 LD (IX+3),B
115
116 return buf;
\ 006F ?0121:
\ 006F DDE5 PUSH IX
\ 0071 E1 POP HL
117 }
\ 0072 DDE1 POP IX
\ 0074 FDE1 POP IY
\ 0076 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0079 ?0124:
\ 0079 CD0000 CALL LWRD ?US_DIV_L02
\ 007C 7B LD A,E
\ 007D C630 ADD A,48
\ 007F DD7700 LD (IX+0),A
\ 0082 ?0125:
\ 0082 FDE5 PUSH IY
\ 0084 D1 POP DE
\ 0085 C30000 JP LWRD ?US_MOD_L02
\ 0088 itoa4:
118 /*
119 ********************************************************************************
120 * Description : 数字转换成字符串
121 *
122 * Arguments : i, 数字
123 * buf, 输出字符串指针,5 bytes
124 *
125 * Returns : 成功, 输出字符串指针
126 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -