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

📄 sub_display.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
字号:
	NAME	sub_display(17)
	RSEG	AP_SUB_DIS(0)
	RSEG	CSTR(0)
	RSEG	APC_SUB_DIS(0)
	PUBLIC	DisplayErrMsg
	EXTERN	GetBattery
	EXTERN	GetDCStatus
	PUBLIC	LOOP_PIC
	EXTERN	PlayStatus
	EXTERN	PutS
	PUBLIC	RefreshMainScreen
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetAsciiFont
	EXTERN	SetBackgdColor
	EXTERN	SetPAVolume
	EXTERN	SetPenColor
	EXTERN	SetTextPos
	EXTERN	ShowNowTime
	PUBLIC	Show_MusicType
	EXTERN	ap_get_message
	EXTERN	ap_sleep
	EXTERN	g_BatteryType
	EXTERN	g_TagInfoBuf
	EXTERN	g_amv_vars
	EXTERN	g_comval
	EXTERN	g_langid
	EXTERN	g_musicamount
	EXTERN	g_musicsequence
	EXTERN	g_rSetPlayStatus
	EXTERN	g_volcounter
	EXTERN	itoa_3
	EXTERN	main_ResShowPic
	EXTERN	need_draw
	PUBLIC	show_volume
	EXTERN	slider
	EXTERN	temp_buffer
	EXTERN	ui_auto_update
	EXTERN	ui_show_a
	EXTERN	ui_show_batt
	PUBLIC	ui_show_h
	EXTERN	ui_show_msg
	PUBLIC	ui_show_vol
	EXTERN	ui_slider
	PUBLIC	vol_callback
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCAT_L11
	RSEG	AP_SUB_DIS
RefreshMainScreen:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        This program demostrates how to build an AP
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.
; 7.	*
; 8.	*  $Id: sub_display.c,v 1.1.1.1 2006/05/22 03:24:02 selina Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	#include "ap_amv.h"
; 12.	
; 13.	#pragma codeseg(AP_SUB_DIS)
; 14.	
; 15.	#pragma memory=constseg(APC_SUB_DIS)
; 16.	const WORD LOOP_PIC[7] =
; 17.	{
; 18.	    MLOOP1, MLOOP2, MLOOP3, MLOOP4, MLOOP5, MLOOP6, MLOOP7
; 19.	};
; 20.	/*
; 21.	const WORD num_id[10] = {TVNUM0,TVNUM1,TVNUM2,TVNUM3,TVNUM4,TVNUM5,TVNUM6,TVNUM7,TVNUM8,TVNUM9};    //系统时间&音量显示
; 22.	const WORD songnum_id[10]= {MNUM0,MNUM1,MNUM2,MNUM3,MNUM4,MNUM5,
; 23.	                            MNUM6,MNUM7,MNUM8,MNUM9};     //音乐曲目
; 24.	*/
; 25.	#pragma memory=default
; 26.	
; 27.	extern char g_volcounter;
; 28.	extern bool     g_rSetPlayStatus;
; 29.	/*
; 30.	********************************************************************************
; 31.	*           void RefreshMainScreen( void )
; 32.	*
; 33.	* Description : 主显示的刷新函数,只有有需要时,才调用此函数
; 34.	*
; 35.	* Arguments   : void
; 36.	*
; 37.	* Returns     : void
; 38.	*
; 39.	* Notes       :
; 40.	*
; 41.	********************************************************************************
; 42.	*/
; 43.	void ui_show_vol(BYTE volume);
; 44.	void ui_show_h(const char *string);
; 45.	void RefreshMainScreen( void )
; 46.	{
	PUSH	BC
	PUSH	DE
; 47.	        int result;
; 48.	        output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 49.	                                
; 50.	        if(PlayStatus != PlaySta)
	LD	A,(PlayStatus)
	DEC	A
	DEC	A
	JR	Z,?0005
?0002:
; 51.	                {
; 52.	                        if(g_volcounter > 0)
	LD	A,(g_volcounter)
	OR	A
	JR	Z,?0005
?0004:
; 53.	                        {
; 54.	                                g_volcounter = 0;
	XOR	A
	LD	(g_volcounter),A
; 55.	                                g_rSetPlayStatus = TRUE;
	LD	A,1
	LD	(g_rSetPlayStatus),A
?0005:
?0003:
; 56.	                        }
; 57.	                }
; 58.	                                
; 59.	        ResShowPic(BACKMOV, POS_BG, POSY_BG);
	LD	C,0
	PUSH	BC
	LD	DE,11
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 60.	        
; 61.	        SetPenColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
; 62.	                SetBackgdColor(0x0000df1c);
	LD	BC,0
	LD	DE,57116
	CALL	LWRD SetBackgdColor
; 63.	                ResShowMultiString(SMOVIE, g_comval.langid, 255, 1);
	LD	C,1
	PUSH	BC
	LD	C,255
	PUSH	BC
	LD	BC,(g_comval+12)
	LD	DE,387
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 64.	                SetBackgdColor(Color_MENU_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
; 65.	        
; 66.	        /*
; 67.	        SetTextPos(POS_DIRNAME, POSY_DIRNAME);  
; 68.	        //main_ResShowPic(DIRBCK,36,78);
; 69.	        main_ResShowPic(ADIRBCK,25,140); 
; 70.	        SetTextOutMode(1);       //设字体透明
; 71.	        SetPenColor(Color_WHITE_def);
; 72.	        if(g_amv_vars.location.disk=='H')
; 73.	           main_ResShowPic(CARDDISK,194,140); 
; 74.	        PutS(dir_name, -1);
; 75.	        SetTextOutMode(0);                                             
; 76.	        */
; 77.	        
; 78.	        ui_show_vol(g_amv_vars.volume);
	LD	DE,(g_amv_vars+2)
	LD	A,BYTE3 ui_show_vol
	LD	HL,LWRD ui_show_vol
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 79.	
; 80.	        /*
; 81.	        //SetBackgdColor(Color_MUSIC_def);
; 82.	        if (g_comval.EarProtect_flag)
; 83.	        {
; 84.	           main_ResShowPic(EARLOGO, 0, 162);
; 85.	        }
; 86.	        Show_MusicType();
; 87.	        Show_Bitrate();
; 88.	        */
; 89.	        
; 90.	        ResShowPic(LOOP_PIC[g_amv_vars.repeat_mode], 142,22);
	LD	C,22
	PUSH	BC
	LD	C,142
	LD	HL,(g_amv_vars+3)
	LD	H,0
	ADD	HL,HL
	LD	DE,LOOP_PIC
	ADD	HL,DE
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 91.	
; 92.	       //show file sequence and total file
; 93.	        itoa_3(g_musicsequence, & temp_buffer[0]);
	LD	BC,temp_buffer
	LD	DE,(g_musicsequence)
	LD	D,0
	LD	A,BYTE3 itoa_3
	LD	HL,LWRD itoa_3
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 94.	                                strcat(temp_buffer,"/");
	LD	DE,?0006
	LD	HL,temp_buffer
	CALL	LWRD ?STRCAT_L11
; 95.	        itoa_3(g_musicamount, & temp_buffer[4]);
	LD	BC,temp_buffer+4
	LD	DE,(g_musicamount)
	LD	D,0
	LD	A,BYTE3 itoa_3
	LD	HL,LWRD itoa_3
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 96.	        ui_show_h(temp_buffer);
	LD	DE,temp_buffer
	LD	A,BYTE3 ui_show_h
	LD	HL,LWRD ui_show_h
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 97.	    
; 98.	                //show backtime and total time
; 99.	        ShowNowTime(FALSE);
	LD	E,0
	LD	A,BYTE3 ShowNowTime
	LD	HL,LWRD ShowNowTime
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 100.	        
; 101.	        if(PlayStatus == PauseSta)
	LD	A,(PlayStatus)
	DEC	A
	JR	Z,?0011
?0007:
; 102.	                                        main_ResShowPic(PAUSEICN,5,3);
?0008:
; 103.	                                else if(PlayStatus == PlaySta)
	LD	A,(PlayStatus)
	DEC	A
	DEC	A
	JR	NZ,?0011
?0010:
; 104.	                                        main_ResShowPic(PLAYICN,5,3);
	LD	C,3
	PUSH	BC
	LD	C,5
	LD	DE,223
	JR	?0028
; 105.	                                else
?0011:
; 106.	                                        main_ResShowPic(PAUSEICN/*STOPICN*/,5,3);
	LD	C,3
	PUSH	BC
	LD	C,5
	LD	DE,222
?0028:
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0012:
?0009:
; 107.	                          
; 108.	        ui_show_batt( GetBattery(), g_BatteryType,0);
	LD	C,0
	PUSH	BC
	LD	BC,(g_BatteryType)
	CALL	LWRD GetBattery
	LD	E,A
	LD	D,0
	LD	A,BYTE3 ui_show_batt
	LD	HL,LWRD ui_show_batt
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
; 109.	        ///SetTextOutMode(1);       //设字体透明
; 110.	        SetPenColor(Color_BLACK_def);
	CALL	LWRD ?0030
; 111.	        SetBackgdColor(Color_MENU_def);
; 112.	        SetTextPos(scrollregionx_def, scrollregiony_def); 
	LD	C,45
	LD	E,48
	CALL	LWRD SetTextPos
; 113.	        PutS(g_TagInfoBuf,-1);
	LD	C,255
	LD	DE,g_TagInfoBuf
	CALL	LWRD PutS
; 114.	        /*
; 115.	        SetBackgdColor(Color_BULE1_def);
; 116.	        //ResShowPic(NEXTBCK,29,46);
; 117.	        ResShowPic(ANEXTBCK,35,79);
; 118.	        //SetPenColor(0x7ff);
; 119.	        SetPenColor(0xffe0);  //与屏的设置有关
; 120.	        SetTextPos(POS_FILENAME, POSY_FILENAME);
; 121.	        PutS(g_TagInfoBuf1, -1);//显示下一首信息  
; 122.	        */
; 123.	        return;
; 124.	}
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0030:
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
	RET
Show_MusicType:
; 125.	
; 126.	//-----------显示音乐类型图标-----------
; 127.	void Show_MusicType(void)
; 128.	{
	PUSH	DE
; 129.	        ui_show_a(MAMV);
	LD	DE,163
	LD	A,BYTE3 ui_show_a
	LD	HL,LWRD ui_show_a
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 130.	}
	POP	DE
	JP	LWRD ?BANK_FAST_LEAVE_L08
DisplayErrMsg:
; 131.	
; 132.	
; 133.	//-----------显示错误信息---------------
; 134.	void DisplayErrMsg(int ErrMsg)
; 135.	{
	PUSH	BC
	PUSH	IX
; 136.	    ui_show_msg (ErrMsg, ErrMsg, g_langid);
	LD	BC,(g_langid)
	LD	B,0
	PUSH	BC
	LD	C,E
	LD	B,D
	LD	A,BYTE3 ui_show_msg
	LD	HL,LWRD ui_show_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0014:
; 137.	    while( ap_get_message() != NULL ); //清空消息池
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0014
?0015:
?0013:
; 138.	    ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 139.	    need_draw = TRUE;
	LD	A,1
	LD	(need_draw),A
; 140.	}
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ui_show_vol:
; 141.	void ui_show_vol(BYTE volume)
; 142.	{       /*char id;
	PUSH	BC
	PUSH	DE
; 143.	        char temp[3];
; 144.	        
; 145.	        itoa_2(volume, temp);
; 146.	        id=temp[0]-0x30;
; 147.	        main_ResShowPic(num_id[id],POS_VOl,POSY_VOl);
; 148.	        id=temp[1]-0x30;
; 149.	        main_ResShowPic(num_id[id],POS_VOl+7,POSY_VOl);*/
; 150.	
; 151.	        if(g_volcounter>0)
	LD	A,(g_volcounter)
	OR	A
	JR	Z,?0017
?0016:
; 152.	                                        main_ResShowPic(VOL_00+volume,0,106);
	LD	C,106
	PUSH	BC
	LD	C,0
	LD	D,C
	LD	HL,281
	ADD	HL,DE
	EX	DE,HL
	LD	A,BYTE3 main_ResShowPic
	LD	HL,LWRD main_ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0017:
; 153.	}
	POP	HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
vol_callback:
; 154.	
; 155.	/*
; 156.	********************************************************************************
; 157.	* Description : 音量设置界面
; 158.	*
; 159.	* Arguments   : set_hardware, 是否需要设置硬件
; 160.	*
; 161.	* Returns     :
; 162.	*
; 163.	* Notes       : 播放时调节音量需要设置硬件
; 164.	        停止时调节音量不需要设置硬件
; 165.	*
; 166.	********************************************************************************
; 167.	*/
; 168.	void vol_callback(int value)
; 169.	{
	PUSH	BC
	PUSH	DE
; 170.	    g_amv_vars.volume = (char)value;
	LD	A,E
	LD	(g_amv_vars+2),A
; 171.	
; 172.	    SetPAVolume(g_amv_vars.volume);
	LD	DE,(g_amv_vars+2)
	CALL	LWRD SetPAVolume
; 173.	}
	POP	HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
show_volume:
; 174.	
; 175.	int show_volume(BOOL set_hardware)
; 176.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
; 177.	                int result;
; 178.	                char id;
; 179.	                char temp[3];
; 180.	
; 181.	    slider.value = g_amv_vars.volume;
	LD	BC,(g_amv_vars+2)
	LD	B,0
	LD	(slider+6),BC
; 182.	    slider.max = 31;
	LD	HL,31
	LD	(slider+4),HL
; 183.	    slider.min = 0;
	LD	L,B
	LD	(slider+2),HL
; 184.	    slider.step = 1;       
	INC	HL
	LD	(slider+8),HL
; 185.	    slider.string_id = g_langid; 
	LD	A,(g_langid)
	LD	(slider+10),A
; 186.	    slider.title=CHANGEVO; 
	LD	HL,393
	LD	(slider),HL
; 187.	    ui_auto_update=FALSE;
	XOR	A
	LD	(ui_auto_update),A
; 188.	    if(set_hardware)
	OR	E
	JR	Z,?0019
?0018:
; 189.	    {
; 190.	        result = ui_slider(&slider, vol_callback);
	LD	C,BYTE3 vol_callback
	PUSH	BC
	LD	HL,LWRD vol_callback
	PUSH	HL
	LD	DE,slider
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 191.	    }
; 192.	    else
	JR	?0020
?0019:
; 193.	    {
; 194.	        result = ui_slider(&slider, NULL);
	LD	C,B
	PUSH	BC
	PUSH	BC
	LD	DE,slider
	LD	A,BYTE3 ui_slider
	LD	HL,LWRD ui_slider
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 195.	        g_amv_vars.volume = slider.value;
	LD	A,(slider+6)
	LD	(g_amv_vars+2),A
?0020:
; 196.	    }
; 197.	    ui_auto_update=TRUE;
	LD	A,1
	LD	(ui_auto_update),A
; 198.	    if(result != 0) return result;
	LD	A,L
	OR	H
	JR	NZ,?0023
?0021:
?0022:
; 199.	
; 200.	    return 0;
	LD	L,B
	LD	H,B
; 201.	}
?0023:
	POP	AF
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
ui_show_h:
; 202.	
; 203.	void ui_show_h(const char *string)                       //显示歌曲曲目
; 204.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
	PUSH	AF
	PUSH	AF
; 205.	    /*char id;
; 206.	    id  = *string-0x30;
; 207.	    main_ResShowPic(songnum_id[id],POS_SONGNUM-8,POSY_SONGNUM);
; 208.	    string++;
; 209.	    id= *string-0x30;
; 210.	    main_ResShowPic(songnum_id[id],POS_SONGNUM,POSY_SONGNUM);
; 211.	    string++;
; 212.	    id= *string-0x30;
; 213.	    main_ResShowPic(songnum_id[id],POS_SONGNUM+8,POSY_SONGNUM);
; 214.	    main_ResShowPic(SINGLINE,POS_SONGNUM+16,POSY_SONGNUM);
; 215.	    string++;
; 216.	    id= *string-0x30;
; 217.	    main_ResShowPic(songnum_id[id],POS_SONGNUM+24,POSY_SONGNUM);
; 218.	    string++;
; 219.	    id= *string-0x30;
; 220.	    main_ResShowPic(songnum_id[id],POS_SONGNUM+32,POSY_SONGNUM);
; 221.	     string++;
; 222.	    id= *string-0x30;
; 223.	    main_ResShowPic(songnum_id[id],POS_SONGNUM+40,POSY_SONGNUM);*/
; 224.	    DC  oldDC_sav;
; 225.	    GetDCStatus(&oldDC_sav);
	LD	HL,0
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD GetDCStatus
; 226.	    SetPenColor(Color_BLACK_def);
	CALL	LWRD ?0030
; 227.	    SetBackgdColor(Color_MENU_def);
; 228.	    
; 229.	    SetAsciiFont(FONT_TYPE_SMALL);
	LD	E,0
	CALL	LWRD SetAsciiFont
; 230.	    SetTextPos(4, 23);
	LD	C,23
	LD	E,4
	CALL	LWRD SetTextPos
; 231.	    PutS(string, -1);
	LD	C,255
	LD	HL,8
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	CALL	LWRD PutS
; 232.	    SetAsciiFont(FONT_TYPE_DEFAULT);
	LD	E,4
	CALL	LWRD SetAsciiFont
; 233.	    
; 234.	    SetPenColor(oldDC_sav.PenColor);
	LD	HL,0
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	CALL	LWRD SetPenColor
; 235.	    SetBackgdColor(oldDC_sav.BackgdColor);
	LD	HL,4
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	CALL	LWRD SetBackgdColor
; 236.	}
	LD	HL,10
	ADD	HL,SP
	LD	SP,HL
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
	RSEG	CSTR
?0006:
	DEFB	'/'
	DEFB	0
	RSEG	APC_SUB_DIS
LOOP_PIC:
	DEFW	199
	DEFW	200
	DEFW	201
	DEFW	202
	DEFW	203
	DEFW	204
	DEFW	205
	END

⌨️ 快捷键说明

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