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

📄 enhanced_unicode.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	enhanced_unicode(17)
	RSEG	MO_EH_UNI(0)
	RSEG	MOC_EH_UNI(0)
	PUBLIC	OneUniToChar
	EXTERN	SD_FClose
	EXTERN	SD_FOpen
	EXTERN	SD_FRead
	EXTERN	SD_FSeek
	PUBLIC	ftbl_B5
	PUBLIC	ftbl_BC
	PUBLIC	ftbl_GB
	PUBLIC	ftbl_JP
	PUBLIC	ftbl_KR
	PUBLIC	ftbl_LA
	PUBLIC	ftbl_RS
	PUBLIC	ftbl_XL
	PUBLIC	unitochar
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_CMP_L02
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	MO_EH_UNI
OneUniToChar:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        enhanced module impletementation 
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.                             
; 7.	*             All Right Reserved                          
; 8.	*
; 9.	*  $Id: enhanced_unicode.c,v 1.12.8.2 2004/08/25 01:19:26 ybfu Exp $
; 10.	*******************************************************************************
; 11.	*/ 
; 12.	#pragma codeseg(MO_EH_UNI)
; 13.	
; 14.	#include "actos.h"
; 15.	#include "enhanced.h"
; 16.	#include "debug.h"
; 17.	
; 18.	#pragma memory=constseg(MOC_EH_UNI)
; 19.	    const char ftbl_GB[]="FTBL_GB.$$$";
; 20.	    const char ftbl_B5[]="FTBL_B5.$$$";
; 21.	    const char ftbl_JP[]="FTBL_JP.$$$";
; 22.	    const char ftbl_KR[]="FTBL_KR.$$$";
; 23.	    const char ftbl_RS[]="U1251.BIN";
; 24.	    const char ftbl_BC[]="U1250.BIN";
; 25.	    const char ftbl_LA[]="U1252.BIN";
; 26.	    const char ftbl_XL[]="U1255.BIN";
; 27.	#pragma memory=default
; 28.	
; 29.	/*
; 30.	********************************************************************************
; 31.	*             
; 32.	*
; 33.	* Description :
; 34.	*
; 35.	* Arguments   : inchar 输入的字符串首址   codeoffsetaddr 对照表中的首址
; 36.	*
; 37.	* Returns     : outchar 输出的字符串首址 
; 38.	*                       返回输出中的有效字节数,为0表示没字符输出
; 39.	*
; 40.	* Notes       :
; 41.	*
; 42.	********************************************************************************
; 43.	*/
; 44.	WORD OneUniToChar(WORD unicode, const SD_FILE *fp, char mode)
; 45.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-6
	PUSH	IY
; 46.	    WORD code,codeCk;
; 47.	    ulong unicode1;
; 48.	    int i;
; 49.	    
; 50.	    unicode1=((ulong)unicode)*2;
	LD	L,(IX+2)
	LD	H,(IX+3)
	LD	BC,0
	ADD	HL,HL
	RL	C
	RL	B
	LD	(IX-4),L
	LD	(IX-3),H
	LD	(IX-2),C
	LD	(IX-1),B
; 51.	    if(unicode>127)
	LD	C,(IX+2)
	LD	B,(IX+3)
	LD	HL,127
	AND	A
	SBC	HL,BC
	JP	NC,?0001
?0000:
; 52.	    {
; 53.	        if(mode==CP_XBL)
	LD	A,(IX+10)
	CP	15
	JR	NZ,?0003
?0002:
; 54.	        {
; 55.	                codeCk=0x0000;
; 56.	                //unicode1=((ulong)codeCk)*2;
; 57.	                for(i=0;i<128;i++)
	LD	DE,0
	LD	IY,0
?0005:
	LD	BC,32896
	PUSH	IY
	POP	HL
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	NC,?0084
?0006:
; 58.	                {
; 59.	                   if(!SD_FSeek(fp,SEEK_SET,codeCk*2))
	PUSH	DE
	EX	DE,HL
	ADD	HL,HL
	LD	BC,0
	PUSH	BC
	PUSH	HL
	LD	E,(IX+4)
	LD	D,(IX+5)
	CALL	LWRD SD_FSeek
	POP	HL
	POP	HL
	OR	A
	POP	DE
	JR	Z,?0084
?0008:
; 60.	                      return 0x20;
?0009:
; 61.	                   SD_FRead(fp,&code,2);
	PUSH	DE
	LD	HL,2
	PUSH	HL
	LD	L,6
	ADD	HL,SP
	CALL	LWRD ?0106
	POP	AF
	POP	DE
; 62.	                   if(code==unicode)
	LD	L,(IX+2)
	LD	H,(IX+3)
	LD	C,(IX-6)
	LD	B,(IX-5)
	AND	A
	SBC	HL,BC
	JR	NZ,?0011
?0010:
; 63.	                      return codeCk+0x0080;
	LD	HL,128
	ADD	HL,DE
	JR	?0017
?0011:
; 64.	                   codeCk++;
	INC	DE
	INC	IY
	JR	?0005
?0004:
; 65.	                }
; 66.	                return 0x20;
; 67.	        }
?0003:
; 68.	        else
; 69.	        {
; 70.	                if(!SD_FSeek(fp,SEEK_SET,unicode1))
	LD	L,(IX-2)
	LD	H,(IX-1)
	PUSH	HL
	LD	L,(IX-4)
	LD	H,(IX-3)
	PUSH	HL
	LD	C,0
	LD	E,(IX+4)
	LD	D,(IX+5)
	CALL	LWRD SD_FSeek
	POP	HL
	POP	HL
	OR	A
	JR	NZ,?0013
?0012:
; 71.	                    return 0x20;
?0084:
	LD	HL,32
	JR	?0017
?0013:
; 72.	                if(SD_FRead(fp,&code,2))
	LD	HL,2
	PUSH	HL
	INC	HL
	INC	HL
	ADD	HL,SP
	CALL	LWRD ?0106
	POP	AF
	LD	A,L
	OR	H
	JR	Z,?0016
?0014:
; 73.	                    return code;
	LD	L,(IX-6)
	LD	H,(IX-5)
; 74.	        }
	JR	?0017
?0015:
; 75.	    }
; 76.	    else     //是ASCII
?0001:
; 77.	    {
; 78.	        return unicode;
	LD	L,C
	LD	H,B
; 79.	    }
	JR	?0017
?0016:
; 80.	    return 0;
	LD	L,A
	LD	H,A
; 81.	}
?0017:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0106:
	LD	C,L
	LD	B,H
	LD	E,(IX+4)
	LD	D,(IX+5)
	JP	LWRD SD_FRead
unitochar:
; 82.	
; 83.	
; 84.	/*
; 85.	********************************************************************************
; 86.	*             
; 87.	*
; 88.	* Description :
; 89.	*
; 90.	* Arguments   :
; 91.	*
; 92.	* Returns     :
; 93.	*
; 94.	* Notes       :
; 95.	*
; 96.	********************************************************************************
; 97.	*/
; 98.	bool unitochar(char *str,int len,unsigned char encode)
; 99.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-6
	PUSH	IY
; 100.	    int s_cnt=0;
; 101.	    int d_cnt=0;
; 102.	    WORD code;
; 103.	    SD_FILE *fp;
; 104.	                
; 105.	    //清 WATCH_DOG 
; 106.	    output8(REG4E_RTC_WATCH_DOG, input8(REG4E_RTC_WATCH_DOG) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 107.	    
; 108.	    switch(encode)
	XOR	A
	LD	(IX-2),A
	LD	(IX-1),A
	LD	E,(IX+10)
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	9
	DEFB	0
	DEFB	2
	DEFB	3
	DEFB	4
	DEFB	13
	DEFB	14
	DEFB	15
	DEFB	16
	DEFB	17
	DEFW	?0066
	DEFW	?0023
	DEFW	?0023
	DEFW	?0025
	DEFW	?0026
	DEFW	?0024
	DEFW	?0022
	DEFW	?0021
	DEFW	?0020
	DEFW	?0019
?0019:
; 109.	    {
; 110.	        case CP_CHS:            //中文简体
; 111.	                        fp=SD_FOpen(ftbl_GB,MODE_READ);
	LD	C,A
	LD	DE,ftbl_GB
	JR	?0102
; 112.	                        break;
?0020:
; 113.	        case CP_CHT:            //中文繁体
; 114.	                        fp=SD_FOpen(ftbl_B5,MODE_READ);
	LD	C,A
	LD	DE,ftbl_B5
	JR	?0102
; 115.	                        break;
?0021:
; 116.	        case 3:                 //日文
; 117.	                        fp=SD_FOpen(ftbl_JP,MODE_READ);   
	LD	C,A
	LD	DE,ftbl_JP
	JR	?0102
; 118.	                break;
?0022:
; 119.	        case 4:                 //韩文
; 120.	                        fp=SD_FOpen(ftbl_KR,MODE_READ);   
	LD	C,A
	LD	DE,ftbl_KR
	JR	?0102
; 121.	                break;
?0023:
; 122.	        case CP_BOL:            //波兰
; 123.	        case CP_CRE:            //捷克        
; 124.	                fp=SD_FOpen(ftbl_BC,MODE_READ);   
	LD	C,A
	LD	DE,ftbl_BC
	JR	?0102
; 125.	                break;
?0024:
; 126.	        case CP_RUS:            //俄文
; 127.	                        fp=SD_FOpen(ftbl_RS,MODE_READ);   
	LD	C,A
	LD	DE,ftbl_RS
	JR	?0102
; 128.	                break;
?0025:
; 129.	        case CP_XBL:            //西伯莱
; 130.	                                        fp=SD_FOpen(ftbl_XL,MODE_READ);
	LD	C,A
	LD	DE,ftbl_XL
?0102:
	JP	LWRD ?0105
; 131.	                break;
?0026:
; 132.	        case CP_TAI:    //泰文
; 133.	                                        for(d_cnt=0,s_cnt=0;(s_cnt<len)&&((str[s_cnt]!=0)||(str[s_cnt+1]!=0)); )
	LD	(IX-6),A
	LD	(IX-5),A
?0028:
	LD	C,(IX+4)
	LD	B,(IX+5)
	LD	L,A
	LD	H,(IX-5)
	CALL	LWRD ?SS_CMP_L02
	JP	NC,?0027
	LD	C,(IX+2)
	LD	B,(IX+3)
	ADD	HL,BC
	LD	A,(HL)
	OR	A
	JR	NZ,?0032
	LD	L,(IX-6)
	LD	H,(IX-5)
	ADD	HL,BC
	INC	HL
	LD	A,(HL)
	OR	A
	JP	Z,?0027
?0032:
?0033:
?0031:
?0030:
?0029:
; 134.	                                                                {
; 135.	                                                                        code = str[s_cnt]+str[s_cnt+1]*0x100;
	LD	L,(IX-6)
	LD	H,(IX-5)
	ADD	HL,BC
	INC	HL
	LD	D,(HL)
	LD	E,0
	LD	L,(IX-6)
	LD	H,(IX-5)
	ADD	HL,BC
	LD	C,(HL)
	LD	B,E
	EX	DE,HL
	ADD	HL,BC

⌨️ 快捷键说明

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