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

📄 ui_playlist.s01

📁 MP3 整个 SDK
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_playlist(17)
	RSEG	COM_PLAYLIST(0)
	RSEG	UDATA0(0)
	EXTERN	PlaylistClassTotal
	EXTERN	PlaylistCurClass
	EXTERN	ScrollFlag
	EXTERN	SetSWAPAddress
	EXTERN	ShowPlaylist
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	PUBLIC	cur_grouplist
	EXTERN	fselGetLocation
	EXTERN	fselGetNextGroup
	EXTERN	fselGetPrevGroup
	EXTERN	fselSetLocation
	PUBLIC	playlist_active
	EXTERN	reinit_idm_buf_playlist
	PUBLIC	ui_playlist
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?US_DIV_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?ENT_PARM_DIRECT_L09
	EXTERN	?ENT_AUTO_DIRECT_L09
	EXTERN	?LEAVE_DIRECT_L09
	EXTERN	?MEMSET_L11
	RSEG	COM_PLAYLIST
ui_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_playlist.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.	#include "filesys.h"
; 17.	
; 18.	WORD   playlist_active,cur_grouplist;    //目录总数,文件总数和浏览项数,浏览活动项
; 19.	extern  WORD    PlaylistClassTotal;
; 20.	extern  WORD    PlaylistCurClass;
; 21.	extern BYTE ScrollFlag;
; 22.	
; 23.	#pragma memory=dataseg(RCODE)
; 24.	#pragma memory=default
; 25.	void ShowPlaylist(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,char *Longnamebuf,BYTE string_id,BYTE ScrollMode);
; 26.	void reinit_idm_buf_playlist(int top, int bottom, char *Longnamebuf, BYTE string_id,BOOL direction);
; 27.	
; 28.	static void DmaCpy(WORD descadd, BYTE descpg, WORD srcadd, BYTE srcpg, WORD Length);
; 29.	
; 30.	/********************************************************************************
; 31.	* Description : select the directory.
; 32.	*
; 33.	* Arguments  :
; 34.	*            location: get thedisk type
; 35.	*            type : show file kind
; 36.	*            string_id: language type
; 37.	* Returns     :
; 38.	*            other:    Successful
; 39.	*            0:    Fail, detail information in fselError
; 40.	* Notes       :  only select the valid directory
; 41.	*
; 42.	********************************************************************************/
; 43.	
; 44.	int ui_playlist(file_location_t *location, BYTE type,BYTE string_id)
; 45.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-10
	PUSH	IY
; 46.	    BYTE i, pagebak,TimeoutCnt;
; 47.	    char * Strname;
; 48.	    BYTE  result;        
; 49.	    char key;
; 50.	    int top, bottom;  
; 51.	
; 52.	    if ( !fselSetLocation(location) )
	CALL	LWRD ?0072
	INC	L
	DEC	L
	JR	Z,?0070
?0002:
; 53.	    {
; 54.	        return RESULT_IGNORE;
; 55.	    }
?0003:
; 56.	
; 57.	    if (PlaylistClassTotal == 0)
	LD	HL,(PlaylistClassTotal)
	LD	A,L
	OR	H
	JR	NZ,?0005
?0004:
; 58.	        return RESULT_IGNORE;
?0070:
	LD	HL,52
	JP	LWRD ?0064
?0005:
; 59.	
; 60.	////////////////////////////////换页//////////////////////////////////////
; 61.	    DmaCpy( 0x4000, 0x06, 0x4000, 0x07, 0x2000-1 );     //备份第7页0x4000~0x6000的8K代码到第6页0x4000~0x6000
	LD	HL,8191
	PUSH	HL
	LD	C,7
	PUSH	BC
	LD	HL,16384
	PUSH	HL
	LD	C,6
	EX	DE,HL
	CALL	LWRD DmaCpy
	POP	HL
	POP	HL
	POP	HL
; 62.	    i = input8(0x05);
	IN	A,(5)
	LD	(IX-2),A
; 63.	    output8(0x05, 0xf6);
	LD	A,246
	OUT	(5),A
; 64.	    pagebak = SetSWAPAddress(0x06);
	LD	E,6
	CALL	LWRD SetSWAPAddress
	LD	(IX-3),A
; 65.	    Strname = (char *)STRNAMEBUF;
	LD	(IX-8),0
	LD	(IX-7),112
; 66.	////////////////////////////////换页//////////////////////////////////////
; 67.	
; 68.	    memset(Strname, 0x00, LISTNAME_DISP_LENNGTH+1);
	LD	BC,513
	LD	DE,28672
	LD	L,E
	CALL	LWRD ?MEMSET_L11
?0007:
; 69.	    while(PlaylistCurClass>1)       //返回根目录
	LD	BC,(PlaylistCurClass)
	LD	HL,1
	AND	A
	SBC	HL,BC
	JR	NC,?0006
?0008:
; 70.	    {
; 71.	     fselGetPrevGroup(Strname); 
	LD	E,(IX-8)
	LD	D,(IX-7)
	LD	A,BYTE3 fselGetPrevGroup
	LD	HL,LWRD fselGetPrevGroup
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	JR	?0007
?0006:
; 72.	    }   
; 73.	    top=0;
; 74.	    bottom=4;
; 75.	    playlist_active=0;
	LD	HL,0
	LD	(playlist_active),HL
; 76.	    cur_grouplist=0;
	LD	(cur_grouplist),HL
; 77.	    if(PlaylistClassTotal<5)
	XOR	A
	LD	(IX-10),A
	LD	(IX-9),A
	LD	IY,4
	LD	BC,5
	LD	HL,(PlaylistClassTotal)
	SBC	HL,BC
	JR	NC,?0010
?0009:
; 78.	       bottom=PlaylistClassTotal-1;
	LD	HL,65535
	LD	BC,(PlaylistClassTotal)
	ADD	HL,BC
	PUSH	HL
	POP	IY
?0010:
; 79.	    FSELGetLocation(location);          //保存location
	CALL	LWRD ?0071
; 80.	    reinit_idm_buf_playlist(top, bottom, Strname, string_id,TRUE);
	LD	C,1
	PUSH	BC
	LD	L,(IX+10)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	CALL	LWRD ?0073
	POP	HL
	POP	HL
	POP	HL
; 81.	    FSELSetLocation(location);
	CALL	LWRD ?0072
; 82.	    ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,1);
	LD	C,1
	PUSH	BC
	LD	L,(IX+10)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	LD	A,(playlist_active)
	LD	C,A
	PUSH	BC
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0074
	POP	HL
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0012:
; 83.	    while(ap_get_message()!=0) {;}      //丢掉多余按键
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0012
?0013:
?0011:
; 84.	
; 85.	    ap_message_init(NULL);
	LD	E,A
	LD	D,A
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0015:
; 86.	    while(1)
; 87.	    {
; 88.	        //handle msg
; 89.	        key = ap_get_message();
	CALL	LWRD ap_get_message
; 90.	        switch(key)
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	11
	DEFB	5
	DEFB	6
	DEFB	28
	DEFB	30
	DEFB	33
	DEFB	48
	DEFB	55
	DEFB	56
	DEFB	69
	DEFB	70
	DEFB	144
	DEFW	?0056
	DEFW	?0040
	DEFW	?0018
	DEFW	?0029
	DEFW	?0015
	DEFW	?0051
	DEFW	?0015
	DEFW	?0038
	DEFW	?0045
	DEFW	?0015
	DEFW	?0018
	DEFW	?0029
?0018:
; 91.	        {
; 92.	
; 93.	        case AP_KEY_NEXT:
; 94.	        case AP_KEY_NEXT | AP_KEY_HOLD:
; 95.	
; 96.	          if(playlist_active<PlaylistClassTotal -1 )  //当前项小于总列表数
	LD	HL,65535
	LD	BC,(PlaylistClassTotal)
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,(playlist_active)
	AND	A
	SBC	HL,BC
	JP	NC,?0023
?0019:
; 97.	            {
; 98.	
; 99.	             fselGetNextGroup(Strname);
	LD	E,(IX-8)
	LD	D,(IX-7)
	LD	A,BYTE3 fselGetNextGroup
	LD	HL,LWRD fselGetNextGroup
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 100.	             playlist_active++;
	LD	HL,(playlist_active)
	INC	HL
; 101.	                 if(playlist_active/5==cur_grouplist)
	CALL	LWRD ?0076
	JR	NZ,?0022
?0021:
; 102.	                   {
; 103.	                              ShowPlaylist(top,bottom,playlist_active-1,playlist_active,Strname,string_id,1);
	LD	C,1
	PUSH	BC
	LD	L,(IX+10)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	LD	A,(playlist_active)
	LD	C,A
	PUSH	BC
	ADD	A,255
	JR	?0068
; 104.	                   }
; 105.	                 else
?0022:
; 106.	                    {
; 107.	                      cur_grouplist=cur_grouplist+1;
	LD	HL,1
; 108.	                      top=(playlist_active/5)*5; //顶的序号
	CALL	LWRD ?0075
; 109.	                      bottom=top+4;                  //底的序号
; 110.	                      if(bottom>(PlaylistClassTotal-1))
	LD	HL,65535
	LD	BC,(PlaylistClassTotal)
	ADD	HL,BC
	PUSH	IY
	POP	BC
	AND	A
	SBC	HL,BC
	JR	NC,?0025
?0024:
; 111.	                        bottom=PlaylistClassTotal-1;
	LD	HL,65535
	LD	BC,(PlaylistClassTotal)
	ADD	HL,BC
	PUSH	HL
	POP	IY
?0025:
; 112.	                      FSELGetLocation(location);
	CALL	LWRD ?0071
; 113.	                      reinit_idm_buf_playlist(top, bottom, Strname, string_id,TRUE);       //换页要重新初始化IDM数据
	LD	C,1
	PUSH	BC
	LD	L,(IX+10)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	CALL	LWRD ?0073
	POP	HL
	POP	HL
	POP	HL
; 114.	                      FSELSetLocation(location);
	CALL	LWRD ?0072
; 115.	                              ShowPlaylist(top,bottom,playlist_active,playlist_active,Strname,string_id,1);
	LD	C,1
	PUSH	BC
	LD	L,(IX+10)
	PUSH	HL
	LD	L,(IX-8)
	LD	H,(IX-7)
	PUSH	HL
	LD	A,(playlist_active)
	LD	C,A
	PUSH	BC
?0068:
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0074
	POP	HL
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0023:
?0020:
?0027:
; 116.	                    }
; 117.	
; 118.	                 }                
; 119.	            while(ap_get_message() != 0);
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0023
?0028:
; 120.	            break;
?0026:
	JP	LWRD ?0015
?0029:
; 121.	        case AP_KEY_PREV:
; 122.	        case AP_KEY_PREV | AP_KEY_HOLD :
; 123.	           if(playlist_active >0)
	LD	HL,(playlist_active)
	LD	A,L
	OR	H
	JR	Z,?0034
?0030:
; 124.	              {
; 125.	                 fselGetPrevGroup(Strname);
	LD	E,(IX-8)
	LD	D,(IX-7)
	LD	A,BYTE3 fselGetPrevGroup
	LD	HL,LWRD fselGetPrevGroup
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 126.	                  playlist_active--;

⌨️ 快捷键说明

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