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

📄 sdrv_functions_la.s01

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 S01
字号:
	NAME	sdrv_functions_la(16)
	RSEG	UI_RCODE(0)
	EXTERN	AsciiSelect
	PUBLIC	CheckCharMode
	PUBLIC	CheckDisplaySpace
	EXTERN	PutCharErrFlag
	EXTERN	region
	EXTERN	region_win
	EXTERN	?CLZ80L_4_04_L00
	EXTERN	?C_S_SWITCH_L06
	RSEG	UI_RCODE
CheckCharMode:
; 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_functions.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 codeseg(UI_RCODE)
; 18.	
; 19.	
; 20.	////*******************************************************************************/
; 21.	///*
; 22.	//** FUNCTION:     CheckCharMode
; 23.	//**
; 24.	//** Description:  检测字符的模式
; 25.	//**
; 26.	//**  input
; 27.	//**     code: 字的内码
; 28.	//**
; 29.	//**  output
; 30.	//**     == CharMode1616: 汉字
; 31.	//**     == CharMode0816: 大ASCII
; 32.	//**     == CharMode0608: 小ASCII
; 33.	//********************************************************************************/
; 34.	non_banked char CheckCharMode(int code)
; 35.	{
	PUSH	DE
; 36.	    //*如下动作主要是取 int code 的高8位来作比较(int 型参数是以 de 传送的,*
; 37.	    //*    也就是要用d的值来作比较),用如下指令可使编译器优化成不用移位而  *
; 38.	    //*    直接使用d的值来作比较。可省去不少时间及代码空间。               *
; 39.	    //if ((unsigned char)((unsigned int)code>>8) >= FirstSectionCode)
; 40.	
; 41.	    //if ((unsigned char)code >= FirstSectionCode)
; 42.	    //{
; 43.	    //    return CharMode1616;//汉字
; 44.	    //}
; 45.	    //else 
; 46.	    if (AsciiSelect == FONT_TYPE_SMALL)
	LD	A,(AsciiSelect)
	OR	A
	JR	Z,?0002
?0000:
; 47.	    {
; 48.	        return CharMode0608;//小字体ASCII
; 49.	    }
?0001:
; 50.	    return CharMode0816;//大字体ASCII
	LD	A,1
; 51.	}
?0002:
	POP	HL
	RET
CheckDisplaySpace:
; 52.	//================================================================================
; 53.	
; 54.	
; 55.	////*******************************************************************************/
; 56.	///*
; 57.	//** FUNCTION:     non_banked bool CheckDisplaySpace
; 58.	//**
; 59.	//** Description:  检测屏幕空间是否满足显示要求,如超出范围则报错
; 60.	//**
; 61.	//**  input
; 62.	//**     codemod: 点阵的模式
; 63.	//**
; 64.	//**  output
; 65.	//**     True: 屏幕空间能满足显示要求
; 66.	//**     False: 屏幕空间不能满足显示要求
; 67.	//********************************************************************************/
; 68.	
; 69.	non_banked bool CheckDisplaySpace(char codemod)
; 70.	{    
	PUSH	BC
	PUSH	DE
; 71.	    switch(codemod)
	CALL	?C_S_SWITCH_L06
	DEFB	0
	DEFW	4
	DEFW	?0024
	DEFW	?0004
	DEFW	?0009
	DEFW	?0014
	DEFW	?0019
?0004:
; 72.	    {    
; 73.	    case CharMode0608://06*08点阵模式(ascii小字体)
; 74.	        // region.x [0 ~ Displaylength-1] 
; 75.	        // region.y [0 ~ Displayhight-1] 
; 76.	        if (region.x+ASCII_SMALL_WIDTH_DEF > region_win.x+region_win.width)
	LD	BC,(region)
	LD	B,0
	LD	HL,6
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+2)
	LD	D,0
	LD	HL,(region_win)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0048
	XOR	H
?0048:
	JP	M,?0066
?0005:
; 77.	        {
; 78.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 79.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 80.	            return FALSE;
; 81.	        }
?0006:
; 82.	        if (region.y+ASCII_SMALL_HEIGHT_DEF > region_win.y+region_win.height)
	LD	BC,(region+1)
	LD	B,D
	LD	HL,8
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+3)
	LD	D,0
	LD	HL,(region_win+1)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0049
	XOR	H
?0049:
	JP	P,?0003
?0007:
; 83.	        {
; 84.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 85.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0067
; 86.	            return FALSE;
; 87.	        }                
?0008:
; 88.	        break;
?0009:
; 89.	 
; 90.	    case CharMode0816://08*16点阵模式(ascii大字体)
; 91.	        if (region.x+ASCII_LARGE_WIDTH_DEF > region_win.x+region_win.width)
	LD	BC,(region)
	LD	B,0
	LD	HL,8
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+2)
	LD	D,0
	LD	HL,(region_win)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0050
	XOR	H
?0050:
	JP	M,?0066
?0010:
; 92.	        {
; 93.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 94.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 95.	            return FALSE;
; 96.	        } 
?0011:
; 97.	        if (region.y+ASCII_LARGE_HEIGHT_DEF > region_win.y+region_win.height)
	LD	BC,(region+1)
	LD	B,D
	LD	HL,16
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+3)
	LD	D,0
	LD	HL,(region_win+1)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0051
	XOR	H
?0051:
	JP	P,?0003
?0012:
; 98.	        {
; 99.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 100.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0067
; 101.	            return FALSE;
; 102.	        }
?0013:
; 103.	        break;
?0014:
; 104.	
; 105.	    case CharMode1616://16*16点阵模式(汉字)
; 106.	        if (region.x+CHINESE_WIDTH_DEF > region_win.x+region_win.width)
	LD	BC,(region)
	LD	B,0
	LD	HL,16
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+2)
	LD	D,0
	LD	HL,(region_win)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0052
	XOR	H
?0052:
	JP	M,?0066
?0015:
; 107.	        {
; 108.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 109.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 110.	            return FALSE;
; 111.	        }       
?0016:
; 112.	        if (region.y+CHINESE_HEIGHT_DEF > region_win.y+region_win.height)
	LD	BC,(region+1)
	LD	B,D
	LD	HL,16
	ADD	HL,BC
	LD	C,L
	LD	B,H
	LD	DE,(region_win+3)
	LD	D,0
	LD	HL,(region_win+1)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0053
	XOR	H
?0053:
	JP	P,?0003
?0017:
; 113.	        {
; 114.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 115.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JR	?0067
; 116.	            return FALSE;
; 117.	        }
?0018:
; 118.	        break;
?0019:
; 119.	
; 120.	    case PicDisMode://图形显示模式
; 121.	        if (region.x+region.width > region_win.x+region_win.width)
	LD	BC,(region+2)
	LD	B,0
	LD	DE,(region)
	LD	D,B
	LD	L,C
	LD	H,B
	ADD	HL,DE
	LD	C,L
	LD	B,H
	LD	DE,(region_win+2)
	LD	D,0
	LD	HL,(region_win)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0054
	XOR	H
?0054:
	JP	P,?0021
?0020:
; 122.	        {
; 123.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 124.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
?0066:
	LD	A,1
	JR	?0063
; 125.	            return FALSE;
; 126.	        }
?0021:
; 127.	        if (region.y+region.height > region_win.y+region_win.height)    
	LD	BC,(region+3)
	LD	B,D
	LD	DE,(region+1)
	LD	D,B
	LD	L,C
	LD	H,B
	ADD	HL,DE
	LD	C,L
	LD	B,H
	LD	DE,(region_win+3)
	LD	D,0
	LD	HL,(region_win+1)
	LD	H,D
	ADD	HL,DE
	OR	128
	SBC	HL,BC
	JP	PO,?0055
	XOR	H
?0055:
	JP	P,?0003
?0022:
; 128.	        {
; 129.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 130.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
?0067:
	LD	A,2
	JR	?0063
; 131.	            return FALSE;
; 132.	        }
?0023:
; 133.	        break;
?0024:
; 134.	
; 135.	    default:
; 136.	        DUMP(RESULT_PUTCHAR_OTHER_ERR);
; 137.	        PutCharErrFlag = RESULT_PUTCHAR_OTHER_ERR;//不知类型的也不显示
	LD	A,3
?0063:
	LD	(PutCharErrFlag),A
; 138.	        return FALSE;
	XOR	A
; 139.	    }
	JR	?0025
?0003:
; 140.	    return TRUE;
	LD	A,1
; 141.	}
?0025:
	POP	HL
	POP	BC
	RET
; 142.	//================================================================================
	END

⌨️ 快捷键说明

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