ui_scroll2.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 278 行

S01
278
字号
	NAME	ui_scroll2(17)
	RSEG	CODE(0)
	EXTERN	CharOutRect
	EXTERN	GetOutPutErr
	EXTERN	GetTextPos
	EXTERN	PutS
	PUBLIC	ScrollInit
	PUBLIC	ScrollInit_sub
	EXTERN	SetAsciiFont
	EXTERN	SetBackgdColor
	EXTERN	SetTextPos
	EXTERN	TextOutRect
	EXTERN	rTmp
	EXTERN	scroll_cnt
	EXTERN	str_pt
	EXTERN	strhead_pt
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	CODE
ScrollInit:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        wma player basal module implementation 
; 5.	*
; 6.	*        (c) Copyright Actions Co,Ld.                             
; 7.	*
; 8.	*  $Id: ui_scroll.c,v 1.3 2004/12/30 09:22:32 ybfu Exp $
; 9.	*******************************************************************************
; 10.	*/
; 11.	/*
; 12.	这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL 
; 13.	*/
; 14.	#include "actos.h"
; 15.	#include "ap_common.h"
; 16.	
; 17.	///-extern char *str_pt;//字符串当前指针
; 18.	///-extern char *strhead_pt;//字串首址记录   
; 19.	///-extern BYTE scroll_cnt;
; 20.	
; 21.	extern char rTmp;
; 22.	
; 23.	void ScrollInit_sub(char *str,char language);
; 24.	
; 25.	/* (字符串首址,是否初始化true为要初始化) */
; 26.	void ScrollInit( char * scrollstr, char language) 
; 27.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65532
; 28.	          region_t tregion;
; 29.	          
; 30.	          tregion.x = scrollregionx_def;
	LD	(IX-4),48
; 31.	    tregion.y = scrollregiony_def;
	LD	(IX-3),45
; 32.	    tregion.width = scrollregionw_def;
	LD	(IX-2),128
; 33.	    tregion.height = scrollregionh_def;
	LD	(IX-1),16
; 34.	          
; 35.	    SetAsciiFont(FONT_TYPE_LARGE);
	LD	E,4
	CALL	LWRD SetAsciiFont
; 36.	    SetBackgdColor(Color_MENU_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
; 37.	    
; 38.	    TextOutRect(&tregion ,1);
	LD	C,1
	LD	HL,0
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD TextOutRect
; 39.	    ScrollInit_sub(scrollstr,language);
	LD	C,(IX+4)
	LD	E,(IX+2)
	LD	D,(IX+3)
	LD	A,BYTE3 ScrollInit_sub
	LD	HL,LWRD ScrollInit_sub
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 40.	    TextOutRect(&tregion ,0);
	LD	C,0
	LD	L,C
	LD	H,C
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD TextOutRect
; 41.	    
; 42.	    ///-SetBackgdColor(Color_MENU_def);
; 43.	    SetAsciiFont(FONT_TYPE_DEFAULT);
	LD	E,4
	CALL	LWRD SetAsciiFont
; 44.	    return;
; 45.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
ScrollInit_sub:
; 46.	/*
; 47.	int ReadCode_sub(char *str_pt,char language)
; 48.	{
; 49.	                                int code;
; 50.	
; 51.	        if((language>4)||(language==1))
; 52.	        {//ASCII
; 53.	                code = *str_pt;
; 54.	        }
; 55.	        else if(language==3)
; 56.	        {//jap
; 57.	            if (*str_pt >= 0x81)        
; 58.	            {
; 59.	                                code = *(int *)str_pt;
; 60.	            }    
; 61.	            else
; 62.	            {//ASCII
; 63.	                                code = *str_pt;
; 64.	            }
; 65.	        }
; 66.	        else if (*str_pt >= FirstSectionCode)
; 67.	        {//汉字
; 68.	                code = *(int *)str_pt;
; 69.	        }
; 70.	        else
; 71.	        {//ASCII
; 72.	                code = *str_pt;
; 73.	        }
; 74.	        return code;
; 75.	}
; 76.	*/
; 77.	void ScrollInit_sub(char *str,char language)
; 78.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	65530
; 79.	    int code;
; 80.	    region_t kregion;//余下部分区域
; 81.	    
; 82.	    SetTextPos(scrollregionx_def, scrollregiony_def);
	LD	C,45
	LD	E,48
	CALL	LWRD SetTextPos
; 83.	    strhead_pt = str_pt = str;
	LD	L,(IX+2)
	LD	H,(IX+3)
	LD	(str_pt),HL
	LD	(strhead_pt),HL
; 84.	                
; 85.	    str_pt = PutS(str_pt, -1);
	LD	C,255
	EX	DE,HL
	CALL	LWRD PutS
	LD	(str_pt),HL
; 86.	    
; 87.	    if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
	CALL	LWRD GetOutPutErr
	DEC	A
	JR	NZ,?0003
?0002:
; 88.	    {//x超限
; 89.	                                
; 90.	                                ///code = ReadCode_sub(str_pt, language);
; 91.	                                //---------------------------------------
; 92.	                                if((language>4)||(language==1))
	LD	A,4
	CP	(IX+4)
	JR	C,?0016
	LD	B,(IX+4)
	DEC	B
	JR	Z,?0016
?0006:
?0007:
?0004:
; 93.	        {//ASCII
; 94.	                code = *str_pt;
?0005:
; 95.	        }
; 96.	        else if(language==3)
	LD	A,(IX+4)
	CP	3
	LD	HL,(str_pt)
	LD	A,(HL)
	JR	NZ,?0010
?0009:
; 97.	        {//jap
; 98.	            if (*str_pt >= 0x81)        
	CP	129
	JR	C,?0019
?0011:
; 99.	            {
; 100.	                                code = *(int *)str_pt;
	JR	?0020
; 101.	            }    
; 102.	            else
?0012:
; 103.	            {//ASCII
; 104.	                                code = *str_pt;
?0013:
?0010:
; 105.	            }
; 106.	        }
; 107.	        else if (*str_pt >= FirstSectionCode)
	CP	161
	JR	C,?0016
?0015:
; 108.	        {//汉字
; 109.	                code = *(int *)str_pt;
?0020:
	LD	B,(HL)
	LD	(IX-2),B
	INC	HL
	LD	H,(HL)
	LD	(IX-1),H
; 110.	        }
; 111.	        else
	JR	?0017
?0016:
; 112.	        {//ASCII
; 113.	                code = *str_pt;
	LD	HL,(str_pt)
?0019:
	LD	C,(HL)
	LD	(IX-2),C
	LD	(IX-1),0
?0017:
?0014:
?0008:
; 114.	        }
; 115.	                                //---------------------------------------
; 116.	                                
; 117.	        GetTextPos(&kregion.x, &kregion.y);
	LD	HL,0
	ADD	HL,SP
	LD	BC,1
	ADD	HL,BC
	LD	C,L
	LD	B,H
	DEC	HL
	EX	DE,HL
	CALL	LWRD GetTextPos
; 118.	                                
; 119.	        kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
	LD	A,176
	SUB	(IX-6)
	LD	(IX-4),A
; 120.	        kregion.height = scrollregionh_def;
	LD	(IX-3),16
; 121.	                                
; 122.	        //输出最后一个字
; 123.	        CharOutRect(code, *(str_pt+1), &kregion, 0);
	LD	C,0
	PUSH	BC
	LD	HL,2
	ADD	HL,SP
	PUSH	HL
	LD	HL,(str_pt)
	INC	HL
	LD	C,(HL)
	LD	B,0
	LD	E,(IX-2)
	LD	D,(IX-1)
	CALL	LWRD CharOutRect
	POP	HL
	POP	HL
?0003:
; 124.	    }
; 125.	    str_pt = strhead_pt;
	LD	HL,(strhead_pt)
	LD	(str_pt),HL
; 126.	    scroll_cnt = 0;
	XOR	A
	LD	(scroll_cnt),A
; 127.	    rTmp = 0;
	LD	(rTmp),A
; 128.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
	END

⌨️ 快捷键说明

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