📄 ui_stop.s01
字号:
NAME ui_stop(17)
RSEG AP_UI_STP(0)
RSEG CSTR(0)
EXTERN ChangeMusic
EXTERN CheckMusicType
EXTERN ClearTimePara
EXTERN DRV_Install
EXTERN GetBattery
EXTERN GetInformation
EXTERN PlayStatus
EXTERN RefreshMainScreen
EXTERN SetBackgdColor
EXTERN SetContrast
EXTERN StandbyScreen
EXTERN Totaltime
EXTERN UpdateFileSelector
EXTERN VMRead
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN ap_message_init
EXTERN ap_sleep
EXTERN fselGetLocation
EXTERN fselGetNextFile
EXTERN fselGetNo
EXTERN fselGetPrevFile
EXTERN fselGetTotal
EXTERN fselSetMode
EXTERN g_BatteryType
EXTERN g_TagInfoBuf
EXTERN g_TagInfoBuf1
EXTERN g_amv_vars
EXTERN g_changevolume
EXTERN g_comval
EXTERN g_currentMusicType
EXTERN g_langid
EXTERN g_menu_active
EXTERN g_musicamount
EXTERN g_musicsequence
EXTERN g_result
EXTERN make_dirname
EXTERN need_draw
EXTERN show_volume
PUBLIC time_cmp
EXTERN ui_err_msg
EXTERN ui_play
EXTERN ui_run_realtime
EXTERN ui_show_batt
EXTERN ui_show_msg
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_FAST_LEAVE_L08
RSEG AP_UI_STP
time_cmp:
; 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.1.1.1 2006/05/22 03:24:02 selina Exp $
; 9. *******************************************************************************
; 10. */
; 11. #include "ap_amv.h"
; 12. extern comval_t g_comval; //系统变量,ap不能更改
; 13. extern bool ActiveDriveOK;
; 14. extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 15. int ui_stop_loop(void);
; 16. extern void make_dirname(void);
; 17.
; 18. //======================================================================================
; 19. //RESULT_CURR_UI: 还要处在当前界面
; 20. //RESULT_UI_STOP: 到UI_STOP界面(因现在就是UI_STOP界面,所以同上)
; 21. //RESULT_LAST_UI: 到上一级界面
; 22. //--------------------------------------------------------------------------------------
; 23. #pragma codeseg(AP_UI_STP)
; 24.
; 25. int time_cmp(const AmvFileBreakPntInfor *time1, const time_t *time2)
; 26. {
PUSH IY
PUSH IX
PUSH DE
POP IX
PUSH BC
POP IY
; 27. if(time1->TimeHou == time2->hour)
LD A,(BC)
LD B,A
LD HL,6
ADD HL,DE
LD A,(HL)
CP B
JR NZ,?0003
?0002:
; 28. {
; 29. if(time1->TimeMin == time2->minute)
LD A,(IX+5)
CP (IY+1)
JR NZ,?0005
?0004:
; 30. {
; 31. if(time1->TimeSec == time2->second)
LD A,(IX+4)
CP (IY+2)
JR NZ,?0007
?0006:
; 32. {
; 33. return 0;
LD HL,0
; 34. }
JR ?0008
?0007:
; 35. else
; 36. {
; 37. return ((int)(time1->TimeSec) - time2->second);
LD C,(IY+2)
LD B,0
LD L,(IX+4)
JR ?0116
; 38. }
?0005:
; 39. }
; 40. else
; 41. {
; 42. return ((int)(time1->TimeMin) - time2->minute);
LD C,(IY+1)
LD B,0
LD L,(IX+5)
JR ?0116
; 43. }
?0003:
; 44. }
; 45. else
; 46. {
; 47. return ((int)(time1->TimeHou) - time2->hour);
LD C,(IY+0)
LD B,0
LD L,(IX+6)
?0116:
LD H,B
AND A
SBC HL,BC
; 48. }
?0008:
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
; 49. }
ui_stop:
; 50.
; 51. int ui_stop(void)
; 52. {
PUSH BC
PUSH DE
; 53. ap_message_init(NULL);//开始算STANDBY 时间
CALL LWRD ?0140
; 54. g_menu_active=TRUE;
LD A,1
LD (g_menu_active),A
?0011:
; 55. do
; 56. {
; 57. if (UpdateFileSelector() == 0)
LD A,BYTE3 UpdateFileSelector
LD HL,LWRD UpdateFileSelector
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
OR H
JP Z,?0119
?0012:
; 58. {
; 59. return 0;
; 60. }
?0013:
; 61.
; 62.
; 63. g_musicamount = FSELGetTotal();
LD A,BYTE3 fselGetTotal
LD HL,LWRD fselGetTotal
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_musicamount),A
; 64. if(g_musicamount==0)
OR A
JR NZ,?0015
?0014:
?0017:
; 65. {
; 66. // ui_show_msg (MFILEOUT, MFILEOUT, g_comval.langid);
; 67. while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
CALL LWRD ap_get_message
OR A
JR NZ,?0014
?0018:
?0016:
; 68. return ui_show_msg (DFILEOUT, DFILEOUT, g_langid);
LD BC,(g_langid)
LD B,A
PUSH BC
LD BC,402
LD E,C
LD D,B
LD A,BYTE3 ui_show_msg
LD HL,LWRD ui_show_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 69.
; 70. }
JP LWRD ?0022
?0015:
; 71.
; 72. g_musicsequence = FSELGetNo();
LD A,BYTE3 fselGetNo
LD HL,LWRD fselGetNo
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_musicsequence),A
; 73. FSELSetMode(FSEL_ALL_REPEATALL);
LD E,4
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
CALL LWRD ?BANK_CALL_DIRECT_L08
; 74. fselGetLocation(& g_amv_vars.location); //add by ybfu 2004-12-22 15:26
CALL LWRD ?0146
; 75. make_dirname();
LD A,BYTE3 make_dirname
LD HL,LWRD make_dirname
CALL LWRD ?BANK_CALL_DIRECT_L08
; 76. g_currentMusicType = CheckMusicType(g_amv_vars.location.filename);
LD DE,g_amv_vars+31
LD A,BYTE3 CheckMusicType
LD HL,LWRD CheckMusicType
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (g_currentMusicType),A
; 77.
; 78. g_result = FSELGetNext(g_amv_vars.location.filename);
LD DE,g_amv_vars+31
LD A,BYTE3 fselGetNextFile
LD HL,LWRD fselGetNextFile
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
; 79. fselGetLocation(& g_amv_vars.location);
CALL LWRD ?0147
; 80. GetInformation(); //取文件信息
CALL LWRD ?0142
; 81. memcpy(g_TagInfoBuf1, g_TagInfoBuf, 20);
; 82. //g_TagInfoBuf1[18]=0;
; 83. g_TagInfoBuf1[20]=0;
; 84. g_result = FSELGetPrev(g_amv_vars.location.filename);
LD DE,g_amv_vars+31
LD A,BYTE3 fselGetPrevFile
LD HL,LWRD fselGetPrevFile
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,B
; 85. fselGetLocation(& g_amv_vars.location);
CALL LWRD ?0147
; 86. GetInformation(); //取文件信息
CALL LWRD ?0143
; 87.
; 88. PlayStatus = StopSta;
XOR A
LD (PlayStatus),A
; 89. need_draw = TRUE;
LD A,1
LD (need_draw),A
; 90. FSELSetMode(g_amv_vars.repeat_mode);
LD DE,(g_amv_vars+3)
LD A,BYTE3 fselSetMode
LD HL,LWRD fselSetMode
CALL LWRD ?BANK_CALL_DIRECT_L08
; 91. g_result = ui_stop_loop();
LD A,BYTE3 ui_stop_loop
LD HL,LWRD ui_stop_loop
CALL LWRD ?BANK_CALL_DIRECT_L08
LD (g_result),HL
; 92.
; 93. }while( (g_result == RESULT_CURR_UI)
; 94. || (g_result == RESULT_UI_STOP)
; 95. || (g_result == RESULT_UI_STOP2) );//还保持在ui_stop界面
LD A,L
OR H
JP Z,?0011
LD A,102
XOR L
OR H
JP Z,?0011
LD A,103
XOR L
OR H
JP Z,?0011
?0009:
; 96. if (g_result == RESULT_LAST_UI)
LD A,101
XOR L
OR H
JR NZ,?0022
?0021:
; 97. {
; 98. return NULL;//不带参数回到上一级
?0119:
LD HL,0
; 99. }
?0022:
; 100. return g_result;//带参数回到上一级
; 101. }
?0023:
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0140:
LD DE,0
?0141:
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
JP LWRD ?BANK_CALL_DIRECT_L08
?0142:
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
CALL LWRD ?BANK_CALL_DIRECT_L08
LD BC,20
LD DE,g_TagInfoBuf1
LD HL,g_TagInfoBuf
LDIR
XOR A
LD (g_TagInfoBuf1+20),A
RET
?0144:
LD E,4
?0145:
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
LD H,0
LD (g_result),HL
?0143:
LD A,BYTE3 GetInformation
LD HL,LWRD GetInformation
JP LWRD ?BANK_CALL_DIRECT_L08
?0147:
LD (g_result),HL
?0146:
LD DE,g_amv_vars+5
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
ui_stop_loop:
; 102. //======================================================================================
; 103.
; 104. int ui_stop_loop()
; 105. {
PUSH BC
PUSH DE
PUSH IX
PUSH AF
; 106. char key;
; 107. int result;
; 108.
; 109. if(time_cmp(&g_amv_vars.amvfilebreakpoint,
; 110. &Totaltime) > 0)
LD BC,Totaltime
LD DE,g_amv_vars+46
LD A,BYTE3 time_cmp
LD HL,LWRD time_cmp
CALL LWRD ?BANK_CALL_DIRECT_L08
LD C,L
LD B,H
LD HL,0
OR 128
SBC HL,BC
JP PO,?0131
XOR H
?0131:
JP P,?0025
?0024:
; 111. {
; 112. ClearTimePara();//时间断点参数从0开始
LD A,BYTE3 ClearTimePara
LD HL,LWRD ClearTimePara
CALL LWRD ?BANK_CALL_DIRECT_L08
?0025:
?0027:
; 113. }
; 114.
; 115. while (1)
; 116. {
; 117. if (need_draw)
LD A,(need_draw)
OR A
JR Z,?0030
?0029:
; 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
?0030:
; 121. }
; 122.
; 123. key = ap_get_message();
CALL LWRD ap_get_message
; 124.
; 125. switch (key)
LD E,A
CALL LWRD ?C_V_SWITCH_L06
DEFW 17
DEFB 3
DEFB 4
DEFB 5
DEFB 6
DEFB 16
DEFB 27
DEFB 28
DEFB 33
DEFB 37
DEFB 38
DEFB 48
DEFB 55
DEFB 67
DEFB 68
DEFB 69
DEFB 70
DEFB 129
DEFW ?0106
DEFW ?0032
DEFW ?0095
DEFW ?0085
DEFW ?0099
DEFW ?0099
DEFW ?0103
DEFW ?0074
DEFW ?0091
DEFW ?0081
DEFW ?0033
DEFW ?0102
DEFW ?0102
DEFW ?0076
DEFW ?0095
DEFW ?0085
DEFW ?0099
DEFW ?0099
?0032:
; 126. {
; 127. case AP_KEY_PLAY | AP_KEY_LONG:
; 128. return RESULT_STANDBY;
LD HL,2
; 129. break;
JP LWRD ?0112
?0033:
; 130.
; 131. case AP_KEY_PLAY | AP_KEY_UP:
; 132. ui_run_realtime = TRUE;
LD A,1
LD (ui_run_realtime),A
; 133. // g_changevolume=0x00;
; 134. {
; 135. //comval_t g_comval;
; 136. //LightOnOff(1);
; 137. VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
LD HL,32
PUSH HL
LD BC,512
LD DE,g_comval
CALL LWRD VMRead
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -