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

📄 sdrv_textoutrect.s01

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 S01
字号:
	NAME	sdrv_textoutrect(16)
	RSEG	BBC_PUTS(0)
	EXTERN	BAPI_PutS
	EXTERN	PutCharErrFlag
	PUBLIC	Sdrv_TextOutRect
	EXTERN	StrHeight
	EXTERN	region
	EXTERN	region_win
	EXTERN	?CLZ80L_4_04_L00
	RSEG	BBC_PUTS
Sdrv_TextOutRect:
; 1.	/*
; 2.	********************************************************************************
; 3.	*                       ACTOS
; 4.	*                  ui dirver show picture
; 5.	*
; 6.	*                (c) Copyright 2002-2003, Actions Co,Ld.
; 7.	*                        All Right Reserved
; 8.	*
; 9.	* File   : Sdrv_TextOutRect.c
; 10.	* By     : Rcmai
; 11.	* Version: 1> v1.00     first version     10/17/2003 10:46PM
; 12.	********************************************************************************
; 13.	*/                  
; 14.	#include "display.h"   
; 15.	#include "Drv_S6B33B0A.h"
; 16.	
; 17.	#pragma memory=constseg(BBS_PUTS)
; 18.	#pragma memory=default
; 19.	
; 20.	#pragma memory=dataseg(BBD_PUTS)
; 21.	#pragma memory=default
; 22.	
; 23.	#pragma codeseg(BBC_PUTS)
; 24.	
; 25.	////*******************************************************************************/
; 26.	///*   non_banked void Sdrv_TextOutRect(region_t * region, char *str);
; 27.	//** FUNCTION:     Sdrv_TextOutRect
; 28.	//**
; 29.	//** Description:  在指定的区域上输出一个字符串,如串的长度超过区域则自动换行
; 30.	//                      直到字符结束或区域用完
; 31.	//**  input
; 32.	//**     region_t * TORregion: 指定输出字符的区域 ; 
; 33.	//**     strlen: 字符串首址
; 34.	//**
; 35.	//**  output
; 36.	//**     none
; 37.	//********************************************************************************/
; 38.	non_banked void Sdrv_TextOutRect(region_t * TORregion, char *str)
; 39.	{
	PUSH	IX
	PUSH	BC
	PUSH	DE
	PUSH	AF
	PUSH	AF
; 40.	    char *str_tmp;//记录当前输出到的字符首址
; 41.	    region_t oldregion_bak;//备份原来的窗口值
; 42.	
; 43.	    oldregion_bak = region_win;
	LD	HL,0
	ADD	HL,SP
	EX	DE,HL
	LD	HL,region_win
	LD	BC,4
	LDIR
; 44.	
; 45.	    //设置输出窗口
; 46.	    region_win = *TORregion;
	LD	DE,region_win
	LD	HL,4
	ADD	HL,SP
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	BC,4
	LDIR
; 47.	
; 48.	    //
; 49.	    str_tmp = str;
	LD	HL,6
	ADD	HL,SP
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	PUSH	HL
	POP	IX
; 50.	
; 51.	    //设置输出字符串的起点
; 52.	    region.x = region_win.x;
	LD	A,(region_win)
	LD	(region),A
; 53.	    region.y = region_win.y;
	LD	A,(region_win+1)
	LD	(region+1),A
?0002:
; 54.	    do
; 55.	    {
; 56.	        str_tmp = BAPI_PutS(str_tmp, -1);
	LD	C,255
	PUSH	IX
	POP	DE
	CALL	BAPI_PutS
	PUSH	HL
	POP	IX
; 57.	        region.x = region_win.x;    //回到区域首列
	LD	A,(region_win)
	LD	(region),A
; 58.	        region.y += StrHeight;      //加刚才那一行的高度       
	LD	A,(StrHeight)
	LD	B,A
	LD	A,(region+1)
	ADD	A,B
	LD	(region+1),A
; 59.	    }while(PutCharErrFlag == RESULT_PUTCHAR_X_ERR);//x轴超限,要回到下一行
	LD	A,(PutCharErrFlag)
	DEC	A
	JR	Z,?0002
?0000:
; 60.	    region_win = oldregion_bak;//恢复原来的窗口
	LD	DE,region_win
	LD	HL,0
	ADD	HL,SP
	LD	BC,4
	LDIR
; 61.	    return;
; 62.	}
	POP	HL
	POP	HL
	POP	HL
	POP	HL
	POP	IX
	RET
	END

⌨️ 快捷键说明

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