📄 main.s01
字号:
NAME main(17)
RSEG AP_UI_MAIN(0)
RSEG CSTR(0)
RSEG UDATA0(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
RSEG APC_UI_MAIN(0)
EXTERN BankSwitch
EXTERN CaltimeFlag
EXTERN ClearScreen
EXTERN ClosePA
EXTERN DRV_ActiveDrive
EXTERN DRV_ActiveUD
EXTERN DRV_DetectUD
EXTERN DisableDAC
EXTERN DisplayErrInfor
EXTERN FS_FRemove
PUBLIC MPLFileName
PUBLIC MusicTimer_Sav
EXTERN Music_2HZint
EXTERN Music_timeint
PUBLIC PlayListScrollRegion
PUBLIC PlayStatus
PUBLIC RePlayStatus
EXTERN ResClose
EXTERN ResOpen
EXTERN ResShowMultiString
PUBLIC ScrollFlag
EXTERN TM_KillClock
EXTERN TM_KillTimer
EXTERN TM_SetClock
EXTERN TM_SetTimer
EXTERN TimeRateData_sav
PUBLIC Timer_2HZNo_Sav
PUBLIC UpDisplayFlag
EXTERN VMWrite
EXTERN WaitForCaltimeCNT
PUBLIC couterkey
EXTERN fselGetLocation
PUBLIC g_2HZFlag
PUBLIC g_2HZ_CNT
PUBLIC g_ABPointTimeSize
PUBLIC g_AVSetFlag
PUBLIC g_CardInFlag
PUBLIC g_DiskStateFlag
PUBLIC g_FCexitflag
PUBLIC g_FadeInStepFlag
PUBLIC g_OldSecTempBackup
PUBLIC g_Openparam
PUBLIC g_PAOpenFlag
PUBLIC g_PowerOffFlag
PUBLIC g_ReplayTimeCNT
PUBLIC g_Resfp_Sav
PUBLIC g_ScrollFlag
PUBLIC g_TagInfoBuf
PUBLIC g_TagInfoBuf1
PUBLIC g_comval
PUBLIC g_currentMusicType
PUBLIC g_introCNT
PUBLIC g_introCntMode
PUBLIC g_lyricflag
PUBLIC g_music_vars
PUBLIC g_musicamount
PUBLIC g_musicsequence
PUBLIC g_result
PUBLIC ifSelBuffToltalTimeFlag
PUBLIC list
EXTERN lyricInit
PUBLIC main
PUBLIC need_draw
EXTERN openDAC
EXTERN read_var
PUBLIC return_to_play
PUBLIC savenum
PUBLIC slider
EXTERN ui_show_a
EXTERN ui_stop
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
RSEG AP_UI_MAIN
main:
; 1. /********************************************************************************
; 2. * SDK30F_D1
; 3. * music player main sub
; 4. *
; 5. * (c) Copyright 2002, Actions Co,Ld.
; 6. * All Right Reserved
; 7. *
; 8. * File: main.c
; 9. * By : rcmai
; 10. * Version: 1> v1.00 first version 2004-3-19 8:28
; 11. *******************************************************************************
; 12. * $Id: main.c,v 1.3 2006/07/14 06:46:20 tangwh Exp $
; 13. *******************************************************************************
; 14. */
; 15. #include "ap_music.h"
; 16.
; 17. SETDEBUGRAM//调试时用的宏,在AP_MUSIC.H中定义
; 18.
; 19.
; 20. comval_t g_comval; //系统变量,ap不能更改
; 21. music_vars_t g_music_vars;//本AP的公共变量
; 22. char g_TagInfoBuf[90];//用于放TAG信息的BUF
; 23. bool g_FCexitflag;
; 24. char g_TagInfoBuf1[20];//用于放下一首TAG信息的BUF
; 25. char couterkey; //for test !
; 26. //这空间是用于打开时用来集中传送参数
; 27. Open_param_t g_Openparam;
; 28.
; 29. //char g_lyric_mod = LYRIC_PAGE_21_4; //歌词格式标志(默认为英文格式)
; 30. BYTE g_OldSecTempBackup;//记录当前秒的值,用于观察秒的变化,从而产生变化信号码
; 31. BYTE g_introCNT;
; 32. bool g_introCntMode;
; 33. char return_to_play=0; //为1表示从其他界面返回播放界面
; 34. bool need_draw;
; 35.
; 36. //function_menu_t menu;
; 37. pop_up_list_t list;
; 38. slider_t slider;
; 39. Replay_status_t RePlayStatus = NormalPlay; //普通播放模式
; 40. Play_status_t PlayStatus = StopSta; //停止状态
; 41.
; 42. WORD UpDisplayFlag; //相应的位表示要更新显示的内容。
; 43. bool g_lyricflag;//有无歌词标志,true表示有
; 44. Music_type_t g_currentMusicType;//标志当前音乐的类型(mp3/wma/asf/wmv)
; 45. WORD g_musicamount;//当前目录歌曲总数
; 46. WORD g_musicsequence;//当前歌曲序号
; 47.
; 48.
; 49. BYTE MusicTimer_Sav;
; 50. BYTE Timer_2HZNo_Sav;
; 51. bool g_ScrollFlag = FALSE; //当定时中断到时置这个标志
; 52. WORD g_2HZ_CNT;//2hz 中断计数器(0.5秒加一)
; 53. bool g_2HZFlag = TRUE;//2HZ中断到标志
; 54. WORD g_ABPointTimeSize;//记录AB点长度
; 55. SD_FILE* g_Resfp_Sav;
; 56. BYTE g_ReplayTimeCNT; //记录复读次数
; 57. //char g_FadeInStatusFlag = 1;//处在淡入状标志 true 表示在淡入中。
; 58. bool g_FadeInStepFlag = TRUE;//
; 59. bool g_AVSetFlag = FALSE;//自动复读设定标志(标志现在的复读是从自动还是手动进入的)
; 60. bool g_PAOpenFlag = FALSE; //标志PA的开关状态
; 61. bool g_CardInFlag = FALSE;//卡是否插上,为真时表示插上,可用
; 62. //bool ActiveDriveOK;//磁盘可用标志
; 63. char savenum;//时间进度条save时间
; 64. BYTE g_DiskStateFlag = 0;//b7 = 1:flash 盘已格式化
; 65. //b6 = 1:flash 盘无文件
; 66. //b3 = 1:卡已格式化
; 67. //b2 = 1: 卡无文件
; 68. //b5,b4,b1,b0 : 保留
; 69. //default = 0x00
; 70.
; 71. char g_PowerOffFlag; //默认为正常,g_PowerOffFlag=0x00,如果rtc掉电g_PowerOffFlag=0x55
; 72.
; 73. //---如下两变量只用作临时变量,主要目的是节省指令及
; 74. // 省代码空间,因为局部变量较费代码及指令时间
; 75. int g_result;//表示16位变量
; 76. //BYTE g_result8;//表示8位
; 77. bool ifSelBuffToltalTimeFlag = FALSE;//TRUE:用 buffer 总时间数据
; 78.
; 79. //byte PowerValue; //added by jmzhang
; 80. //byte CurrentLogo;
; 81. region_t PlayListScrollRegion;
; 82. BYTE ScrollFlag;
; 83.
; 84. #pragma memory=constseg(APC_UI_MAIN)
; 85. const char MPLFileName[5][12] = {"PLAYLISTA3L","ARTIST A3L","ALBUM A3L","GENRE A3L","COMPOSERA3L"
; 86. };
; 87. #pragma memory=default
; 88.
; 89. void read_var( void );
; 90. void openDAC(void);
; 91.
; 92. non_banked void Test_Timer(void);
; 93. //int DealDiskState(void);
; 94. int InitFileSelector(void);
; 95. void debug(void);
; 96.
; 97. #pragma codeseg(AP_UI_MAIN)
; 98. int main( void )
; 99. {
PUSH BC
PUSH DE
PUSH IX
; 100. int mainresult;
; 101.
; 102. g_DiskStateFlag = 0;
XOR A
LD (g_DiskStateFlag),A
; 103. g_FCexitflag = FALSE;
LD (g_FCexitflag),A
; 104.
; 105. //-------安装ud驱动------------
; 106. g_Resfp_Sav = ResOpen("ui30.res");
LD DE,?0002
LD A,BYTE3 ResOpen
LD HL,LWRD ResOpen
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_Resfp_Sav),HL
; 107.
; 108. //debug();
; 109.
; 110. /* 读入公共变量 */
; 111. read_var();
LD A,BYTE3 read_var
LD HL,LWRD read_var
CALL LWRD ?BANK_CALL_DIRECT_L08
; 112.
; 113. ClearScreen(NULL);//清屏
LD DE,0
CALL LWRD ClearScreen
; 114. ResShowMultiString(WAITPASS, g_comval.langid, 255, 80);//显示请稍候
LD C,80
PUSH BC
LD C,255
PUSH BC
LD BC,(g_comval+12)
LD DE,437
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 115.
; 116. //[001]->
; 117.
; 118.
; 119. DRV_ActiveUD(0,MODE_SLOW);
LD C,1
LD E,0
CALL LWRD DRV_ActiveUD
; 120.
; 121. //ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
; 122. if (DRV_ActiveDrive('C', MODE_SLOW))
LD C,1
LD E,67
CALL LWRD DRV_ActiveDrive
OR A
JR Z,?0004
?0003:
; 123. {
; 124. g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
LD HL,g_DiskStateFlag
SET 7,(HL)
?0004:
; 125. }
; 126.
; 127. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
LD A,(g_DiskStateFlag)
BIT 7,A
JR NZ,?0006
?0005:
; 128. {
; 129. DisplayErrInfor(MREADERR);//显示磁盘错
LD DE,393
LD A,BYTE3 DisplayErrInfor
LD HL,LWRD DisplayErrInfor
CALL LWRD ?BANK_CALL_DIRECT_L08
?0006:
; 130. }
; 131.
; 132. if (DRV_DetectUD(1) == 0x20)
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR NZ,?0008
?0007:
; 133. { //有卡
; 134. DRV_ActiveUD(1,MODE_SLOW);
LD C,1
LD E,C
CALL LWRD DRV_ActiveUD
; 135. if (!DRV_ActiveDrive('H', MODE_SLOW))
LD C,1
LD E,72
CALL LWRD DRV_ActiveDrive
OR A
JR NZ,?0010
?0009:
; 136. {
; 137. DisplayErrInfor(CREADERR);//显示卡错
LD DE,404
LD A,BYTE3 DisplayErrInfor
LD HL,LWRD DisplayErrInfor
CALL LWRD ?BANK_CALL_DIRECT_L08
; 138. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
LD A,(g_DiskStateFlag)
BIT 7,A
JR Z,?0022
?0011:
; 139. {
; 140. ResClose(g_Resfp_Sav);
; 141. return 0;
; 142. }
?0012:
; 143. g_music_vars.location.disk='C';
LD A,67
LD (g_music_vars+7),A
; 144. }
; 145. else
JR ?0016
?0010:
; 146. g_DiskStateFlag|=SetCardOKFlag_def;
LD HL,g_DiskStateFlag
SET 3,(HL)
?0013:
; 147. }
; 148. else
JR ?0016
?0008:
; 149. { //没卡
; 150. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -