📄 ui_main_for_rec.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 25/Dec/106 17:00:09 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d90f\ap\common\ui_main_for_rec.c #
# List file = d:\case_i_d90f\ap\ap_fmrecord\list\ui_main_for_rec.lst#
# Object file = d:\case_i_d90f\ap\ap_fmrecord\obj\ui_main_for_rec.r01#
# Command line = -v0 -mb -OD:\case_i_d90f\ap\ap_fmrecord\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG #
# -LD:\case_i_d90f\ap\ap_fmrecord\List\ -q -t8 -X #
# -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\ #
# D:\CASE_I_D90F\AP\COMMON\ui_main_for_rec.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME ui_main_for_rec(17)
\ 0000 RSEG COM_MAIN(0)
\ 0000 RSEG IDATA0(0)
\ 0000 RSEG CDATA0(0)
\ 0000 EXTERN ClearScreen
\ 0000 EXTERN PutS
\ 0000 EXTERN PutSDImage
\ 0000 EXTERN ResShowPic
\ 0000 EXTERN SD_FRead
\ 0000 EXTERN SD_FSeek
\ 0000 EXTERN SetBackgdColor
\ 0000 EXTERN SetTextPos
\ 0000 EXTERN UpdateScreen
\ 0000 EXTERN ap_sleep
\ 0000 PUBLIC itoa_1
\ 0000 PUBLIC itoa_2
\ 0000 PUBLIC itoa_3
\ 0000 PUBLIC itoa_4
\ 0000 PUBLIC main_ResShowPic
\ 0000 EXTERN res_entry
\ 0000 EXTERN res_fp
\ 0000 EXTERN res_region
\ 0000 EXTERN sKY_ChargeSet
\ 0000 EXTERN ui_auto_update
\ 0000 PUBLIC ui_show_a
\ 0000 PUBLIC ui_show_batt
\ 0000 PUBLIC ui_show_d
\ 0000 PUBLIC ui_show_d2
\ 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 ?SS_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 itoa_1:
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 extern BYTE charge_flag;
19
20 //bank const
21 /*注意-以下函数必须能访问到这些常量 */
22 #pragma memory=constseg(COM_MAIN_D)
23
24 #pragma memory=default
25
26 /*
27 ********************************************************************************
28 * Description : 数字转换成字符串
29 *
30 * Arguments : i, 数字
31 * buf, 输出字符串指针, 3 bytes
32 *
33 * Returns : 成功, 输出字符串指针
34 *
35 * Notes : 数字只能是 0~9
36 *
37 ********************************************************************************
38 */
39 char *itoa_1(BYTE i, char *buf)
40 {
\ 0000 DDE5 PUSH IX
\ 0002 C5 PUSH BC
\ 0003 DDE1 POP IX
41
42 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
43 buf[1] = 0;
\ 0010 DD360100 LD (IX+1),0
44 return buf;
\ 0014 ?0083:
\ 0014 DDE5 PUSH IX
\ 0016 E1 POP HL
45 }
\ 0017 DDE1 POP IX
\ 0019 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 001C itoa_2:
46
47 /*
48 ********************************************************************************
49 * Description : 数字转换成字符串
50 *
51 * Arguments : i, 数字
52 * buf, 输出字符串指针, 3 bytes
53 *
54 * Returns : 成功, 输出字符串指针
55 *
56 * Notes : 数字只能是 00~99
57 *
58 ********************************************************************************
59 */
60 char *itoa_2(BYTE i, char *buf)
61 {
\ 001C DDE5 PUSH IX
\ 001E C5 PUSH BC
\ 001F DDE1 POP IX
\ 0021 53 LD D,E
62
63
64 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
65 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
66 buf[2] = 0;
\ 003B DD360200 LD (IX+2),0
67 return buf;
\ 003F C31400 JP LWRD ?0083
68 }
\ 0042 itoa_3:
69 /*
70 ********************************************************************************
71 * Description : 数字转换成字符串
72 *
73 * Arguments : i, 数字
74 * buf, 输出字符串指针,4 bytes
75 *
76 * Returns : 成功, 输出字符串指针
77 *
78 * Notes : 数字只能是 000~999
79 *
80 ********************************************************************************
81 */
82 char *itoa_3(WORD i, char *buf)
83 {
\ 0042 FDE5 PUSH IY
\ 0044 DDE5 PUSH IX
\ 0046 C5 PUSH BC
\ 0047 DDE1 POP IX
\ 0049 D5 PUSH DE
\ 004A FDE1 POP IY
84
85 buf[0] = (i % 1000) / 100+'0' ;
\ 004C 01E803 LD BC,1000
\ 004F CD0000 CALL LWRD ?US_MOD_L02
\ 0052 016400 LD BC,100
86 buf[1] = (i % 100) / 10+'0' ;
\ 0055 CD7900 CALL LWRD ?0087
\ 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
87 buf[2] = (i % 10)+'0';
\ 0063 CD8200 CALL LWRD ?0088
\ 0066 7B LD A,E
\ 0067 C630 ADD A,48
\ 0069 DD7702 LD (IX+2),A
88 buf[3] = 0;
\ 006C DD7003 LD (IX+3),B
89
90 return buf;
\ 006F ?0084:
\ 006F DDE5 PUSH IX
\ 0071 E1 POP HL
91 }
\ 0072 DDE1 POP IX
\ 0074 FDE1 POP IY
\ 0076 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0079 ?0087:
\ 0079 CD0000 CALL LWRD ?US_DIV_L02
\ 007C 7B LD A,E
\ 007D C630 ADD A,48
\ 007F DD7700 LD (IX+0),A
\ 0082 ?0088:
\ 0082 FDE5 PUSH IY
\ 0084 D1 POP DE
\ 0085 C30000 JP LWRD ?US_MOD_L02
\ 0088 itoa_4:
92 /*
93 ********************************************************************************
94 * Description : 数字转换成字符串
95 *
96 * Arguments : i, 数字
97 * buf, 输出字符串指针,5 bytes
98 *
99 * Returns : 成功, 输出字符串指针
100 *
101 * Notes : 数字只能是 0000~9999
102 *
103 ********************************************************************************
104 */
105 char *itoa_4(WORD i, char *buf)
106 {
\ 0088 FDE5 PUSH IY
\ 008A DDE5 PUSH IX
\ 008C C5 PUSH BC
\ 008D DDE1 POP IX
\ 008F D5 PUSH DE
\ 0090 FDE1 POP IY
107
108 buf[0] = (i % 10000) / 1000+'0' ;
\ 0092 011027 LD BC,10000
\ 0095 CD0000 CALL LWRD ?US_MOD_L02
\ 0098 01E803 LD BC,1000
109 buf[1] = (i % 1000) / 100+'0' ;
\ 009B CD7900 CALL LWRD ?0087
\ 009E 016400 LD BC,100
\ 00A1 CD0000 CALL LWRD ?US_DIV_L02
\ 00A4 7B LD A,E
\ 00A5 C630 ADD A,48
\ 00A7 DD7701 LD (IX+1),A
110 buf[2] = (i % 100) / 10+'0' ;
\ 00AA CD8200 CALL LWRD ?0088
\ 00AD 0E0A LD C,10
\ 00AF CD0000 CALL LWRD ?US_DIV_L02
\ 00B2 7B LD A,E
\ 00B3 C630 ADD A,48
\ 00B5 DD7702 LD (IX+2),A
111 buf[3] = (i % 10)+'0';
\ 00B8 CD8200 CALL LWRD ?0088
\ 00BB 7B LD A,E
\ 00BC C630 ADD A,48
\ 00BE DD7703 LD (IX+3),A
112 buf[4] = 0;
\ 00C1 DD7004 LD (IX+4),B
113
114 return buf;
\ 00C4 C36F00 JP LWRD ?0084
115 }
\ 00C7 main_ResShowPic:
116
117
118 //只有这个界面使用,为了提高效率而放在这里
119 int main_ResShowPic(WORD id, uchar x, uchar y)
120 {
\ 00C7 C5 PUSH BC
\ 00C8 D5 PUSH DE
\ 00C9 F5 PUSH AF
\ 00CA F5 PUSH AF
121 WORD buf[2]; //buffer for sd read
122
123 ASSERT(id <= UIID_MAX);
124
125 //读entry
126 SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
\ 00CB 6B LD L,E
\ 00CC 62 LD H,D
\ 00CD 010000 LD BC,0
\ 00D0 3E04 LD A,4
\ 00D2 CD0000 CALL LWRD ?L_LSH_L03
\ 00D5 C5 PUSH BC
\ 00D6 E5 PUSH HL
\ 00D7 0E00 LD C,0
\ 00D9 ED5B0000 LD DE,(res_fp)
\ 00DD CD0000 CALL LWRD SD_FSeek
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -