131 lines
3 KiB
C
131 lines
3 KiB
C
#include "libkcc.h"
|
|
|
|
extern enum mode outmode;
|
|
extern char shiftout[], shiftin[];
|
|
extern bool nogaiji;
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jisascii
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jisascii(ddd, c)
|
|
register int c;
|
|
char **ddd;
|
|
{
|
|
int i;
|
|
|
|
switch (outmode) {
|
|
case M_ASCII:
|
|
break;
|
|
case M_SO:
|
|
**ddd = SI; (*ddd)++;
|
|
outmode = M_ASCII;
|
|
break;
|
|
default:
|
|
for (i=0; i< strlen(shiftout); i++) { **ddd = shiftout[i]; (*ddd)++; }
|
|
outmode = M_ASCII;
|
|
break;
|
|
}
|
|
**ddd = c; (*ddd)++;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jisgaiji
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jisgaiji(ddd, c1, c2)
|
|
register int c1, c2;
|
|
char **ddd;
|
|
{
|
|
|
|
if (nogaiji)
|
|
Kcc_jiskanji(ddd, ZENPAD >> 8, ZENPAD & 0xff);
|
|
else {
|
|
if (outmode != M_GAIJI) {
|
|
if (outmode == M_SO) { **ddd = SI; (*ddd)++; }
|
|
**ddd = '\033'; (*ddd)++;
|
|
**ddd = '$'; (*ddd)++;
|
|
**ddd = '('; (*ddd)++;
|
|
**ddd = 'D'; (*ddd)++;
|
|
outmode = M_GAIJI;
|
|
}
|
|
**ddd = c1;
|
|
**ddd = c2;
|
|
}
|
|
}
|
|
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jiskana
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jiskana(ddd, c)
|
|
register int c;
|
|
char **ddd;
|
|
{
|
|
int i;
|
|
|
|
if (outmode != M_SO) {
|
|
if (outmode != M_ASCII) {
|
|
for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
|
|
}
|
|
**ddd = SO; (*ddd)++;
|
|
outmode = M_SO;
|
|
}
|
|
**ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jiskana8
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jiskana8(ddd, c)
|
|
register int c;
|
|
char **ddd;
|
|
{
|
|
int i;
|
|
|
|
if (outmode != M_ASCII) {
|
|
for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
|
|
outmode = M_ASCII;
|
|
}
|
|
**ddd = (!nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD) | 0x80; (*ddd)++;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jiskanak
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jiskanak(ddd, c)
|
|
register int c;
|
|
char **ddd;
|
|
{
|
|
|
|
if (outmode != M_ESCI) {
|
|
**ddd = '\033'; (*ddd)++;
|
|
**ddd = '('; (*ddd)++;
|
|
**ddd = 'I'; (*ddd)++;
|
|
outmode = M_ESCI;
|
|
}
|
|
**ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
|
|
}
|
|
|
|
/*---------------------------------------------------------------------
|
|
NAME
|
|
jiskanji
|
|
---------------------------------------------------------------------*/
|
|
void Kcc_jiskanji(ddd, c1, c2)
|
|
register int c1, c2;
|
|
char **ddd;
|
|
{
|
|
int i;
|
|
|
|
if (outmode != M_KANJI) {
|
|
if (outmode == M_SO)
|
|
{ **ddd = SI; (*ddd)++; }
|
|
for (i=0; i< strlen(shiftin); i++) {**ddd = shiftin[i]; (*ddd)++; }
|
|
outmode = M_KANJI;
|
|
}
|
|
**ddd = c1; (*ddd)++;
|
|
**ddd = c2; (*ddd)++;
|
|
}
|
|
|