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

📄 sdrv_functions.s01

📁 MP3 整个 SDK
💻 S01
字号:
	NAME	sdrv_functions(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.	        //根据 code 和 AsciiSelect 的值来确定 字体为何?
; 42.	
; 43.	    if ((unsigned char)code >= FirstSectionCode)
	LD	A,E
	CP	161
	JR	C,?0001
?0000:
; 44.	    {
; 45.	        return CharMode1616;//汉字
	LD	A,2
; 46.	    }
	JR	?0004
?0001:
; 47.	    else if (AsciiSelect == FONT_TYPE_SMALL)
	LD	A,(AsciiSelect)
	OR	A
	JR	Z,?0004
?0002:
; 48.	    {
; 49.	        return CharMode0608;//小字体ASCII
; 50.	    }
?0003:
; 51.	    return CharMode0816;//大字体ASCII
	LD	A,1
; 52.	}
?0004:
	POP	HL
	RET
CheckDisplaySpace:
; 53.	//================================================================================
; 54.	
; 55.	
; 56.	////*******************************************************************************/
; 57.	///*
; 58.	//** FUNCTION:     non_banked bool CheckDisplaySpace
; 59.	//**
; 60.	//** Description:  检测屏幕空间是否满足显示要求,如超出范围则报错
; 61.	//**
; 62.	//**  input
; 63.	//**     codemod: 点阵的模式
; 64.	//**
; 65.	//**  output
; 66.	//**     True: 屏幕空间能满足显示要求
; 67.	//**     False: 屏幕空间不能满足显示要求
; 68.	//********************************************************************************/
; 69.	
; 70.	non_banked bool CheckDisplaySpace(char codemod)
; 71.	{    
	PUSH	BC
	PUSH	DE
; 72.	    switch(codemod)
	CALL	?C_S_SWITCH_L06
	DEFB	0
	DEFW	4
	DEFW	?0026
	DEFW	?0006
	DEFW	?0011
	DEFW	?0016
	DEFW	?0021
?0006:
; 73.	    {    
; 74.	    case CharMode0608://06*08点阵模式(ascii小字体)
; 75.	        // region.x [0 ~ Displaylength-1] 
; 76.	        // region.y [0 ~ Displayhight-1] 
; 77.	        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,?0050
	XOR	H
?0050:
	JP	M,?0068
?0007:
; 78.	        {
; 79.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 80.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 81.	            return FALSE;
; 82.	        }
?0008:
; 83.	        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,?0051
	XOR	H
?0051:
	JP	P,?0005
?0009:
; 84.	        {
; 85.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 86.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0069
; 87.	            return FALSE;
; 88.	        }                
?0010:
; 89.	        break;
?0011:
; 90.	 
; 91.	    case CharMode0816://08*16点阵模式(ascii大字体)
; 92.	        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,?0052
	XOR	H
?0052:
	JP	M,?0068
?0012:
; 93.	        {
; 94.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 95.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 96.	            return FALSE;
; 97.	        } 
?0013:
; 98.	        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,?0053
	XOR	H
?0053:
	JP	P,?0005
?0014:
; 99.	        {
; 100.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 101.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0069
; 102.	            return FALSE;
; 103.	        }
?0015:
; 104.	        break;
?0016:
; 105.	
; 106.	    case CharMode1616://16*16点阵模式(汉字)
; 107.	        if (region.x+CHINESE_WIDTH_DEF > region_win.x+region_win.width)
	LD	BC,(region)
	LD	B,0
	LD	HL,12
	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,?0054
	XOR	H
?0054:
	JP	M,?0068
?0017:
; 108.	        {
; 109.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 110.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 111.	            return FALSE;
; 112.	        }       
?0018:
; 113.	        if (region.y+CHINESE_HEIGHT_DEF > region_win.y+region_win.height)
	LD	BC,(region+1)
	LD	B,D
	LD	HL,12
	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,?0055
	XOR	H
?0055:
	JP	P,?0005
?0019:
; 114.	        {
; 115.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 116.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JR	?0069
; 117.	            return FALSE;
; 118.	        }
?0020:
; 119.	        break;
?0021:
; 120.	
; 121.	    case PicDisMode://图形显示模式
; 122.	        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,?0056
	XOR	H
?0056:
	JP	P,?0023
?0022:
; 123.	        {
; 124.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 125.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
?0068:
	LD	A,1
	JR	?0065
; 126.	            return FALSE;
; 127.	        }
?0023:
; 128.	        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,?0057
	XOR	H
?0057:
	JP	P,?0005
?0024:
; 129.	        {
; 130.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 131.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
?0069:
	LD	A,2
	JR	?0065
; 132.	            return FALSE;
; 133.	        }
?0025:
; 134.	        break;
?0026:
; 135.	
; 136.	    default:
; 137.	        DUMP(RESULT_PUTCHAR_OTHER_ERR);
; 138.	        PutCharErrFlag = RESULT_PUTCHAR_OTHER_ERR;//不知类型的也不显示
	LD	A,3
?0065:
	LD	(PutCharErrFlag),A
; 139.	        return FALSE;
	XOR	A
; 140.	    }
	JR	?0027
?0005:
; 141.	    return TRUE;
	LD	A,1
; 142.	}
?0027:
	POP	HL
	POP	BC
	RET
; 143.	//================================================================================
	END

⌨️ 快捷键说明

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