📄 sub_display.s01
字号:
NAME sub_display(17)
RSEG AP_SUB_DIS(0)
RSEG CSTR(0)
RSEG APC_SUB_DIS(0)
PUBLIC DisplayErrMsg
EXTERN GetBattery
EXTERN GetDCStatus
PUBLIC LOOP_PIC
EXTERN PlayStatus
EXTERN PutS
PUBLIC RefreshMainScreen
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN SetAsciiFont
EXTERN SetBackgdColor
EXTERN SetPAVolume
EXTERN SetPenColor
EXTERN SetTextPos
EXTERN ShowNowTime
PUBLIC Show_MusicType
EXTERN ap_get_message
EXTERN ap_sleep
EXTERN g_BatteryType
EXTERN g_TagInfoBuf
EXTERN g_amv_vars
EXTERN g_comval
EXTERN g_langid
EXTERN g_musicamount
EXTERN g_musicsequence
EXTERN g_rSetPlayStatus
EXTERN g_volcounter
EXTERN itoa_3
EXTERN main_ResShowPic
EXTERN need_draw
PUBLIC show_volume
EXTERN slider
EXTERN temp_buffer
EXTERN ui_auto_update
EXTERN ui_show_a
EXTERN ui_show_batt
PUBLIC ui_show_h
EXTERN ui_show_msg
PUBLIC ui_show_vol
EXTERN ui_slider
PUBLIC vol_callback
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?STRCAT_L11
RSEG AP_SUB_DIS
RefreshMainScreen:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * This program demostrates how to build an AP
; 5. *
; 6. * (c) Copyright Actions Co,Ld.
; 7. *
; 8. * $Id: sub_display.c,v 1.1.1.1 2006/05/22 03:24:02 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_amv.h"
; 12.
; 13. #pragma codeseg(AP_SUB_DIS)
; 14.
; 15. #pragma memory=constseg(APC_SUB_DIS)
; 16. const WORD LOOP_PIC[7] =
; 17. {
; 18. MLOOP1, MLOOP2, MLOOP3, MLOOP4, MLOOP5, MLOOP6, MLOOP7
; 19. };
; 20. /*
; 21. const WORD num_id[10] = {TVNUM0,TVNUM1,TVNUM2,TVNUM3,TVNUM4,TVNUM5,TVNUM6,TVNUM7,TVNUM8,TVNUM9}; //系统时间&音量显示
; 22. const WORD songnum_id[10]= {MNUM0,MNUM1,MNUM2,MNUM3,MNUM4,MNUM5,
; 23. MNUM6,MNUM7,MNUM8,MNUM9}; //音乐曲目
; 24. */
; 25. #pragma memory=default
; 26.
; 27. extern char g_volcounter;
; 28. extern bool g_rSetPlayStatus;
; 29. /*
; 30. ********************************************************************************
; 31. * void RefreshMainScreen( void )
; 32. *
; 33. * Description : 主显示的刷新函数,只有有需要时,才调用此函数
; 34. *
; 35. * Arguments : void
; 36. *
; 37. * Returns : void
; 38. *
; 39. * Notes :
; 40. *
; 41. ********************************************************************************
; 42. */
; 43. void ui_show_vol(BYTE volume);
; 44. void ui_show_h(const char *string);
; 45. void RefreshMainScreen( void )
; 46. {
PUSH BC
PUSH DE
; 47. int result;
; 48. output8(0x4e,input8(0x4e)|0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 49.
; 50. if(PlayStatus != PlaySta)
LD A,(PlayStatus)
DEC A
DEC A
JR Z,?0005
?0002:
; 51. {
; 52. if(g_volcounter > 0)
LD A,(g_volcounter)
OR A
JR Z,?0005
?0004:
; 53. {
; 54. g_volcounter = 0;
XOR A
LD (g_volcounter),A
; 55. g_rSetPlayStatus = TRUE;
LD A,1
LD (g_rSetPlayStatus),A
?0005:
?0003:
; 56. }
; 57. }
; 58.
; 59. ResShowPic(BACKMOV, POS_BG, POSY_BG);
LD C,0
PUSH BC
LD DE,11
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 60.
; 61. SetPenColor(Color_BLACK_def);
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
; 62. SetBackgdColor(0x0000df1c);
LD BC,0
LD DE,57116
CALL LWRD SetBackgdColor
; 63. ResShowMultiString(SMOVIE, g_comval.langid, 255, 1);
LD C,1
PUSH BC
LD C,255
PUSH BC
LD BC,(g_comval+12)
LD DE,387
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 64. SetBackgdColor(Color_MENU_def);
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
; 65.
; 66. /*
; 67. SetTextPos(POS_DIRNAME, POSY_DIRNAME);
; 68. //main_ResShowPic(DIRBCK,36,78);
; 69. main_ResShowPic(ADIRBCK,25,140);
; 70. SetTextOutMode(1); //设字体透明
; 71. SetPenColor(Color_WHITE_def);
; 72. if(g_amv_vars.location.disk=='H')
; 73. main_ResShowPic(CARDDISK,194,140);
; 74. PutS(dir_name, -1);
; 75. SetTextOutMode(0);
; 76. */
; 77.
; 78. ui_show_vol(g_amv_vars.volume);
LD DE,(g_amv_vars+2)
LD A,BYTE3 ui_show_vol
LD HL,LWRD ui_show_vol
CALL LWRD ?BANK_CALL_DIRECT_L08
; 79.
; 80. /*
; 81. //SetBackgdColor(Color_MUSIC_def);
; 82. if (g_comval.EarProtect_flag)
; 83. {
; 84. main_ResShowPic(EARLOGO, 0, 162);
; 85. }
; 86. Show_MusicType();
; 87. Show_Bitrate();
; 88. */
; 89.
; 90. ResShowPic(LOOP_PIC[g_amv_vars.repeat_mode], 142,22);
LD C,22
PUSH BC
LD C,142
LD HL,(g_amv_vars+3)
LD H,0
ADD HL,HL
LD DE,LOOP_PIC
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 91.
; 92. //show file sequence and total file
; 93. itoa_3(g_musicsequence, & temp_buffer[0]);
LD BC,temp_buffer
LD DE,(g_musicsequence)
LD D,0
LD A,BYTE3 itoa_3
LD HL,LWRD itoa_3
CALL LWRD ?BANK_CALL_DIRECT_L08
; 94. strcat(temp_buffer,"/");
LD DE,?0006
LD HL,temp_buffer
CALL LWRD ?STRCAT_L11
; 95. itoa_3(g_musicamount, & temp_buffer[4]);
LD BC,temp_buffer+4
LD DE,(g_musicamount)
LD D,0
LD A,BYTE3 itoa_3
LD HL,LWRD itoa_3
CALL LWRD ?BANK_CALL_DIRECT_L08
; 96. ui_show_h(temp_buffer);
LD DE,temp_buffer
LD A,BYTE3 ui_show_h
LD HL,LWRD ui_show_h
CALL LWRD ?BANK_CALL_DIRECT_L08
; 97.
; 98. //show backtime and total time
; 99. ShowNowTime(FALSE);
LD E,0
LD A,BYTE3 ShowNowTime
LD HL,LWRD ShowNowTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 100.
; 101. if(PlayStatus == PauseSta)
LD A,(PlayStatus)
DEC A
JR Z,?0011
?0007:
; 102. main_ResShowPic(PAUSEICN,5,3);
?0008:
; 103. else if(PlayStatus == PlaySta)
LD A,(PlayStatus)
DEC A
DEC A
JR NZ,?0011
?0010:
; 104. main_ResShowPic(PLAYICN,5,3);
LD C,3
PUSH BC
LD C,5
LD DE,223
JR ?0028
; 105. else
?0011:
; 106. main_ResShowPic(PAUSEICN/*STOPICN*/,5,3);
LD C,3
PUSH BC
LD C,5
LD DE,222
?0028:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0012:
?0009:
; 107.
; 108. ui_show_batt( GetBattery(), g_BatteryType,0);
LD C,0
PUSH BC
LD BC,(g_BatteryType)
CALL LWRD GetBattery
LD E,A
LD D,0
LD A,BYTE3 ui_show_batt
LD HL,LWRD ui_show_batt
CALL LWRD ?BANK_CALL_DIRECT_L08
POP HL
; 109. ///SetTextOutMode(1); //设字体透明
; 110. SetPenColor(Color_BLACK_def);
CALL LWRD ?0030
; 111. SetBackgdColor(Color_MENU_def);
; 112. SetTextPos(scrollregionx_def, scrollregiony_def);
LD C,45
LD E,48
CALL LWRD SetTextPos
; 113. PutS(g_TagInfoBuf,-1);
LD C,255
LD DE,g_TagInfoBuf
CALL LWRD PutS
; 114. /*
; 115. SetBackgdColor(Color_BULE1_def);
; 116. //ResShowPic(NEXTBCK,29,46);
; 117. ResShowPic(ANEXTBCK,35,79);
; 118. //SetPenColor(0x7ff);
; 119. SetPenColor(0xffe0); //与屏的设置有关
; 120. SetTextPos(POS_FILENAME, POSY_FILENAME);
; 121. PutS(g_TagInfoBuf1, -1);//显示下一首信息
; 122. */
; 123. return;
; 124. }
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0030:
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
RET
Show_MusicType:
; 125.
; 126. //-----------显示音乐类型图标-----------
; 127. void Show_MusicType(void)
; 128. {
PUSH DE
; 129. ui_show_a(MAMV);
LD DE,163
LD A,BYTE3 ui_show_a
LD HL,LWRD ui_show_a
CALL LWRD ?BANK_CALL_DIRECT_L08
; 130. }
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
DisplayErrMsg:
; 131.
; 132.
; 133. //-----------显示错误信息---------------
; 134. void DisplayErrMsg(int ErrMsg)
; 135. {
PUSH BC
PUSH IX
; 136. ui_show_msg (ErrMsg, ErrMsg, g_langid);
LD BC,(g_langid)
LD B,0
PUSH BC
LD C,E
LD B,D
LD A,BYTE3 ui_show_msg
LD HL,LWRD ui_show_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0014:
; 137. while( ap_get_message() != NULL ); //清空消息池
CALL LWRD ap_get_message
OR A
JR NZ,?0014
?0015:
?0013:
; 138. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 139. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 140. }
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_vol:
; 141. void ui_show_vol(BYTE volume)
; 142. { /*char id;
PUSH BC
PUSH DE
; 143. char temp[3];
; 144.
; 145. itoa_2(volume, temp);
; 146. id=temp[0]-0x30;
; 147. main_ResShowPic(num_id[id],POS_VOl,POSY_VOl);
; 148. id=temp[1]-0x30;
; 149. main_ResShowPic(num_id[id],POS_VOl+7,POSY_VOl);*/
; 150.
; 151. if(g_volcounter>0)
LD A,(g_volcounter)
OR A
JR Z,?0017
?0016:
; 152. main_ResShowPic(VOL_00+volume,0,106);
LD C,106
PUSH BC
LD C,0
LD D,C
LD HL,281
ADD HL,DE
EX DE,HL
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0017:
; 153. }
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
vol_callback:
; 154.
; 155. /*
; 156. ********************************************************************************
; 157. * Description : 音量设置界面
; 158. *
; 159. * Arguments : set_hardware, 是否需要设置硬件
; 160. *
; 161. * Returns :
; 162. *
; 163. * Notes : 播放时调节音量需要设置硬件
; 164. 停止时调节音量不需要设置硬件
; 165. *
; 166. ********************************************************************************
; 167. */
; 168. void vol_callback(int value)
; 169. {
PUSH BC
PUSH DE
; 170. g_amv_vars.volume = (char)value;
LD A,E
LD (g_amv_vars+2),A
; 171.
; 172. SetPAVolume(g_amv_vars.volume);
LD DE,(g_amv_vars+2)
CALL LWRD SetPAVolume
; 173. }
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
show_volume:
; 174.
; 175. int show_volume(BOOL set_hardware)
; 176. {
PUSH BC
PUSH IX
PUSH DE
; 177. int result;
; 178. char id;
; 179. char temp[3];
; 180.
; 181. slider.value = g_amv_vars.volume;
LD BC,(g_amv_vars+2)
LD B,0
LD (slider+6),BC
; 182. slider.max = 31;
LD HL,31
LD (slider+4),HL
; 183. slider.min = 0;
LD L,B
LD (slider+2),HL
; 184. slider.step = 1;
INC HL
LD (slider+8),HL
; 185. slider.string_id = g_langid;
LD A,(g_langid)
LD (slider+10),A
; 186. slider.title=CHANGEVO;
LD HL,393
LD (slider),HL
; 187. ui_auto_update=FALSE;
XOR A
LD (ui_auto_update),A
; 188. if(set_hardware)
OR E
JR Z,?0019
?0018:
; 189. {
; 190. result = ui_slider(&slider, vol_callback);
LD C,BYTE3 vol_callback
PUSH BC
LD HL,LWRD vol_callback
PUSH HL
LD DE,slider
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 191. }
; 192. else
JR ?0020
?0019:
; 193. {
; 194. result = ui_slider(&slider, NULL);
LD C,B
PUSH BC
PUSH BC
LD DE,slider
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 195. g_amv_vars.volume = slider.value;
LD A,(slider+6)
LD (g_amv_vars+2),A
?0020:
; 196. }
; 197. ui_auto_update=TRUE;
LD A,1
LD (ui_auto_update),A
; 198. if(result != 0) return result;
LD A,L
OR H
JR NZ,?0023
?0021:
?0022:
; 199.
; 200. return 0;
LD L,B
LD H,B
; 201. }
?0023:
POP AF
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_h:
; 202.
; 203. void ui_show_h(const char *string) //显示歌曲曲目
; 204. {
PUSH BC
PUSH DE
PUSH AF
PUSH AF
PUSH AF
PUSH AF
; 205. /*char id;
; 206. id = *string-0x30;
; 207. main_ResShowPic(songnum_id[id],POS_SONGNUM-8,POSY_SONGNUM);
; 208. string++;
; 209. id= *string-0x30;
; 210. main_ResShowPic(songnum_id[id],POS_SONGNUM,POSY_SONGNUM);
; 211. string++;
; 212. id= *string-0x30;
; 213. main_ResShowPic(songnum_id[id],POS_SONGNUM+8,POSY_SONGNUM);
; 214. main_ResShowPic(SINGLINE,POS_SONGNUM+16,POSY_SONGNUM);
; 215. string++;
; 216. id= *string-0x30;
; 217. main_ResShowPic(songnum_id[id],POS_SONGNUM+24,POSY_SONGNUM);
; 218. string++;
; 219. id= *string-0x30;
; 220. main_ResShowPic(songnum_id[id],POS_SONGNUM+32,POSY_SONGNUM);
; 221. string++;
; 222. id= *string-0x30;
; 223. main_ResShowPic(songnum_id[id],POS_SONGNUM+40,POSY_SONGNUM);*/
; 224. DC oldDC_sav;
; 225. GetDCStatus(&oldDC_sav);
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD GetDCStatus
; 226. SetPenColor(Color_BLACK_def);
CALL LWRD ?0030
; 227. SetBackgdColor(Color_MENU_def);
; 228.
; 229. SetAsciiFont(FONT_TYPE_SMALL);
LD E,0
CALL LWRD SetAsciiFont
; 230. SetTextPos(4, 23);
LD C,23
LD E,4
CALL LWRD SetTextPos
; 231. PutS(string, -1);
LD C,255
LD HL,8
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD PutS
; 232. SetAsciiFont(FONT_TYPE_DEFAULT);
LD E,4
CALL LWRD SetAsciiFont
; 233.
; 234. SetPenColor(oldDC_sav.PenColor);
LD HL,0
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetPenColor
; 235. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,4
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 236. }
LD HL,10
ADD HL,SP
LD SP,HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
RSEG CSTR
?0006:
DEFB '/'
DEFB 0
RSEG APC_SUB_DIS
LOOP_PIC:
DEFW 199
DEFW 200
DEFW 201
DEFW 202
DEFW 203
DEFW 204
DEFW 205
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -