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

📄 sdrv_rectfill.s01

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 S01
字号:
	NAME	sdrv_rectfill(16)
	RSEG	BAC_DW1(0)
	EXTERN	CheckDisplaySpace
	EXTERN	DisplayBuffer
	EXTERN	Hdrv_BuffDataTrans
	EXTERN	Hdrv_SetWindow
	EXTERN	RectBuffFillColor
	PUBLIC	Sdrv_FillRect
	EXTERN	region
	EXTERN	?CLZ80L_4_04_L00
	EXTERN	?S_MUL_L02
	RSEG	BAC_DW1
Sdrv_FillRect:
; 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   : FillRect.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(BAS_DW1)
; 18.	#pragma memory=default
; 19.	
; 20.	#pragma memory=dataseg(BAD_DW1)
; 21.	//SD_RW sdrw;
; 22.	//extern  unsigned char BufPage;
; 23.	#pragma memory=default
; 24.	
; 25.	#pragma codeseg(BAC_DW1)
; 26.	
; 27.	////*******************************************************************************/
; 28.	///* 把指定区域填充成画笔颜色
; 29.	//** FUNCTION:     Sdrv_FillRect
; 30.	//**
; 31.	//** Description:  
; 32.	//**
; 33.	//**  input
; 34.	//**        region_t * Fillregion:要填充的区域 
; 35.	//**        
; 36.	//**  output
; 37.	//**     none
; 38.	//********************************************************************************/
; 39.	
; 40.	void Sdrv_FillRect (region_t * Fillregion)
; 41.	{
	PUSH	BC
	PUSH	IX
	PUSH	DE
; 42.	    unsigned int pixelcnt;
; 43.	    region = *Fillregion;
	LD	DE,region
	LD	HL,0
	ADD	HL,SP
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	BC,4
	LDIR
; 44.	
; 45.	    if ( (region.x > Displaylength-1)
; 46.	            || (region.y > Displayhight-1) )
	LD	A,(region)
	LD	B,A
	LD	A,159
	CP	B
	JR	C,?0005
	LD	A,(region+1)
	LD	B,A
	LD	A,127
	CP	B
	JR	C,?0005
?0002:
?0003:
?0000:
; 47.	    {
; 48.	        return; //坐标超出,退出
; 49.	    }     
?0001:
; 50.	
; 51.	    if (CheckDisplaySpace(PicDisMode)) //检测显示区域是否超出
	LD	E,3
	CALL	CheckDisplaySpace
	OR	A
	JR	Z,?0005
?0004:
; 52.	    {
; 53.	        Hdrv_SetWindow(&region);//设定区域 //设定 要填入数据的 起始地址 和 结束地址
	LD	DE,region
	CALL	Hdrv_SetWindow
; 54.	        pixelcnt = region.width * region.height;
	LD	BC,(region+3)
	LD	B,0
	LD	DE,(region+2)
	LD	D,B
	CALL	?S_MUL_L02
	PUSH	DE
	POP	IX
?0007:
; 55.	        while(pixelcnt > DisplayBufLen/2)
	PUSH	IX
	POP	BC
	LD	HL,256
	AND	A
	SBC	HL,BC
	JR	NC,?0006
?0008:
; 56.	        {
; 57.	            //找出整个PAGE的送出
; 58.	            RectBuffFillColor(DisplayBufLen/2);
	LD	DE,256
	CALL	RectBuffFillColor
; 59.	            Hdrv_BuffDataTrans(DisplayBuffer, DisplayBufLen);//把暂时显存区DisplayBuffer里面的数据送到LCM
	LD	BC,512
	LD	DE,DisplayBuffer
	CALL	Hdrv_BuffDataTrans
; 60.	            //这里只管 填入数据,不管地方,因为在这之前 Hdrv_SetWindow 已经设定好了起始位置地点
; 61.	            
; 62.	            pixelcnt = pixelcnt - DisplayBufLen/2;
	LD	A,255
	ADD	A,IXH
	LD	IXH,A
	JR	?0007
?0006:
; 63.	        }
; 64.	        //把剩余的数据送出
; 65.	        RectBuffFillColor(pixelcnt);
	PUSH	IX
	POP	DE
	CALL	RectBuffFillColor
; 66.	        Hdrv_BuffDataTrans(DisplayBuffer, pixelcnt*2);//把暂时显存区的数据送到LCM                
	PUSH	IX
	POP	HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	LD	DE,DisplayBuffer
	CALL	Hdrv_BuffDataTrans
?0005:
; 67.	    }        
; 68.	    return;
; 69.	}
?0009:
	POP	HL
	POP	IX
	POP	BC
	RET
; 70.	
	END

⌨️ 快捷键说明

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