jis.c 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #include "libkcc.h"
  2. #include <string.h>
  3. extern enum mode outmode;
  4. extern char shiftout[], shiftin[];
  5. extern bool nogaiji;
  6. /*---------------------------------------------------------------------
  7. NAME
  8. jisascii
  9. ---------------------------------------------------------------------*/
  10. void Kcc_jisascii(ddd, c)
  11. register int c;
  12. char **ddd;
  13. {
  14. int i;
  15. switch (outmode) {
  16. case M_ASCII:
  17. break;
  18. case M_SO:
  19. **ddd = SI; (*ddd)++;
  20. outmode = M_ASCII;
  21. break;
  22. default:
  23. for (i=0; i< strlen(shiftout); i++) { **ddd = shiftout[i]; (*ddd)++; }
  24. outmode = M_ASCII;
  25. break;
  26. }
  27. **ddd = c; (*ddd)++;
  28. }
  29. /*---------------------------------------------------------------------
  30. NAME
  31. jisgaiji
  32. ---------------------------------------------------------------------*/
  33. void Kcc_jisgaiji(ddd, c1, c2)
  34. register int c1, c2;
  35. char **ddd;
  36. {
  37. if (nogaiji)
  38. Kcc_jiskanji(ddd, ZENPAD >> 8, ZENPAD & 0xff);
  39. else {
  40. if (outmode != M_GAIJI) {
  41. if (outmode == M_SO) { **ddd = SI; (*ddd)++; }
  42. **ddd = '\033'; (*ddd)++;
  43. **ddd = '$'; (*ddd)++;
  44. **ddd = '('; (*ddd)++;
  45. **ddd = 'D'; (*ddd)++;
  46. outmode = M_GAIJI;
  47. }
  48. **ddd = c1;
  49. **ddd = c2;
  50. }
  51. }
  52. /*---------------------------------------------------------------------
  53. NAME
  54. jiskana
  55. ---------------------------------------------------------------------*/
  56. void Kcc_jiskana(ddd, c)
  57. register int c;
  58. char **ddd;
  59. {
  60. int i;
  61. if (outmode != M_SO) {
  62. if (outmode != M_ASCII) {
  63. for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
  64. }
  65. **ddd = SO; (*ddd)++;
  66. outmode = M_SO;
  67. }
  68. **ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
  69. }
  70. /*---------------------------------------------------------------------
  71. NAME
  72. jiskana8
  73. ---------------------------------------------------------------------*/
  74. void Kcc_jiskana8(ddd, c)
  75. register int c;
  76. char **ddd;
  77. {
  78. int i;
  79. if (outmode != M_ASCII) {
  80. for (i=0; i< strlen(shiftout); i++) {**ddd = shiftout[i]; (*ddd)++; }
  81. outmode = M_ASCII;
  82. }
  83. **ddd = (!nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD) | 0x80; (*ddd)++;
  84. }
  85. /*---------------------------------------------------------------------
  86. NAME
  87. jiskanak
  88. ---------------------------------------------------------------------*/
  89. void Kcc_jiskanak(ddd, c)
  90. register int c;
  91. char **ddd;
  92. {
  93. if (outmode != M_ESCI) {
  94. **ddd = '\033'; (*ddd)++;
  95. **ddd = '('; (*ddd)++;
  96. **ddd = 'I'; (*ddd)++;
  97. outmode = M_ESCI;
  98. }
  99. **ddd = !nogaiji || (0x20 < c && c < 0x60) ? c : HANPAD; (*ddd)++;
  100. }
  101. /*---------------------------------------------------------------------
  102. NAME
  103. jiskanji
  104. ---------------------------------------------------------------------*/
  105. void Kcc_jiskanji(ddd, c1, c2)
  106. register int c1, c2;
  107. char **ddd;
  108. {
  109. int i;
  110. if (outmode != M_KANJI) {
  111. if (outmode == M_SO)
  112. { **ddd = SI; (*ddd)++; }
  113. for (i=0; i< strlen(shiftin); i++) {**ddd = shiftin[i]; (*ddd)++; }
  114. outmode = M_KANJI;
  115. }
  116. **ddd = c1; (*ddd)++;
  117. **ddd = c2; (*ddd)++;
  118. }