📄 sub_display.s01
字号:
NAME sub_display(17)
RSEG AP_SUB_DIS(0)
RSEG APC_SUB_DIS(0)
PUBLIC DisplayErrMsg
EXTERN GetBattery
PUBLIC LOOP_PIC
EXTERN PutS
PUBLIC RefreshMainScreen
EXTERN ResShowPic
EXTERN SetBackgdColor
EXTERN SetPAVolume
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
EXTERN ShowNowTime
EXTERN Show_Bitrate
PUBLIC Show_MusicType
EXTERN ap_get_message
EXTERN ap_sleep
EXTERN dir_name
EXTERN g_BatteryType
EXTERN g_TagInfoBuf
EXTERN g_TagInfoBuf1
EXTERN g_amv_vars
EXTERN g_langid
EXTERN g_musicamount
EXTERN g_musicsequence
EXTERN itoa_2
EXTERN itoa_3
EXTERN main_ResShowPic
EXTERN need_draw
PUBLIC num_id
PUBLIC show_volume
EXTERN slider
PUBLIC songnum_id
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
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. const WORD num_id[10] = {TVNUM0,TVNUM1,TVNUM2,TVNUM3,TVNUM4,TVNUM5,TVNUM6,TVNUM7,TVNUM8,TVNUM9}; //系统时间&音量显示
; 21. const WORD songnum_id[10]= {MNUM0,MNUM1,MNUM2,MNUM3,MNUM4,MNUM5,
; 22. MNUM6,MNUM7,MNUM8,MNUM9}; //音乐曲目
; 23. #pragma memory=default
; 24.
; 25. /*
; 26. ********************************************************************************
; 27. * void RefreshMainScreen( void )
; 28. *
; 29. * Description : 主显示的刷新函数,只有有需要时,才调用此函数
; 30. *
; 31. * Arguments : void
; 32. *
; 33. * Returns : void
; 34. *
; 35. * Notes :
; 36. *
; 37. ********************************************************************************
; 38. */
; 39. void ui_show_vol(BYTE volume);
; 40. void ui_show_h(const char *string);
; 41. void RefreshMainScreen( void )
; 42. {
PUSH BC
PUSH DE
; 43. int result;
; 44. output8(0x4e,input8(0x4e)|0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 45.
; 46.
; 47. ResShowPic(BACKMOV, POS_BG, POSY_BG);
LD C,0
PUSH BC
LD DE,17
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 48. SetTextPos(POS_DIRNAME, POSY_DIRNAME);
LD C,140
LD E,35
CALL LWRD SetTextPos
; 49. //main_ResShowPic(DIRBCK,36,78);
; 50. main_ResShowPic(ADIRBCK,25,140);
LD C,140
PUSH BC
LD C,25
LD DE,12
CALL LWRD ?0013
POP AF
; 51. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
; 52. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 53. if(g_amv_vars.location.disk=='H')
LD A,(g_amv_vars+5)
CP 72
JR NZ,?0003
?0002:
; 54. main_ResShowPic(CARDDISK,194,140);
LD C,140
PUSH BC
LD C,194
LD DE,30
CALL LWRD ?0013
POP AF
?0003:
; 55. PutS(dir_name, -1);
LD C,255
LD DE,dir_name
CALL LWRD PutS
; 56. SetTextOutMode(0);
LD E,0
CALL LWRD SetTextOutMode
; 57.
; 58. 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
; 59.
; 60.
; 61. //SetBackgdColor(Color_MUSIC_def);
; 62.
; 63. Show_MusicType();
LD A,BYTE3 Show_MusicType
LD HL,LWRD Show_MusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
; 64. Show_Bitrate();
LD A,BYTE3 Show_Bitrate
LD HL,LWRD Show_Bitrate
CALL LWRD ?BANK_CALL_DIRECT_L08
; 65.
; 66. ResShowPic(LOOP_PIC[g_amv_vars.repeat_mode], POS_PALYMODE,POSY_PALYMODE);
LD C,0
PUSH BC
LD C,128
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
; 67.
; 68. //show file sequence and total file
; 69. 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
; 70.
; 71. itoa_3(g_musicamount, & temp_buffer[3]);
LD BC,temp_buffer+3
LD DE,(g_musicamount)
LD D,0
LD A,BYTE3 itoa_3
LD HL,LWRD itoa_3
CALL LWRD ?BANK_CALL_DIRECT_L08
; 72. 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
; 73.
; 74. //show backtime and total time
; 75.
; 76. ShowNowTime(FALSE);
LD E,0
LD A,BYTE3 ShowNowTime
LD HL,LWRD ShowNowTime
CALL LWRD ?BANK_CALL_DIRECT_L08
; 77.
; 78.
; 79. 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
; 80. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
; 81. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 82. SetTextPos(scrollregionx_def, scrollregiony_def);
LD C,110
LD E,45
CALL LWRD SetTextPos
; 83. PutS(g_TagInfoBuf,-1);
LD C,255
LD DE,g_TagInfoBuf
CALL LWRD PutS
; 84.
; 85. SetBackgdColor(Color_BULE1_def);
LD BC,0
LD DE,30014
CALL LWRD SetBackgdColor
; 86. //ResShowPic(NEXTBCK,29,46);
; 87. ResShowPic(ANEXTBCK,35,79);
LD C,79
PUSH BC
LD C,35
LD DE,14
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 88. //SetPenColor(0x7ff);
; 89. SetPenColor(0xffe0); //与屏的设置有关
LD BC,0
LD DE,65504
CALL LWRD SetPenColor
; 90. SetTextPos(POS_FILENAME, POSY_FILENAME);
LD C,79
LD E,45
CALL LWRD SetTextPos
; 91. PutS(g_TagInfoBuf1, -1);//显示下一首信息
LD C,255
LD DE,g_TagInfoBuf1
CALL LWRD PutS
; 92.
; 93. return;
; 94. }
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0014:
LD L,A
LD H,0
ADD HL,HL
LD DE,songnum_id
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
?0013:
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
Show_MusicType:
; 95.
; 96. //-----------显示音乐类型图标-----------
; 97. void Show_MusicType(void)
; 98. {
PUSH DE
; 99. ui_show_a(MAMV);
LD DE,79
LD A,BYTE3 ui_show_a
LD HL,LWRD ui_show_a
CALL LWRD ?BANK_CALL_DIRECT_L08
; 100.
; 101. }
POP DE
JP LWRD ?BANK_FAST_LEAVE_L08
DisplayErrMsg:
; 102.
; 103.
; 104. //-----------显示错误信息---------------
; 105. void DisplayErrMsg(int ErrMsg)
; 106. {
PUSH BC
PUSH IX
; 107.
; 108. 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
?0005:
; 109. while( ap_get_message() != NULL ); //清空消息池
CALL LWRD ap_get_message
OR A
JR NZ,?0005
?0006:
?0004:
; 110. ap_sleep(4);
LD DE,4
LD A,BYTE3 ap_sleep
LD HL,LWRD ap_sleep
CALL LWRD ?BANK_CALL_DIRECT_L08
; 111. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 112. }
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_vol:
; 113. void ui_show_vol(BYTE volume)
; 114. { char id;
PUSH BC
PUSH DE
PUSH AF
PUSH AF
; 115. char temp[3];
; 116.
; 117. itoa_2(volume, temp);
LD HL,0
ADD HL,SP
LD C,L
LD B,H
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 118. id=temp[0]-0x30;
LD HL,0
ADD HL,SP
LD A,(HL)
ADD A,208
; 119. main_ResShowPic(num_id[id],POS_VOl,POSY_VOl);
LD C,162
PUSH BC
LD C,24
PUSH BC
LD L,A
LD H,0
ADD HL,HL
LD BC,num_id
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
POP BC
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 120. id=temp[1]-0x30;
LD HL,1
ADD HL,SP
LD A,(HL)
ADD A,208
; 121. main_ResShowPic(num_id[id],POS_VOl+7,POSY_VOl);
LD C,162
PUSH BC
LD C,31
PUSH BC
LD L,A
LD H,0
ADD HL,HL
LD BC,num_id
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
POP BC
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 122.
; 123. }
POP HL
POP HL
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
vol_callback:
; 124.
; 125.
; 126. /*
; 127. ********************************************************************************
; 128. * Description : 音量设置界面
; 129. *
; 130. * Arguments : set_hardware, 是否需要设置硬件
; 131. *
; 132. * Returns :
; 133. *
; 134. * Notes : 播放时调节音量需要设置硬件
; 135. 停止时调节音量不需要设置硬件
; 136. *
; 137. ********************************************************************************
; 138. */
; 139. void vol_callback(int value)
; 140. {
PUSH BC
PUSH DE
; 141.
; 142.
; 143. g_amv_vars.volume = (char)value;
LD A,E
LD (g_amv_vars+2),A
; 144.
; 145.
; 146. SetPAVolume(g_amv_vars.volume);
LD DE,(g_amv_vars+2)
CALL LWRD SetPAVolume
; 147.
; 148. }
POP HL
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
show_volume:
; 149.
; 150. int show_volume(BOOL set_hardware)
; 151. {
PUSH BC
PUSH IX
PUSH DE
; 152. int result;
; 153. char id;
; 154. char temp[3];
; 155.
; 156. slider.value = g_amv_vars.volume;
LD BC,(g_amv_vars+2)
LD B,0
LD (slider+6),BC
; 157. slider.max = 31;
LD HL,31
LD (slider+4),HL
; 158. slider.min = 0;
LD L,B
LD (slider+2),HL
; 159. slider.step = 1;
INC HL
LD (slider+8),HL
; 160. slider.string_id = g_langid;
LD A,(g_langid)
LD (slider+10),A
; 161. slider.title=CHANGEVO;
LD HL,489
LD (slider),HL
; 162. ui_auto_update=FALSE;
XOR A
LD (ui_auto_update),A
; 163. if(set_hardware)
OR E
JR Z,?0008
?0007:
; 164. {
; 165. 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
; 166. }
; 167. else
JR ?0009
?0008:
; 168. {
; 169. 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
; 170. g_amv_vars.volume = slider.value;
LD A,(slider+6)
LD (g_amv_vars+2),A
?0009:
; 171. }
; 172. ui_auto_update=TRUE;
LD A,1
LD (ui_auto_update),A
; 173. if(result != 0) return result;
LD A,L
OR H
JR NZ,?0012
?0010:
?0011:
; 174.
; 175.
; 176.
; 177. return 0;
LD L,B
LD H,B
; 178.
; 179. }
?0012:
POP AF
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_show_h:
; 180.
; 181. void ui_show_h(const char *string) //显示歌曲曲目
; 182. {
PUSH BC
PUSH IX
PUSH AF
PUSH DE
POP IX
; 183. char id;
; 184. id = *string-0x30;
LD A,(DE)
ADD A,208
; 185. main_ResShowPic(songnum_id[id],POS_SONGNUM-8,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,78
CALL LWRD ?0014
POP AF
; 186. string++;
; 187. id= *string-0x30;
LD A,(IX+1)
ADD A,208
; 188. main_ResShowPic(songnum_id[id],POS_SONGNUM,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,86
CALL LWRD ?0014
POP AF
; 189. string++;
; 190. id= *string-0x30;
LD A,(IX+2)
ADD A,208
; 191. main_ResShowPic(songnum_id[id],POS_SONGNUM+8,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,94
CALL LWRD ?0014
POP AF
; 192. main_ResShowPic(SINGLINE,POS_SONGNUM+16,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,102
LD DE,219
CALL LWRD ?0013
POP AF
; 193. string++;
; 194. id= *string-0x30;
LD A,(IX+3)
ADD A,208
; 195. main_ResShowPic(songnum_id[id],POS_SONGNUM+24,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,110
CALL LWRD ?0014
POP AF
; 196. string++;
; 197. id= *string-0x30;
LD A,(IX+4)
ADD A,208
; 198. main_ResShowPic(songnum_id[id],POS_SONGNUM+32,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,118
CALL LWRD ?0014
POP AF
; 199. string++;
; 200. id= *string-0x30;
LD A,(IX+5)
ADD A,208
; 201. main_ResShowPic(songnum_id[id],POS_SONGNUM+40,POSY_SONGNUM);
LD C,162
PUSH BC
LD C,126
CALL LWRD ?0014
POP AF
; 202.
; 203. }
POP HL
POP IX
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
; 204.
RSEG APC_SUB_DIS
LOOP_PIC:
DEFW 122
DEFW 123
DEFW 124
DEFW 125
DEFW 126
DEFW 127
DEFW 128
num_id:
DEFW 241
DEFW 242
DEFW 243
DEFW 244
DEFW 245
DEFW 246
DEFW 247
DEFW 248
DEFW 249
DEFW 250
songnum_id:
DEFW 134
DEFW 135
DEFW 136
DEFW 137
DEFW 138
DEFW 139
DEFW 140
DEFW 141
DEFW 142
DEFW 143
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -