📄 sub_playstatuskey.s01
字号:
NAME sub_playstatuskey(17)
RSEG CODE(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
EXTERN ChangeMusic
EXTERN DRV_DetectUD
PUBLIC DealFilePlayEnd
PUBLIC DealKeyForPlayStatus
EXTERN DealMusicFileEnd
PUBLIC DealPlayKey
EXTERN DisplayErrMsg
EXTERN DisplayTimeRollback
PUBLIC ErrReport
EXTERN FS_FTell
EXTERN FadeOut
EXTERN GetBattery
EXTERN GetInformation
EXTERN MusicEditEndTime
EXTERN MusicEditSelStatus
EXTERN MusicEditStartTime
EXTERN MusicEditStatus
EXTERN MusicEdit_SelSeg
EXTERN OutPutVolume
EXTERN PlayStatus
PUBLIC PrevMusicInPlay
EXTERN RePlayStatus
EXTERN SaveSelSegment
PUBLIC ToNextMusic
EXTERN UI_ShowDelSegComfirm
EXTERN UpDisplayFlag
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN c_mp3deNowTimeHour
EXTERN c_mp3deNowTimeMinute
EXTERN c_mp3deNowTimeSencond
EXTERN g_ABMinTimeCNT
EXTERN g_AVSetFlag
EXTERN g_FCexitflag
EXTERN g_Openparam
EXTERN g_PowerOffFlag
EXTERN g_ReplayTimeCNT
EXTERN g_comval
EXTERN g_lyricflag
EXTERN g_music_vars
EXTERN g_rSetPlayStatus
EXTERN g_result
PUBLIC g_volcounter
EXTERN ifSelBuffToltalTimeFlag
EXTERN m_Mp3deFileHandle
EXTERN main_ResShowPic
EXTERN musicpSendCommand
EXTERN need_draw
PUBLIC play_key_next
PUBLIC play_key_prev
EXTERN return_to_play
EXTERN ui_auto_update
EXTERN ui_follow_compare
EXTERN ui_lyric
EXTERN ui_play_menu
EXTERN ui_run_realtime
EXTERN ui_show_batt
EXTERN ui_show_vol
EXTERN volume_callback
EXTERN ?CLZ80B_4_04_L00
EXTERN ?C_S_SWITCH_L06
EXTERN ?C_V_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_PARM_DIRECT_L09
EXTERN ?ENT_AUTO_DIRECT_L09
RSEG CODE
DealKeyForPlayStatus:
; 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_playstatuskey.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_music.h"
; 12. #include "define.h"
; 13.
; 14. extern bool g_FCexitflag;
; 15. extern char return_to_play;
; 16. void ui_show_vol(BYTE volume);
; 17. void OutPutVolume(int vol);
; 18. int DealFilePlayEnd(void);
; 19. //void ErrReport(Play_status_t status);
; 20. extern bool DisplayTimeRollback(void);
; 21. extern EMU_MusicEditSelStatus MusicEditSelStatus; //musicedit add by mzh 2007.1.19
; 22. extern EMU_MusicEditStatus MusicEditStatus; //musicedit add by mzh 2007.1.19
; 23. extern STRU_SelMusicSegment MusicEdit_SelSeg; //musicedit add by mzh
; 24. extern time_t MusicEditStartTime;
; 25. extern time_t MusicEditEndTime;
; 26. extern HANDLE m_Mp3deFileHandle;
; 27. extern BYTE c_mp3deNowTimeSencond; // byte 当前时间:秒
; 28. extern BYTE c_mp3deNowTimeMinute; // 1byte 当前时间:分
; 29. extern BYTE c_mp3deNowTimeHour; // 1byte 当前时间:小时
; 30. extern int UI_ShowDelSegComfirm(void);
; 31.
; 32. char g_volcounter=0;
; 33. extern bool g_rSetPlayStatus;
; 34. /*
; 35. ********************************************************************************
; 36. * Description : 处理在播放状态下对按键的判断处理(因为ui_play.c空间太紧张了)
; 37. *
; 38. * input : 键值 key
; 39. *
; 40. * output: 返回值 == 0: 正常返回
; 41. * != 0: 不是正常返回(如热键)
; 42. * Notes :
; 43. ********************************************************************************
; 44. */
; 45. int DealKeyForPlayStatus(char key)
; 46. {
CALL LWRD ?ENT_PARM_DIRECT_L09
; 47. switch (key)
CALL LWRD ?C_V_SWITCH_L06
DEFW 16
DEFB 3
DEFB 4
DEFB 27
DEFB 29
DEFB 33
DEFB 37
DEFB 38
DEFB 48
DEFB 49
DEFB 67
DEFB 68
DEFB 69
DEFB 70
DEFB 133
DEFB 134
DEFB 144
DEFW ?0052
DEFW ?0031
DEFW ?0004
DEFW ?0008
DEFW ?0002
DEFW ?0002
DEFW ?0045
DEFW ?0039
DEFW ?0017
DEFW ?0021
DEFW ?0016
DEFW ?0012
DEFW ?0038
DEFW ?0002
DEFW ?0051
DEFW ?0045
DEFW ?0039
?0003:
; 48. {
; 49. case AP_MSG_STANDBY:
; 50. break;
?0004:
; 51.
; 52. case AP_KEY_NEXT | AP_KEY_LONG: //快进
; 53. #ifndef __6KEYMODE__
; 54. if(g_volcounter==0)
; 55. #endif
; 56. {
; 57. ui_run_realtime=TRUE;
LD A,1
LD (ui_run_realtime),A
; 58. //if (g_music_vars.location.disk == 'C')
; 59. {
; 60. //只有在"C"盘时才能快进退
; 61. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0006
?0005:
; 62. {
; 63. PlayStatus = FFPlaySta;
LD A,3
LD (PlayStatus),A
; 64. musicpSendCommand(MC_STEP, 4);
LD BC,4
LD E,7
CALL LWRD ?0200
?0006:
; 65. }
; 66. }
; 67. }
; 68. break;
JP LWRD ?0002
?0007:
; 69. case AP_KEY_NEXT | AP_KEY_HOLD: //VOL
; 70. #ifndef __6KEYMODE__
; 71. if(g_volcounter>0)
; 72. {
; 73. g_volcounter = 6;
; 74.
; 75. if(g_music_vars.volume<31)
; 76. {
; 77. volume_callback(++g_music_vars.volume);
; 78. ui_show_vol(g_music_vars.volume);
; 79. }
; 80. }
; 81. #endif
; 82. break;
?0008:
; 83. case AP_KEY_PREV | AP_KEY_LONG: //快退
; 84. #ifndef __6KEYMODE__
; 85. if(g_volcounter==0)
; 86. #endif
; 87. {
; 88. ui_run_realtime=TRUE;
LD A,1
LD (ui_run_realtime),A
; 89. //if (g_music_vars.location.disk == 'C')
; 90. {
; 91. //只有在"C"盘时才能快进退
; 92. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0010
?0009:
; 93. {
; 94. PlayStatus = FBPlaySta;
LD A,4
LD (PlayStatus),A
; 95. musicpSendCommand(MC_STEP, -4);
LD BC,65532
LD E,7
CALL LWRD ?0200
?0010:
; 96. }
; 97.
; 98. }
; 99. }
; 100. break;
JP LWRD ?0002
?0011:
; 101. case AP_KEY_PREV | AP_KEY_HOLD: //VOL
; 102. #ifndef __6KEYMODE__
; 103. if(g_volcounter>0)
; 104. {
; 105. g_volcounter = 6;
; 106.
; 107. if(g_music_vars.volume>0)
; 108. {
; 109. volume_callback(--g_music_vars.volume);
; 110. ui_show_vol(g_music_vars.volume);
; 111. }
; 112. }
; 113. #endif
; 114. break;
?0012:
; 115. /*
; 116. case AP_KEY_EQ:
; 117. if (RePlayStatus == NormalPlay)
; 118. {
; 119. g_result = ui_EQ_menu();
; 120.
; 121. if (g_result == RESULT_RECORD )//响应AB键
; 122. {
; 123. SetFullInterface();
; 124. return play_key_next(AP_KEY_AB | AP_KEY_UP);
; 125. }
; 126. else
; 127. {
; 128. if(DealFilePlayEnd())
; 129. return g_result;
; 130. if (g_result != 0)
; 131. {
; 132. return g_result;
; 133. }
; 134. }
; 135.
; 136. SetFullInterface();
; 137. return_to_play = 1;
; 138. need_draw = TRUE;
; 139. }
; 140. break;
; 141. */
; 142. /*
; 143. case AP_KEY_LOOP:
; 144. if (RePlayStatus == NormalPlay)
; 145. {
; 146. g_result = ui_loop_menu();
; 147.
; 148. if (g_result == RESULT_RECORD )//不响应AB键
; 149. {
; 150. SetFullInterface();
; 151. return play_key_next(AP_KEY_AB | AP_KEY_UP);
; 152. }
; 153. else
; 154. {
; 155. if(DealFilePlayEnd())
; 156. return g_result;
; 157. if (g_result != 0)
; 158. {
; 159. return g_result;
; 160. }
; 161. }
; 162.
; 163. SetFullInterface();
; 164. return_to_play=1;
; 165. need_draw = TRUE;
; 166. }
; 167. break;
; 168. */
; 169. case AP_KEY_PREV | AP_KEY_UP:
; 170. #ifndef __6KEYMODE__
; 171. if(g_volcounter>0)
; 172. {
; 173. g_volcounter = 6;
; 174.
; 175. if(g_music_vars.volume>0)
; 176. {
; 177. volume_callback(--g_music_vars.volume);
; 178. ui_show_vol(g_music_vars.volume);
; 179. }
; 180. }
; 181. else
; 182. #endif
; 183. {
; 184. ui_run_realtime=FALSE;
XOR A
LD (ui_run_realtime),A
; 185. g_result = play_key_prev(key);
LD D,A
LD A,BYTE3 play_key_prev
LD HL,LWRD play_key_prev
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
?0014:
; 186. while(ap_get_message()!=NULL); //clear rtc message.
CALL LWRD ap_get_message
OR A
JR Z,?0163
?0015:
JR ?0014
?0013:
; 187. return g_result;
; 188. }
; 189. break;
?0016:
; 190.
; 191. case AP_KEY_NEXT | AP_KEY_UP:
; 192. #ifndef __6KEYMODE__
; 193. if(g_volcounter>0)
; 194. {
; 195. g_volcounter = 6;
; 196.
; 197. if(g_music_vars.volume<31)
; 198. {
; 199. volume_callback(++g_music_vars.volume);
; 200. ui_show_vol(g_music_vars.volume);
; 201. }
; 202. break;
; 203. }
; 204. else
; 205. #endif
; 206. {
; 207. ui_run_realtime=FALSE;
XOR A
LD (ui_run_realtime),A
?0017:
; 208. }
; 209. case AP_KEY_AB | AP_KEY_UP: //定AB
; 210. g_result = play_key_next(key);
LD D,0
LD A,BYTE3 play_key_next
LD HL,LWRD play_key_next
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
?0019:
; 211. while(ap_get_message()!=NULL); //clear rtc message.
CALL LWRD ap_get_message
OR A
JR Z,?0163
?0020:
JR ?0019
?0018:
; 212. return g_result;
; 213. break;
?0021:
; 214.
; 215. case AP_KEY_MODE | AP_KEY_UP: //短按 MODE +
; 216. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0023
?0022:
; 217. {
; 218. // BYTE Reg4eBak=input8(0x4e);
; 219. // output8(0x4e,0x22); //zxs add
; 220. g_result = ui_play_menu(); //播放菜单
LD A,BYTE3 ui_play_menu
LD HL,LWRD ui_play_menu
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 221. // output8(0x4e,Reg4eBak);
; 222. if (g_result == RESULT_RECORD )//不响应AB键
LD A,9
XOR L
OR H
JR NZ,?0025
?0024:
; 223. {
; 224. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 225. UpDisplayFlag = UpDisplayFlag &clr_musicbitrate;
LD HL,UpDisplayFlag
INC HL
RES 5,(HL)
; 226. return play_key_next(AP_KEY_AB | AP_KEY_UP);
LD DE,49
LD A,BYTE3 play_key_next
LD HL,LWRD play_key_next
CALL LWRD ?BANK_CALL_DIRECT_L08
; 227. }
JP LWRD ?0058
?0025:
; 228. else
; 229. {
; 230. if(DealFilePlayEnd()) //处理播放到文件尾的情况
LD A,BYTE3 DealFilePlayEnd
LD HL,LWRD DealFilePlayEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
OR H
JR NZ,?0163
?0026:
; 231. return g_result;
?0027:
; 232. if (g_result != 0)
LD HL,(g_result)
LD A,L
OR H
JR Z,?0029
?0028:
; 233. {
; 234. return g_result;
?0163:
JR ?0037
; 235. }
?0029:
; 236. }
; 237. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 238. }
; 239. else
JR ?0030
?0023:
; 240. {
; 241. musicpSendCommand(MC_SETA_B, ClrABPoint); //clear SET_A_B
CALL LWRD ?0201
; 242. RePlayStatus = NormalPlay;
XOR A
LD (RePlayStatus),A
; 243. //main_ResShowPic(BBCK2,0,0);
; 244. UpDisplayFlag = UpDisplayFlag | up_musicbitrate;
LD HL,UpDisplayFlag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -