- 注册时间
- 2005-9-12
- 最后登录
- 1970-1-1
|
发表于 2008-1-13 11:43:58
|
显示全部楼层
下面TC800支持汉字输入
楼上兄弟用的是6502机器里所带的输入法,故无法显业小字,下面的是LAVA2TC800的输入函数
long input(long xx){
char k,ts[26],i,ch,bh,pinyin[10],s[20];
long tmp,nowp,end,t;
int cian,a,b,l,id,sum,ii;
memset(ts,0,26);
cian=0;
ClearScreen();nowp=ts;
while(1){
AAA:
ClearScreen();
if(cian==0){memset(pinyin,0,6);ii=0;memset(s,0,20);TextOut(1,68,"a",2);}
if(cian==1)TextOut(1,68,"A",2);
if(cian==2)TextOut(1,68,"拼",2);
TextOut(1,1,xx,1);
TextOut(1,13,ts,1);
a=(nowp-ts)*6+1;
end=ts+strlen(ts);
Block(a,13,a+1,26,1);
if(cian==2){
TextOut(18,68,pinyin,1);
t=System.PY2GB(id,pinyin,s);
if (t!=-1){sum=t>>16;TextOut(52,68,s,1);}
else {memset(s,0,20);TextOut(18,68,pinyin,1);}
}
Refresh();
k=getchar();
if(k==27)return '0';
if(k==13){if(strlen(ts)==0)return '0';else return ts;}
if(k==29){
if(nowp<=ts)continue;
if(*(nowp-1)>160){memmove(nowp,nowp-2,end-nowp);
nowp=nowp-2;memset(end-2,0,2);end=end-2;
}
else {
memmove(nowp-1,nowp,end-nowp);
nowp--;*(end-1)=0;end--;
}
continue;
}//29结束
if(k==26){cian=cian+1;if(cian>2)cian=0; goto AAA;}//26
if(k==23){
if(cian==2&&pinyin[0]!=0){
{ii=ii-1;pinyin[ii]=0;if(ii<1)ii=0;continue;}
}
if(nowp<=ts){nowp=ts;continue;}
if(*(nowp-1)>160)nowp=nowp-2;else nowp--;continue;
}//23
if(k==22){if(nowp>=end){nowp=end;continue;}
memset(pinyin,0,6);
if(*(nowp)>160)nowp=nowp+2;else nowp++;continue;
}//22
if(!cian){//小写
if(isprint(k)){
if(26-strlen(ts)<1)goto AAA; //插入字符
memmove(nowp+1,nowp,end-nowp);
end++;*nowp=k;nowp++;
}
}//cian==0结束
if(cian==1){
if(isprint(k)){
if(26-strlen(ts)<1)goto AAA;
memmove(nowp+1,nowp,end-nowp);
end++;*nowp=toupper(k);nowp++;
}
}//cian==1结束
if(cian==2){
l=0;ch=bh=0;
if (k>='a' && k<='z') {
if (ii<6) { //i为拼音的长度
pinyin[ii++]=k;
pinyin[ii]=0;
id=sum=0;
}//if
}//if结束
if(k==21){if (id+9<sum) id=id+9;}
if(k==20){if (id>9) id=id-9;else id=0;}
if(k==25){l=0;if(s[0]==0)goto AAA;
for(;;){
if(bh==23){if(l<=0)l=0;else l=l-1;}
if(bh==22){if(l>=8)l=8;else l=l+1;}
if(bh==13){
if(26-strlen(ts)<2)goto AAA;
if(s[0]==0)goto AAA;
memmove(nowp+2,nowp,end-nowp);
memmove(nowp,s+l*2,2);
nowp=nowp+2;end=end+2;
memset(pinyin,0,6);ii=0;
memset(s,0,20);
goto AAA;
}//bh13
ClearScreen();
TextOut(1,1,xx,1);
TextOut(1,13,ts,1);
TextOut(1,68,"拼",2);
TextOut(18,68,pinyin,1);
TextOut(52,68,s,1);
Block(l*12+52,66,l*12+12+52,78,2);
Refresh();bh=getchar();
} }//for结束
}
}//while结束
}//input结束
void main(){
long x;
x=input("请输入字符串:");
if(x=='0')printf("NO");
else printf("%s",x);
getchar();
}
[ 本帖最后由 xintu1987 于 2008-1-13 11:48 编辑 ] |
|