📄 decodermenu.s01
字号:
NAME decodermenu(17)
RSEG CODE(0)
RSEG CONST(0)
RSEG UDATA0(0)
EXTERN BankSwitch
EXTERN DRV_DetectUD
EXTERN DecodeOnePage
EXTERN LoadData
PUBLIC MenuInReader
PUBLIC MenuStrID
PUBLIC MenuStrIDWithCard
EXTERN fselGetLocation
EXTERN fselInit
EXTERN fselSetMode
EXTERN g_DiskStateFlag
EXTERN g_comval
EXTERN g_menu_active
EXTERN g_reader_vars
PUBLIC list
EXTERN need_sel_file
PUBLIC play_text
PUBLIC slider
PUBLIC sub_list
EXTERN ui_delete
EXTERN ui_delete_all
EXTERN ui_directory
EXTERN ui_err_msg
EXTERN ui_popup_list
EXTERN ui_show_msg
EXTERN ui_slider
EXTERN ?CLZ80B_4_04_L00
EXTERN ?S_S_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
RSEG CODE
MenuInReader:
; 1. /****************************************
; 2. * File Name: DecoderMenu.c
; 3. * Write By : Jack lee
; 4. * Date :2004-9-29 15:22
; 5. *
; 6. *
; 7. *****************************************/
; 8.
; 9.
; 10.
; 11.
; 12. #include "actos.h"
; 13. #include "ap_common.h"
; 14. #include "display.h"
; 15. #include "ap_reader.h"
; 16. #include "bookmark.h"
; 17. extern void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id);
; 18. extern bool g_menu_active;
; 19. extern bool need_sel_file;
; 20. extern BYTE g_DiskStateFlag;
; 21. pop_up_list_t list;
; 22. pop_up_list_t sub_list;
; 23. slider_t slider;
; 24. const WORD MenuStrID[5]={MSTOP1,JPEGSET,MSTOP3,MSTOP4,MSTOP5};//,VSTOPM4};
; 25. const WORD MenuStrIDWithCard[6]={MSTOP1,MSTOP2,JPEGSET,MSTOP3,MSTOP4,MSTOP5};
; 26. const WORD play_text[2]={JPEGSET1, JPEGSET2};
; 27.
; 28. int MenuInReader(void)
; 29. {
PUSH BC
PUSH DE
PUSH IY
PUSH IX
PUSH AF
; 30. int result,active;
; 31. bool g_card_ok=FALSE;
; 32. result = DRV_DetectUD(1); //检查是否有卡
LD E,1
CALL LWRD DRV_DetectUD
LD C,A
LD B,0
LD L,B
; 33. if(result == 0x020)
LD H,B
ADD HL,SP
LD (HL),B
LD A,32
XOR C
JR NZ,?0003
?0002:
; 34. g_card_ok = TRUE;
LD (HL),1
?0003:
; 35.
; 36. list.active=0;
LD L,B
LD H,B
LD (list+4),HL
; 37. list.headid = STOPMENU;
LD HL,395
LD (list+6),HL
; 38. if(g_card_ok)
LD L,B
LD H,B
ADD HL,SP
XOR A
OR (HL)
JR Z,?0005
?0004:
; 39. {
; 40. list.total = 6;
LD HL,6
LD (list+2),HL
; 41. list.strid = MenuStrIDWithCard;
LD HL,MenuStrIDWithCard
JR ?0072
; 42. }
; 43. else
?0005:
; 44. {
; 45. list.total=5;
LD HL,5
LD (list+2),HL
; 46. list.strid=MenuStrID;
LD HL,MenuStrID
?0072:
LD (list),HL
?0006:
; 47. }
; 48. list.string_id = g_comval.langid;
LD A,(g_comval+12)
LD (list+8),A
; 49.
; 50. result = ui_popup_list(&list, NULL);
LD C,B
PUSH BC
PUSH BC
LD DE,list
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
; 51.
; 52. if (g_card_ok)
LD L,C
LD H,B
ADD HL,SP
XOR A
OR (HL)
JR Z,?0010
?0007:
; 53. {
; 54.
; 55. if (DRV_DetectUD(1) != 0x20)
LD E,1
CALL LWRD DRV_DetectUD
CP 32
JR Z,?0010
?0009:
; 56. {
; 57. g_card_ok=FALSE;
; 58. ui_err_msg(CARDPULL,CARDPULL,g_comval.langid);//显示卡拔出
LD BC,(g_comval+12)
LD B,0
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
; 59. g_reader_vars.location.disk = 'C';
LD A,67
LD (g_reader_vars+6),A
; 60. //return RESULT_SD_OUT;
; 61. return RESULT_SD_OUT;
LD HL,54
; 62. }
JP LWRD ?0056
?0010:
?0008:
; 63. }
; 64.
; 65. if (result != 0)
PUSH IX
POP HL
LD A,L
OR H
JP NZ,?0033
?0011:
; 66. return result;
?0012:
; 67.
; 68. BankSwitch((unsigned long)FSELInit >> 16);
LD E,BYTE3 fselInit
CALL LWRD BankSwitch
; 69. fselGetLocation(& g_reader_vars.location);
CALL LWRD ?0087
; 70.
; 71. if(!g_card_ok)
LD L,B
LD H,B
ADD HL,SP
XOR A
OR (HL)
LD DE,(list+4)
JP NZ,?0014
?0013:
; 72. {
; 73. switch (list.active)
CALL LWRD ?S_S_SWITCH_L06
DEFW 0
DEFW 4
DEFW ?0055
DEFW ?0016
DEFW ?0019
DEFW ?0026
DEFW ?0029
?0016:
; 74. {
; 75. case 0:
; 76. if (g_reader_vars.location.disk == 'H')
LD A,(g_reader_vars+6)
CP 72
JR NZ,?0018
?0017:
; 77. {
; 78. g_reader_vars.location.disk = 'C';
LD A,67
LD (g_reader_vars+6),A
; 79. FSELInit(FSEL_TYPE_TXT, FSEL_ALL_REPEATALL,FSEL_TYPE_COMMONDIR, g_reader_vars.location.disk);
LD C,A
PUSH BC
LD C,B
PUSH BC
LD C,4
LD E,C
LD A,BYTE3 fselInit
LD HL,LWRD fselInit
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 80. fselGetLocation(& g_reader_vars.location);
CALL LWRD ?0087
; 81. need_sel_file=TRUE;
LD A,1
LD (need_sel_file),A
?0018:
; 82. }
; 83. BankSwitch((unsigned long)DecodeOnePage >> 16);
LD B,0
LD E,BYTE3 DecodeOnePage
CALL LWRD BankSwitch
; 84. result=ui_directory(&g_reader_vars.location, FSEL_TYPE_TXT, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
CALL LWRD ?0088
POP AF
; 85. FSELSetMode(FSEL_ALL_SEQUENCE);
CALL LWRD ?0089
; 86. BankSwitch((unsigned long)LoadData >> 16);
LD E,BYTE3 LoadData
CALL LWRD BankSwitch
; 87.
; 88. g_menu_active = FALSE;
XOR A
LD (g_menu_active),A
; 89. g_reader_vars.g_txt.PrevSeek=0;
JP LWRD ?0051
; 90. g_reader_vars.g_txt.CurrentSeek=0;
; 91. g_reader_vars.g_txt.BufSector=0;
; 92. break;
?0019:
; 93.
; 94. case 1:
; 95. sub_list.strid = play_text;
LD HL,play_text
LD (sub_list),HL
; 96. sub_list.total = 2;
LD HL,2
LD (sub_list+2),HL
; 97. sub_list.active = g_reader_vars.playflag;
LD BC,(g_reader_vars+2)
LD B,H
LD (sub_list+4),BC
; 98. sub_list.string_id = g_comval.langid;
LD A,(g_comval+12)
LD (sub_list+8),A
; 99. sub_list.headid = MenuStrID[list.active];
EX DE,HL
ADD HL,HL
LD BC,MenuStrID
ADD HL,BC
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD (sub_list+6),HL
; 100. result = ui_popup_list(&sub_list, NULL);
LD C,D
PUSH BC
LD L,C
LD H,C
PUSH HL
LD DE,sub_list
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
; 101. if(result!=0) return result;
LD A,L
OR H
JP NZ,?0033
?0020:
?0021:
; 102. active=sub_list.active;
LD HL,(sub_list+4)
; 103. g_reader_vars.playflag=active;
LD A,L
LD (g_reader_vars+2),A
; 104. if(active==1)
LD A,1
XOR L
OR H
JP NZ,?0046
?0022:
; 105. {
; 106. slider.min = 1;
LD HL,1
LD (slider+2),HL
; 107. slider.max = 10;
LD L,10
LD (slider+4),HL
; 108. slider.step = 1;
LD L,1
LD (slider+8),HL
; 109. slider.value = g_reader_vars.autoplaytime;
LD BC,(g_reader_vars+3)
LD B,H
LD (slider+6),BC
; 110. slider.title = JPEGSET2;
LD HL,589
LD (slider),HL
; 111. slider.string_id=g_comval.langid;
LD A,(g_comval+12)
LD (slider+10),A
; 112. result = ui_slider(&slider, NULL);
LD C,B
PUSH BC
PUSH BC
LD DE,slider
LD A,BYTE3 ui_slider
LD HL,LWRD ui_slider
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
PUSH HL
POP IX
; 113. if(result != 0) return result;
LD A,L
OR H
JP Z,?0048
?0024:
JP LWRD ?0033
?0025:
; 114. g_reader_vars.autoplaytime = (char)slider.value;
?0023:
; 115. }
; 116. return RESULT_IGNORE;
; 117.
; 118.
; 119. case 2:
?0026:
; 120. result=ui_delete(&g_reader_vars.location,DELETE_FILE,g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,B
LD DE,g_reader_vars+6
LD A,BYTE3 ui_delete
LD HL,LWRD ui_delete
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
PUSH HL
POP IX
; 121. if(result==RESULT_IGNORE)
LD A,52
XOR L
OR H
JP NZ,?0051
?0027:
; 122. result=0;
JP LWRD ?0085
?0028:
; 123. g_reader_vars.g_txt.PrevSeek=0;
; 124. g_reader_vars.g_txt.CurrentSeek=0;
; 125. g_reader_vars.g_txt.BufSector=0;
; 126. break;
?0029:
; 127.
; 128. case 3:
; 129. FSELSetMode(FSEL_ALL_REPEATALL);
LD E,4
CALL LWRD ?0090
; 130. result = ui_delete_all(&g_reader_vars.location, DELETE_TXT, g_comval.langid);
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,4
LD DE,g_reader_vars+6
LD A,BYTE3 ui_delete_all
LD HL,LWRD ui_delete_all
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
PUSH HL
POP IX
; 131. if(result==RESULT_IGNORE)result=0;
LD A,52
XOR L
OR H
JP NZ,?0033
?0030:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -