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,&region_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,&region_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,&region_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 + -
显示快捷键?