📄 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 CreateBookMarkFile
EXTERN CreateMEIniFile
EXTERN DRV_ActiveDrive
EXTERN DRV_ActiveUD
EXTERN DRV_DetectUD
EXTERN DisableDAC
EXTERN DisablePA
EXTERN DisplayErrInfor
EXTERN FS_FRemove
PUBLIC FirstOffset
PUBLIC LastOffset
PUBLIC MPLFileName
PUBLIC MusicEditEndTime
PUBLIC MusicEditSelStatus
PUBLIC MusicEditStartTime
PUBLIC MusicEditStatus
PUBLIC MusicEdit_SelSeg
PUBLIC MusicTimer_Sav
EXTERN Music_2HZint
EXTERN Music_timeint
PUBLIC PlayStatus
PUBLIC PlaylistCount
PUBLIC RePlayStatus
EXTERN ResClose
PUBLIC ResFileName
EXTERN ResOpen
EXTERN ResShowMultiString
EXTERN Reset_USERPL
EXTERN SetPenColor
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
EXTERN WrHead_PL
PUBLIC bList_Flag
EXTERN fselGetLocation
PUBLIC g_2HZFlag
PUBLIC g_2HZ_CNT
PUBLIC g_ABPointTimeSize
PUBLIC g_AVSetFlag
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_comval
PUBLIC g_currentMusicType
PUBLIC g_file_list_total
PUBLIC g_from_browser
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_WPL
PUBLIC need_draw
EXTERN openDAC
EXTERN read_var
PUBLIC return_to_play
PUBLIC savenum
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. unsigned int g_file_list_total;
; 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. bool g_from_browser = FALSE;
; 79. //*********music edit add by mzh*******************
; 80. EMU_MusicEditSelStatus MusicEditSelStatus; // select: empty start end
; 81. EMU_MusicEditStatus MusicEditStatus; // select ,delete
; 82. STRU_SelMusicSegment MusicEdit_SelSeg;
; 83. time_t MusicEditStartTime;
; 84. time_t MusicEditEndTime;
; 85. //*********************************************
; 86. #ifdef ACTIVE_USERPL
; 87. WORD FirstOffset; //第一个偏移量
; 88. WORD LastOffset; //空族偏移量
; 89. WORD PlaylistCount; //Item总数
; 90. BOOL need_WPL;
; 91. BOOL bList_Flag = FALSE;
; 92. #endif
; 93. #pragma memory=constseg(APC_UI_MAIN)
; 94. const char MPLFileName[5][12] = {"PLAYLISTA3L","ARTIST A3L","ALBUM A3L","GENRE A3L","COMPOSERA3L"
; 95. };
; 96. const char ResFileName[]="ui30.res";
; 97. #pragma memory=default
; 98.
; 99. void read_var( void );
; 100. void openDAC(void);
; 101.
; 102. non_banked void Test_Timer(void);
; 103. //int DealDiskState(void);
; 104. int InitFileSelector(void);
; 105. void debug(void);
; 106. extern BOOL CreateMEIniFile();
; 107. extern BOOL CreateBookMarkFile();
; 108. #pragma codeseg(AP_UI_MAIN)
; 109. int main( int param)
; 110. {
PUSH BC
PUSH IY
PUSH IX
PUSH DE
PUSH AF
; 111. int mainresult;
; 112. byte IO05Bak;
; 113. SD_FILE* g_Resfp_Sav;
; 114. g_DiskStateFlag = 0;
XOR A
LD (g_DiskStateFlag),A
; 115. g_FCexitflag = FALSE;
LD (g_FCexitflag),A
; 116. if(param)
LD A,E
OR D
JR Z,?0003
?0002:
; 117. {
; 118. g_from_browser = TRUE;
LD A,1
LD (g_from_browser),A
?0003:
; 119. }
; 120.
; 121. //-------安装ud驱动------------
; 122. g_Resfp_Sav = ResOpen(ResFileName);
LD DE,ResFileName
LD A,BYTE3 ResOpen
LD HL,LWRD ResOpen
CALL LWRD ?BANK_CALL_DIRECT_L08
PUSH HL
POP IX
; 123.
; 124.
; 125. /* 读入公共变量 */
; 126. read_var();
LD A,BYTE3 read_var
LD HL,LWRD read_var
CALL LWRD ?BANK_CALL_DIRECT_L08
; 127. IO05Bak=input8(0x05);
IN A,(5)
LD HL,0
ADD HL,SP
LD (HL),A
; 128.
; 129. ClearScreen(NULL);//清屏
LD DE,0
CALL LWRD ClearScreen
; 130. SetPenColor(Color_BLACK_def);
LD BC,0
LD E,C
LD D,B
CALL LWRD SetPenColor
; 131. ResShowMultiString(WAITPASS, g_comval.langid, 255, 58);//显示请稍候
LD C,58
PUSH BC
LD C,255
PUSH BC
LD BC,(g_comval+12)
LD DE,600
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 132.
; 133.
; 134.
; 135. DRV_ActiveUD(0,MODE_SLOW);
LD C,1
LD E,0
CALL LWRD DRV_ActiveUD
; 136.
; 137. if (DRV_ActiveDrive('C', MODE_SLOW))
LD C,1
LD E,67
CALL LWRD DRV_ActiveDrive
OR A
JR Z,?0005
?0004:
; 138. {
; 139. g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
LD HL,g_DiskStateFlag
SET 7,(HL)
; 140. CreateMEIniFile(); //add by mzh 2007.3.15
; 141. CreateBookMarkFile(); //add by mzh 2007.3.15
; 142. #ifdef ACTIVE_USERPL
; 143. Reset_USERPL();
CALL LWRD ?0026
; 144. need_WPL=FALSE;
XOR A
LD (need_WPL),A
?0005:
; 145. #endif
; 146. }
; 147.
; 148. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
LD A,(g_DiskStateFlag)
BIT 7,A
JR NZ,?0007
?0006:
; 149. {
; 150. DisplayErrInfor(MREADERR);//显示磁盘错
LD DE,508
LD A,BYTE3 DisplayErrInfor
LD HL,LWRD DisplayErrInfor
CALL LWRD ?BANK_CALL_DIRECT_L08
?0007:
; 151. }
; 152.
; 153. if (DRV_DetectUD(1) == 0x20)
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR NZ,?0009
?0008:
; 154. { //有卡
; 155. DRV_ActiveUD(1,MODE_SLOW);
LD C,1
LD E,C
CALL LWRD DRV_ActiveUD
; 156. if (!DRV_ActiveDrive('H', MODE_SLOW))
LD C,1
LD E,72
CALL LWRD DRV_ActiveDrive
OR A
JR NZ,?0011
?0010:
; 157. {
; 158. DisplayErrInfor(CREADERR);//显示卡错
LD DE,630
LD A,BYTE3 DisplayErrInfor
LD HL,LWRD DisplayErrInfor
CALL LWRD ?BANK_CALL_DIRECT_L08
; 159. if ((g_DiskStateFlag & SetDiskOKFlag_def) == 0)
LD A,(g_DiskStateFlag)
BIT 7,A
JR Z,?0025
?0012:
; 160. {
; 161. ResClose(g_Resfp_Sav);
; 162. return 0;
; 163. }
?0013:
; 164. g_music_vars.location.disk='C';
LD A,67
LD (g_music_vars+7),A
; 165. }
; 166. else
JR ?0017
?0011:
; 167. {
; 168. g_DiskStateFlag|=SetCardOKFlag_def;
LD HL,g_DiskStateFlag
SET 3,(HL)
; 169. CreateMEIniFile(); //add by mzh 2007.3.15
; 170. CreateBookMarkFile(); //add by mzh 2007.3.15
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -