?? ui_main.s01
字號:
NAME ui_main(17)
RSEG COM_MAIN(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
RSEG COM_MAIN_D(0)
EXTERN ClearScreen
EXTERN PutS
EXTERN PutSDImage
EXTERN SD_FRead
EXTERN SD_FSeek
EXTERN SetTextPos
EXTERN UpdateScreen
EXTERN ap_sleep
PUBLIC batt_id
EXTERN g_comval
PUBLIC itoa_1
PUBLIC itoa_2
PUBLIC itoa_3
PUBLIC itoa_4
PUBLIC main_ResShowPic
PUBLIC region_c
PUBLIC region_cd
PUBLIC region_d
PUBLIC region_d2
PUBLIC region_e
PUBLIC region_ef
PUBLIC region_f
PUBLIC region_g
EXTERN res_entry
EXTERN res_fp
EXTERN res_region
EXTERN ui_auto_update
PUBLIC ui_show_a
PUBLIC ui_show_b
PUBLIC ui_show_batt
PUBLIC ui_show_c
PUBLIC ui_show_cd
PUBLIC ui_show_d
PUBLIC ui_show_d2
PUBLIC ui_show_d_pic
PUBLIC ui_show_e
PUBLIC ui_show_ef
PUBLIC ui_show_f
PUBLIC ui_show_g
PUBLIC ui_show_lock
EXTERN ?CLZ80B_4_04_L00
EXTERN ?UC_DIV_L01
EXTERN ?UC_MOD_L01
EXTERN ?US_DIV_L02
EXTERN ?SS_DIV_L02
EXTERN ?US_MOD_L02
EXTERN ?S_MUL_L02
EXTERN ?L_LSH_L03
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
RSEG COM_MAIN
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 comval_t g_comval;
; 19. //bank const
; 20. /*注意-以下函數(shù)必須能訪問到這些常量 */
; 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}; //對應(yīng)1~9級電量的圖標(biāo)
; 36. #pragma memory=default
; 37.
; 38. /*
; 39. ********************************************************************************
; 40. * Description : 數(shù)字轉(zhuǎn)換成字符串
; 41. *
; 42. * Arguments : i, 數(shù)字
; 43. * buf, 輸出字符串指針, 3 bytes
; 44. *
; 45. * Returns : 成功, 輸出字符串指針
; 46. *
; 47. * Notes : 數(shù)字只能是 0~9
; 48. *
; 49. ********************************************************************************
; 50. */
; 51. char *itoa_1(BYTE i, char *buf)
; 52. {
PUSH IX
PUSH BC
POP IX
; 53. //ASSERT(buf != NULL);
; 54. /*
; 55. buf[0] = mychar[i % 10];
; 56. buf[1] = 0;
; 57. */
; 58. buf[0] = (i % 10) + '0';
LD B,10
LD A,E
CALL LWRD ?UC_MOD_L01
ADD A,48
LD (IX+0),A
; 59. buf[1] = 0;
LD (IX+1),0
; 60. return buf;
?0113:
PUSH IX
POP HL
; 61. }
POP IX
JP LWRD ?BANK_FAST_LEAVE_L08
itoa_2:
; 62.
; 63. /*
; 64. ********************************************************************************
; 65. * Description : 數(shù)字轉(zhuǎn)換成字符串
; 66. *
; 67. * Arguments : i, 數(shù)字
; 68. * buf, 輸出字符串指針, 3 bytes
; 69. *
; 70. * Returns : 成功, 輸出字符串指針
; 71. *
; 72. * Notes : 數(shù)字只能是 00~99
; 73. *
; 74. ********************************************************************************
; 75. */
; 76. char *itoa_2(BYTE i, char *buf)
; 77. {
PUSH IX
PUSH BC
POP IX
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';
LD B,100
LD A,E
CALL LWRD ?UC_MOD_L01
LD B,10
CALL LWRD ?UC_DIV_L01
ADD A,48
LD (IX+0),A
; 85. buf[1] = (i % 10) + '0';
LD A,D
CALL LWRD ?UC_MOD_L01
ADD A,48
LD (IX+1),A
; 86. buf[2] = 0;
LD (IX+2),0
; 87. return buf;
JP LWRD ?0113
; 88. }
itoa_3:
; 89. /*
; 90. ********************************************************************************
; 91. * Description : 數(shù)字轉(zhuǎn)換成字符串
; 92. *
; 93. * Arguments : i, 數(shù)字
; 94. * buf, 輸出字符串指針,4 bytes
; 95. *
; 96. * Returns : 成功, 輸出字符串指針
; 97. *
; 98. * Notes : 數(shù)字只能是 000~999
; 99. *
; 100. ********************************************************************************
; 101. */
; 102. char *itoa_3(WORD i, char *buf)
; 103. {
PUSH IY
PUSH IX
PUSH BC
POP IX
PUSH DE
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';
LD BC,1000
CALL LWRD ?US_MOD_L02
LD BC,100
; 112. buf[1] = (i % 100) / 10 + '0';
CALL LWRD ?0117
LD C,10
CALL LWRD ?US_DIV_L02
LD A,E
ADD A,48
LD (IX+1),A
; 113. buf[2] = (i % 10) + '0';
CALL LWRD ?0118
LD A,E
ADD A,48
LD (IX+2),A
; 114. buf[3] = 0;
LD (IX+3),B
; 115.
; 116. return buf;
?0114:
PUSH IX
POP HL
; 117. }
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0117:
CALL LWRD ?US_DIV_L02
LD A,E
ADD A,48
LD (IX+0),A
?0118:
PUSH IY
POP DE
JP LWRD ?US_MOD_L02
itoa_4:
; 118. /*
; 119. ********************************************************************************
; 120. * Description : 數(shù)字轉(zhuǎn)換成字符串
; 121. *
; 122. * Arguments : i, 數(shù)字
; 123. * buf, 輸出字符串指針,5 bytes
; 124. *
; 125. * Returns : 成功, 輸出字符串指針
; 126. *
; 127. * Notes : 數(shù)字只能是 0000~9999
; 128. *
; 129. ********************************************************************************
; 130. */
; 131. char *itoa_4(WORD i, char *buf)
; 132. {
PUSH IY
PUSH IX
PUSH BC
POP IX
PUSH DE
POP IY
; 133. //ASSERT(buf != NULL);
; 134. /*
; 135. buf[0] = mychar[(i % 10000) / 1000];
; 136. buf[1] = mychar[(i % 1000) / 100];
; 137. buf[2] = mychar[(i % 100) / 10];
; 138. buf[3] = mychar[i % 10];
; 139. buf[4] = 0;
; 140. */
; 141. buf[0] = (i % 10000) / 1000 + '0';
LD BC,10000
CALL LWRD ?US_MOD_L02
LD BC,1000
; 142. buf[1] = (i % 1000) / 100 + '0';
CALL LWRD ?0117
LD BC,100
CALL LWRD ?US_DIV_L02
LD A,E
ADD A,48
LD (IX+1),A
; 143. buf[2] = (i % 100) / 10 + '0';
CALL LWRD ?0118
LD C,10
CALL LWRD ?US_DIV_L02
LD A,E
ADD A,48
LD (IX+2),A
; 144. buf[3] = (i % 10) + '0';
CALL LWRD ?0118
LD A,E
ADD A,48
LD (IX+3),A
; 145. buf[4] = 0;
LD (IX+4),B
; 146.
; 147. return buf;
JP LWRD ?0114
; 148. }
main_ResShowPic:
; 149.
; 150.
; 151. //只有這個界面使用,為了提高效率而放在這里
; 152. int main_ResShowPic(WORD id, uchar x, uchar y)
; 153. {
PUSH BC
PUSH DE
PUSH AF
PUSH AF
; 154. WORD buf[2]; //buffer for sd read
; 155.
; 156. ASSERT(id <= UIID_MAX);
; 157.
; 158. //讀entry
; 159. SD_FSeek(res_fp, SEEK_SET, (long)id * sizeof(res_entry_t));
LD L,E
LD H,D
LD BC,0
LD A,4
CALL LWRD ?L_LSH_L03
PUSH BC
PUSH HL
LD C,0
LD DE,(res_fp)
CALL LWRD SD_FSeek
POP HL
POP HL
; 160. SD_FRead(res_fp, &res_entry, sizeof(res_entry_t));
LD HL,16
PUSH HL
LD BC,res_entry
LD DE,(res_fp)
CALL LWRD SD_FRead
POP AF
; 161. if(res_entry.type != RES_TYPE_PIC) return 0;
LD A,(res_entry+6)
DEC A
JR Z,?0003
?0002:
LD HL,0
; 162. ASSERT(res_entry.length <= 512);
JR ?0006
?0003:
; 163.
; 164. //讀數(shù)據(jù)
; 165. SD_FSeek(res_fp, SEEK_SET, res_entry.offset);
LD HL,(res_entry+2)
PUSH HL
LD HL,(res_entry)
PUSH HL
LD C,A
LD DE,(res_fp)
CALL LWRD SD_FSeek
POP HL
POP HL
; 166. //SD_FRead(res_fp, &(res_region.width), 2);
; 167. //SD_FRead(res_fp, &(res_region.height), 2);
; 168. SD_FRead(res_fp, buf, sizeof(buf));
LD HL,4
PUSH HL
DEC HL
DEC HL
ADD HL,SP
LD C,L
LD B,H
LD DE,(res_fp)
CALL LWRD SD_FRead
POP AF
; 169. //ASSERT(buf[0] <= 128);
; 170. //ASSERT(buf[1] <= 32);
; 171. res_region.width = (char)buf[0];
LD HL,0
ADD HL,SP
LD A,(HL)
LD (res_region+2),A
; 172. res_region.height = (char)buf[1];
INC HL
INC HL
LD A,(HL)
LD (res_region+3),A
; 173.
; 174. //顯示
; 175. res_region.x = x;
LD HL,6
ADD HL,SP
LD A,(HL)
LD (res_region),A
; 176. res_region.y = y;
LD HL,12
ADD HL,SP
LD A,(HL)
LD (res_region+1),A
; 177. PutSDImage(&res_region, res_fp->rwpointer);
LD HL,20
LD BC,(res_fp)
ADD HL,BC
LD C,(HL)
INC HL
LD B,(HL)
INC HL
LD E,(HL)
INC HL
LD D,(HL)
PUSH DE
PUSH BC
LD DE,res_region
CALL LWRD PutSDImage
POP HL
POP HL
; 178. if(ui_auto_update) UpdateScreen(&res_region);
LD A,(ui_auto_update)
OR A
JR Z,?0005
?0004:
LD DE,res_region
CALL LWRD UpdateScreen
?0005:
; 179. return 1;
LD HL,1
; 180. }
?0006:
POP AF
POP AF
POP AF
POP AF
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_a:
; 181.
; 182. void ui_show_a(WORD id)
; 183. {
PUSH BC
PUSH DE
; 184. main_ResShowPic(id, POSITION_A, 0);
LD C,0
PUSH BC
?0115:
CALL LWRD ?0119
POP AF
; 185. }
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0119:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
ui_show_b:
; 186.
; 187. void ui_show_b(WORD id)
; 188. {
PUSH BC
PUSH DE
; 189. main_ResShowPic(id, POSITION_B, 0);
LD C,0
PUSH BC
LD C,15
JP LWRD ?0115
; 190. //FIXME:顯示小數(shù)字
; 191.
; 192. //if(ui_auto_update) UpdateScreen(®ion_b);
; 193. }
ui_show_c:
; 194. //id =0, clear the icon
; 195. void ui_show_c(WORD id)
; 196. {
PUSH BC
PUSH IX
; 197. if(id == 0)
LD A,E
OR D
JR NZ,?0008
?0007:
; 198. {
; 199. ClearScreen(®ion_c);
LD DE,region_c
CALL LWRD ClearScreen
; 200. if(ui_auto_update) UpdateScreen(®ion_c);
LD A,(ui_auto_update)
OR A
JR Z,?0011
?0009:
LD DE,region_c
CALL LWRD UpdateScreen
?0010:
JR ?0011
?0008:
; 201. }
; 202. else main_ResShowPic(id, POSITION_C, 0);
LD C,0
PUSH BC
LD C,38
CALL LWRD ?0119
POP AF
?0011:
; 203. }
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_d2:
; 204.
; 205. void ui_show_d2(const char *string, BYTE part)
; 206. {
PUSH BC
PUSH DE
; 207. if(part == 0) SetTextPos(POSITION_D - 6, 0);
XOR A
OR C
JR Z,?0074
?0012:
?0013:
; 208. else SetTextPos(POSITION_D - 6, 8);
LD C,8
?0074:
LD E,44
CALL LWRD ?0120
?0014:
; 209.
; 210. PutS(string, -1);
ADD HL,SP
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -