📄 sub_function1.s01
字号:
NAME sub_function1(17)
RSEG AP_SUB_FUN1(0)
EXTERN BankSwitch
EXTERN CaltimeFlag
PUBLIC ChangeMusic
EXTERN CheckMusicType
EXTERN ClearTimePara
EXTERN DRV_ActiveUD
PUBLIC DealMusicFileEnd
PUBLIC DisInFBHead
PUBLIC DisInFFEnd
EXTERN DisplayErrMsg
EXTERN GetInformation
PUBLIC NoCardCaseInStopMenu
EXTERN PlayStatus
EXTERN RePlayStatus
EXTERN SRSModeFlag
PUBLIC SelectCurMusic
EXTERN ToNextMusic
EXTERN UpDisplayFlag
EXTERN UpdateFileSelector
EXTERN WaitForCaltimeCNT
EXTERN ap_get_message
EXTERN apepSendCommand
EXTERN fselGetLocation
EXTERN fselGetNextFile
EXTERN fselGetNo
EXTERN fselGetPrevFile
EXTERN fselGetTotal
EXTERN fselInit
EXTERN fselPlayListExit
EXTERN fselSetLocation
EXTERN fselSetMode
EXTERN g_2HZ_CNT
EXTERN g_ABMinTimeCNT
EXTERN g_ABPointTimeSize
EXTERN g_FCexitflag
EXTERN g_Openparam
EXTERN g_PAOpenFlag
EXTERN g_ReplayTimeCNT
EXTERN g_TagInfoBuf
EXTERN g_TagInfoBuf1
EXTERN g_comval
EXTERN g_currentMusicType
EXTERN g_music_vars
EXTERN g_musicamount
EXTERN g_musicsequence
EXTERN g_result
EXTERN ifSelBuffToltalTimeFlag
EXTERN itoa_1
EXTERN itoa_2
EXTERN main_ResShowPic
EXTERN make_dirname
EXTERN mp3pSendCommand
EXTERN musicpSendCommand
PUBLIC musicpSendCommand_bank
EXTERN need_draw
EXTERN oggpSendCommand
EXTERN openPA
EXTERN srs_default_set
EXTERN temp_buffer
EXTERN ui_auto_update
EXTERN ui_delete
PUBLIC ui_delete_Music
EXTERN ui_delete_all
EXTERN ui_directory
EXTERN ui_show_d
EXTERN wmapSendCommand
EXTERN ?CLZ80B_4_04_L00
EXTERN ?C_S_SWITCH_L06
EXTERN ?S_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 AP_SUB_FUN1
DisInFBHead:
; 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_function1.c,v 1.1.1.1 2006/05/22 03:24:01 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_music.h"
; 12.
; 13. extern bool g_FCexitflag;
; 14.
; 15. #pragma memory=constseg(APC_SUB_FUN1)
; 16. #pragma memory=default
; 17.
; 18. void FadeOut( bool DisMod );
; 19. void DisInFBHead(char DisMod);
; 20. void DisInFFEnd(char DisMod);
; 21. int ui_licensinf(int string_id);
; 22. extern void make_dirname(void);
; 23. extern void srs_default_set(void);
; 24. extern byte SRSModeFlag;
; 25. #pragma codeseg(AP_SUB_FUN1)
; 26. void DisInFBHead(char DisMod)
; 27. {
CALL LWRD ?ENT_PARM_DIRECT_L09
; 28. if (DisMod == 0)
INC E
DEC E
JR NZ,?0003
?0002:
; 29. {//普通显示模式
; 30. temp_buffer[0] = '0';
LD A,48
LD (temp_buffer),A
; 31. temp_buffer[1] = '0';
LD (temp_buffer+1),A
; 32. temp_buffer[2] = '0';
LD (temp_buffer+2),A
; 33. temp_buffer[3] = '0';
LD (temp_buffer+3),A
; 34. temp_buffer[4] = '0';
LD (temp_buffer+4),A
; 35. ui_show_d(temp_buffer);
CALL LWRD ?0162
; 36. }
; 37. else
JR ?0004
?0003:
; 38. {//歌词显示模式
; 39. main_ResShowPic(LYRIC_R, LyricIcon_Pos_X, LyricIcon_Pos_Y);
LD C,99
PUSH BC
LD C,197
LD DE,78
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0004:
; 40. }
; 41. return;
; 42.
; 43. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0162:
LD DE,temp_buffer
LD A,BYTE3 ui_show_d
LD HL,LWRD ui_show_d
JP LWRD ?BANK_CALL_DIRECT_L08
DisInFFEnd:
; 44.
; 45. void DisInFFEnd(char DisMod)
; 46. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65528
; 47. if(DisMod == 0)
XOR A
OR (IX+2)
JR NZ,?0006
?0005:
; 48. {//普通显示模式
; 49. wma_play_status_t status_buf;
; 50. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD L,A
LD H,A
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0169
; 51. itoa_1(status_buf.total_time.hour, &temp_buffer[0]);
LD BC,temp_buffer
LD E,(IX-5)
LD A,BYTE3 itoa_1
LD HL,LWRD itoa_1
CALL LWRD ?BANK_CALL_DIRECT_L08
; 52. itoa_2(status_buf.total_time.minute, &temp_buffer[1]);
LD BC,temp_buffer+1
LD E,(IX-4)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 53. itoa_2(status_buf.total_time.second, & temp_buffer[3]);
LD BC,temp_buffer+3
LD E,(IX-3)
LD A,BYTE3 itoa_2
LD HL,LWRD itoa_2
CALL LWRD ?BANK_CALL_DIRECT_L08
; 54. ui_show_d(temp_buffer);
CALL LWRD ?0162
; 55. }
; 56. else
JR ?0007
?0006:
; 57. {//歌词显示模式
; 58. main_ResShowPic(LYRIC_F, LyricIcon_Pos_X, LyricIcon_Pos_Y);
LD C,99
PUSH BC
LD C,197
LD DE,77
LD A,BYTE3 main_ResShowPic
LD HL,LWRD main_ResShowPic
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
?0007:
; 59. }
; 60. return;
; 61. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0170:
LD BC,1
LD E,13
?0169:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
DealMusicFileEnd:
; 62.
; 63. //===========[放到文件尾时的处理]===============
; 64. int DealMusicFileEnd( char DisMod)
; 65. {
PUSH DE
; 66. wma_play_status_t status_buf;
; 67.
; 68. int key;
; 69.
; 70. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 71.
; 72. if (PlayStatus == FBPlaySta)
LD A,(PlayStatus)
CP 4
JR NZ,?0009
?0008:
; 73. {
; 74. DisInFBHead( DisMod );//到头显示
LD A,BYTE3 DisInFBHead
LD HL,LWRD DisInFBHead
CALL LWRD ?BANK_CALL_DIRECT_L08
?0011:
; 75. while ( ap_get_message() != (AP_KEY_PREV | AP_KEY_UP) );
CALL LWRD ap_get_message
CP 37
JR NZ,?0011
?0012:
?0010:
; 76. SelectCurMusic();
LD A,BYTE3 SelectCurMusic
LD HL,LWRD SelectCurMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
JR ?0027
?0009:
; 77.
; 78. }
; 79. else if (PlayStatus == FFPlaySta)
CP 3
JR NZ,?0015
?0014:
; 80. {
; 81. DisInFFEnd( DisMod );//到尾显示
LD A,BYTE3 DisInFFEnd
LD HL,LWRD DisInFFEnd
CALL LWRD ?BANK_CALL_DIRECT_L08
?0017:
; 82. while ( ap_get_message() != (AP_KEY_NEXT | AP_KEY_UP) );
CALL LWRD ap_get_message
CP 38
JR NZ,?0017
?0018:
?0016:
; 83. g_result = ToNextMusic(Play_play);
CALL LWRD ?0171
; 84. if(DisMod == 0)
ADD HL,SP
XOR A
OR (HL)
JR NZ,?0020
?0019:
; 85. {
; 86. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
?0020:
; 87. }
; 88. if(g_result == RESULT_UI_STOP) return g_result;
LD HL,(g_result)
LD A,102
XOR L
OR H
JR NZ,?0027
?0021:
JR ?0028
; 89. }
?0022:
; 90.
; 91. else
?0015:
; 92. {
; 93. g_result = ToNextMusic(Play_play);
CALL LWRD ?0171
; 94. if(DisMod == 0)
ADD HL,SP
XOR A
OR (HL)
JR NZ,?0025
?0024:
; 95. {
; 96. SetFullInterface();
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
?0025:
; 97. }
; 98. if(g_result == RESULT_UI_STOP) return g_result;
LD HL,(g_result)
LD A,102
XOR L
OR H
JR Z,?0028
?0026:
; 99. }
?0027:
?0023:
?0013:
; 100. return NULL;
LD HL,0
; 101. }
?0028:
POP AF
JP LWRD ?BANK_FAST_LEAVE_L08
?0171:
LD E,1
LD A,BYTE3 ToNextMusic
LD HL,LWRD ToNextMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
LD HL,0
RET
ChangeMusic:
; 102. //================================================
; 103.
; 104.
; 105. /*
; 106. *******************************************************************************
; 107. * Description : 换曲时要做的选曲,初始化动作
; 108. * Arguments :
; 109. * Returns :真时表示可继续放,假时表示要停止放(播放状态)
; 110. * Notes :
; 111. *******************************************************************************
; 112. */
; 113. bool ChangeMusic( BYTE Direct, Music_sel_mod_t mod )
; 114. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65534
; 115. bool result;
; 116.
; 117. //清 WATCH_DOG
; 118. output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 119.
; 120. //选文件
; 121. RePlayStatus = NormalPlay;
XOR A
LD (RePlayStatus),A
; 122. ClearTimePara();
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
; 123. g_TagInfoBuf[0] = 0x0;
XOR A
LD (g_TagInfoBuf),A
; 124. BankSwitch((unsigned long)FSELInit >> 16);
LD E,BYTE3 fselInit
EX DE,HL
LD E,L
CALL LWRD BankSwitch
; 125.
; 126. if (mod == Play_key)
DEC C
DEC C
JR NZ,?0030
?0029:
; 127. {//play 按键的情况
; 128. switch (g_music_vars.repeat_mode)
LD A,(g_music_vars+1)
CP 1
JR NZ,?0036
?0032:
; 129. {
; 130. case FSEL_ALL_REPEATONE:
; 131. FSELSetMode( FSEL_ALL_REPEATALL );//PLAY 时按键
JR ?0146
; 132. break;
?0033:
; 133.
; 134.
; 135. default:
; 136. FSELSetMode(g_music_vars.repeat_mode);//
; 137. break;
?0031:
?0030:
; 138. }
; 139. }
; 140. else if (mod == Stop_key)
XOR A
OR (IX+4)
JR NZ,?0036
?0035:
; 141. {//
; 142. FSELSetMode(FSEL_ALL_REPEATALL);//STOP时按键
?0146:
LD E,4
JR ?0142
; 143. }
; 144. else
?0036:
; 145. {//正常播放的情况
; 146. FSELSetMode(g_music_vars.repeat_mode);
LD DE,(g_music_vars+1)
?0142:
CALL LWRD ?0173
?0037:
?0034:
; 147. }
; 148.
; 149. switch (Direct)
LD E,(IX+2)
CALL LWRD ?C_S_SWITCH_L06
DEFB 0
DEFW 5
DEFW ?0044
DEFW ?0038
DEFW ?0038
DEFW ?0041
DEFW ?0042
DEFW ?0043
?0039:
; 150. {
; 151. case Music_Reset_Head:
; 152. break;
?0040:
; 153.
; 154. case Music_Reset_End:
; 155. break;
?0041:
; 156.
; 157. case Music_Cur:
; 158. result = TRUE;
LD (IX-2),1
; 159. break;
JR ?0038
?0042:
; 160.
; 161. case Music_Next:
; 162. ifSelBuffToltalTimeFlag = FALSE;
XOR A
LD (ifSelBuffToltalTimeFlag),A
; 163. result = FSELGetNext(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 fselGetNextFile
LD HL,LWRD fselGetNextFile
JR ?0143
; 164. break;
?0043:
; 165.
; 166. case Music_Prev:
; 167. ifSelBuffToltalTimeFlag = FALSE;
XOR A
LD (ifSelBuffToltalTimeFlag),A
; 168. result = FSELGetPrev(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 fselGetPrevFile
LD HL,LWRD fselGetPrevFile
?0143:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (IX-2),L
; 169. break;
JR ?0038
?0044:
; 170.
; 171. default:
; 172. return FALSE;
LD L,0
; 173. }
JR ?0047
?0038:
; 174.
; 175. if (!result)
XOR A
OR (IX-2)
JR NZ,?0046
?0045:
; 176. {
; 177. fselSetLocation(& g_music_vars.location);
LD DE,g_music_vars+7
LD A,BYTE3 fselSetLocation
LD HL,LWRD fselSetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 178. return result;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -