📄 ui_stop.s01
字号:
NAME ui_stop(17)
RSEG AP_UI_STP(0)
RSEG UDATA0(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
EXTERN BackupCurrentTime
PUBLIC CaltimeFlag
EXTERN ChangeMusic
EXTERN CheckMusicType
EXTERN DisplayErrMsg
EXTERN DisplayTimeRollback
EXTERN ErrReport
EXTERN FadeOut
EXTERN GetInformation
EXTERN PlayStatus
EXTERN RefreshMainScreen
EXTERN UpDisplayFlag
EXTERN UpdateFileSelector
PUBLIC WaitForCaltimeCNT
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN fselGetLocation
EXTERN fselGetNextFile
EXTERN fselGetNo
EXTERN fselGetPrevFile
EXTERN fselGetTotal
EXTERN fselSetMode
EXTERN g_FCexitflag
EXTERN g_OldSecTempBackup
EXTERN g_Openparam
EXTERN g_PowerOffFlag
EXTERN g_ScrollFlag
EXTERN g_TagInfoBuf
EXTERN g_TagInfoBuf1
EXTERN g_comval
EXTERN g_currentMusicType
EXTERN g_introCNT
EXTERN g_introCntMode
EXTERN g_music_vars
EXTERN g_musicamount
EXTERN g_musicsequence
EXTERN g_result
EXTERN ifSelBuffToltalTimeFlag
EXTERN make_dirname
EXTERN musicpSendCommand
EXTERN need_draw
EXTERN slider
PUBLIC testram
EXTERN ui_auto_update
EXTERN ui_play
EXTERN ui_slider
PUBLIC ui_stop
PUBLIC ui_stop_loop
EXTERN ui_stop_menu
EXTERN ?CLZ80B_4_04_L00
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 AP_UI_STP
ui_stop:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * This program demostrates how to build an AP
; 5. *
; 6. * (c) Copyright Actions Co,Ld.
; 7. *
; 8. * $Id: ui_stop.c,v 1.2 2006/07/14 06:46:20 tangwh Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_music.h"
; 12. char testram = 0;
; 13.
; 14. char WaitForCaltimeCNT;//在停止状态下先不计时,到无按键动作一定时间后再开始计时
; 15. // 这样可以提高在停止状态时按next 跳歌的速度.
; 16. bool CaltimeFlag; //true: 不用再算时间
; 17. extern void make_dirname(void); //false: 未算时间
; 18.
; 19. extern bool g_FCexitflag;
; 20.
; 21. int ui_stop_loop(void);
; 22. int DealForDRMsong(void);
; 23. void ttest(void);
; 24. bool DisplayTimeRollback(void);
; 25.
; 26. #pragma codeseg(AP_UI_STP)
; 27. //======================================================================================
; 28. //RESULT_CURR_UI: 还要处在当前界面
; 29. //RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
; 30. //RESULT_LAST_UI: 到上一级界面
; 31. //--------------------------------------------------------------------------------------
; 32. int ui_stop(void)
; 33. {
PUSH BC
PUSH DE
; 34. int result;
; 35. ap_message_init(NULL);//开始算STANDBY 时间
CALL LWRD ?0136
?0004:
; 36.
; 37. do
; 38. {
; 39. if (UpdateFileSelector() == 0)
LD A,BYTE3 UpdateFileSelector
LD HL,LWRD UpdateFileSelector
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
OR H
JP Z,?0111
?0005:
; 40. {
; 41. return 0;
; 42. }
?0006:
; 43.
; 44. g_musicamount = FSELGetTotal();
LD A,BYTE3 fselGetTotal
LD HL,LWRD fselGetTotal
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_musicamount),HL
; 45. g_musicsequence = FSELGetNo();
LD A,BYTE3 fselGetNo
LD HL,LWRD fselGetNo
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_musicsequence),HL
; 46. FSELSetMode(g_music_vars.repeat_mode);
CALL LWRD ?0142
; 47. make_dirname();
LD A,BYTE3 make_dirname
LD HL,LWRD make_dirname
CALL LWRD ?BANK_CALL_DIRECT_L08
; 48. g_currentMusicType = CheckMusicType(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 CheckMusicType
LD HL,LWRD CheckMusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_currentMusicType),A
; 49.
; 50. //TEST_UIST =0x73;
; 51. FSELSetMode( FSEL_ALL_REPEATALL );
; 52. FSELGetNext(g_music_vars.location.filename);
; 53. fselGetLocation(& g_music_vars.location);
; 54. GetInformation();
CALL LWRD ?0139
; 55. memcpy(g_TagInfoBuf1,g_TagInfoBuf,20);
LD BC,20
LD DE,g_TagInfoBuf1
LD HL,g_TagInfoBuf
LDIR
; 56. FSELGetPrev(g_music_vars.location.filename);
LD DE,g_music_vars+33
LD A,BYTE3 fselGetPrevFile
LD HL,LWRD fselGetPrevFile
CALL LWRD ?BANK_CALL_DIRECT_L08
; 57. fselGetLocation(& g_music_vars.location);
LD DE,g_music_vars+7
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 58. FSELSetMode(g_music_vars.repeat_mode);
CALL LWRD ?0142
; 59. GetInformation(); //取文件信息
CALL LWRD ?0140
; 60. musicpSendCommand( MC_OPEN, (int)& g_Openparam );
LD BC,g_Openparam
LD E,1
CALL LWRD ?0143
; 61. musicpSendCommand(MC_LOAD, NULL);//04-4-23 9:32
LD BC,0
LD E,3
CALL LWRD ?0143
; 62. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 63. if(PlayStatus==PauseSta) //add by zxs for not refresh background when pause
LD A,(PlayStatus)
DEC A
JR NZ,?0008
?0007:
; 64. {
; 65. UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic;
LD HL,UpDisplayFlag
RES 0,(HL)
; 66. UpDisplayFlag=UpDisplayFlag & clr_musiccurrenttime;
INC HL
RES 1,(HL)
; 67. UpDisplayFlag=UpDisplayFlag & clr_musicbitrate;
LD HL,UpDisplayFlag
INC HL
RES 5,(HL)
; 68. }
; 69. else
JR ?0009
?0008:
; 70. PlayStatus = StopSta;
XOR A
LD (PlayStatus),A
?0009:
; 71. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 72. musicpSendCommand(MC_CALTIME, NULL); //zxs add
LD BC,0
CALL LWRD ?0144
; 73. CaltimeFlag=TRUE;
LD A,1
LD (CaltimeFlag),A
; 74. g_result = ui_stop_loop();
LD A,BYTE3 ui_stop_loop
LD HL,LWRD ui_stop_loop
CALL LWRD ?0138
; 75. }while( (g_result == RESULT_CURR_UI)
; 76. || (g_result == RESULT_UI_STOP)
; 77. || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
LD A,L
OR H
JP Z,?0004
LD A,102
XOR L
OR H
JP Z,?0004
LD A,103
XOR L
OR H
JP Z,?0004
?0002:
; 78. if (g_result == RESULT_LAST_UI)
LD A,101
XOR L
OR H
JR NZ,?0013
?0012:
; 79. {
; 80. return NULL;//不带参数回到上一级
?0111:
LD HL,0
; 81. }
?0013:
; 82. return g_result;//带参数回到上一级
; 83. }
?0014:
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0136:
LD DE,0
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
JP LWRD ?BANK_CALL_DIRECT_L08
?0137:
LD BC,20
LD DE,g_TagInfoBuf1
LD HL,g_TagInfoBuf
LDIR
LD DE,g_music_vars+33
LD A,BYTE3 fselGetPrevFile
LD HL,LWRD fselGetPrevFile
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,g_music_vars+7
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,(g_music_vars+1)
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,g_Openparam
LD E,1
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,0
LD E,3
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
XOR A
LD (CaltimeFlag),A
LD (WaitForCaltimeCNT),A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
LD HL,UpDisplayFlag
RES 0,(HL)
LD A,1
LD (need_draw),A
RET
?0138:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
RET
?0141:
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
?0139:
LD E,4
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,g_music_vars+33
LD A,BYTE3 fselGetNextFile
LD HL,LWRD fselGetNextFile
CALL LWRD ?BANK_CALL_DIRECT_L08
LD DE,g_music_vars+7
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
CALL LWRD ?BANK_CALL_DIRECT_L08
?0140:
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
JP LWRD ?BANK_CALL_DIRECT_L08
?0142:
LD DE,(g_music_vars+1)
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
JP LWRD ?BANK_CALL_DIRECT_L08
?0145:
LD C,A
LD B,A
?0144:
LD E,19
?0143:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
ui_stop_loop:
; 84. //======================================================================================
; 85.
; 86. int ui_stop_loop()
; 87. //int ui_stop()
; 88. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65520
PUSH IY
; 89. mp3_play_status_t status_buf;
; 90. char key;
; 91. char modekeystore = NULL;
LD (IX-7),0
?0016:
; 92. int result;
; 93. char i;
; 94.
; 95.
; 96. while(1)
; 97. {
; 98. //清空消息池
; 99. result = ap_get_message();
CALL LWRD ap_get_message
LD C,A
LD B,0
PUSH BC
POP IY
; 100. if (result == NULL)
LD A,C
OR A
JR Z,?0015
?0018:
; 101. {
; 102. break;
?0019:
; 103. }
; 104. if (result == AP_MSG_STANDBY)
PUSH IY
POP HL
LD A,29
XOR L
OR H
JR NZ,?0016
?0020:
; 105. {
; 106. //碰到 standby 消息时要优先处理,否则会漏掉 standby 消息
; 107. return RESULT_STANDBY;
JR ?0031
; 108. }
?0021:
; 109. }
; 110.
; 111.
; 112. while (1)
?0015:
?0023:
; 113. {
; 114.
; 115.
; 116. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-8),A
; 117. if (need_draw)
LD A,(need_draw)
OR A
JR Z,?0026
?0025:
; 118. {
; 119. RefreshMainScreen();
LD A,BYTE3 RefreshMainScreen
LD HL,LWRD RefreshMainScreen
CALL LWRD ?BANK_CALL_DIRECT_L08
; 120. need_draw = FALSE;
XOR A
LD (need_draw),A
?0026:
; 121. }
; 122.
; 123. switch (key)
LD E,(IX-8)
CALL LWRD ?C_V_SWITCH_L06
DEFW 16
DEFB 3
DEFB 4
DEFB 5
DEFB 6
DEFB 16
DEFB 28
DEFB 33
DEFB 37
DEFB 38
DEFB 48
DEFB 50
DEFB 55
DEFB 56
DEFB 69
DEFB 70
DEFB 129
DEFW ?0097
DEFW ?0031
DEFW ?0086
DEFW ?0078
DEFW ?0027
DEFW ?0093
DEFW ?0027
DEFW ?0067
DEFW ?0082
DEFW ?0074
DEFW ?0032
DEFW ?0028
DEFW ?0066
DEFW ?0086
DEFW ?0078
DEFW ?0090
DEFW ?0090
?0028:
; 124. {
; 125. case AP_MSG_RTC:
; 126. if (!CaltimeFlag)
LD A,(CaltimeFlag)
OR A
JR NZ,?0030
?0029:
; 127. {
; 128. WaitForCaltimeCNT++;
LD HL,WaitForCaltimeCNT
INC (HL)
?0030:
; 129. }
; 130. break;
JP LWRD ?0027
?0031:
; 131.
; 132. case AP_KEY_PLAY | AP_KEY_LONG:
; 133. return RESULT_STANDBY;
LD HL,2
; 134. break;
JP LWRD ?0109
?0032:
?0034:
; 135.
; 136. case AP_KEY_PLAY | AP_KEY_UP:
; 137. while(ap_get_message()!=NULL); //clear rtc message.
CALL LWRD ap_get_message
OR A
JR NZ,?0032
?0035:
?0033:
; 138. if (CaltimeFlag || ifSelBuffToltalTimeFlag)
LD A,(CaltimeFlag)
OR A
JR NZ,?0038
LD A,(ifSelBuffToltalTimeFlag)
OR A
JR Z,?0041
?0038:
?0039:
?0036:
; 139. {
; 140. musicpSendCommand(MC_GETSTATUS, (int)(& status_buf));
LD HL,2
ADD HL,SP
LD C,L
LD B,H
LD E,131
CALL LWRD ?0143
; 141. if (status_buf.status == PLAYING_ERROR)
LD A,(IX-16)
CP 12
JR NZ,?0041
?0040:
; 142. {
; 143. g_music_vars.BreakPTDisTime.hour = 0;
XOR A
LD (g_music_vars+75),A
; 144. g_music_vars.BreakPTDisTime.minute = 0;
LD (g_music_vars+76),A
; 145. g_music_vars.BreakPTDisTime.second = 0;
LD (g_music_vars+77),A
?0041:
?0037:
; 146. }
; 147. }
; 148.
; 149. musicpSendCommand(MC_RESTORE, NULL);
LD BC,0
LD E,69
CALL LWRD ?0143
; 150.
; 151. musicpSendCommand(MC_SETPOWERCOUNT, 5); //set power out level count=2^4=16
LD BC,5
LD E,89
CALL LWRD ?0143
; 152.
; 153. if (g_music_vars.MusicOpenMod == Nor_open)
LD A,(g_music_vars+6)
OR A
JR NZ,?0043
?0042:
; 154. {
; 155. StartIntro(TRUE);
LD A,1
JR ?0112
; 156. }
; 157. else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -