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

📄 ltf_id.c

📁 T-kernel 的extension源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
		0x20,0x21-0x7e		JIS X 0201 */#define	A1S		0x21U#define	A1E		0x77Ustatic	UB	T2A1[] = {	0x20,		/* 0x2121 */	0,		/* 0x2122 */	0,		/* 0x2123 */	0x2c,		/* 0x2124 */	0x2e,		/* 0x2125 */	0,		/* 0x2126 */	0x3a,		/* 0x2127 */	0x3b,		/* 0x2128 */	0x3f,		/* 0x2129 */	0x21,		/* 0x212a */	0,		/* 0x212b */	0,		/* 0x212c */	0,		/* 0x212d */	0x60,		/* 0x212e */	0,		/* 0x212f */	0x5e,		/* 0x2130 */	0x7e,		/* 0x2131 */	0x5f,		/* 0x2132 */	0,		/* 0x2133 */	0,		/* 0x2134 */	0,		/* 0x2135 */	0,		/* 0x2136 */	0,		/* 0x2137 */	0,		/* 0x2138 */	0,		/* 0x2139 */	0,		/* 0x213a */	0,		/* 0x213b */	0,		/* 0x213c */	0,		/* 0x213d */	0,		/* 0x213e */	0x2f,		/* 0x213f */	0,		/* 0x2140 */	0,		/* 0x2141 */	0,		/* 0x2142 */	0x7c,		/* 0x2143 */	0,		/* 0x2144 */	0,		/* 0x2145 */	0,		/* 0x2146 */	0x27,		/* 0x2147 */	0,		/* 0x2148 */	0x22,		/* 0x2149 */	0x28,		/* 0x214a */	0x29,		/* 0x214b */	0,		/* 0x214c */	0,		/* 0x214d */	0x5b,		/* 0x214e */	0x5d,		/* 0x214f */	0x7b,		/* 0x2150 */	0x7d,		/* 0x2151 */	0,		/* 0x2152 */	0,		/* 0x2153 */	0,		/* 0x2154 */	0,		/* 0x2155 */	0,		/* 0x2156 */	0,		/* 0x2157 */	0,		/* 0x2158 */	0,		/* 0x2159 */	0,		/* 0x215a */	0,		/* 0x215b */	0x2b,		/* 0x215c */	0x2d,		/* 0x215d */	0,		/* 0x215e */	0,		/* 0x215f */	0,		/* 0x2160 */	0x3d,		/* 0x2161 */	0,		/* 0x2162 */	0x3c,		/* 0x2163 */	0x3e,		/* 0x2164 */	0,		/* 0x2165 */	0,		/* 0x2166 */	0,		/* 0x2167 */	0,		/* 0x2168 */	0,		/* 0x2169 */	0,		/* 0x216a */	0,		/* 0x216b */	0,		/* 0x216c */	0,		/* 0x216d */	0,		/* 0x216e */	0x5c,		/* 0x216f */	0x24,		/* 0x2170 */	0,		/* 0x2171 */	0,		/* 0x2172 */	0x25,		/* 0x2173 */	0x23,		/* 0x2174 */	0x26,		/* 0x2175 */	0x2a,		/* 0x2176 */	0x40,		/* 0x2177 */};/*	JIS X 0208-> JIS X 0201 conversion table	Use 0x23xx (Row 3) of JIS X 0208 as a reference point for offset	and store corresponding JIS X 0201 characters.	Offset:		JIS code - 0x2330	Data:		0             Cannot be converted into SJIS(1Byte).		0x30-0x7a     SJIS(1Byte) */#define	A3S		0x30U#define	A3E		0x7aUstatic	UB	T2A3[] = {	0x30,		/* 0x2330 */	0x31,		/* 0x2331 */	0x32,		/* 0x2332 */	0x33,		/* 0x2333 */	0x34,		/* 0x2334 */	0x35,		/* 0x2335 */	0x36,		/* 0x2336 */	0x37,		/* 0x2337 */	0x38,		/* 0x2338 */	0x39,		/* 0x2339 */	0,		/* 0x233a */	0,		/* 0x233b */	0,		/* 0x233c */	0,		/* 0x233d */	0,		/* 0x233e */	0,		/* 0x233f */	0,		/* 0x2340 */	0x41,		/* 0x2341 */	0x42,		/* 0x2342 */	0x43,		/* 0x2343 */	0x44,		/* 0x2344 */	0x45,		/* 0x2345 */	0x46,		/* 0x2346 */	0x47,		/* 0x2347 */	0x48,		/* 0x2348 */	0x49,		/* 0x2349 */	0x4a,		/* 0x234a */	0x4b,		/* 0x234b */	0x4c,		/* 0x234c */	0x4d,		/* 0x234d */	0x4e,		/* 0x234e */	0x4f,		/* 0x234f */	0x50,		/* 0x2350 */	0x51,		/* 0x2351 */	0x52,		/* 0x2352 */	0x53,		/* 0x2353 */	0x54,		/* 0x2354 */	0x55,		/* 0x2355 */	0x56,		/* 0x2356 */	0x57,		/* 0x2357 */	0x58,		/* 0x2358 */	0x59,		/* 0x2359 */	0x5a,		/* 0x235a */	0,		/* 0x235b */	0,		/* 0x235c */	0,		/* 0x235d */	0,		/* 0x235e */	0,		/* 0x235f */	0,		/* 0x2360 */	0x61,		/* 0x2361 */	0x62,		/* 0x2362 */	0x63,		/* 0x2363 */	0x64,		/* 0x2364 */	0x65,		/* 0x2365 */	0x66,		/* 0x2366 */	0x67,		/* 0x2367 */	0x68,		/* 0x2368 */	0x69,		/* 0x2369 */	0x6a,		/* 0x236a */	0x6b,		/* 0x236b */	0x6c,		/* 0x236c */	0x6d,		/* 0x236d */	0x6e,		/* 0x236e */	0x6f,		/* 0x236f */	0x70,		/* 0x2370 */	0x71,		/* 0x2371 */	0x72,		/* 0x2372 */	0x73,		/* 0x2373 */	0x74,		/* 0x2374 */	0x75,		/* 0x2375 */	0x76,		/* 0x2376 */	0x77,		/* 0x2377 */	0x78,		/* 0x2378 */	0x79,		/* 0x2379 */	0x7a,		/* 0x237a */};/* *	TC -> SJIS conversion function */LOCAL W ltf_tctosj( TF_CTX ctx, UB *pubSjDst, TC tcTCSrc, W wZenHan){	W	wErr = 0, wI, wLen;	UB	ubC1, ubC2, ubASCII;	ubC1 = ( UB)( tcTCSrc >> TSD_LTF_SFT_8);	ubC2 = ( UB)( tcTCSrc & TSD_LTF_CD_0XFF);	if( tcTCSrc <= TSD_LTF_TCD_0X20){		/* Control code	*/		if( pubSjDst != 0) {			*pubSjDst = ( UB)tcTCSrc;		}		return( 1);	}	if( ctx->uhLang != TSC_SYS){		goto unsup_char;	}	if( IS_TFHAN( wZenHan) != 0){		ubASCII = 0;		if( tcTCSrc < TSD_LTF_TCD_0X80){		/* Control code	*/			ubASCII = ( UB)tcTCSrc;		}else if( ubC1 == TSD_LTF_CD_0X21){	/* Row 1: Symbols */			ubASCII = (( ubC2 >= A1S )&&( ubC2 <= A1E))? T2A1[ ubC2 - A1S] : 0;#ifdef USE_HKANA			if( ubASCII == 0){				switch( ubC2){				  case TSD_LTF_CD_0X22:					ubASCII = TSD_LTF_CD_0XA4;					break;				  case TSD_LTF_CD_0X23:					ubASCII = TSD_LTF_CD_0XA1;					break;				  case TSD_LTF_CD_0X26:					ubASCII = TSD_LTF_CD_0XA5;					break;				  case TSD_LTF_CD_0X2B:					ubASCII = TSD_LTF_CD_0XDE;					break;				  case TSD_LTF_CD_0X2C:					ubASCII = TSD_LTF_CD_0XDF;					break;				  case TSD_LTF_CD_0X56:					ubASCII = TSD_LTF_CD_0XA2;					break;				  case TSD_LTF_CD_0X57:					ubASCII = TSD_LTF_CD_0XA3;					break;				  default:					/* nothing to do */					break;				}			}	#endif	/* USE_HKANA */		}else if ( ubC1 == TSD_LTF_CD_0X23) {	/* Row 3: Alphanumeric */			ubASCII = (( ubC2 >= A3S )&&( ubC2 <= A3E))? T2A3[ ubC2 - A3S] : 0;#ifdef USE_HKANA		}else if ( ubC1 == TSD_LTF_CD_0X25) {	/* Row 5: Kana */			for( wI = 0; _hzkana[ wI] != TSD_LTF_TCD_0X212B; wI++){				if( _hzkana[ wI] == tcTCSrc){					ubASCII = TSD_LTF_CD_0XA0 + wI;					break;				}			}#endif	/* USE_HKANA */		}		if( ubASCII != 0){			if( pubSjDst != 0){				*pubSjDst = ubASCII;			}			return( 1);		}	}#if defined(USE_JIS)	if( isAZone( tcTCSrc) != 0){		if( pubSjDst != 0){			ubC2 += (( ubC1 & 1) == 0)? TSD_LTF_CD_0X7D: TSD_LTF_CD_0X1F;			if( ubC2 >= TSD_LTF_CD_0X7F){				ubC2++;			}			ubC1 = ( ubC1 + TSD_LTF_CD_0XE1) >> 1;			if( ubC1 >= TSD_LTF_CD_0XA0){				ubC1 += TSD_LTF_CD_0X40;			}			*pubSjDst++ = ubC1;			*pubSjDst   = ubC2;		}		return( TSD_LTS_RTN_2);	}#endif	/* defined(USE_JIS) */unsup_char:	wLen = TSD_LTF_WLN_M1;	switch( ctx->ubT2XUnsupChar){	  case TSD_LTF_CS2_0:				/* Default, = or? */		if( IS_TFHAN( wZenHan) != 0){			if( pubSjDst != 0) {				*pubSjDst = TSD_LTF_CD_0X3F;	/* ? */			}			wLen = 1;		}else{			if( pubSjDst != 0){		/* = */	  			*pubSjDst++ = TSD_LTF_CD_0X81;	  			*pubSjDst = TSD_LTF_CD_0XAC;	  		}			wLen = TSD_LTF_WLN_2;	  	}	  	break;	  case TSD_LTF_CS2_2:	  	wErr = E_NOSPT;		goto err_ret;	/* Not supported */	  case TSD_LTF_CS2_1:	  default:	  	wErr = TSD_LTF_WER_M1;		goto err_ret;	}	return( wLen);err_ret:	DP(( "DEBUG:ltf_tctosj() tcTCSrc=0x%04x, wZenHan=%d\n", tcTCSrc, wZenHan));	return( wErr);}/* *	TC -> EUC conversion function */LOCAL W ltf_tctoeuc( TF_CTX ctx, UB *pubEucDst, TC tcTCSrc, W wZenHan){	W	wErr = 0, wI, wLen;	UB	ubC1, ubC2, ubASCII;	if( tcTCSrc <= TSD_LTF_TCD_0X20){		/* Control code	*/		if( pubEucDst != 0) {			*pubEucDst = ( UB)tcTCSrc;		}		return( 1);	}	if( ctx->uhLang != TSC_SYS){		goto unsup_char;	}	ubC1 = ( UB)( tcTCSrc >> TSD_LTF_SFT_8);	ubC2 = ( UB)( tcTCSrc & TSD_LTF_TCD_0XFF);	if( IS_TFHAN( wZenHan) != 0){		ubASCII = 0;		if( tcTCSrc < TSD_LTF_CCD_0X80){		/* Control code	*/			ubASCII = ( UB)tcTCSrc;		}else if( ubC1 == TSD_LTF_CD_0X21){	/* Row 1: Symbols */			ubASCII = (( ubC2 >= A1S )&&( ubC2 <= A1E))? T2A1[ ubC2 - A1S] : 0;#ifdef USE_HKANA			if( ubASCII == 0){				switch( ubC2){				  case TSD_LTE_CAS_0X22:					ubASCII = TSD_LTF_CD_0XA4;					break;				  case TSD_LTE_CAS_0X23:					ubASCII = TSD_LTF_CD_0XA1;					break;				  case TSD_LTE_CAS_0X26:					ubASCII = TSD_LTF_CD_0XA5;					break;				  case TSD_LTE_CAS_0X2B:					ubASCII = TSD_LTF_CD_0XDE;					break;				  case TSD_LTE_CAS_0X2C:					ubASCII = TSD_LTF_CD_0XDF;					break;				  case TSD_LTE_CAS_0X56:					ubASCII = TSD_LTF_CD_0XA2;					break;				  case TSD_LTE_CAS_0X57:					ubASCII = TSD_LTF_CD_0XA3;					break;				  default:					/* nothing to do */					break;				}			}	#endif	/* USE_HKANA */		}else if ( ubC1 == TSD_LTF_CD_0X23) {	/* Row 3: Alphanumeric */			ubASCII = (( ubC2 >= A3S )&&( ubC2 <= A3E))? T2A3[ ubC2 - A3S] : 0;#ifdef USE_HKANA		}else if ( ubC1 == TSD_LTF_CD_0X25) {	/* Row 5: Kana */			for( wI = 0; _hzkana[ wI] != TSD_LTF_TCD_0X212B; wI++){				if( _hzkana[ wI] == tcTCSrc){					ubASCII = TSD_LTF_CD_0XA0 + wI;					break;				}			}#endif	/* USE_HKANA */		}		if( ubASCII != 0){			if( pubEucDst != 0){				if( TSD_LTF_CD_0XA0 <= ubASCII){					*pubEucDst++ = TSD_LTF_CD_0X8E;				}				*pubEucDst = ubASCII;			}			if( TSD_LTF_CD_0XA0 <= ubASCII){				return( TSD_LTE_RTN_2);			}			return( 1);		}	}#if defined(USE_JIS)	if( isAZone( tcTCSrc) != 0){		if( pubEucDst != 0){			tcTCSrc |= TSD_LTE_MSK_0X8080;			*pubEucDst++ = tcTCSrc >> TSD_LTF_SFT_8;			*pubEucDst = tcTCSrc;		}		return( TSD_LTE_RTN_2);	}#endif	/* defined(USE_JIS) */unsup_char:  	wLen = TSD_LTF_WLN_M1;	switch( ctx->ubT2XUnsupChar){	  case TSD_LTF_CS2_0:						if( IS_TFHAN( wZenHan) != 0){			if( pubEucDst != 0) {				*pubEucDst = TSD_LTF_CD_0X3F;	/* ? */			}			wLen = 1;		}else{			if( pubEucDst != 0){		  		*pubEucDst++ = TSD_LTF_CD_0XA2;		/* = */		  		*pubEucDst = TSD_LTF_CD_0XAE;		  	}			wLen = TSD_LTF_WLN_2;		}	  	break;	  case TSD_LTF_CS2_2:	  	wErr = E_NOSPT;		goto err_ret;	/* Not supported */	  case TSD_LTF_CS2_1:	  default:	  	wErr = TSD_LTF_WER_M1;		goto err_ret;	}	return( wLen);err_ret:	DP(( "DEBUG:ltf_tctoeuc() tcTCSrc=0x%04x, wZenHan=%d\n", tcTCSrc, wZenHan));	return( wErr);}#if defined(USE_UNICODE) /* *	TC -> UNICODE conversion function */LOCAL W ltf_tctouni( TF_CTX ctx, UH *puhUniDst, TC tcTCSrc, W wZenHan){	W	wErr = 0, wI, wLen;	UB	ubC1, ubC2, ubASCII;	if( tcTCSrc <= TSD_LTF_TCD_0X0020){		/* Control code	*/		if( puhUniDst) {			*puhUniDst = tcTCSrc;		}		return( TSD_LTU_RTN_2);	}	if( ctx->uhLang != TSC_SYS){		goto unsup_char;	}	ubC1 = ( UB)( tcTCSrc >> TSD_LTF_SFT_8);	ubC2 = ( UB)( tcTCSrc & TSD_LTF_TCD_0XFF);	if( IS_TFHAN( wZenHan)){		ubASCII = 0;		if( tcTCSrc < TSD_LTF_CCD_0X80){		/* Control code	*/			ubASCII = ( UB)tcTCSrc;		}else if( ubC1 == TSD_LTF_CD_0X21){	/* Row 1: Symbols */			ubASCII = ( ubC2 >= A1S && ubC2 <= A1E)? T2A1[ ubC2 - A1S] : 0;#ifdef USE_HKANA			if( ubASCII == 0){				switch( ubC2){				  case TSD_LTU_CAS_22:					ubASCII = TSD_LTF_CD_0XA4;					break;				  case TSD_LTU_CAS_23:				  	ubASCII = TSD_LTF_CD_0XA1;					break;				  case TSD_LTU_CAS_26:					ubASCII = TSD_LTF_CD_0XA5;					break;				  case TSD_LTU_CAS_2B:					ubASCII = TSD_LTF_CD_0XDE;					break;				  case TSD_LTU_CAS_2C:					ubASCII = TSD_LTF_CD_0XDF;					break;				  case TSD_LTU_CAS_56:					ubASCII = TSD_LTF_CD_0XA2;					break;				  case TSD_LTU_CAS_57:					ubASCII = TSD_LTF_CD_0XA3;					break;				  default:					/* nothing to do */					break;				}			}	#endif	/* USE_HKANA */		}else if ( ubC1 == TSD_LTF_CD_0X23) {	/* Row 3: Alphanumeric */			ubASCII = ( ubC2 >= A3S && ubC2 <= A3E)? T2A3[ ubC2 - A3S] : 0;#ifdef USE_HKANA		}else if ( ubC1 == TSD_LTF_CD_0X25) {	/* Row 5: Kana */			for( wI = 0; _hzkana[ wI] != TSD_LTF_TCD_0X212B; wI++){				if( _hzkana[ wI] == tcTCSrc){					ubASCII = TSD_LTF_CD_0XA0 + wI;					break;				}			}#endif	/* USE_HKANA */		}		if( ubASCII){			if( puhUniDst){				if( TSD_LTF_CD_0XA0 <= ubASCII){					*puhUniDst = TSD_LTF_UCD_0XFF00 | ( ubASCII - TSD_LTF_CD_0X40);				}else{					*puhUniDst = ubASCII;				}			}			return( TSD_LTU_RTN_2);		}	}#if defined(USE_JIS)	if( isAZone( tcTCSrc)){		for( wI = 0; wI < wUni2TCLen; wI++){			if( _ptcUni2TC[ wI] == tcTCSrc){				break;			}		}		if( wI == wUni2TCLen){			goto unsup_char;		}		if( puhUniDst) {			*puhUniDst	= ( UH)wI;		}		return( TSD_LTU_RTN_2);	}#endif	/* defined(USE_JIS) */unsup_char:  	wLen = TSD_LTF_WLN_M1;	switch( ctx->ubT2XUnsupChar){	  case TSD_LTF_CS2_0:		if( IS_TFHAN( wZenHan)){			if( puhUniDst) {				*puhUniDst = TSD_LTF_UCD_0X003F;	/* ? */			}			wLen = TSD_LTF_WLN_2;		}else{			if( puhUniDst){		  		*puhUniDst = TSD_LTF_UCD_0X3013;		/* = */	  		}			wLen = TSD_LTF_WLN_2;		}	  	break;	  case TSD_LTF_CS2_2:	  	wErr = E_NOSPT;		goto err_ret;	/* Not supported */	  case TSD_LTF_CS2_1:	  default:	  	wErr = TSD_LTF_WER_M1;		goto err_ret;	}	return( wLen);err_ret:	DP(( "DEBUG:ltf_tctouni() tcTCSrc=0x%04x, wZenHan=%d\n", tcTCSrc, wZenHan));	return( wErr);}#endif	/* defined(USE_UNICODE) */

⌨️ 快捷键说明

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