ui_userlist2.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 735 行
S01
735 行
NAME ui_userlist2(17)
RSEG AP_UI_USERLIST(0)
RSEG APC_UI_USERLIST(0)
EXTERN Add_UserPL
EXTERN Count_Byte
EXTERN FS_Backup
EXTERN FS_Restore
EXTERN PutS
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN ScrollFlag
EXTERN ScrollString
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
PUBLIC UI_Favourite
EXTERN WrHead_PL
EXTERN bList_Flag
EXTERN disbuff
PUBLIC favourite_string
EXTERN g_comval
EXTERN g_music_vars
EXTERN menu_pos_list
EXTERN menulist_bck_pic
EXTERN need_WPL
EXTERN region_scroll
EXTERN scroll_buf
EXTERN ui_popup_list
EXTERN ui_userplaylist
PUBLIC ui_viewlist
EXTERN ?CLZ80B_4_04_L00
EXTERN ?UC_MOD_L01
EXTERN ?S_MUL_L02
EXTERN ?S_S_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
EXTERN ?STRLEN_L11
RSEG AP_UI_USERLIST
ui_viewlist:
; 1. #include "ap_music.h"
; 2. #define Color_BULE_Scroll_def 0x0000001f//深蓝
; 3. extern handle UserPLfp;
; 4. #pragma memory=dataseg(APD_UI_PLAYLIST)
; 5. extern char vbuff[512];
; 6. extern char disbuff[MENU_GROUP*30];
; 7. extern char vfilename[12];
; 8. extern handle fpview;
; 9. extern WORD vFirstOffset;
; 10. extern WORD vLastOffset;
; 11. extern WORD vTotal;
; 12. extern WORD vsave_offset;
; 13. #pragma memory=default
; 14. extern const char menu_pos_list[6];
; 15. extern const WORD menulist_bck_pic[];
; 16. extern char ScrollFlag; //滚动标志位
; 17. extern char scroll_buf[]; //滚屏buffer区
; 18. extern region_t region_scroll; //滚屏区域
; 19. #pragma codeseg(AP_UI_USERLIST)
; 20.
; 21. #pragma memory=constseg(APC_UI_USERLIST)
; 22. //const char userlist_file_pos[6] = { POSITION_MENU6, POSITION_MENU5,POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1}; //zxs add
; 23. //const WORD userlist_file_bck_pic[6]={ MENUBCK6,MENUBCK5,MENUBCK4,MENUBCK3,MENUBCK2,MENUBCK1 };
; 24. const WORD favourite_string[4] ={ MFAVIVIW,MFAVIADD,MFAVIDEL,MSTOP5};
; 25. #pragma memory=default
; 26.
; 27.
; 28. void ui_viewlist(char old_active,char new_active,char num,char type,bool scroll_flag)
; 29. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65532
; 30. BYTE tmp,i;
; 31. // DC oldDC_sav;
; 32. BYTE DisplayBytes;
; 33. region_scroll.x=explorer_str_x_def;
LD A,32
LD (region_scroll),A
; 34. region_scroll.width=160;
LD A,160
LD (region_scroll+2),A
; 35. region_scroll.height=16;
LD A,16
LD (region_scroll+3),A
; 36.
; 37. if(scroll_flag)
XOR A
OR (IX+14)
JR Z,?0003
?0002:
; 38. {
; 39. SetTextOutMode(0);
LD E,0
CALL LWRD SetTextOutMode
; 40. SetBackgdColor(Color_BULE_Scroll_def);
LD BC,0
LD DE,31
CALL LWRD SetBackgdColor
; 41. ScrollString(scroll_buf, FALSE,g_comval.langid,®ion_scroll);
LD HL,region_scroll
PUSH HL
LD HL,g_comval+12
LD C,(HL)
PUSH BC
LD C,0
CALL LWRD ?0050
POP HL
POP HL
; 42. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 43. }
; 44. else
JP LWRD ?0024
?0003:
; 45. {
; 46. if(num>MENU_GROUP)
LD A,6
CP (IX+10)
JR NC,?0006
?0005:
; 47. num = MENU_GROUP;
LD (IX+10),A
?0006:
; 48. // GetDCStatus(&oldDC_sav);
; 49.
; 50. SetTextOutMode(1);
LD E,1
CALL LWRD SetTextOutMode
; 51. SetPenColor(Color_WHITE_def);
LD BC,0
LD DE,65535
CALL LWRD SetPenColor
; 52.
; 53. if(old_active!=new_active)
LD A,(IX+2)
CP (IX+4)
JP Z,?0008
?0007:
; 54. {
; 55. //清除旧的活动列表项
; 56. tmp = old_active%MENU_GROUP;
LD B,6
CALL LWRD ?0052
; 57. ResShowPic(menulist_bck_pic[tmp], menu_bck_x_def, menu_pos_list[tmp]-4);
PUSH BC
LD C,9
LD L,(IX-3)
LD H,B
ADD HL,HL
LD DE,menulist_bck_pic
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?0053
POP AF
; 58. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,38
CALL LWRD ?0053
POP AF
; 59. ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[tmp]-1);
LD C,(IX-3)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0054
POP AF
; 60.
; 61. SetTextPos(explorer_str_x_def, menu_pos_list[tmp]-2);
LD C,(IX-3)
CALL LWRD ?0055
; 62. DisplayBytes = Count_Byte(&(disbuff+old_active*30),g_comval.langid);
LD BC,(g_comval+12)
PUSH BC
LD E,(IX+2)
CALL LWRD ?0057
POP BC
CALL LWRD ?BANK_CALL_DIRECT_L08
; 63. PutS(&(disbuff+old_active*30), DisplayBytes);
LD C,L
PUSH BC
LD E,(IX+2)
LD D,0
LD BC,30
CALL LWRD ?S_MUL_L02
LD HL,disbuff
ADD HL,DE
EX DE,HL
POP BC
CALL LWRD PutS
; 64.
; 65. //显示当前活动项
; 66.
; 67. tmp = new_active%MENU_GROUP;
LD B,6
LD A,(IX+4)
CALL LWRD ?0052
; 68. ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[tmp]-4);
PUSH BC
LD C,30
LD DE,44
CALL LWRD ?0053
POP AF
; 69. ResShowPic(DHTHK,194, menu_pos_list[tmp]+5);
LD C,(IX-3)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,5
LD C,A
PUSH BC
LD C,194
LD DE,39
CALL LWRD ?0053
POP AF
; 70. ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[tmp]-1);
LD C,(IX-3)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0054
POP AF
; 71. region_scroll.y = menu_pos_list[tmp]-2;
LD C,(IX-3)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,254
LD (region_scroll+1),A
; 72. memcpy(scroll_buf,&(disbuff+(new_active)*30),25); //取要滚动的数据到buf
LD C,(IX+4)
CALL LWRD ?0056
; 73. scroll_buf[25]=0;
; 74. ScrollString(scroll_buf,TRUE,g_comval.langid,®ion_scroll);
PUSH HL
LD HL,g_comval+12
LD C,(HL)
PUSH BC
CALL LWRD ?0051
POP HL
POP HL
; 75. if(strlen(scroll_buf)<20)
CALL LWRD ?0058
JR NC,?0010
?0009:
; 76. ScrollFlag=0;
XOR A
JR ?0044
; 77. else
?0010:
; 78. ScrollFlag=1;
LD A,1
?0044:
JP LWRD ?0046
?0011:
; 79. }
; 80. else
?0008:
; 81. {
; 82.
; 83. // SetTextOutMode(1);
; 84. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,195
CALL LWRD ?0053
POP AF
; 85. if(type==0)
XOR A
OR (IX+12)
LD C,148
PUSH BC
LD C,22
PUSH BC
LD BC,(g_comval+12)
JR NZ,?0014
?0013:
; 86. ResShowMultiString( MFAVIVIW,g_comval.langid, list_str_x_def, list_str_y_def);//显示菜单头
LD DE,435
JR ?0045
; 87. else
?0014:
; 88. ResShowMultiString( MFAVIDEL,g_comval.langid,list_str_x_def, list_str_y_def);//显示菜单头
LD DE,434
?0045:
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
?0015:
; 89. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,38
CALL LWRD ?0053
POP AF
; 90. for(i=0;i<num;i++)
LD (IX-4),0
?0017:
LD A,(IX-4)
CP (IX+10)
JP NC,?0016
?0018:
; 91. {
; 92.
; 93. if(i==new_active)
CP (IX+4)
JR NZ,?0021
?0020:
; 94. {
; 95. ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[i]-4);
LD C,A
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,30
LD DE,44
CALL LWRD ?0053
POP AF
; 96. ResShowPic(DHTHK,194, menu_pos_list[i]+5);
LD C,(IX-4)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,5
LD C,A
PUSH BC
LD C,194
LD DE,39
CALL LWRD ?0053
POP AF
; 97. ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[i]-1);
LD C,(IX-4)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0054
POP AF
; 98. continue;
JR ?0019
?0021:
; 99. }
; 100. output8(0x4e,input8(0x4e) | 0x08);
IN A,(78)
SET 3,A
OUT (78),A
; 101. ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[i]-1);
LD C,(IX-4)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,255
LD C,A
PUSH BC
CALL LWRD ?0054
POP AF
; 102. SetTextPos(explorer_str_x_def, menu_pos_list[i]-2);
LD C,(IX-4)
CALL LWRD ?0055
; 103. DisplayBytes = Count_Byte(&(disbuff+(i)*30),g_comval.langid);
LD BC,(g_comval+12)
PUSH BC
LD E,(IX-4)
CALL LWRD ?0057
POP BC
CALL LWRD ?BANK_CALL_DIRECT_L08
; 104. PutS(&(disbuff+(i)*30),DisplayBytes); //显示关键字
LD C,L
PUSH BC
LD E,(IX-4)
LD D,0
LD BC,30
CALL LWRD ?S_MUL_L02
LD HL,disbuff
ADD HL,DE
EX DE,HL
POP BC
CALL LWRD PutS
?0019:
INC (IX-4)
JP LWRD ?0017
?0016:
; 105. } //for
; 106. region_scroll.y= menu_pos_list[new_active]-2;
LD C,(IX+4)
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,254
LD (region_scroll+1),A
; 107. memcpy(scroll_buf,&(disbuff+(new_active)*30),25);
CALL LWRD ?0056
; 108. scroll_buf[25]=0;
; 109. ScrollString(scroll_buf, TRUE,g_comval.langid,®ion_scroll);
PUSH HL
LD HL,g_comval+12
LD C,(HL)
PUSH BC
CALL LWRD ?0051
POP HL
POP HL
; 110. if(strlen(scroll_buf)<20)
CALL LWRD ?0058
JR NC,?0023
?0022:
; 111. ScrollFlag=0;
XOR A
JR ?0046
; 112. else
?0023:
; 113. ScrollFlag=1;
LD A,1
?0046:
LD (ScrollFlag),A
?0024:
?0012:
?0004:
; 114. }
; 115. } //else scorll_flag
; 116. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0051:
LD C,1
?0050:
LD DE,scroll_buf
LD A,BYTE3 ScrollString
LD HL,LWRD ScrollString
JP LWRD ?BANK_CALL_DIRECT_L08
?0052:
CALL LWRD ?UC_MOD_L01
LD (IX-3),A
LD C,A
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,252
LD C,A
RET
?0054:
LD C,13
LD DE,198
?0053:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0055:
LD B,0
LD HL,menu_pos_list
ADD HL,BC
LD A,(HL)
ADD A,254
LD C,A
LD E,32
JP LWRD SetTextPos
?0056:
LD DE,30
CALL LWRD ?S_MUL_L02
LD HL,disbuff
ADD HL,DE
LD DE,scroll_buf
LD C,25
LDIR
XOR A
LD (scroll_buf+25),A
LD HL,region_scroll
RET
?0057:
LD D,0
LD BC,30
CALL LWRD ?S_MUL_L02
LD HL,disbuff
ADD HL,DE
EX DE,HL
LD A,BYTE3 Count_Byte
LD HL,LWRD Count_Byte
RET
?0058:
LD HL,scroll_buf
CALL LWRD ?STRLEN_L11
LD BC,20
AND A
SBC HL,BC
RET
UI_Favourite:
; 117.
; 118.
; 119. int UI_Favourite(BYTE string_id)
; 120. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65492
PUSH IY
; 121. int Result;
; 122. pop_up_list_t list;
; 123. char USLBackbuf[32];
; 124. char IO27 =input8(0x27);
IN A,(39)
LD (IX-44),A
; 125. list.strid = favourite_string;
LD (IX-42),LOW(favourite_string)
LD (IX-41),HIGH(favourite_string)
; 126. list.total = 4;
LD (IX-40),4
LD (IX-39),0
; 127. list.active = 0;
XOR A
LD (IX-38),A
LD (IX-37),A
; 128. list.string_id = string_id;
LD B,(IX+2)
LD (IX-34),B
; 129.
; 130. list.headid=MFAVI;
LD (IX-36),176
LD (IX-35),1
; 131. Result = ui_popup_list(&list, NULL);
LD C,A
PUSH BC
LD L,C
LD H,C
PUSH HL
LD L,8
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 IY
; 132.
; 133. if (Result == RESULT_IGNORE)
LD A,52
XOR L
OR H
JR NZ,?0026
?0025:
; 134. return 0;
LD L,C
LD H,C
JP LWRD ?0043
?0026:
; 135. if (Result != 0)
LD A,L
OR H
JP NZ,?0048
?0027:
; 136. return Result;
?0028:
; 137.
; 138. output8(0x27,0x00);
OUT (39),A
; 139. FS_Backup(USLBackbuf,FS_BACKUP_DIRINFO,0);//目录项备份
LD L,C
LD H,C
PUSH HL
LD C,2
LD L,16
ADD HL,SP
EX DE,HL
CALL LWRD FS_Backup
POP HL
; 140. output8(0x27,IO27);
LD A,(IX-44)
OUT (39),A
; 141. switch(list.active)
LD E,(IX-38)
LD D,(IX-37)
CALL LWRD ?S_S_SWITCH_L06
DEFW 0
DEFW 3
DEFW ?0029
DEFW ?0030
DEFW ?0035
DEFW ?0040
?0030:
; 142. {
; 143. case 0: //select
; 144.
; 145. #ifdef ACTIVE_USERPL
; 146. if(need_WPL)
LD A,(need_WPL)
OR A
JR Z,?0032
?0031:
; 147. WrHead_PL(0);
LD E,0
LD A,BYTE3 WrHead_PL
LD HL,LWRD WrHead_PL
CALL LWRD ?BANK_CALL_DIRECT_L08
?0032:
; 148. #endif
; 149. Result=ui_userplaylist(&g_music_vars.location,0);
LD C,0
CALL LWRD ?0059
PUSH HL
POP IY
; 150. if (Result == 0)
LD A,L
OR H
JR NZ,?0029
?0033:
; 151. {
; 152. return RESULT_USERLIST;
LD HL,108
; 153. }
JR ?0043
?0034:
; 154. // return Result;
; 155. break;
?0035:
; 156. case 1: //add
; 157. #ifdef ACTIVE_USERPL
; 158. if(!bList_Flag&&(g_music_vars.fselmod != FSEL_TYPE_USERPL))
LD A,(bList_Flag)
OR A
JR NZ,?0037
LD A,(g_music_vars+81)
DEC A
DEC A
JR Z,?0037
?0039:
?0038:
?0036:
; 159. {
; 160. bList_Flag=Add_UserPL(&g_music_vars.location);
LD DE,g_music_vars+7
LD A,BYTE3 Add_UserPL
LD HL,LWRD Add_UserPL
CALL LWRD ?BANK_CALL_DIRECT_L08
LD A,L
LD (bList_Flag),A
?0037:
; 161. }
; 162. #endif
; 163. Result = NULL;
LD IY,0
; 164. break;
JR ?0029
?0040:
; 165. case 2: //del
; 166. #ifdef ACTIVE_USERPL
; 167. if(need_WPL)
LD A,(need_WPL)
OR A
JR Z,?0042
?0041:
; 168. WrHead_PL(0);
LD E,0
LD A,BYTE3 WrHead_PL
LD HL,LWRD WrHead_PL
CALL LWRD ?BANK_CALL_DIRECT_L08
?0042:
; 169. #endif
; 170. Result=(ui_userplaylist(&g_music_vars.location,1));
LD C,1
CALL LWRD ?0059
PUSH HL
POP IY
; 171. /*
; 172. if (Result == 0)
; 173. {
; 174. return RESULT_USERLIST;
; 175. }
; 176. */
; 177. //return Result;
; 178. break;
?0029:
; 179. }
; 180. output8(0x27,0x00);
XOR A
OUT (39),A
; 181. FS_Restore(USLBackbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
LD L,A
LD H,A
PUSH HL
LD C,2
LD L,16
ADD HL,SP
EX DE,HL
CALL LWRD FS_Restore
POP HL
; 182. output8(0x27,IO27);
LD A,(IX-44)
OUT (39),A
; 183. return Result;
?0048:
PUSH IY
POP HL
; 184. }
?0043:
POP IY
JP LWRD ?BANK_LEAVE_DIRECT_L08
?0059:
LD DE,g_music_vars+7
LD A,BYTE3 ui_userplaylist
LD HL,LWRD ui_userplaylist
JP LWRD ?BANK_CALL_DIRECT_L08
RSEG APC_UI_USERLIST
favourite_string:
DEFW 435
DEFW 433
DEFW 434
DEFW 465
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?