1/* Copyright 1992 NEC Corporation, Tokyo, Japan.
2 *
3 * Permission to use, copy, modify, distribute and sell this software
4 * and its documentation for any purpose is hereby granted without
5 * fee, provided that the above copyright notice appear in all copies
6 * and that both that copyright notice and this permission notice
7 * appear in supporting documentation, and that the name of NEC
8 * Corporation not be used in advertising or publicity pertaining to
9 * distribution of the software without specific, written prior
10 * permission.  NEC Corporation makes no representations about the
11 * suitability of this software for any purpose.  It is provided "as
12 * is" without express or implied warranty.
13 *
14 * NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
15 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN
16 * NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
17 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
18 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
19 * OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
20 * PERFORMANCE OF THIS SOFTWARE.
21 *
22 * $Id: main.code,v 1.2 2002/10/20 04:10:29 aida_s Exp $
23 */
24/*
25 * bunrui.code: �����ʻ�ʬ��ɽ
26 *
27 * ����
28 *      [��٥�] ���� ��Ͽ����ɤ�
29 *
30 *
31 * �ѹ���
32 *      1. ư��Ϣ�ѷ���̾��ˤʤ륰�롼�פ��ɲá�(̾��Ȥν�ʣ��Ͽ��ʤ�������)
33 *      2. �θ����̤�����(̾�졤����ư��ʤɤ�ʬ����ˡ),T00-T39,��40���롼��
34 *              ��³�����ˤ��,���롼��ʬ��������
35 *      3. �θ����̤�����(���졤����ư��ȥ�����Ѥ�ʬ����ˡ),F01-F15,��16���롼��
36 *              ��³�����ˤ��,���롼��ʬ��������
37 *      4. ���ƻ�
38 *              3�ĤΥ��롼�פ�ʬ������
39 *	5. ����¾
40 *		��³�ط���Ʊ��������³�졤��ư����碌�ơ��쥰�롼�פˤ�����
41 *
42 */
43
44#define BUNMATU /* by fujieda@jaist.ac.jp */
45#define LOGIC_HACK /* by fujieda@jaist.ac.jp */
46
47#ifndef BUNMATU
48#define BM BB
49#endif
50
51/************************************************************************
52 * ����                                                               *
53 *      ��Ω���ͭ�����뤿��ˡ���Ω������������ɤ���경���롥      *
54 *      [��Ω�콪λ]�ޤǤιԤ����Ƥ��ѹ�����ȡ����̼���ϻ��ѤǤ��ʤ���*
55 ************************************************************************/
56/* BB:ʸ��Ƭ/������
57 *      ʸ����ϤǤ���ñ��
58 *      ʸ���λ�Ǥ���ñ��
59 */
60BB      _       _
61
62#ifndef BM
63/* BM:ʸ��������
64 *      ʸ�Ϥ�λ�Ǥ���ñ��
65 */
66BM      _       _
67#endif
68
69/* �ʻ��ʬ�� */
70TAIGEN  _       _       /* �θ� */
71YOUGEN  _       _       /* �Ѹ� */
72KAKUJS  _       _       /* �ʽ��� */
73
74/* ư��촴
75 *
76 * ��ư�����ɽ����������( )��ϲ��ط�
77 *
78 *  ��������������������̤��  Ϣ��  ������  ����  ̿��  ���
79 *
80 * K5   ����5��		��    ��    ��      ��    ��  	�֤�
81 *  ����������������������    (��)
82 * K5r  ����5�ʤ�Ϣ�ѷ���̾��                           ��
83 * C5r  �Ԥ�5�ʤ�Ϣ�ѷ���̾��
84 *  ����������������������    ��    ��      ��    ��    �Ԥ�
85 *  ����������������������    (��)
86 * G5   ����5�ʡ������� ��    ��    ��      ��    ��    �Ĥ�
87 *  ����������������������    (��)
88 * G5r  ����5�ʤ�Ϣ�ѷ���̾��                           �ޤ�
89 * S5   ����5�ʡ������� ��    ��    ��      ��    ��    �֤�
90 *  ����������������������
91 * S5r  ����5�ʤ�Ϣ�ѷ���̾��                           �ܤ�
92 * T5   ����5�ʡ������� ��    ��    ��      ��    ��    ���
93 *  ����������������������    (��)
94 * T5r  ����5�ʤ�Ϣ�ѷ���̾��                           �Ǥ�
95 * N5   �ʹ�5�ʡ������� ��    ��    ��      ��    ��    ���
96 *  ����������������������    (��)
97 * B5   �й�5�ʡ������� ��    ��    ��      ��    ��    ž��
98 *  ����������������������    (��)
99 * B5r  �й�5�ʤ�Ϣ�ѷ���̾��                           ͷ��
100 * M5   �޹�5�ʡ������� ��    ��    ��      ��    ��    ����
101 *  ����������������������    (��)
102 * M5r  �޹�5�ʤ�Ϣ�ѷ���̾��                           �Ԥ�
103 * R5   ���5�ʡ������� ��    ��    ��      ��    ��	��ĥ��
104 *  ����������������������    (��)
105 * R5r  ���5�ʤ�Ϣ�ѷ���̾��                           �դ�
106 * L5   ���5�ʡ������� ��    ��    ��      ��    ��    ����ä����
107 *      (̿�������)������    (��)
108 * W5   ��(��)��5��     ��    ��    ��      ��    ��    ����
109 *                      ��    (��)
110 * W5r  ��(��)��5�ʤ�Ϣ�ѷ���̾��                       ����
111 * U5   ��5��         ��    ��    ��      ��    ��    ��
112 *                      ��    (��)
113 * U5r  ��5�ʤ�Ϣ�ѷ���̾��                           �䤦
114 * KS   �岼����        ��    ��    ��      ��    ��    �ߤ��[Ϳ����]
115 *                                                ��
116 * KSr  �岼���ʤǸ촴��̾��                            ������[�¤���]
117 * KX   ����            ��    ��    ����    ����  ����  ���
118 * SX   ����            ��                              �ؤ���
119 *                      ��    ��    ����    ����  ����
120 *  ����������������������
121 * ZX   ���ѡ�������������                              ������
122 *  ����������������������    ��    ����    ����  ����
123 *  ����������������������
124 * NZX  ���ѡ�����������                    ����  �Ť���
125 *  ���������������������� �� ���� ���� ����
126 *  ����������������������
127 *
128 */
129K5      _       _       /* ����5��: 		 �֤�*/
130K5r     _       _       /* ����5��,Ϣ�ѷ���̾��: �� */
131C5r     _       _       /* �Ԥ�5��,Ϣ�ѷ���̾��: �Ԥ� */
132G5      _       _       /* ����5��: 		 �Ĥ� */
133G5r     _       _       /* ����5��,Ϣ�ѷ���̾��: �ޤ� */
134S5      _       _       /* ����5��: 		 ���� */
135S5r     _       _       /* ����5��,Ϣ�ѷ���̾��: �ܤ� */
136T5      _       _       /* ����5��: 		 ��� */
137T5r     _       _       /* ����5��,Ϣ�ѷ���̾��: �Ǥ� */
138N5      _       _       /* �ʹ�5��: 		 ��� */
139B5      _       _       /* �й�5��: 		 ž�� */
140B5r     _       _       /* �й�5��,Ϣ�ѷ���̾��: ͷ�� */
141M5      _       _       /* �޹�5��: 		 ���� */
142M5r     _       _       /* �޹�5��,Ϣ�ѷ���̾��: �Ԥ� */
143R5      _       _       /* ���5��: 		 ��ĥ�� */
144R5r     _       _       /* ���5��,Ϣ�ѷ���̾��: �դ� */
145L5      _       _       /* ���5��(̿�������):  ����ä���� */
146                        /* ¾: ���ä����,������,������,�ʤ���,���ʤ���,��ʤ��� */
147W5      _       _       /* ���5��: 		 ���� */
148W5r     _       _       /* ���5��,Ϣ�ѷ���̾��: ���� */
149U5      _       _       /* ��5��:              �� */
150U5r     _       _       /* ��5��,Ϣ�ѷ���̾��: �䤦 */
151KS	_	_	/* �岼1��: 		 �ߤ��,Ϳ���� */
152KSr	_	_	/* �岼1��,�촴��̾��:   ������,�¤��� */
153KX      _       _       /* ���ѳ���ư��: 	 ��� */
154SX      _       _       /* ���ѳ���ư��: 	 �ؤ��� */
155ZX      _       _       /* ���ѳ���ư��: 	 ������ */
156NZX     _       _       /* ���ѳ���ư��: 	 �Ť��� */
157
158/* �θ�ʬ��
159 *
160 * KJ   ��ʸ������: ñ�����Ѵ��Τߤǻ��Ѥ���
161 * CN   ��̾
162 * CNS	��̾(������Ĥ�)
163 * JCN	���Ȥ��Ƥ�Ȥ�����̾
164 * JN   ��̾
165 * KK   ���/����
166 *
167 * T**  ����Ū���θ���(̾��/����̾��/����ư��/����)
168 *
169 *      ������ư��γ���
170 *      ̤��  Ϣ��  ����  Ϣ��  ����  ̿��
171 *      ����  ����  ��    ��    �ʤ�  ��
172 *            ��          (��)
173 *            ��
174 *
175 *      ������Ǥ�ά��ɽ��(���ˤ��)
176 *      ����            Ϣ����ˡ��,Ϣ����ˡ�ˤ�·�ä����
177 *      �����ʥ�        Ϣ����ˡ�ΤΤ������ư��
178 *      ̾�ʥ�,̾������ Ϣ����ˡ��,Ϣ����ˡ�� �Τ���̾��(�촴��ʸ��ˤʤ��)
179 *      �ȡ�����        Ϣ����ˡ����,Ϣ����ˡ�ȤȤʤ���
180 *      ��              �֤���פȷ�礷�ƥ��ѳ��Ѥ���
181 *      ̾              ̾��
182 *      ��              ����
183 *      �������ʥ�      �������ˡ�ȥ��ʥΤ���ˡ�����
184 *
185 *      ����³�������
186 *      -����³         ����ư����Ѥ���(���Ѹ������٤Ƥ��Ĥ�)        ��
187 *                                    ���ʤ�                            ��
188 *      -����³         �֤��פ��Ĥ���̾�첽����                        ��
189 *                                          ���ʤ�                      ��
190 *      -������³       �֤���פȷ�礷�ƥ��ѳ��Ѥ���                  ��
191 *                                                ���ʤ�                ��
192 *      �촴��ʸ��      �촴��ñ�Ȥ�ʸ��ˤʤ뤳�Ȥ��Ǥ���              ��
193 *                                                  �Ǥ��ʤ�            ��
194 *      �ʽ���³        �ʽ��줬��³���뤫(���٤Ƥγʽ������³��ǽ     ��
195 *                                         �֤ΡפΤߤ���³����         ��
196 *                                         �ʽ���ˤ���³���ʤ�		��
197 *                                              (�֤ˡפ��㳰 ? )
198 *
199 *      ��ŵ�Ǥ�        -��   -��  -���� �촴�� �ʽ�    ���
200 *      ɽ��ˡ          ��³  ��³  ��³  ʸ��  ��³
201 *
202 * T00  ̾���������ʥ�  ��    ��    ��    ��    ��      ����
203 *      ̾�ʥΡ���                                      ����
204 * T01                  ��    ��    ��    ��    ��
205 * T02                  ��    ��    ��    ��    ��
206 * T03  ���ʥ�          ��    ��    ��    ��    ��      ��������
207 * T04                  ��    ��    ��    ��    ��	��˽
208 * T05 ̾�����ʥ�       ��    ��    ��    ��    ��      ����
209 *     ̾������                                         ����,����,�ʷ�,����
210 *     ̾�ʥ�                                           ����
211 * T06                  ��    ��    ��    ��    ��	����,���,��䤫,����
212 * T07 ��������         ��    ��    ��    ��    ��      ��ʬ
213 * T08 ���ʥ�           ��    ��    ��    ��    ��      �ճ�,��̿
214 * T09 ����             ��    ��    ��    ��    ��      �Ť�,����
215 * T10                  ��    ��    ��    ��    ��      �¿�,�ⵤ,����,����
216 * T11                  ��    ��    ��    ��    ��	����,����,����,ľ��
217 * T12                  ��    ��    ��    ��    ��	¸ʬ
218 * T13                  ��    ��    ��    ��    ��	�繲��
219 * T14                  ��    ��    ��    ��    ��
220 * T15  ����            ��    ��    ��    ��    ��      Ʊ��?(�ü�ʷ��ƻ�ȤνŤʤ�)
221 *      ̾����������                                    ����
222 * T16  �������ʥ�      ��    ��    ��    ��    ��      �Ƴ�,����,���ʤ�
223 * T17  ���ʥ�          ��    ��    ��    ��    ��      �䤿��,�Ԥä���
224 *      ����                                            �ռ�Ū,����Ū,�ʳ�Ū
225 * T18                  ��    ��    ��    ��    ��	������,�Ÿ�,�²�,�ⵤ
226 * T19                  ��    ��    ��    ��    ��	��ʤ�,����,�礶�ä�
227 * T20                  ��    ��    ��    ��    ��
228 * T21                  ��    ��    ��    ��    ��
229 * T22                  ��    ��    ��    ��    ��
230 * T23                  ��    ��    ��    ��    ��
231 * T24                  ��    ��    ��    ��    ��
232 * T25                  ��    ��    ��    ��    ��	ʿ��
233 * T26                  ��    ��    ��    ��    ��
234 * T27                  ��    ��    ��    ��    ��
235 * T28                  ��    ��    ��    ��    ��
236 * T29                  ��    ��    ��    ��    ��
237 * T30  ̾����          ��    ��    ��    ��    ��      ����,����,����,����
238 * T31  ��              ��    ��    ��    ��    ��      ����ä�
239 * T32                  ��    ��    ��    ��    ��
240 * T33                  ��    ��    ��    ��    ��
241 * T34                  ��    ��    ��    ��    ��
242 * T35  ̾(����Ū��̾��)��    ��    ��    ��    ��      ���,�縰,��,���
243 *      ̾����                                          �ۤȤ��
244 * T36  ��              ��    ��    ��    ��    ��      ��ۤ�,���֤�,�ޤ����
245 * T37  ��              ��    ��    ��    ��    ��      ������,�ϤʤϤ�
246 * T38                  ��    ��    ��    ��    ��
247 * T39                  ��    ��    ��    ��    ��
248 *
249 *      ��줬�ʤ��Ȥ���ϡ���������줬���ߤϸ��Ĥ���ʤ����ᡥ
250 *
251 */
252KJ      _       _       /* ��ʸ������(ñ�����Ѵ��Τߤǻ���) */
253CN      _       _       /* ��� */
254CNS	_	_	/* ����� */
255JN      _       _       /* ����,�� */
256JNS     _       _       /* ����¢�� (���˥塼�ɲ�ʬ) */
257JNM     _       _       /* ̾������ (���˥塼�ɲ�ʬ) */
258JCN     _       _       /* ��̾������:Ĺ�� */
259KK      _       _       /* �����ŵ� */
260
261T00     _       _       /* ̾���������ʥΡ�̾�ʥΡ���: ����,���� */
262T01     _       _       /* */
263T02     _       _       /* */
264T03     _       _       /* ���ʥ�: �������� */
265T04     _       _       /* */
266T05     _       _       /* ̾�����ʥ�,̾������,̾�ʥ�: ����,����,����,�ʷ�,����,���� */
267T06     _       _       /* */
268T07     _       _       /* ��������: ��ʬ */
269T08     _       _       /* ���ʥ�: �ճ�,��̿ */
270T09     _       _       /* ���ʥ�: �Ť�,���� */
271T10     _       _       /* */
272T11     _       _       /* */
273T12     _       _       /* */
274T13     _       _       /* */
275T14     _       _       /* */
276T15     _       _       /* ����,̾����������: Ʊ��?,������ */
277T16     _       _       /* ��������,���ʥ�: �Ƴ�,���ʤ� */
278T17     _       _       /* ����: �䤿��,����,�Ԥä���,�ռ�Ū,����Ū,�ʳ�Ū */
279T18     _       _       /* */
280T19     _       _       /* */
281T20     _       _       /* */
282T21     _       _       /* */
283T22     _       _       /* */
284T23     _       _       /* */
285T24     _       _       /* */
286T25     _       _       /* */
287T26     _       _       /* */
288T27     _       _       /* */
289T28     _       _       /* */
290T29     _       _       /* */
291T30     _       _       /* ̾����: ���� */
292T31     _       _       /* ��: ����ä� */
293T32     _       _       /* */
294T33     _       _       /* */
295T34     _       _       /* */
296T35     _       _       /* ̾,̾����: ��,���,�ۤȤ�� */
297T36     _       _       /* ��: ��ۤ�,���֤� */
298T37     _       _       /* ��: ������,�ϤʤϤ� */
299T38     _       _       /* */
300T39     _       _       /* */
301
302/*
303 * F**  ������(����ư��ȥ��뷿���Ѥ�ޤ�):
304 *      �ȥ�����Ѥ������ư��ڤ�����ϡ������-����¿���褦�Ǥ��롥
305 *
306 *      ������ư��ȡ��������
307 *      ̤��  Ϣ��  ����  Ϣ��  ����  ̿��
308 *      ����  ����  ����  ����  ����  ����
309 * ��         (��)
310 *       ( )��ϥȳ��Ѥλ��Τ�
311 *
312 *      ������Ǥ�ά��ɽ��
313 *      ��              ����
314 *      �ȡ�����        Ϣ����ˡ����,Ϣ����ˡ�ȤȤʤ���
315 *      ��              �֤���פȷ�礷�ƥ��ѳ��Ѥ���
316 *
317 *      ����³�������
318 *      -����³         ʸ�쥿����Ѥθ���Ǥη���Ϣ�ѷ��ˡ֤ȡפ�������
319 *      -������³       ʸ�쥿����Ѥθ���Ǥη�
320 *      -������³       �֤���פȷ�礷�ƥ��ѳ��Ѥ��륵�ѳ��Ѥ��뤫
321 *      �촴��ʸ��      �촴��ñ�Ȥ�ʸ��ˤʤ뤳�Ȥ��Ǥ��뤫
322 *
323 *      ��ŵ�Ǥ�        -��  -���� -���� �촴��            ���
324 *      ɽ��ˡ          ��³  ��³  ��³  ʸ��
325 *
326 * F00  �����ȥ���      ��    ��    ��    ��    ����,���뤰��,�Ҥ��Ҥ�,�ġ�
327 * F01  �ȥ��롦��      ��    ��    ��    ��    Ƚ��,����,����,����,����,����
328 * F02  �����ȥ���      ��    ��    ��    ��    ����,����,�Ǹ�,Ʋ��,�䡹,�䡹
329 * F03  �ȥ���          ��    ��    ��    ��    ����,�´�,����,����,�ۡ�,����
330 * F04  ������          ��    ��    ��    ��    �դä���
331 *      ��                                      ����
332 * F05  �ȡ���          ��    ��    ��    ��    ��������,����,���老��,���Ĥ���
333 * F06  ��              ��    ��    ��    ��    ����,����,�١�,�ŤͽŤ�,�ޤ��ޤ�,�श�श
334 * F07                  ��    ��    ��    ��
335 * F08                  ��    ��    ��    ��
336 * F09                  ��    ��    ��    ��
337 * F10                  ��    ��    ��    ��
338 * F11                  ��    ��    ��    ��	��
339 * F12  ��              ��    ��    ��    ��    ���ä�,���ä�,�Ϥä�,�դ�,�ۤä�,��ä�,��������
340 * F13                  ��    ��    ��    ��
341 * F14                  ��    ��    ��    ��	���Ѥ�餺,������,˰���ޤ�
342 * F15                  ��    ��    ��    ��
343 *
344 *	��줬�ʤ��Ȥ���ϡ���������줬���ߤϸ��Ĥ���ʤ����ᡥ
345 *
346 */
347F00     _       _       /* �����ȥ���: ����,���뤰��,�Ҥ��Ҥ� */
348F01     _       _       /* �ȥ��롦��: Ƚ�� */
349F02     _       _       /* �����ȥ���: ����,�Ǹ�,Ʋ��,�䡹 */
350F03     _       _       /* �ȥ���: ����,�´�,����,�ۡ�,����*/
351F04     _       _       /* ����������: �դä���,��ä��� */
352F05     _       _       /* �ȡ���: ��������,����,���老��,���Ĥ��� */
353F06     _       _       /* ��: ����,����,�١�,�ŤͽŤ�,�ޤ��ޤ�,�श�श */
354F07     _       _       /* */
355F08     _       _       /* */
356F09     _       _       /* */
357F10     _       _       /* */
358F11     _       _       /* */
359F12     _       _       /* ��: ���ä�,���ä�,�ۤä�,�դ�,�ۤä�,��ä� */
360F13     _       _       /* */
361F14     _       _       /* */
362F15     _       _       /* */
363
364/* ���ƻ��ʬ��
365 *
366 *      �����ƻ�γ���
367 *      ̤��  Ϣ��  ����  Ϣ��  ����  ̿��
368 *      ����  ��    ��    ��    ����  ��
369 *            ��         (��)
370 *            �ä�                      ( )���ʸ��Ǥγ���
371 *
372 *      ������Ǥ�ά��ɽ��
373 *      ��              ���ƻ�
374 *      ̾�ʥΡ���      T05 �γ��Ѥȷ��ƻ�γ��Ѥ�������
375 *
376 *      ��ŵ�Ǥ�ɽ��ˡ  ���
377 *
378 * KY   ��              ������
379 * KYT  ̾�ʥΡ���      �ͳѤ�,������
380 * KYna ��              ������,�礭��(���Ѥ�[��(Ϣ����ˡ��]��������ƻ�)
381 * KYmi ��		�������Ť�(�ߤǽ����̾���ž��������ƻ�)
382 * KYme ��		���ᡢĹ��(��ǽ���ȷ���ư���ž��������ƻ�)
383 * KYU                  ���ƻ�Υ�����(�����夦)
384 *
385 */
386KY      _       _       /* ������ */
387KYT     _       _       /* �ͳѤ�,������*/
388KYna    _       _       /* �礭�����礭�� */
389KYmi    _       _       /* �ߤǽ����̾���ž�����Ťߡ����ޤ� */
390KYme    _       _       /* ��ǽ���ȷ���ư���ž����Ĺ�ᡢ�礭�� */
391KYmime	_	_	/* KYmi, KYme ��ξ�����������碌���ġ����ߡ����� */
392KYU     _       _       /* �����夦 */
393
394/* ����¾:
395 *	��³�졤��ư����碌�롥��³�ط���Ʊ�����ᡥ
396 */
397CJ      _       _       /* ��³�졤��ư�졤Ϣ��ʤ�*/
398RT      _       _       /* Ϣ�λ� */
399OKX     _       _       /* ư�����ǫɽ���θ촴 �֤�ʹ���פȤ� */
400