📄 ui_stop_menu.s01
字号:
NAME ui_stop_menu(17)
RSEG AP_UI_MNU(0)
RSEG IDATA0(0)
RSEG CDATA0(0)
RSEG APC_UI_MNU(0)
EXTERN AmvDecStart
EXTERN BankSwitch
EXTERN ChangeMusic
EXTERN ClearTimePara
EXTERN DRV_ActiveUD
EXTERN DRV_DetectUD
PUBLIC dir_string
PUBLIC dir_string_card
EXTERN fselGetLocation
EXTERN fselInit
EXTERN fselSetMode
PUBLIC g_CardInFlag
EXTERN g_DiskStateFlag
EXTERN g_amv_vars
EXTERN g_comval
EXTERN g_langid
EXTERN g_menu_active
EXTERN g_result
PUBLIC repeat_string
EXTERN ui_delete
EXTERN ui_delete_all
PUBLIC ui_delete_amv
EXTERN ui_directory
EXTERN ui_err_msg
PUBLIC ui_loop_menu
EXTERN ui_popup_list
EXTERN ui_show_msg
PUBLIC ui_stop_menu
EXTERN ?CLZ80B_4_04_L00
EXTERN ?S_S_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
RSEG AP_UI_MNU
ui_delete_amv:
; 1.
; 2. /*
; 3. *******************************************************************************
; 4. * ACTOS AP
; 5. * This program demostrates how to build an AP
; 6. *
; 7. * (c) Copyright Actions Co,Ld.
; 8. *
; 9. * $Id: ui_stop_menu.c,v 1.2 2006/07/14 06:43:08 tangwh Exp $
; 10. *******************************************************************************
; 11. */
; 12. #include "ap_amv.h"
; 13.
; 14. #pragma codeseg(AP_UI_MNU)
; 15.
; 16. #pragma memory=constseg(APC_UI_MNU)
; 17. const WORD dir_string_card[6] =
; 18. {
; 19. MSTOP1, MSTOP2, MSTOP3, MSTOP4, MPLAY1, MSTOP5
; 20. };
; 21.
; 22. const WORD repeat_string[7] =
; 23. {
; 24. VLOOPM1, VLOOPM2, VLOOPM3, VLOOPM4, VLOOPM5, VLOOPM6, VLOOPM7
; 25. };
; 26. const WORD dir_string[5] =
; 27. {
; 28. MSTOP1, MSTOP3, MSTOP4, MPLAY1, MSTOP5
; 29. };
; 30. #pragma memory=default
; 31. void CheckIfCardOK(void);
; 32. BYTE g_CardInFlag=0;
; 33. extern void make_dirname(void);
; 34. extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 35. extern BYTE g_DiskStateFlag;
; 36. int ui_delete_amv( int type )
; 37. {
PUSH BC
PUSH DE
; 38.
; 39. DRV_ActiveUD(0, MODE_SLOW); //04-2-28 16:29
LD C,1
LD E,0
CALL LWRD DRV_ActiveUD
; 40.
; 41. // g_result = ui_explore(&g_amv_vars.location, type, g_langid);
; 42.
; 43. g_result=ui_delete(& g_amv_vars.location, type, g_langid);
LD A,(g_langid)
LD C,A
PUSH BC
LD HL,2
ADD HL,SP
LD C,(HL)
LD DE,g_amv_vars+5
LD A,BYTE3 ui_delete
LD HL,LWRD ui_delete
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
LD (g_result),HL
; 44.
; 45. if (g_result == RESULT_SD_OUT)
LD A,54
XOR L
OR H
JR NZ,?0003
?0002:
; 46. {
; 47. g_amv_vars.location.disk = 'C';
LD A,67
LD (g_amv_vars+5),A
; 48. return RESULT_IGNORE;
LD HL,52
; 49. }
JR ?0006
?0003:
; 50.
; 51. if (g_result != 0)
LD A,L
OR H
JR NZ,?0006
?0004:
; 52. {
; 53. return g_result;
; 54. }
?0005:
; 55.
; 56. ChangeMusic(Music_Next, 1);
LD C,1
LD E,3
LD A,BYTE3 ChangeMusic
LD HL,LWRD ChangeMusic
CALL LWRD ?BANK_CALL_DIRECT_L08
; 57.
; 58. fselGetLocation(& g_amv_vars.location);
CALL LWRD ?0076
; 59.
; 60. return 0; //RESULT_RESTART;
LD HL,0
; 61. }
?0006:
POP AF
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0076:
LD DE,g_amv_vars+5
LD A,BYTE3 fselGetLocation
LD HL,LWRD fselGetLocation
JP LWRD ?BANK_CALL_DIRECT_L08
ui_loop_menu:
; 62.
; 63. int ui_loop_menu( void )
; 64. {
PUSH BC
PUSH DE
LD HL,65526
ADD HL,SP
LD SP,HL
; 65. pop_up_list_t list;
; 66. list.strid = (WORD *)repeat_string;
LD (HL),LOW(repeat_string)
INC HL
LD (HL),HIGH(repeat_string)
; 67. list.total = MaxRepeatMod;
INC HL
LD (HL),7
INC HL
LD (HL),0
; 68. list.active = g_amv_vars.repeat_mode;
INC HL
LD BC,(g_amv_vars+3)
LD B,0
LD (HL),C
INC HL
LD (HL),B
; 69. list.string_id = g_langid;
INC HL
INC HL
INC HL
LD A,(g_langid)
LD (HL),A
; 70. list.headid=MPLAY1;
DEC HL
DEC HL
LD (HL),210
INC HL
LD (HL),1
; 71. g_result = ui_popup_list(&list, NULL);
LD C,B
PUSH BC
LD H,B
PUSH BC
LD L,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 ui_popup_list
LD HL,LWRD ui_popup_list
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
LD (g_result),HL
; 72.
; 73. if (g_result != RESULT_IGNORE)
LD A,52
XOR L
OR H
JR Z,?0008
?0007:
; 74. {
; 75. g_amv_vars.repeat_mode = list.active;
LD HL,4
ADD HL,SP
LD A,(HL)
LD (g_amv_vars+3),A
?0008:
; 76.
; 77. }
; 78. return g_result;
LD HL,(g_result)
; 79. }
EX DE,HL
LD HL,10
ADD HL,SP
LD SP,HL
EX DE,HL
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
ui_stop_menu:
; 80.
; 81.
; 82. int ui_stop_menu( void )
; 83. {
PUSH BC
PUSH DE
PUSH IX
LD HL,65526
ADD HL,SP
LD SP,HL
; 84. pop_up_list_t list;
; 85. int result;
; 86. static char StopMenuactive=0; //保持选中菜单的序号
; 87. ///-CheckIfCardOK();
; 88.
; 89. list.headid = STOPMENU;
LD HL,6
ADD HL,SP
LD (HL),139
INC HL
LD (HL),1
; 90. if (g_CardInFlag)
LD A,(g_CardInFlag)
OR A
LD HL,2
ADD HL,SP
JR Z,?0011
?0010:
; 91. {
; 92. //有卡时的显示
; 93. list.total = sizeof(dir_string_card) / 2;
LD (HL),6
INC HL
LD (HL),0
; 94. list.strid = dir_string_card;
DEC HL
DEC HL
DEC HL
LD (HL),LOW(dir_string_card)
INC HL
LD (HL),HIGH(dir_string_card)
; 95. }
; 96. else
JR ?0014
?0011:
; 97. {
; 98. //无卡时的显示
; 99. list.total = sizeof(dir_string) / 2;
LD (HL),5
INC HL
LD (HL),A
; 100. list.strid = dir_string;
DEC HL
DEC HL
DEC HL
LD (HL),LOW(dir_string)
INC HL
LD (HL),HIGH(dir_string)
; 101. if (StopMenuactive >= list.total)
INC HL
LD C,(HL)
LD B,A
LD HL,(?0009)
LD H,B
OR 128
SBC HL,BC
JP PO,?0067
XOR H
?0067:
JP M,?0014
?0013:
; 102. {
; 103. StopMenuactive--;
LD HL,?0009
DEC (HL)
?0014:
?0012:
; 104. }
; 105.
; 106. }
; 107. //无卡时的显示
; 108. list.string_id = g_langid;
LD HL,8
ADD HL,SP
LD A,(g_langid)
LD (HL),A
; 109. list.active = StopMenuactive;
LD HL,4
ADD HL,SP
LD BC,(?0009)
LD B,0
LD (HL),C
INC HL
LD (HL),B
; 110.
; 111. result = ui_popup_list(&list, NULL);
LD C,B
PUSH BC
LD H,B
PUSH BC
LD L,4
ADD HL,SP
EX DE,HL
LD A,BYTE3 ui_popup_list
LD HL,LWRD ui_popup_list
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
PUSH HL
POP IX
; 112. StopMenuactive = list.active;
LD HL,4
ADD HL,SP
LD A,(HL)
LD (?0009),A
; 113.
; 114. if (g_CardInFlag)
LD A,(g_CardInFlag)
OR A
JR Z,?0018
?0015:
; 115. {
; 116.
; 117. if (DRV_DetectUD(1) != 0x20)
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR Z,?0018
?0017:
; 118. {
; 119. g_CardInFlag=0;
XOR A
LD (g_CardInFlag),A
; 120. ui_err_msg(CARDPULL,CARDPULL,g_langid);//显示卡拔出
LD BC,(g_langid)
LD B,A
PUSH BC
LD BC,394
LD E,C
LD D,B
LD A,BYTE3 ui_err_msg
LD HL,LWRD ui_err_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 121. g_amv_vars.location.disk = 'C';
LD A,67
LD (g_amv_vars+5),A
; 122. //return RESULT_SD_OUT;
; 123. return RESULT_SD_OUT;
LD HL,54
; 124. }
JP LWRD ?0055
?0018:
?0016:
; 125.
; 126. }
; 127.
; 128. if (result != 0)
PUSH IX
POP HL
LD A,L
OR H
JP NZ,?0055
?0019:
; 129. {
; 130. return result;
; 131. }
?0020:
; 132.
; 133.
; 134. BankSwitch((unsigned long)FSELInit >> 16);
LD B,C
LD E,BYTE3 fselInit
LD C,B
CALL LWRD BankSwitch
; 135. fselGetLocation(& g_amv_vars.location);
CALL LWRD ?0076
; 136.
; 137.
; 138. if(!g_CardInFlag)
LD A,(g_CardInFlag)
OR A
LD HL,4
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
JR NZ,?0022
?0021:
; 139. {
; 140. //无卡的情况
; 141. switch (list.active)
CALL LWRD ?S_S_SWITCH_L06
DEFW 0
DEFW 4
DEFW ?0050
DEFW ?0024
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -