⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ui_playlist2.s01

📁 MP3 整个 SDK
💻 S01
字号:
	NAME	ui_playlist2(17)
	RSEG	COM_PLAYLIST(0)
	RSEG	IDM_COM_FSL_D(0)
	EXTERN	PlayListFileName
	EXTERN	PlayListScrollRegion
	EXTERN	PutS
	EXTERN	ResShowPic
	EXTERN	ScrollFlag
	EXTERN	Scroll_PlayList
	EXTERN	SetAsciiFont
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	SetTextPos
	PUBLIC	ShowPlaylist
	PUBLIC	com_fname
	EXTERN	fselGetCurGroupL
	EXTERN	fselGetNextGroup
	EXTERN	fselGetPrevGroup
	EXTERN	menu_pos_list
	PUBLIC	read_idm_data_playlist
	PUBLIC	reinit_idm_buf_playlist
	EXTERN	unitochar
	PUBLIC	write_idm_data_playlist
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?UC_MOD_L01
	EXTERN	?SS_CMP_L02
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	EXTERN	?STRLEN_L11
	RSEG	COM_PLAYLIST
write_idm_data_playlist:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        ap common lib, directory control file
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  $Id: ui_playlist2.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10.	*******************************************************************************
; 11.	*/
; 12.	#pragma codeseg(COM_PLAYLIST)
; 13.	
; 14.	#include "ap_common.h"
; 15.	#include "list.h"
; 16.	#define Color_BULE_Scroll_def  0x0000001f//深蓝
; 17.	#pragma memory=dataseg(IDM_COM_FSL_D)
; 18.	char com_fname[5][LISTNAME_DISP_LENNGTH];    //可存放地址为页6的6000H-6FFFH
; 19.	#pragma memory=default
; 20.	//extern const char menu_pos_menu[6];
; 21.	extern const char menu_pos_list[6];
; 22.	extern char    PlayListFileName[12];
; 23.	
; 24.	extern region_t PlayListScrollRegion;
; 25.	extern BYTE ScrollFlag;
; 26.	extern void Scroll_PlayList( char * scrollstr, bool mode ,char language,region_t *scroll);
; 27.	//向IDM数组写数据
; 28.	BOOL write_idm_data_playlist(char *name, int count)
; 29.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
; 30.	     byte status;
; 31.	     status = input8(0x05);
	IN	A,(5)
	LD	E,A
; 32.	     output8(0x05, 0xf6);
	LD	A,246
	OUT	(5),A
; 33.	     memcpy( com_fname[count], name, LISTNAME_DISP_LENNGTH);
	PUSH	DE
	LD	BC,512
	LD	L,(IX+4)
	LD	H,L
	LD	L,C
	ADD	HL,HL
	LD	BC,com_fname
	ADD	HL,BC
	EX	DE,HL
	LD	L,(IX+2)
	LD	H,(IX+3)
?0040:
	LD	BC,512
	LDIR
	POP	DE
; 34.	     output8(0x05, status);
	LD	A,E
	OUT	(5),A
; 35.	
; 36.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
reinit_idm_buf_playlist:
; 37.	
; 38.	//取一屏数据到IDM数组中
; 39.	void reinit_idm_buf_playlist(int top, int bottom, char *Longnamebuf, BYTE string_id,BOOL direction)
; 40.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
	PUSH	IY
; 41.	    int i;
; 42.	    for(i = top; i <= bottom; i++)
	LD	L,(IX+2)
	LD	H,(IX+3)
	PUSH	HL
	POP	IY
?0003:
	PUSH	IY
	POP	BC
	LD	L,(IX+4)
	LD	H,(IX+5)
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0002
?0004:
; 43.	    {
; 44.	          if( fselGetCurGroupL(Longnamebuf,LISTNAME_DISP_LENNGTH) )
	LD	BC,512
	LD	E,(IX+10)
	LD	D,(IX+11)
	LD	A,BYTE3 fselGetCurGroupL
	LD	HL,LWRD fselGetCurGroupL
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	Z,?0007
?0006:
; 45.	        {
; 46.	            unitochar(Longnamebuf,LISTNAME_DISP_LENNGTH,string_id);   //   
	LD	L,(IX+12)
	PUSH	HL
	LD	BC,512
	LD	E,(IX+10)
	LD	D,(IX+11)
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0007:
; 47.	        }
; 48.	          if(direction)  
	XOR	A
	OR	(IX+14)
	JR	Z,?0009
?0008:
; 49.	            write_idm_data_playlist(Longnamebuf, i - top);
	LD	C,(IX+2)
	LD	B,(IX+3)
	PUSH	IY
	POP	HL
	JR	?0032
; 50.	          else
?0009:
; 51.	            write_idm_data_playlist(Longnamebuf, bottom-i);   
	PUSH	IY
	POP	BC
	LD	L,(IX+4)
	LD	H,(IX+5)
?0032:
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	E,(IX+10)
	LD	D,(IX+11)
	LD	A,BYTE3 write_idm_data_playlist
	LD	HL,LWRD write_idm_data_playlist
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0010:
; 52.	          if(direction)       
	XOR	A
	OR	(IX+14)
	LD	E,(IX+10)
	LD	D,(IX+11)
	JR	Z,?0012
?0011:
; 53.	            fselGetNextGroup(Longnamebuf);            // 取下页数据
	LD	A,BYTE3 fselGetNextGroup
	LD	HL,LWRD fselGetNextGroup
	JR	?0033
; 54.	          else 
?0012:
; 55.	               fselGetPrevGroup(Longnamebuf);           // 取上页数据
	LD	A,BYTE3 fselGetPrevGroup
	LD	HL,LWRD fselGetPrevGroup
?0033:
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0013:
; 56.	    }
; 57.	
; 58.	}
	INC	IY
	JP	LWRD ?0003
?0002:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
read_idm_data_playlist:
; 59.	
; 60.	//读数据到数组name中
; 61.	void read_idm_data_playlist(char *name, int count)
; 62.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
; 63.	     byte status;
; 64.	     status = input8(0x05);
	IN	A,(5)
	LD	E,A
; 65.	     output8(0x05 ,0xf6);
	LD	A,246
	OUT	(5),A
; 66.	     memcpy(name, com_fname[count], LISTNAME_DISP_LENNGTH);
	PUSH	DE
	LD	BC,512
	LD	E,(IX+2)
	LD	D,(IX+3)
	LD	L,(IX+4)
	LD	H,L
	LD	L,C
	ADD	HL,HL
	LD	BC,com_fname
	ADD	HL,BC
	JP	LWRD ?0040
; 67.	     output8(0x05, status);
; 68.	}
ShowPlaylist:
; 69.	
; 70.	
; 71.	/********************************************************************************
; 72.	* Description : show the directory.
; 73.	*
; 74.	* Arguments  :
; 75.	*            location: get thedisk type
; 76.	*            Invpath: the "\" or name
; 77.	*            Namebuf:the string you will display
; 78.	*            type : show file kind
; 79.	*            string_id: language type
; 80.	* Returns     :
; 81.	*            other:    Successful
; 82.	*            0:    Fail, detail information in fselError
; 83.	* Notes       :  only display the valid directory
; 84.	*
; 85.	********************************************************************************/
; 86.	void ShowPlaylist(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,char *Longnamebuf,BYTE string_id,BYTE ScrollMode)
; 87.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-2
	PUSH	IY
; 88.	
; 89.	    int i,tmp;
; 90.	    SetAsciiFont(FONT_TYPE_LARGE);
	LD	E,4
	CALL	LWRD SetAsciiFont
; 91.	    SetTextOutMode(1);
	LD	E,1
	CALL	LWRD SetTextOutMode
; 92.	    PlayListScrollRegion.x=30;
	LD	A,30
	LD	(PlayListScrollRegion),A
; 93.	    PlayListScrollRegion.width=162;
	LD	A,162
	LD	(PlayListScrollRegion+2),A
; 94.	    PlayListScrollRegion.height=16;
	LD	A,16
	LD	(PlayListScrollRegion+3),A
; 95.	    if(!ScrollMode)        //只需要滚动活动的项目
	XOR	A
	OR	(IX+18)
	JR	NZ,?0015
?0014:
; 96.	    {
; 97.	        SetTextOutMode(0);
	LD	E,A
	CALL	LWRD SetTextOutMode
; 98.	        SetBackgdColor(Color_BULE_Scroll_def);
	CALL	LWRD ?0041
; 99.	        Scroll_PlayList(Longnamebuf, FALSE,string_id,&PlayListScrollRegion);
	PUSH	HL
	LD	L,(IX+16)
	PUSH	HL
	LD	C,0
	CALL	LWRD ?0043
	POP	HL
	POP	HL
; 100.	        SetTextOutMode(1); 
	LD	E,1
	CALL	LWRD SetTextOutMode
; 101.	    }            
; 102.	    else            //需要初始化活动项,判断是否需要滚动
	JP	LWRD ?0031
?0015:
; 103.	    {    
; 104.	 if(Old_active!=active)
	LD	A,(IX+10)
	CP	(IX+12)
	JP	Z,?0018
?0017:
; 105.	
; 106.	  {
; 107.	 //清除旧的活动列表项
; 108.	     tmp=Old_active%5; 
	LD	B,5
	CALL	LWRD ?0045
; 109.	     ResShowPic(MENUBCK5-tmp ,menu_bck_x_def, menu_pos_list[tmp+1]-4);            //分段刷新背景
	ADD	A,252
	LD	E,A
	PUSH	DE
	LD	C,9
	PUSH	IY
	POP	DE
	LD	HL,105
	AND	A
	SBC	HL,DE
	EX	DE,HL
	CALL	LWRD ?0046
	POP	AF
; 110.	     ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0046
	POP	AF
; 111.	     ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[tmp+1]-1);
	LD	HL,menu_pos_list+1
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0047
	POP	AF
; 112.	     SetTextPos(explorer_str_x_def, menu_pos_list[tmp+1]-2);
	LD	HL,menu_pos_list+1
	PUSH	IY
	POP	BC
	CALL	LWRD ?0048
; 113.	     read_idm_data_playlist(Longnamebuf,tmp);   
	CALL	LWRD ?0050
; 114.	     SetPenColor(Color_WHITE_def);                              //取列表名
; 115.	     PutS(Longnamebuf, -1);
	CALL	LWRD ?0051
; 116.	
; 117.	 //显示当前活动项
; 118.	     tmp=active%5;
	LD	B,5
	LD	A,(IX+12)
	CALL	LWRD ?0045
; 119.	     ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[tmp+1]-1);
	ADD	A,255
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0047
	POP	AF
; 120.	     ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[tmp+1]-4);
	LD	HL,menu_pos_list+1
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,252
	LD	E,A
	PUSH	DE
	LD	C,30
	LD	DE,50
	CALL	LWRD ?0046
	POP	AF
; 121.	     ResShowPic(DHTHK,194,menu_pos_list[tmp+1]+6);
	LD	HL,menu_pos_list+1
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	E,A
	PUSH	DE
	LD	C,194
	LD	DE,46
	CALL	LWRD ?0046
	POP	AF
; 122.	     read_idm_data_playlist(Longnamebuf,tmp); 
	CALL	LWRD ?0050
; 123.	     SetPenColor(Color_WHITE_def);                                //取列表名
; 124.	     PlayListScrollRegion.y= menu_pos_list[tmp+1]-2;
	LD	HL,menu_pos_list+1
	PUSH	IY
	POP	BC
; 125.	         
; 126.	             SetBackgdColor(Color_BULE_Scroll_def);
	CALL	LWRD ?0042
; 127.	             Scroll_PlayList(Longnamebuf, TRUE,string_id,&PlayListScrollRegion);
	PUSH	HL
	LD	L,(IX+16)
	PUSH	HL
	CALL	LWRD ?0044
	POP	HL
	POP	HL
; 128.	             if(strlen(Longnamebuf)<20)
	CALL	LWRD ?0052
	JR	NC,?0020
?0019:
; 129.	                 ScrollFlag=0;
	XOR	A
	JR	?0037
; 130.	             else
?0020:
; 131.	                 ScrollFlag=1;                     
	LD	A,1
?0037:
	JP	LWRD ?0038
?0021:
; 132.	  }
; 133.	
; 134.	
; 135.	 else  //if(Old_active==active)               刷新一页屏
?0018:
; 136.	
; 137.	  {
; 138.	    ResShowPic(MENUTWO,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,109
	CALL	LWRD ?0046
	POP	AF
; 139.	    ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,45
	CALL	LWRD ?0046
	POP	AF
; 140.	    SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0053
; 141.	    //ResShowMultiString( VSTOPM1,string_id, 3, 110);
; 142.	    ResShowPic(MDIR, 10, POSITION_MENU6-4);
	LD	C,115
	PUSH	BC
	LD	C,10
	LD	DE,91
	CALL	LWRD ?0046
	POP	AF
; 143.	    SetTextPos(menu_str_x_def, POSITION_MENU6-2);
	LD	C,117
	CALL	LWRD ?0049
; 144.	    SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0053
; 145.	            PutS(PlayListFileName, 8);              //显示列表名
	LD	C,8
	LD	DE,PlayListFileName
	CALL	LWRD PutS
; 146.	      for(i=top;i<=bottom;i++)
	LD	C,(IX+2)
	LD	(IX-2),C
	LD	(IX-1),0
?0024:
	LD	L,(IX+4)
	LD	H,0
	LD	C,(IX-2)
	LD	B,(IX-1)
	CALL	LWRD ?SS_CMP_L02
	LD	C,(IX+2)
	LD	B,H
	JP	C,?0023
?0025:
; 147.	      {
; 148.	      ResShowPic(MFILE,explorer_pic_x_def,menu_pos_list[i-top+1]-1);     
	LD	L,(IX-2)
	LD	H,(IX-1)
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,menu_pos_list+1
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0047
	POP	AF
; 149.	       if(i==active)
	LD	C,(IX+12)
	LD	B,0
	LD	L,(IX-2)
	LD	H,(IX-1)
	AND	A
	SBC	HL,BC
	JR	NZ,?0028
?0027:
; 150.	         {
; 151.	            ResShowPic(FILEBCK,  explorer_str_x_def-2, menu_pos_list[i-top+1]-4);
	LD	C,(IX+2)
	LD	L,(IX-2)
	LD	H,(IX-1)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,menu_pos_list+1
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,252
	LD	C,A
	PUSH	BC
	LD	C,30
	LD	DE,50
	CALL	LWRD ?0046
	POP	AF
; 152.	            ResShowPic(DHTHK,194, menu_pos_list[i-top+1]+6);
	LD	C,(IX+2)
	LD	B,0
	LD	L,(IX-2)
	LD	H,(IX-1)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,menu_pos_list+1
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,6
	LD	C,A
	PUSH	BC
	LD	C,194
	LD	DE,46
	CALL	LWRD ?0046
	POP	AF
; 153.	            SetPenColor(Color_WHITE_def);
	CALL	LWRD ?0053
; 154.	            continue;
	JR	?0026
?0028:
; 155.	         }
; 156.	       else
; 157.	         SetPenColor(Color_WHITE_def);
	LD	C,B
	CALL	LWRD ?0054
; 158.	      output8(0x4e,input8(0x4e) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 159.	      read_idm_data_playlist(Longnamebuf,i-top);  
	LD	C,(IX+2)
	LD	B,0
	LD	L,(IX-2)
	LD	H,(IX-1)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	E,(IX+14)
	LD	D,(IX+15)
	LD	A,BYTE3 read_idm_data_playlist
	LD	HL,LWRD read_idm_data_playlist
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 160.	      SetTextPos(explorer_str_x_def, menu_pos_list[i-top+1]-2);
	LD	C,(IX+2)
	LD	B,0
	LD	L,(IX-2)
	LD	H,(IX-1)
	AND	A
	SBC	HL,BC
	LD	BC,menu_pos_list+1
	CALL	LWRD ?0048
; 161.	      PutS(Longnamebuf,-1);
	CALL	LWRD ?0051
?0026:
	INC	(IX-2)
	JR	NZ,?0036
	INC	(IX-1)
?0036:
	JP	LWRD ?0024
?0023:
; 162.	     }
; 163.	             read_idm_data_playlist(Longnamebuf,active-top);
	LD	L,(IX+12)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	E,(IX+14)
	LD	D,(IX+15)
	LD	A,BYTE3 read_idm_data_playlist
	LD	HL,LWRD read_idm_data_playlist
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 164.	             PlayListScrollRegion.y= menu_pos_list[active-top+1]-2;
	LD	C,(IX+2)
	LD	B,0
	LD	H,B
	LD	L,(IX+12)
	AND	A
	SBC	HL,BC
	LD	BC,menu_pos_list+1
; 165.	             SetBackgdColor(Color_BULE_Scroll_def);
	CALL	LWRD ?0042
; 166.	             Scroll_PlayList(Longnamebuf, TRUE,string_id,&PlayListScrollRegion);
	PUSH	HL
	LD	L,(IX+16)
	PUSH	HL
	CALL	LWRD ?0044
	POP	HL
	POP	HL
; 167.	             if(strlen(Longnamebuf)<20)
	CALL	LWRD ?0052
	JR	NC,?0030
?0029:
; 168.	                 ScrollFlag=0;
	XOR	A
	JR	?0038
; 169.	             else
?0030:
; 170.	                 ScrollFlag=1;           
	LD	A,1
?0038:
	LD	(ScrollFlag),A
?0031:
?0022:
?0016:
; 171.	  } //else
; 172.	    }
; 173.	// SetAsciiFont(FONT_TYPE_SMALL);
; 174.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0042:
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,254
	LD	(PlayListScrollRegion+1),A
?0041:
	LD	BC,0
	LD	DE,31
	CALL	LWRD SetBackgdColor
	LD	HL,PlayListScrollRegion
	RET
?0044:
	LD	C,1
?0043:
	LD	E,(IX+14)
	LD	D,(IX+15)
	LD	A,BYTE3 Scroll_PlayList
	LD	HL,LWRD Scroll_PlayList
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0045:
	CALL	LWRD ?UC_MOD_L01
	LD	C,A
	LD	B,0
	PUSH	BC
	POP	IY
	LD	HL,menu_pos_list+1
	ADD	HL,BC
	LD	A,(HL)
	RET
?0047:
	LD	C,13
	LD	DE,121
?0046:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0048:
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,254
	LD	C,A
?0049:
	LD	E,32
	JP	LWRD SetTextPos
?0050:
	PUSH	IY
	POP	BC
	LD	E,(IX+14)
	LD	D,(IX+15)
	LD	A,BYTE3 read_idm_data_playlist
	LD	HL,LWRD read_idm_data_playlist
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
	RET
?0051:
	LD	C,255
	LD	E,(IX+14)
	LD	D,(IX+15)
	JP	LWRD PutS
?0052:
	LD	L,(IX+14)
	LD	H,(IX+15)
	CALL	LWRD ?STRLEN_L11
	LD	BC,20
	AND	A
	SBC	HL,BC
	RET
?0053:
	LD	BC,0
?0054:
	LD	DE,65535
	JP	LWRD SetPenColor
; 175.	
	RSEG	IDM_COM_FSL_D
com_fname:
	DEFS	2560
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -