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

📄 sdrv_functions_latin1.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
字号:
	NAME	sdrv_functions_latin1(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 (AsciiSelect == FONT_TYPE_SMALL)
	LD	A,(AsciiSelect)
	OR	A
	JR	Z,?0002
?0000:
; 42.	    {
; 43.	        return  CharMode0608;   //小字体ASCII
; 44.	    }
?0001:
; 45.	    return  CharMode0816;       //大字体ASCII
	LD	A,1
; 46.	}
?0002:
	POP	HL
	RET
CheckDisplaySpace:
; 47.	//================================================================================
; 48.	
; 49.	////*******************************************************************************/
; 50.	///*
; 51.	//** FUNCTION:     non_banked bool CheckDisplaySpace
; 52.	//**
; 53.	//** Description:  检测屏幕空间是否满足显示要求,如超出范围则报错
; 54.	//**
; 55.	//**  input
; 56.	//**     codemod: 点阵的模式
; 57.	//**
; 58.	//**  output
; 59.	//**     True: 屏幕空间能满足显示要求
; 60.	//**     False: 屏幕空间不能满足显示要求
; 61.	//********************************************************************************/
; 62.	
; 63.	non_banked bool CheckDisplaySpace(char codemod)
; 64.	{    
	PUSH	BC
	PUSH	DE
; 65.	    switch(codemod)
	CALL	?C_S_SWITCH_L06
	DEFB	0
	DEFW	4
	DEFW	?0024
	DEFW	?0004
	DEFW	?0009
	DEFW	?0014
	DEFW	?0019
?0004:
; 66.	    {    
; 67.	    case CharMode0608://06*08点阵模式(ascii小字体)
; 68.	        // region.x [0 ~ Displaylength-1] 
; 69.	        // region.y [0 ~ Displayhight-1] 
; 70.	        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:
; 71.	        {
; 72.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 73.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 74.	            return FALSE;
; 75.	        }
?0006:
; 76.	        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:
; 77.	        {
; 78.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 79.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0067
; 80.	            return FALSE;
; 81.	        }                
?0008:
; 82.	        break;
?0009:
; 83.	 
; 84.	    case CharMode0816://08*16点阵模式(ascii大字体)
; 85.	        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:
; 86.	        {
; 87.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 88.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 89.	            return FALSE;
; 90.	        } 
?0011:
; 91.	        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:
; 92.	        {
; 93.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 94.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JP	?0067
; 95.	            return FALSE;
; 96.	        }
?0013:
; 97.	        break;
?0014:
; 98.	
; 99.	    case CharMode1616://16*16点阵模式(汉字)
; 100.	        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:
; 101.	        {
; 102.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 103.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
; 104.	            return FALSE;
; 105.	        }       
?0016:
; 106.	        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:
; 107.	        {
; 108.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 109.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
	JR	?0067
; 110.	            return FALSE;
; 111.	        }
?0018:
; 112.	        break;
?0019:
; 113.	
; 114.	    case PicDisMode://图形显示模式
; 115.	        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:
; 116.	        {
; 117.	            DUMP(RESULT_PUTCHAR_X_ERR);
; 118.	            PutCharErrFlag = RESULT_PUTCHAR_X_ERR;//X轴超出
?0066:
	LD	A,1
	JR	?0063
; 119.	            return FALSE;
; 120.	        }
?0021:
; 121.	        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:
; 122.	        {
; 123.	            DUMP(RESULT_PUTCHAR_Y_ERR);
; 124.	            PutCharErrFlag = RESULT_PUTCHAR_Y_ERR;//Y轴超出
?0067:
	LD	A,2
	JR	?0063
; 125.	            return FALSE;
; 126.	        }
?0023:
; 127.	        break;
?0024:
; 128.	
; 129.	    default:
; 130.	        DUMP(RESULT_PUTCHAR_OTHER_ERR);
; 131.	        PutCharErrFlag = RESULT_PUTCHAR_OTHER_ERR;//不知类型的也不显示
	LD	A,3
?0063:
	LD	(PutCharErrFlag),A
; 132.	        return FALSE;
	XOR	A
; 133.	    }
	JR	?0025
?0003:
; 134.	    return TRUE;
	LD	A,1
; 135.	}
?0025:
	POP	HL
	POP	BC
	RET
; 136.	//================================================================================
	END

⌨️ 快捷键说明

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