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

📄 sdrv_putchar_latin1.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
字号:
	NAME	sdrv_putchar_latin1(16)
	RSEG	BBC_PUTS(0)
	EXTERN	BlackCharToColor
	EXTERN	CharPointBuffer
	EXTERN	CheckCharMode
	EXTERN	CheckDisplaySpace
	EXTERN	DisplayBuffer
	EXTERN	Hdrv_BuffDataTrans
	EXTERN	Hdrv_SetDrawMode
	EXTERN	Hdrv_SetWindow
	EXTERN	PutCharErrFlag
	EXTERN	Sdrv_GetFontPoint
	PUBLIC	Sdrv_PutChar
	EXTERN	region
	EXTERN	?CLZ80L_4_04_L00
	RSEG	BBC_PUTS
Sdrv_PutChar:
; 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   : PutChar.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.	#pragma memory=constseg(BBS_PUTS)
; 20.	#pragma memory=default
; 21.	
; 22.	#pragma memory=dataseg(BBD_PUTS)
; 23.	#pragma memory=default
; 24.	
; 25.	#pragma codeseg(BBC_PUTS)
; 26.	
; 27.	//non_banked char CheckCharMode(int code);
; 28.	//bool CheckDisplaySpace(char codemod);
; 29.	////*******************************************************************************/
; 30.	///*
; 31.	//** FUNCTION:     PutChar
; 32.	//**
; 33.	//** Description:  在屏幕上打出一个字符,并打完后当前指针自动跳到下一个汉字的左上角
; 34.	//**
; 35.	//**  input
; 36.	//**     code: 字符的码值
; 37.	//**
; 38.	//**  output
; 39.	//**     none
; 40.	//********************************************************************************/
; 41.	
; 42.	non_banked bool Sdrv_PutChar(int code)
; 43.	{
	PUSH	BC
	PUSH	IX
	PUSH	AF
	PUSH	DE
	POP	IX
; 44.	    char charmode;
; 45.	    bool putchar_result;
; 46.	    PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
	XOR	A
	LD	(PutCharErrFlag),A
; 47.	    Hdrv_SetDrawMode(DrawModeV_def);    //把显示模式设置成竖向显示模式(与旧字库兼容)
	LD	DE,1
	CALL	Hdrv_SetDrawMode
; 48.	    Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
	LD	BC,CharPointBuffer
	PUSH	IX
	POP	DE
	CALL	Sdrv_GetFontPoint
; 49.	    
; 50.	    //charmode = CharMode0608;  
; 51.	    charmode = CheckCharMode(code);
	PUSH	IX
	POP	DE
	CALL	CheckCharMode
	LD	HL,1
	ADD	HL,SP
	LD	(HL),A
; 52.	    putchar_result = CheckDisplaySpace(charmode);
	LD	E,A
	CALL	CheckDisplaySpace
	LD	HL,0
	ADD	HL,SP
	LD	(HL),A
; 53.	    if (!putchar_result)
	XOR	A
	OR	(HL)
	JR	NZ,?0001
?0000:
; 54.	    {
; 55.	        Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模式
	LD	E,A
	LD	D,A
	CALL	Hdrv_SetDrawMode
; 56.	        return putchar_result;//如显示范围不对,则不做显示动作而直接退出
	LD	HL,0
	ADD	HL,SP
	LD	A,(HL)
; 57.	    }
	JP	?0006
?0001:
; 58.	    switch(charmode)
	INC	HL
	LD	A,(HL)
	CP	0
	JR	NZ,?0004
?0003:
; 59.	    {
; 60.	    case CharMode0608://06*08点阵模式(ascii小字体)
; 61.	        //设置字模输出的大小 
; 62.	        region.width = ASCII_SMALL_WIDTH_DEF;
	LD	A,6
	LD	(region+2),A
; 63.	        region.height = ASCII_SMALL_HEIGHT_DEF;
	LD	A,8
	LD	(region+3),A
; 64.	        
; 65.	        Hdrv_SetWindow(&region);
	LD	DE,region
	CALL	Hdrv_SetWindow
; 66.	        
; 67.	        //把黑白字模转为彩色字模放在Buff中
; 68.	        BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
	LD	BC,CharPointBuffer
	LD	DE,6
	CALL	BlackCharToColor
; 69.	        //把暂时显存区的数据送到LCM
; 70.	        Hdrv_BuffDataTrans(DisplayBuffer, ASCII_SMALL_HEIGHT_DEF*ASCII_SMALL_WIDTH_DEF*2);
	LD	BC,96
	LD	DE,DisplayBuffer
	CALL	Hdrv_BuffDataTrans
; 71.	        region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
	LD	A,(region)
	ADD	A,6
	JR	?0008
; 72.	        break;
?0004:
	CP	1
	JR	NZ,?0002
; 73.	        
; 74.	    case CharMode0816://08*16点阵模式(ascii大字体)
; 75.	        //设置字模输出的大小//上半个字
; 76.	        region.width = ASCII_LARGE_WIDTH_DEF;
	LD	A,8
	LD	(region+2),A
; 77.	        region.height = ASCII_LARGE_HEIGHT_DEF/2;
	LD	(region+3),A
; 78.	        region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
	LD	A,(region+1)
	ADD	A,8
	LD	(region+1),A
; 79.	        
; 80.	        Hdrv_SetWindow(&region);
	LD	DE,region
	CALL	Hdrv_SetWindow
; 81.	        
; 82.	        //把黑白字模转为彩色字模放在Buff中(上区)
; 83.	        //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
; 84.	        BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);               //change by ybfu
	LD	BC,CharPointBuffer+8
	LD	DE,8
	CALL	BlackCharToColor
; 85.	        //把暂时显存区的数据送到LCM
; 86.	        Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
	LD	BC,128
	LD	DE,DisplayBuffer
	CALL	Hdrv_BuffDataTrans
; 87.	
; 88.	        region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
	LD	A,(region+1)
	ADD	A,248
	LD	(region+1),A
; 89.	        
; 90.	        Hdrv_SetWindow(&region);
	LD	DE,region
	CALL	Hdrv_SetWindow
; 91.	        
; 92.	        //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
; 93.	        BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
	LD	BC,CharPointBuffer
	LD	DE,8
	CALL	BlackCharToColor
; 94.	        //把暂时显存区的数据送到LCM
; 95.	        Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
	LD	BC,128
	LD	DE,DisplayBuffer
	CALL	Hdrv_BuffDataTrans
; 96.	        //坐标移到下一个字的左上角
; 97.	        region.x += ASCII_LARGE_WIDTH_DEF;
	LD	A,(region)
	ADD	A,8
?0008:
	LD	(region),A
; 98.	        //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
; 99.	        break;
?0005:
; 100.	    
; 101.	    default:
; 102.	        break;
?0002:
; 103.	    }
; 104.	    Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模式
	LD	DE,0
	CALL	Hdrv_SetDrawMode
; 105.	    return TRUE;
	LD	A,1
; 106.	}
?0006:
	POP	HL
	POP	IX
	POP	BC
	RET
	END

⌨️ 快捷键说明

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