📄 sub_playstatuskey.s01
字号:
NAME sub_playstatuskey(17)
RSEG CODE(0)
EXTERN ChangeMusic
EXTERN ChangeVolume
EXTERN DRV_DetectUD
PUBLIC DealKeyForPlayStatus
EXTERN DealMusicFileEnd
PUBLIC DealPlayKey
PUBLIC Deal_Error_Playing
EXTERN DisplayErrMsg
EXTERN DisplayTimeRollback
PUBLIC ErrReport
EXTERN FadeOut
EXTERN GetBattery
EXTERN GetInformation
EXTERN OutPutVolume
EXTERN PlayStatus
PUBLIC PrevMusicInPlay
EXTERN RePlayStatus
PUBLIC ToNextMusic
EXTERN UpDisplayFlag
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN fselGetLocation
EXTERN fselGetNextFile
EXTERN fselGetPrevFile
EXTERN fselSetMode
EXTERN g_ABMinTimeCNT
EXTERN g_AVSetFlag
EXTERN g_FCexitflag
EXTERN g_Openparam
EXTERN g_PowerOffFlag
EXTERN g_ReplayTimeCNT
EXTERN g_TagInfoBuf
EXTERN g_TagInfoBuf1
EXTERN g_comval
EXTERN g_lyricflag
EXTERN g_music_vars
EXTERN g_result
EXTERN ifSelBuffToltalTimeFlag
EXTERN main_ResShowPic
EXTERN musicpSendCommand
EXTERN need_draw
PUBLIC play_key_next
PUBLIC play_key_prev
EXTERN return_to_play
EXTERN ui_EQ_menu
EXTERN ui_auto_update
EXTERN ui_follow_compare
EXTERN ui_loop_menu
EXTERN ui_lyric
EXTERN ui_play_menu
EXTERN ui_run_realtime
EXTERN ui_show_batt
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_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.
; 12. #include "ap_music.h"
; 13.
; 14.
; 15. extern bool g_FCexitflag;
; 16. extern char return_to_play;
; 17. void ui_show_vol(BYTE volume);
; 18. void OutPutVolume(int vol);
; 19. void ErrReport(Play_status_t status);
; 20. extern bool DisplayTimeRollback(void);
; 21.
; 22. /*
; 23. ********************************************************************************
; 24. * Description : 处理在播放状态下对按键的判断处理(因为ui_play.c空间太紧张了)
; 25. *
; 26. * input : 键值 key
; 27. *
; 28. * output: 返回值 == 0: 正常返回
; 29. * != 0: 不是正常返回(如热键)
; 30. * Notes :
; 31. ********************************************************************************
; 32. */
; 33.
; 34. int DealKeyForPlayStatus(char key)
; 35. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65524
PUSH IY
; 36.
; 37. int g_result_bak;
; 38. music_play_status_t status_buf;
; 39. switch (key)
LD E,(IX+2)
CALL LWRD ?C_V_SWITCH_L06
DEFW 14
DEFB 2
DEFB 3
DEFB 4
DEFB 18
DEFB 27
DEFB 29
DEFB 33
DEFB 37
DEFB 38
DEFB 48
DEFB 49
DEFB 133
DEFB 134
DEFB 144
DEFW ?0066
DEFW ?0047
DEFW ?0004
DEFW ?0007
DEFW ?0029
DEFW ?0033
DEFW ?0028
DEFW ?0024
DEFW ?0054
DEFW ?0002
DEFW ?0065
DEFW ?0010
DEFW ?0055
DEFW ?0055
DEFW ?0017
?0003:
; 40. {
; 41. case AP_MSG_STANDBY:
; 42. break;
?0004:
; 43.
; 44. case AP_KEY_NEXT | AP_KEY_LONG: //快进
; 45.
; 46. ui_run_realtime=TRUE;
LD A,1
LD (ui_run_realtime),A
; 47. //if (g_music_vars.location.disk == 'C')
; 48. {
; 49. //只有在"C"盘时才能快进退
; 50. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0006
?0005:
; 51. {
; 52. PlayStatus = FFPlaySta;
LD A,3
LD (PlayStatus),A
; 53. musicpSendCommand(MC_STEP, 4);
LD BC,4
LD E,7
CALL LWRD ?0221
?0006:
; 54. }
; 55. }
; 56. break;
JP LWRD ?0002
?0007:
; 57.
; 58. case AP_KEY_PREV | AP_KEY_LONG: //快退
; 59. ui_run_realtime=TRUE;
LD A,1
LD (ui_run_realtime),A
; 60. //if (g_music_vars.location.disk == 'C')
; 61. {
; 62. //只有在"C"盘时才能快进退
; 63. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0009
?0008:
; 64. {
; 65. PlayStatus = FBPlaySta;
LD A,4
LD (PlayStatus),A
; 66. musicpSendCommand(MC_STEP, -4);
LD BC,65532
LD E,7
CALL LWRD ?0221
?0009:
; 67. }
; 68.
; 69. }
; 70. break;
JP LWRD ?0002
?0010:
; 71.
; 72. case AP_KEY_EQ:
; 73. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0012
?0011:
; 74. {
; 75. g_result = ui_EQ_menu();
LD A,BYTE3 ui_EQ_menu
LD HL,LWRD ui_EQ_menu
CALL LWRD ?0225
; 76.
; 77. if (g_result == RESULT_RECORD )//响应AB键
JR Z,?0163
?0013:
; 78. {
; 79. SetFullInterface();
; 80. return play_key_next(AP_KEY_AB | AP_KEY_UP);
; 81. }
?0014:
; 82. else
; 83. {
; 84. if (g_result != 0)
LD A,L
OR H
JR NZ,?0165
?0015:
; 85. {
; 86. return g_result;
; 87. }
?0016:
; 88. }
; 89.
; 90. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 91. return_to_play = 1;
LD A,1
LD (return_to_play),A
; 92. need_draw = TRUE;
LD (need_draw),A
?0012:
; 93. }
; 94. break;
JP LWRD ?0002
?0017:
; 95.
; 96. case AP_KEY_LOOP:
; 97. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JR NZ,?0019
?0018:
; 98. {
; 99. g_result = ui_loop_menu();
LD A,BYTE3 ui_loop_menu
LD HL,LWRD ui_loop_menu
CALL LWRD ?0225
; 100.
; 101. if (g_result == RESULT_RECORD )//不响应AB键
JR NZ,?0021
?0020:
; 102. {
; 103. SetFullInterface();
?0163:
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 104. return play_key_next(AP_KEY_AB | AP_KEY_UP);
JR ?0164
; 105. }
?0021:
; 106. else
; 107. {
; 108. if (g_result != 0)
LD A,L
OR H
JR Z,?0023
?0022:
; 109. {
; 110. return g_result;
?0165:
JR ?0030
; 111. }
?0023:
; 112. }
; 113.
; 114. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 115. return_to_play=1;
LD A,1
LD (return_to_play),A
; 116. need_draw = TRUE;
LD (need_draw),A
?0019:
; 117. }
; 118. break;
JP LWRD ?0002
?0024:
; 119.
; 120. case AP_KEY_PREV | AP_KEY_UP:
; 121. ui_run_realtime=FALSE;
XOR A
LD (ui_run_realtime),A
; 122. g_result = play_key_prev(key);
LD D,A
LD A,BYTE3 play_key_prev
LD HL,LWRD play_key_prev
CALL LWRD ?0226
?0026:
; 123. while(ap_get_message()!=NULL); //clear rtc message.
CALL LWRD ap_get_message
OR A
JR Z,?0030
?0027:
JR ?0026
?0025:
; 124. return g_result;
; 125.
; 126.
; 127. case AP_KEY_NEXT | AP_KEY_UP:
?0028:
; 128. ui_run_realtime=FALSE;
XOR A
LD (ui_run_realtime),A
?0029:
; 129. case AP_KEY_AB | AP_KEY_UP: //定AB
; 130. g_result = play_key_next(key);
LD D,0
CALL LWRD ?0227
?0031:
; 131. while(ap_get_message()!=NULL); //clear rtc message.
CALL LWRD ap_get_message
OR A
JR NZ,?0031
?0032:
?0030:
; 132. return g_result;
JP LWRD ?0174
; 133.
; 134. case AP_KEY_MODE | AP_KEY_UP: //短按 MODE +
?0033:
; 135. if (RePlayStatus == NormalPlay)
LD A,(RePlayStatus)
OR A
JP NZ,?0035
?0034:
; 136. {
; 137. BYTE Reg4eBak=input8(0x4e);
IN A,(78)
LD (IX-2),A
; 138. output8(0x4e,0x22); //zxs add
LD A,34
OUT (78),A
; 139. 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
; 140. output8(0x4e,Reg4eBak); //zxs add
LD A,(IX-2)
OUT (78),A
; 141. if (g_result == RESULT_RECORD )//不响应AB键
LD A,9
XOR L
OR H
JR NZ,?0037
?0036:
; 142. {
; 143.
; 144. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 145. UpDisplayFlag = UpDisplayFlag &clr_musicbitrate;
LD HL,UpDisplayFlag
INC HL
RES 5,(HL)
; 146. return play_key_next(AP_KEY_AB | AP_KEY_UP);
?0164:
LD DE,49
LD A,BYTE3 play_key_next
LD HL,LWRD play_key_next
CALL LWRD ?BANK_CALL_DIRECT_L08
; 147. }
JP LWRD ?0072
?0037:
; 148. else
; 149. {
; 150. /////////////////////////////////////////////////////////////////////////////////////
; 151. g_result_bak=g_result;
LD IY,(g_result)
; 152. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,4
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0221
; 153. if (status_buf.status == PLAYING_REACH_END)
LD A,(IX-10)
CP 6
JR NZ,?0041
?0038:
; 154. {
; 155.
; 156. g_result=DealMusicFileEnd(0);
LD E,0
LD A,BYTE3 DealMusicFileEnd
LD HL,LWRD DealMusicFileEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 157. if ( g_result != NULL )
LD A,L
OR H
JR Z,?0041
?0040:
; 158. {
; 159. if(g_result_bak) //g_result_bak !=0,返回其消息
PUSH IY
POP HL
LD A,L
OR H
JR Z,?0170
?0042:
; 160. return g_result_bak;
; 161. else
JP LWRD ?0072
?0043:
; 162. return g_result;
; 163. }
?0041:
?0039:
; 164. }
; 165. g_result=g_result_bak;
PUSH IY
POP HL
LD (g_result),HL
; 166. //////////////////////////////////////////////////////////////////////////////////////解决DRM在菜单中长按mode重启问题
; 167. if (g_result != 0)
LD A,L
OR H
JR Z,?0045
?0044:
; 168. {
; 169. return g_result;
?0170:
JP LWRD ?0174
; 170. }
?0045:
; 171. }
; 172. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 173.
; 174. }
; 175. else
JR ?0046
?0035:
; 176. {
; 177. musicpSendCommand(MC_SETA_B, ClrABPoint); //clear SET_A_B
CALL LWRD ?0222
; 178. RePlayStatus = NormalPlay;
XOR A
LD (RePlayStatus),A
; 179. //main_ResShowPic(BBCK2,0,0);
; 180. UpDisplayFlag = UpDisplayFlag | up_musicbitrate;
LD HL,UpDisplayFlag
INC HL
SET 5,(HL)
; 181. g_FCexitflag = FALSE;
LD (g_FCexitflag),A
?0046:
; 182. }
; 183. return_to_play=1;
LD A,1
LD (return_to_play),A
; 184. need_draw = TRUE;
JP LWRD ?0175
; 185. break;
?0047:
; 186.
; 187. case AP_KEY_MODE | AP_KEY_LONG://长按MODE 进入歌词显示界面
; 188.
; 189. #ifdef OPT_Sup_LRC_fun//支持歌词显示功能
; 190.
; 191. if (!g_lyricflag)
LD A,(g_lyricflag)
OR A
JR Z,?0172
?0048:
; 192. {
; 193. return RESULT_MAIN; //没歌词就不进入
; 194. }
?0049:
; 195. if (RePlayStatus != NormalPlay)
LD A,(RePlayStatus)
OR A
JR Z,?0051
?0050:
; 196. {
; 197. return RESULT_MAIN;
?0172:
LD HL,10
; 198. }
JP LWRD ?0072
?0051:
; 199. g_result = ui_lyric();
LD A,BYTE3 ui_lyric
LD HL,LWRD ui_lyric
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 200. return_to_play=1;
LD A,1
LD (return_to_play),A
; 201. //恢复背光时间
; 202. VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD BC,32
PUSH BC
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
POP HL
; 203. ap_message_init(& g_comval);
LD DE,g_comval
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 204. if( g_result == 0 ) //如果是热键,不要清屏.
LD HL,(g_result)
LD A,L
OR H
JR NZ,?0174
?0052:
; 205. {
; 206. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 207. need_draw = TRUE;
LD A,1
LD (need_draw),A
?0053:
; 208. }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -