bookmarklst.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 767 行 · 第 1/2 页

S01
767
字号
	NAME	bookmarklst(17)
	RSEG	BOOKMARKLST(0)
	RSEG	BOOKMARKLST_C(0)
	RSEG	BOOKMARKLST_D(0)
	PUBLIC	ActiveBookMark
	PUBLIC	BookMarkBuff
	EXTERN	DeleteBookMarkItem
	PUBLIC	GetBooKMarkItem
	EXTERN	GetBookMark
	EXTERN	PutS
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	PUBLIC	SelIndexToArryIndex
	EXTERN	SetPenColor
	EXTERN	SetTextOutMode
	EXTERN	SetTextPos
	PUBLIC	ShowBookMarkList
	PUBLIC	TimeInforation
	PUBLIC	UI_BookMarkMenu
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_sleep
	EXTERN	g_Openparam
	EXTERN	g_music_vars
	EXTERN	itoa_2
	EXTERN	main_ResShowPic
	EXTERN	menu_pos_list
	EXTERN	menulist_bck_pic
	EXTERN	musicpSendCommand
	PUBLIC	yesornomenu
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_DIV_L02
	EXTERN	?SS_MOD_L02
	EXTERN	?S_MUL_L02
	EXTERN	?SS_CMP_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_PARM_DIRECT_L09
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	BOOKMARKLST
SelIndexToArryIndex:
; 1.	#include "actos.h"
; 2.	#include "ap_common.h"
; 3.	#include "ap_music.h"
; 4.	#include <MusicBookMark.h>
; 5.	
; 6.	extern music_vars_t g_music_vars;//本AP的公共变量
; 7.	extern Open_param_t g_Openparam;
; 8.	
; 9.	#pragma memory=constseg(BOOKMARKLST_C)
; 10.	const WORD yesornomenu[3] ={MEB2,MEB4,MSTOP5};
; 11.	#pragma memory=default
; 12.	
; 13.	#pragma memory=dataseg(BOOKMARKLST_D)
; 14.	STRU_MusicBookMark BookMarkBuff;
; 15.	#pragma memory=default
; 16.	
; 17.	#pragma codeseg(BOOKMARKLST)
; 18.	
; 19.	//extern const char file_pos[6];    //zxs add
; 20.	//extern const WORD file_bck_pic[6];
; 21.	extern const char menu_pos_list[];
; 22.	extern const WORD menulist_bck_pic[];  
; 23.	int SelIndexToArryIndex(int index)
; 24.	{
	PUSH	BC
	PUSH	IY
	PUSH	IX
	PUSH	DE
	POP	IX
; 25.	    int StartIndex;
; 26.	
; 27.	    if(index>=BookMarkBuff.RecordCount)
	LD	BC,(BookMarkBuff+2)
	EX	DE,HL
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0003
?0002:
; 28.	        return 0xFFFF;
	LD	HL,65535
	JR	?0009
?0003:
; 29.	
; 30.	    if(BookMarkBuff.CurRecordNO>=BookMarkBuff.RecordCount)
	LD	HL,(BookMarkBuff)
	CALL	LWRD ?SS_CMP_L02
	JR	NC,?0067
?0004:
; 31.	        StartIndex=BookMarkBuff.CurRecordNO-BookMarkBuff.RecordCount;
; 32.	    else
?0005:
; 33.	        StartIndex=MUSICBOOKMARK_MAX-(BookMarkBuff.RecordCount-BookMarkBuff.CurRecordNO);
	LD	L,C
	LD	H,B
	LD	BC,(BookMarkBuff)
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,12
?0067:
	AND	A
	SBC	HL,BC
	LD	B,H
	LD	C,L
?0006:
; 34.	    index=StartIndex+index;
	ADD	IX,BC
; 35.	    if(index>=MUSICBOOKMARK_MAX)
	LD	BC,32780
	PUSH	IX
	POP	HL
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0008
?0007:
; 36.	        index-=MUSICBOOKMARK_MAX;
	LD	BC,65524
	ADD	IX,BC
?0008:
; 37.	
; 38.	    return index;
	PUSH	IX
	POP	HL
; 39.	}
?0009:
	POP	IX
	POP	IY
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
TimeInforation:
; 40.	
; 41.	void TimeInforation(char *dspbuff,time_t *bookmarktime)
; 42.	{
	PUSH	IY
	PUSH	IX
	PUSH	DE
	POP	IX
	PUSH	BC
	POP	IY
; 43.	    
; 44.	    dspbuff[0]='[';
	EX	DE,HL
	LD	(HL),91
; 45.	    itoa_2(bookmarktime->hour,&dspbuff[1]);
	PUSH	IX
	POP	BC
	INC	BC
	LD	E,(IY+0)
	CALL	LWRD ?0075
; 46.	    dspbuff[3]=':';
	LD	(IX+3),58
; 47.	    itoa_2(bookmarktime->minute,&dspbuff[4]);
	LD	HL,4
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	E,(IY+1)
	CALL	LWRD ?0075
; 48.	    dspbuff[6]=':';
	LD	(IX+6),58
; 49.	    itoa_2(bookmarktime->second,&dspbuff[7]);
	LD	HL,7
	PUSH	IX
	POP	BC
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	E,(IY+2)
	CALL	LWRD ?0075
; 50.	    dspbuff[9]=']';
	LD	(IX+9),93
; 51.	    dspbuff[10]=0x00;
	LD	(IX+10),0
; 52.	}
	POP	IX
	POP	IY
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0075:
	LD	A,BYTE3 itoa_2
	LD	HL,LWRD itoa_2
	JP	LWRD ?BANK_CALL_DIRECT_L08
GetBooKMarkItem:
; 53.	
; 54.	BOOL GetBooKMarkItem(char *iteminfor,int index)
; 55.	{
	PUSH	IX
	PUSH	DE
; 56.	    index=SelIndexToArryIndex(index);
	LD	E,C
	LD	D,B
	LD	A,BYTE3 SelIndexToArryIndex
	LD	HL,LWRD SelIndexToArryIndex
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
; 57.	    if(index==0xFFFF)
	LD	A,L
	AND	H
	INC	A
	JR	NZ,?0011
?0010:
; 58.	        return FALSE;
	LD	L,A
	JR	?0012
?0011:
; 59.	    TimeInforation(iteminfor,&(BookMarkBuff.MusicBreakPoint[index].BKPTTime));
	LD	HL,BookMarkBuff+31
	LD	BC,30
	PUSH	IX
	POP	DE
	CALL	LWRD ?S_MUL_L02
	ADD	HL,DE
	LD	C,L
	LD	B,H
	LD	HL,0
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	A,BYTE3 TimeInforation
	LD	HL,LWRD TimeInforation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 60.	
; 61.	    return TRUE;
	LD	L,1
; 62.	}
?0012:
	POP	AF
	POP	IX
	JP	LWRD ?BANK_FAST_LEAVE_L08
ShowBookMarkList:
; 63.	
; 64.	
; 65.	/********************************************************************************
; 66.	* Description : show the bookmark list
; 67.	*
; 68.	* Arguments  :
; 69.	*            Old_active: the last selected
; 70.	*            active: current selected
; 71.	*            string_id: language id
; 72.	* Returns     :
; 73.	*            nane
; 74.	* Notes       :
; 75.	*
; 76.	********************************************************************************/
; 77.	void ShowBookMarkList(int Old_active,int active,BYTE string_id,BYTE mode)
; 78.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65520
	PUSH	IY
	PUSH	BC
	POP	IY
; 79.	    BYTE ItemCount;
; 80.	    BYTE pPageHead;
; 81.	    BYTE pRow;
; 82.	    BYTE ActiveRow;
; 83.	    char BmkItemInfor[11];
; 84.	        
; 85.	//    SetAsciiFont(FONT_TYPE_SMALL);
; 86.	    SetTextOutMode(1);
	LD	E,1
	CALL	LWRD SetTextOutMode
; 87.	
; 88.	    if((active/6)!=(Old_active/6))        //not the same page
	LD	BC,6
	PUSH	IY
	POP	DE
	CALL	LWRD ?SS_DIV_L02
	PUSH	DE
	LD	E,(IX+2)
	LD	D,(IX+3)
	CALL	LWRD ?SS_DIV_L02
	EX	DE,HL
	POP	DE
	AND	A
	SBC	HL,DE
	JR	Z,?0014
?0013:
; 89.	        Old_active=active;
	PUSH	IY
	POP	HL
	LD	(IX+2),L
	LD	(IX+3),H
?0014:
; 90.	
; 91.	     if(Old_active!=active)
	PUSH	IY
	POP	HL
	LD	C,(IX+2)
	LD	B,(IX+3)
	AND	A
	SBC	HL,BC
	JP	Z,?0016
?0015:
; 92.	     {
; 93.	     //清除旧的活动列表项
; 94.	         pRow=Old_active%6;
	LD	BC,6
	LD	E,(IX+2)
	LD	D,(IX+3)
	CALL	LWRD ?0076
; 95.	         ResShowPic(menulist_bck_pic[pRow], menu_bck_x_def, menu_pos_list[pRow]-4);
	PUSH	BC
	LD	C,9
	LD	L,E
	LD	H,B
	ADD	HL,HL
	LD	DE,menulist_bck_pic
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD ?0077
	POP	AF
; 96.	         ResShowPic(DHT,194,8);
	LD	C,8
	PUSH	BC
	LD	C,194
	LD	DE,38
	CALL	LWRD ?0077
	POP	AF
; 97.	         ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[pRow]-1);
	LD	C,(IX-16)
	LD	B,0
	LD	HL,menu_pos_list
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0078
	POP	AF
; 98.	         SetTextPos(explorer_str_x_def, menu_pos_list[pRow]-2);
	CALL	LWRD ?0079
; 99.	         GetBooKMarkItem(BmkItemInfor,Old_active);
	LD	C,(IX+2)
	LD	B,(IX+3)
	LD	HL,6
	ADD	HL,SP
	CALL	LWRD ?0080
; 100.	         SetPenColor(Color_WHITE_def);                          //取列表名
; 101.	         PutS(BmkItemInfor,-1);
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD PutS
; 102.	     //显示当前活动项
; 103.	         pRow=active%6;
	LD	BC,6
	PUSH	IY
	POP	DE
	CALL	LWRD ?0076
; 104.	         ResShowPic(FILEBCK, explorer_str_x_def-2, menu_pos_list[pRow]-4);
	PUSH	BC
	LD	C,30
	LD	E,44
	CALL	LWRD ?0077
	POP	AF
; 105.	         ResShowPic(MFILE, explorer_pic_x_def, menu_pos_list[pRow]-1);
	LD	C,(IX-16)
	LD	B,0
	LD	HL,menu_pos_list
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0078
	POP	AF
; 106.	         ResShowPic(DHTHK,194, menu_pos_list[pRow]+5);
	LD	C,(IX-16)
	LD	B,0
	LD	HL,menu_pos_list
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,5
	LD	C,A
	PUSH	BC

⌨️ 快捷键说明

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