📄 ui_stop.s01
字号:
NAME ui_stop(17)
RSEG AP_UI_STP(0)
RSEG CSTR(0)
RSEG UDATA0(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
EXTERN BackupCurrentTime
PUBLIC CaltimeFlag
EXTERN ChangeMusic
EXTERN CheckMusicType
EXTERN ClearTimePara
EXTERN DisplayErrMsg
EXTERN DisplayTimeRollback
EXTERN ErrReport
EXTERN FS_FRemove
PUBLIC FadeOut
EXTERN GetInformation
EXTERN MusicEditSelStatus
EXTERN MusicEditStatus
EXTERN MusicEdit_SelSeg
EXTERN PlayStatus
EXTERN RealDisplay
EXTERN RefreshMainScreen
EXTERN UpDisplayFlag
EXTERN UpdateFileSelector
PUBLIC WaitForCaltimeCNT
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN bList_Flag
EXTERN fselGetNo
EXTERN fselGetTotal
EXTERN fselInit
EXTERN fselSetLocation
EXTERN fselSetMode
EXTERN fsel_mode_change_flag
EXTERN g_FCexitflag
EXTERN g_OldSecTempBackup
EXTERN g_Openparam
EXTERN g_PowerOffFlag
EXTERN g_ScrollFlag
EXTERN g_autoswitch_counter
EXTERN g_comval
EXTERN g_currentMusicType
EXTERN g_file_list_total
PUBLIC g_firstplay_flag
EXTERN g_from_browser
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 sKY_Beep
EXTERN ui_auto_update
EXTERN ui_play
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.
; 13. char WaitForCaltimeCNT;//在停止状态下先不计时,到无按键动作一定时间后再开始计时
; 14. // 这样可以提高在停止状态时按next 跳歌的速度.
; 15. bool CaltimeFlag; //true: 不用再算时间
; 16. bool g_firstplay_flag = TRUE;
; 17. extern void make_dirname(void); //false: 未算时间
; 18. extern BYTE fsel_mode_change_flag;
; 19. extern bool g_FCexitflag;
; 20.
; 21. extern EMU_MusicEditSelStatus MusicEditSelStatus; // select: empty start end
; 22. extern EMU_MusicEditStatus MusicEditStatus; // select ,delete
; 23. extern STRU_SelMusicSegment MusicEdit_SelSeg;
; 24. extern HANDLE m_Mp3deFileHandle;
; 25. int ui_stop_loop(void);
; 26. int DealForDRMsong(void);
; 27. void ttest(void);
; 28. bool DisplayTimeRollback(void);
; 29.
; 30. #pragma codeseg(AP_UI_STP)
; 31. //======================================================================================
; 32. //RESULT_CURR_UI: 还要处在当前界面
; 33. //RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
; 34. //RESULT_LAST_UI: 到上一级界面
; 35. //--------------------------------------------------------------------------------------
; 36. int ui_stop(void)
; 37. {
PUSH BC
PUSH DE
; 38. int result;
; 39. ap_message_init(NULL);//开始算STANDBY 时间
LD DE,0
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
?0004:
; 40.
; 41. do
; 42. {
; 43. if (UpdateFileSelector() == 0)
LD A,BYTE3 UpdateFileSelector
LD HL,LWRD UpdateFileSelector
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
OR H
JP Z,?0162
?0005:
; 44. {
; 45. return 0;
; 46. }
?0006:
; 47.
; 48. if(g_music_vars.location.disk=='C') //选择Flash
LD A,(g_music_vars+7)
CP 67
JR NZ,?0008
?0007:
; 49. {
; 50. if(g_music_vars.file_list_total_flash==0)
LD HL,(g_music_vars+86)
LD A,L
OR H
JR NZ,?0014
?0009:
; 51. g_music_vars.file_list_type = 0xff; //普通播放模式
JR ?0164
; 52. else
?0010:
; 53. g_file_list_total = g_music_vars.file_list_total_flash;
?0011:
; 54. }
; 55.
; 56. else //选择插卡
?0008:
; 57. {
; 58. if(g_music_vars.file_list_total_card == 0)
LD HL,(g_music_vars+88)
LD A,L
OR H
JR NZ,?0014
?0013:
; 59. g_music_vars.file_list_type = 0xff; //普通播放模式
?0164:
CPL
LD (g_music_vars+92),A
; 60. else
JR ?0015
?0014:
; 61. g_file_list_total = g_music_vars.file_list_total_card;
LD (g_file_list_total),HL
?0015:
?0012:
; 62. }
; 63.
; 64. if(g_music_vars.file_list_type==0xff) //普通目录播放
LD A,(g_music_vars+92)
INC A
JR NZ,?0017
?0016:
; 65. {
; 66. g_musicamount = FSELGetTotal();
LD A,BYTE3 fselGetTotal
LD HL,LWRD fselGetTotal
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_musicamount),HL
; 67. g_musicsequence = FSELGetNo();
LD A,BYTE3 fselGetNo
LD HL,LWRD fselGetNo
CALL LWRD ?BANK_CALL_DIRECT_L08
JR ?0161
; 68. }
; 69. else
?0017:
; 70. {
; 71. g_musicamount = g_file_list_total; //列表总数
LD HL,(g_file_list_total)
LD (g_musicamount),HL
; 72. g_musicsequence = g_music_vars.file_list_num+1; //当前列表编号
LD HL,(g_music_vars+90)
INC HL
?0161:
LD (g_musicsequence),HL
?0018:
; 73. }
; 74. FSELSetMode(g_music_vars.repeat_mode);
LD DE,(g_music_vars+1)
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
CALL LWRD ?BANK_CALL_DIRECT_L08
; 75. make_dirname();
LD A,BYTE3 make_dirname
LD HL,LWRD make_dirname
CALL LWRD ?BANK_CALL_DIRECT_L08
; 76. 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
; 77.
; 78. GetInformation(); //取文件信息
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
; 79.
; 80. musicpSendCommand( MC_OPEN, (int)& g_Openparam );
LD BC,g_Openparam
LD E,1
CALL LWRD ?0177
; 81. musicpSendCommand(MC_LOAD, NULL);//04-4-23 9:32
LD BC,0
LD E,3
CALL LWRD ?0177
; 82. SetFullInterface();
XOR A
LD (ui_auto_update),A
LD HL,UpDisplayFlag
LD A,(HL)
OR 193
LD (HL),A
INC HL
LD (HL),255
; 83. if(PlayStatus==PauseSta) //add by zxs for not refresh background when pause
LD A,(PlayStatus)
DEC A
JR NZ,?0020
?0019:
; 84. {
; 85. UpDisplayFlag=UpDisplayFlag & clr_musicBackGDPic;
LD HL,UpDisplayFlag
RES 0,(HL)
; 86. UpDisplayFlag=UpDisplayFlag & clr_musiccurrenttime;
INC HL
RES 1,(HL)
; 87. // UpDisplayFlag=UpDisplayFlag & clr_musicbitrate;
; 88. }
; 89. else
JR ?0021
?0020:
; 90. PlayStatus = StopSta;
XOR A
LD (PlayStatus),A
?0021:
; 91. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 92. musicpSendCommand(MC_CALTIME, NULL); //zxs add
LD BC,0
CALL LWRD ?0178
; 93. CaltimeFlag=TRUE;
LD A,1
LD (CaltimeFlag),A
; 94. g_result = ui_stop_loop();
LD A,BYTE3 ui_stop_loop
LD HL,LWRD ui_stop_loop
CALL LWRD ?0176
; 95. FS_FRemove( FollowReadTempFileName ); //删除产生的临时文件
LD DE,?0022
CALL LWRD FS_FRemove
; 96. }while( (g_result == RESULT_CURR_UI)
; 97. || (g_result == RESULT_UI_STOP)
; 98. || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
LD HL,(g_result)
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:
; 99. if (g_result == RESULT_LAST_UI)
LD A,101
XOR L
OR H
JR NZ,?0026
?0025:
; 100. {
; 101. return NULL;//不带参数回到上一级
?0162:
LD HL,0
; 102. }
?0026:
; 103. return g_result;//带参数回到上一级
; 104. }
?0027:
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0175:
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
?0176:
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
RET
?0179:
LD C,A
LD B,A
?0178:
LD E,19
?0177:
LD A,BYTE3 musicpSendCommand
LD HL,LWRD musicpSendCommand
JP LWRD ?BANK_CALL_DIRECT_L08
ui_stop_loop:
; 105. //======================================================================================
; 106.
; 107. int ui_stop_loop()
; 108. //int ui_stop()
; 109. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65510
PUSH IY
; 110. mp3_play_status_t status_buf;
; 111. slider_t slider;
; 112. char key;
; 113. char modekeystore = NULL;
; 114. int result;
; 115. char i;
; 116.
; 117.
; 118. MusicEdit_SelSeg.StartSec=0;
LD BC,0
LD L,C
LD H,B
LD (MusicEdit_SelSeg),HL
LD (MusicEdit_SelSeg+2),BC
; 119. MusicEdit_SelSeg.EndSec=0;
LD (MusicEdit_SelSeg+4),HL
LD (MusicEdit_SelSeg+6),BC
; 120. MusicEditSelStatus=MusicEditSelSta_NoSel; //music edit add by mzh 2007.1.19
XOR A
LD (MusicEditSelStatus),A
; 121. MusicEditStatus=MusicEditSta_NoFun;
LD (MusicEditStatus),A
LD (IX-6),B
?0029:
; 122. while(1)
; 123. {
; 124. //清空消息池
; 125. result = ap_get_message();
CALL LWRD ap_get_message
LD C,A
PUSH BC
POP IY
; 126. if (result == NULL)
LD A,C
OR A
JR Z,?0028
?0031:
; 127. {
; 128. break;
?0032:
; 129. }
; 130. if (result == AP_MSG_STANDBY)
PUSH IY
POP HL
LD A,29
XOR L
OR H
JR NZ,?0029
?0033:
; 131. {
; 132. //碰到 standby 消息时要优先处理,否则会漏掉 standby 消息
; 133. return RESULT_STANDBY;
JR ?0046
; 134. }
?0034:
; 135. }
; 136.
; 137.
; 138. while (1)
?0028:
?0036:
; 139. {
; 140.
; 141.
; 142. key = ap_get_message();
CALL LWRD ap_get_message
LD (IX-7),A
; 143. if(g_from_browser)
LD A,(g_from_browser)
OR A
JR Z,?0039
?0038:
; 144. {
; 145. key = (AP_KEY_PLAY | AP_KEY_UP);
; 146. g_from_browser = FALSE;
XOR A
LD (g_from_browser),A
LD (IX-7),33
?0039:
; 147. }
; 148. if (need_draw)
LD A,(need_draw)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -