OpenCores
URL https://opencores.org/ocsvn/cpu6502_true_cycle/cpu6502_true_cycle/trunk

Subversion Repositories cpu6502_true_cycle

[/] [cpu6502_true_cycle/] [trunk/] [rtl/] [vhdl/] [fsm_execution_unit.vhd] - Blame information for rev 9

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 fpga_is_fu
-- VHDL Entity R6502_TC.FSM_Execution_Unit.symbol
2
--
3
-- Created:
4 8 fpga_is_fu
--          by - eda.UNKNOWN (ENTWICKL4-XP-PR)
5
--          at - 22:42:53 04.01.2009
6 6 fpga_is_fu
--
7
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
8
--
9
LIBRARY ieee;
10
USE ieee.std_logic_1164.all;
11
USE ieee.std_logic_arith.all;
12
 
13 8 fpga_is_fu
entity FSM_Execution_Unit is
14
   port(
15
      adr_nxt_pc_i : in     std_logic_vector (15 downto 0);
16
      adr_pc_i     : in     std_logic_vector (15 downto 0);
17
      adr_sp_i     : in     std_logic_vector (15 downto 0);
18
      clk_clk_i    : in     std_logic;
19
      d_alu_i      : in     std_logic_vector ( 7 downto 0 );
20
      d_i          : in     std_logic_vector ( 7 downto 0 );
21
      d_regs_out_i : in     std_logic_vector ( 7 downto 0 );
22
      irq_n_i      : in     std_logic;
23
      nmi_i        : in     std_logic;
24
      q_a_i        : in     std_logic_vector ( 7 downto 0 );
25
      q_x_i        : in     std_logic_vector ( 7 downto 0 );
26
      q_y_i        : in     std_logic_vector ( 7 downto 0 );
27
      rdy_i        : in     std_logic;
28
      reg_0flag_i  : in     std_logic;
29
      reg_1flag_i  : in     std_logic;
30
      reg_7flag_i  : in     std_logic;
31
      rst_rst_n_i  : in     std_logic;
32
      so_n_i       : in     std_logic;
33
      a_o          : out    std_logic_vector (15 downto 0);
34
      adr_o        : out    std_logic_vector (15 downto 0);
35
      ch_a_o       : out    std_logic_vector ( 7 downto 0 );
36
      ch_b_o       : out    std_logic_vector ( 7 downto 0 );
37
      d_o          : out    std_logic_vector ( 7 downto 0 );
38
      d_regs_in_o  : out    std_logic_vector ( 7 downto 0 );
39
      fetch_o      : out    std_logic;
40
      ld_o         : out    std_logic_vector ( 1 downto 0 );
41
      ld_pc_o      : out    std_logic;
42
      ld_sp_o      : out    std_logic;
43
      load_regs_o  : out    std_logic;
44
      offset_o     : out    std_logic_vector ( 15 downto 0 );
45
      rd_o         : out    std_logic;
46
      sel_pc_as_o  : out    std_logic;
47
      sel_pc_in_o  : out    std_logic;
48
      sel_pc_val_o : out    std_logic_vector ( 1 downto 0 );
49
      sel_rb_in_o  : out    std_logic_vector ( 1 downto 0 );
50
      sel_rb_out_o : out    std_logic_vector ( 1 downto 0 );
51
      sel_reg_o    : out    std_logic_vector ( 1 downto 0 );
52
      sel_sp_as_o  : out    std_logic;
53
      sel_sp_in_o  : out    std_logic;
54
      sync_o       : out    std_logic;
55
      wr_n_o       : out    std_logic;
56
      wr_o         : out    std_logic
57 6 fpga_is_fu
   );
58
 
59
-- Declarations
60
 
61 8 fpga_is_fu
end FSM_Execution_Unit ;
62 6 fpga_is_fu
 
63
-- Jens-D. Gutschmidt     Project:  R6502_TC  
64
 
65
-- scantara2003@yahoo.de                      
66
 
67
-- COPYRIGHT (C) 2008 by Jens Gutschmidt and OPENCORES.ORG                                                                                     
68
 
69
--                                                                                                                                             
70
 
71
-- This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by   
72
 
73
-- the Free Software Foundation, either version 3 of the License, or any later version.                                                        
74
 
75
--                                                                                                                                             
76
 
77
-- This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of              
78
 
79
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.                                  
80
 
81
--                                                                                                                                             
82
 
83
-- You should have received a copy of the GNU General Public License along with this program.  If not, see <http://www.gnu.org/licenses/>.     
84
 
85
--                                                                                                                                             
86
 
87
-- CVS Revisins History                                                                                                                        
88
 
89
--                                                                                                                                             
90
 
91
-- $Log: not supported by cvs2svn $                                                                                                                            
92
 
93
--   <<-- more -->>                                                                                                                            
94
 
95
-- Title:  FSM Execution Unit for all op codes  
96
 
97
-- Path:  R6502_TC/FSM_Execution_Unit/fsm  
98
 
99
-- Edited:  by eda on 04 Jan 2009  
100
 
101
--
102
-- VHDL Architecture R6502_TC.FSM_Execution_Unit.fsm
103
--
104
-- Created:
105 8 fpga_is_fu
--          by - eda.UNKNOWN (ENTWICKL4-XP-PR)
106
--          at - 22:42:55 04.01.2009
107 6 fpga_is_fu
--
108
-- Generated by Mentor Graphics' HDL Designer(TM) 2007.1a (Build 13)
109
--
110
LIBRARY ieee;
111
USE ieee.std_logic_1164.all;
112
USE ieee.std_logic_arith.all;
113
 
114 8 fpga_is_fu
architecture fsm of FSM_Execution_Unit is
115 6 fpga_is_fu
 
116
   -- Architecture Declarations
117 8 fpga_is_fu
   signal reg_F : std_logic_vector( 7 DOWNTO 0 );
118
   signal reg_PC : std_logic_vector(15 DOWNTO 0);
119
   signal reg_PC1 : std_logic_vector( 15 DOWNTO 0 );
120
   signal reg_sel_pc_as : std_logic;
121
   signal reg_sel_pc_in : std_logic;
122
   signal reg_sel_pc_val : std_logic_vector( 1 DOWNTO 0 );
123
   signal reg_sel_rb_in : std_logic_vector( 1 DOWNTO 0 );
124
   signal reg_sel_rb_out : std_logic_vector( 1 DOWNTO 0 );
125
   signal reg_sel_reg : std_logic_vector( 1 DOWNTO 0 );
126
   signal reg_sel_sp_as : std_logic;
127
   signal reg_sel_sp_in : std_logic;
128
   signal sig_D_OUT : std_logic_vector( 7 DOWNTO 0 );
129
   signal sig_PC : std_logic_vector(15 DOWNTO 0);
130
   signal sig_RD : std_logic;
131
   signal sig_RWn : std_logic;
132
   signal sig_SYNC : std_logic;
133
   signal sig_WR : std_logic;
134
   signal zw_ALU : std_logic_vector( 8 DOWNTO 0 );
135
   signal zw_ALU1 : std_logic_vector( 8 DOWNTO 0 );
136
   signal zw_ALU2 : std_logic_vector( 8 DOWNTO 0 );
137
   signal zw_ALU3 : std_logic_vector( 8 DOWNTO 0 );
138
   signal zw_ALU4 : std_logic_vector( 8 DOWNTO 0 );
139
   signal zw_ALU5 : std_logic_vector( 8 DOWNTO 0 );
140
   signal zw_ALU6 : std_logic_vector( 8 DOWNTO 0 );
141
   signal zw_PC : std_logic_vector( 15 DOWNTO 0 );
142
   signal zw_REG_ALU : std_logic_vector( 8 DOWNTO 0 );
143
   signal zw_REG_NMI : std_logic;
144
   signal zw_REG_OP : std_logic_vector( 7 DOWNTO 0 );
145
   signal zw_REG_sig_PC : std_logic_vector(15 DOWNTO 0);
146
   signal zw_b1 : std_logic_vector( 7 DOWNTO 0 );
147
   signal zw_b2 : std_logic_vector( 7 DOWNTO 0 );
148
   signal zw_b3 : std_logic_vector( 7 DOWNTO 0 );
149
   signal zw_b4 : std_logic_vector( 7 DOWNTO 0 );
150
   signal zw_so : std_logic;
151
   signal zw_w1 : std_logic_vector( 15 DOWNTO 0 );
152
   signal zw_w2 : std_logic_vector( 15 DOWNTO 0 );
153
   signal zw_w3 : std_logic_vector( 15 DOWNTO 0 );
154 6 fpga_is_fu
 
155 8 fpga_is_fu
   subtype state_type is
156
      std_logic_vector(7 downto 0);
157 6 fpga_is_fu
 
158
   -- State vector declaration
159 8 fpga_is_fu
   attribute state_vector : string;
160
   attribute state_vector of fsm : architecture is "current_state";
161 6 fpga_is_fu
 
162
   -- Hard encoding
163 8 fpga_is_fu
   constant FETCH : state_type := "00000000";
164
   constant s1 : state_type := "00000001";
165
   constant s2 : state_type := "00000011";
166
   constant s5 : state_type := "00000010";
167
   constant s3 : state_type := "00000110";
168
   constant s4 : state_type := "00000111";
169
   constant s12 : state_type := "00000101";
170
   constant s16 : state_type := "00000100";
171
   constant s17 : state_type := "00001100";
172
   constant s24 : state_type := "00001101";
173
   constant s25 : state_type := "00001111";
174
   constant s271 : state_type := "00001110";
175
   constant s273 : state_type := "00001010";
176
   constant s304 : state_type := "00001011";
177
   constant s307 : state_type := "00001001";
178
   constant s177 : state_type := "00001000";
179
   constant s180 : state_type := "00011000";
180
   constant s181 : state_type := "00011001";
181
   constant s182 : state_type := "00011011";
182
   constant s183 : state_type := "00011010";
183
   constant s184 : state_type := "00011110";
184
   constant s185 : state_type := "00011111";
185
   constant s186 : state_type := "00011101";
186
   constant s187 : state_type := "00011100";
187
   constant s188 : state_type := "00010100";
188
   constant s189 : state_type := "00010101";
189
   constant s190 : state_type := "00010111";
190
   constant s191 : state_type := "00010110";
191
   constant s192 : state_type := "00010010";
192
   constant s193 : state_type := "00010011";
193
   constant s377 : state_type := "00010001";
194
   constant s381 : state_type := "00010000";
195
   constant s378 : state_type := "00110000";
196
   constant s382 : state_type := "00110001";
197
   constant s379 : state_type := "00110011";
198
   constant s383 : state_type := "00110010";
199
   constant s384 : state_type := "00110110";
200
   constant s380 : state_type := "00110111";
201
   constant s385 : state_type := "00110101";
202
   constant s386 : state_type := "00110100";
203
   constant s387 : state_type := "00111100";
204
   constant s388 : state_type := "00111101";
205
   constant s389 : state_type := "00111111";
206
   constant s391 : state_type := "00111110";
207
   constant s392 : state_type := "00111010";
208
   constant s390 : state_type := "00111011";
209
   constant s393 : state_type := "00111001";
210
   constant s394 : state_type := "00111000";
211
   constant s395 : state_type := "00101000";
212
   constant s396 : state_type := "00101001";
213
   constant s397 : state_type := "00101011";
214
   constant s398 : state_type := "00101010";
215
   constant s399 : state_type := "00101110";
216
   constant s400 : state_type := "00101111";
217
   constant s401 : state_type := "00101101";
218
   constant s526 : state_type := "00101100";
219
   constant s527 : state_type := "00100100";
220
   constant s528 : state_type := "00100101";
221
   constant s529 : state_type := "00100111";
222
   constant s530 : state_type := "00100110";
223
   constant s531 : state_type := "00100010";
224
   constant s544 : state_type := "00100011";
225
   constant s545 : state_type := "00100001";
226
   constant s546 : state_type := "00100000";
227
   constant s547 : state_type := "01100000";
228
   constant s549 : state_type := "01100001";
229
   constant s550 : state_type := "01100011";
230
   constant s404 : state_type := "01100010";
231
   constant s556 : state_type := "01100110";
232
   constant s557 : state_type := "01100111";
233
   constant s579 : state_type := "01100101";
234
   constant s201 : state_type := "01100100";
235
   constant s202 : state_type := "01101100";
236
   constant s210 : state_type := "01101101";
237
   constant s211 : state_type := "01101111";
238
   constant s215 : state_type := "01101110";
239
   constant s217 : state_type := "01101010";
240
   constant s218 : state_type := "01101011";
241
   constant s222 : state_type := "01101001";
242
   constant s223 : state_type := "01101000";
243
   constant s224 : state_type := "01111000";
244
   constant s225 : state_type := "01111001";
245
   constant s226 : state_type := "01111011";
246
   constant s243 : state_type := "01111010";
247
   constant s244 : state_type := "01111110";
248
   constant s247 : state_type := "01111111";
249
   constant s344 : state_type := "01111101";
250
   constant s343 : state_type := "01111100";
251
   constant s250 : state_type := "01110100";
252
   constant s251 : state_type := "01110101";
253
   constant s351 : state_type := "01110111";
254
   constant s361 : state_type := "01110110";
255
   constant s360 : state_type := "01110010";
256
   constant s403 : state_type := "01110011";
257
   constant s406 : state_type := "01110001";
258
   constant s407 : state_type := "01110000";
259
   constant s409 : state_type := "01010000";
260
   constant s412 : state_type := "01010001";
261
   constant s413 : state_type := "01010011";
262
   constant s416 : state_type := "01010010";
263
   constant s418 : state_type := "01010110";
264
   constant s510 : state_type := "01010111";
265
   constant s553 : state_type := "01010101";
266
   constant s555 : state_type := "01010100";
267
   constant s558 : state_type := "01011100";
268
   constant s560 : state_type := "01011101";
269
   constant s561 : state_type := "01011111";
270
   constant s563 : state_type := "01011110";
271
   constant s564 : state_type := "01011010";
272
   constant s565 : state_type := "01011011";
273
   constant s566 : state_type := "01011001";
274
   constant s266 : state_type := "01011000";
275
   constant s301 : state_type := "01001000";
276
   constant s302 : state_type := "01001001";
277
   constant RES : state_type := "01001011";
278
   constant s511 : state_type := "01001010";
279
   constant s559 : state_type := "01001110";
280
   constant s562 : state_type := "01001111";
281
   constant s567 : state_type := "01001101";
282
   constant s568 : state_type := "01001100";
283
   constant s569 : state_type := "01000100";
284
   constant s570 : state_type := "01000101";
285
   constant s571 : state_type := "01000111";
286
   constant s572 : state_type := "01000110";
287
   constant s573 : state_type := "01000010";
288
   constant s574 : state_type := "01000011";
289
   constant s548 : state_type := "01000001";
290
   constant s551 : state_type := "01000000";
291
   constant s552 : state_type := "11000000";
292
   constant s575 : state_type := "11000001";
293
   constant s576 : state_type := "11000011";
294
   constant s577 : state_type := "11000010";
295
   constant s532 : state_type := "11000110";
296
   constant s533 : state_type := "11000111";
297
   constant s534 : state_type := "11000101";
298
   constant s535 : state_type := "11000100";
299
   constant s536 : state_type := "11001100";
300
   constant s537 : state_type := "11001101";
301 6 fpga_is_fu
 
302
   -- Declare current and next state signals
303 8 fpga_is_fu
   signal current_state : state_type;
304
   signal next_state : state_type;
305 6 fpga_is_fu
 
306
   -- Declare any pre-registered internal signals
307 8 fpga_is_fu
   signal d_o_cld : std_logic_vector ( 7 downto 0 );
308
   signal rd_o_cld : std_logic ;
309
   signal sync_o_cld : std_logic ;
310
   signal wr_n_o_cld : std_logic ;
311
   signal wr_o_cld : std_logic ;
312 6 fpga_is_fu
 
313 8 fpga_is_fu
begin
314 6 fpga_is_fu
 
315
   -----------------------------------------------------------------
316 8 fpga_is_fu
   clocked_proc : process (
317 6 fpga_is_fu
      clk_clk_i,
318
      rst_rst_n_i
319
   )
320
   -----------------------------------------------------------------
321 8 fpga_is_fu
   begin
322
      if (rst_rst_n_i = '0') then
323 6 fpga_is_fu
         current_state <= RES;
324
         -- Default Reset Values
325
         d_o_cld <= X"00";
326
         rd_o_cld <= '0';
327
         sync_o_cld <= '0';
328
         wr_n_o_cld <= '1';
329
         wr_o_cld <= '0';
330
         reg_F <= "00000100";
331
         reg_PC <= X"0000";
332
         reg_PC1 <= X"0000";
333
         reg_sel_pc_as <= '0';
334
         reg_sel_pc_in <= '0';
335
         reg_sel_pc_val <= "00";
336
         reg_sel_rb_in <= "00";
337
         reg_sel_rb_out <= "00";
338
         reg_sel_reg <= "00";
339
         reg_sel_sp_as <= '0';
340
         reg_sel_sp_in <= '0';
341
         sig_PC <= X"0000";
342
         zw_PC <= X"0000";
343
         zw_REG_ALU <= '0' & X"00";
344
         zw_REG_NMI <= '0';
345
         zw_REG_OP <= X"00";
346
         zw_REG_sig_PC <= X"0000";
347
         zw_b1 <= X"00";
348
         zw_b2 <= X"00";
349
         zw_b3 <= X"00";
350
         zw_b4 <= X"00";
351
         zw_so <= '0';
352
         zw_w1 <= X"0000";
353
         zw_w2 <= X"0000";
354
         zw_w3 <= X"0000";
355 8 fpga_is_fu
      elsif (clk_clk_i'event and clk_clk_i = '1') then
356 6 fpga_is_fu
         current_state <= next_state;
357
         -- Default Assignment To Internals
358
         reg_F <= reg_F(7) & (zw_so OR reg_F(6)) & reg_F(5 downto 0);
359
         reg_PC <= reg_PC;
360
         reg_PC1 <= reg_PC1;
361
         reg_sel_pc_as <= reg_sel_pc_as;
362
         reg_sel_pc_in <= reg_sel_pc_in;
363
         reg_sel_pc_val <= reg_sel_pc_val;
364
         reg_sel_rb_in <= reg_sel_rb_in;
365
         reg_sel_rb_out <= reg_sel_rb_out;
366
         reg_sel_reg <= reg_sel_reg;
367
         reg_sel_sp_as <= reg_sel_sp_as;
368
         reg_sel_sp_in <= reg_sel_sp_in;
369
         sig_PC <= sig_PC;
370
         zw_PC <= zw_PC;
371
         zw_REG_ALU <= zw_REG_ALU;
372
         zw_REG_NMI <= zw_REG_NMI or nmi_i;
373
         zw_REG_OP <= zw_REG_OP;
374
         zw_REG_sig_PC <= zw_REG_sig_PC;
375
         zw_b1 <= zw_b1;
376
         zw_b2 <= zw_b2;
377
         zw_b3 <= zw_b3;
378
         zw_b4 <= zw_b4;
379
         zw_so <= (zw_so OR (NOT(so_n_i))) AND (NOT(reg_F(6)));
380
         zw_w1 <= zw_w1;
381
         zw_w2 <= zw_w2;
382
         zw_w3 <= zw_w3;
383
         d_o_cld <= sig_D_OUT;
384
         rd_o_cld <= sig_RD;
385
         sync_o_cld <= sig_SYNC;
386
         wr_n_o_cld <= sig_RWn;
387
         wr_o_cld <= sig_WR;
388
 
389
         -- Combined Actions
390 8 fpga_is_fu
         case current_state is
391
            when FETCH =>
392 6 fpga_is_fu
               zw_REG_OP <= d_i;
393 8 fpga_is_fu
               if ((nmi_i = '1') and (rdy_i = '1')) then
394 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
395
                  zw_REG_NMI <= '0';
396 8 fpga_is_fu
               elsif ((irq_n_i = '0' and
397
                      reg_F(2) = '0') and (rdy_i = '1')) then
398 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
399 8 fpga_is_fu
               elsif ((d_i = X"69" or
400 6 fpga_is_fu
                      d_i = X"65" or
401
                      d_i = X"75" or
402
                      d_i = X"6D" or
403
                      d_i = X"7D" or
404
                      d_i = X"79" or
405
                      d_i = X"61" or
406 8 fpga_is_fu
                      d_i = X"71") and (rdy_i = '1')) then
407 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
408
                  reg_sel_reg <= "00";
409
                  reg_sel_rb_in <= "11";
410
                  zw_b1(0) <= reg_F(7);
411 8 fpga_is_fu
               elsif ((d_i = X"06" or
412 6 fpga_is_fu
                      d_i = X"16" or
413
                      d_i = X"0E" or
414 8 fpga_is_fu
                      d_i = X"1E") and (rdy_i = '1')) then
415 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
416 8 fpga_is_fu
               elsif ((d_i = X"90" or
417 6 fpga_is_fu
                      d_i = X"B0" or
418
                      d_i = X"F0" or
419
                      d_i = X"30" or
420
                      d_i = X"D0" or
421
                      d_i = X"10" or
422
                      d_i = X"50" or
423 8 fpga_is_fu
                      d_i = X"70") and (rdy_i = '1')) then
424 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
425
                  zw_b3 <= adr_nxt_pc_i (15 downto 8);
426 8 fpga_is_fu
               elsif ((d_i = X"24" or
427
                      d_i = X"2C") and (rdy_i = '1')) then
428 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
429 8 fpga_is_fu
               elsif ((d_i = X"00") and (rdy_i = '1')) then
430 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
431 8 fpga_is_fu
               elsif ((d_i = X"18") and (rdy_i = '1')) then
432
               elsif ((d_i = X"D8") and (rdy_i = '1')) then
433
               elsif ((d_i = X"58") and (rdy_i = '1')) then
434
               elsif ((d_i = X"B8") and (rdy_i = '1')) then
435
               elsif ((d_i = X"E0" or
436 6 fpga_is_fu
                      d_i = X"E4" or
437 8 fpga_is_fu
                      d_i = X"EC") and (rdy_i = '1')) then
438 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
439
                  sig_PC <= adr_nxt_pc_i;
440 8 fpga_is_fu
               elsif ((d_i = X"C0" or
441 6 fpga_is_fu
                      d_i = X"C4" or
442 8 fpga_is_fu
                      d_i = X"CC") and (rdy_i = '1')) then
443 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
444
                  sig_PC <= adr_nxt_pc_i;
445 8 fpga_is_fu
               elsif ((d_i = X"C6" or
446 6 fpga_is_fu
                      d_i = X"D6" or
447
                      d_i = X"CE" or
448 8 fpga_is_fu
                      d_i = X"DE") and (rdy_i = '1')) then
449 6 fpga_is_fu
                  zw_b4 <= X"FF";
450
                  sig_PC <= adr_nxt_pc_i;
451 8 fpga_is_fu
               elsif ((d_i = X"CA") and (rdy_i = '1')) then
452 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
453
                  reg_sel_reg <= "01";
454
                  reg_sel_rb_in <= "11";
455
                  zw_b4 <= X"FF";
456 8 fpga_is_fu
               elsif ((d_i = X"88") and (rdy_i = '1')) then
457 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
458
                  reg_sel_reg <= "10";
459
                  reg_sel_rb_in <= "11";
460
                  zw_b4 <= X"FF";
461 8 fpga_is_fu
               elsif ((d_i = X"49" or
462 6 fpga_is_fu
                      d_i = X"45" or
463
                      d_i = X"55" or
464
                      d_i = X"4D" or
465
                      d_i = X"5D" or
466
                      d_i = X"59" or
467
                      d_i = X"41" or
468
                      d_i = X"51" or
469
                      d_i = X"09" or
470
                      d_i = X"05" or
471
                      d_i = X"15" or
472
                      d_i = X"0D" or
473
                      d_i = X"1D" or
474
                      d_i = X"19" or
475
                      d_i = X"01" or
476
                      d_i = X"11" or
477
                      d_i = X"29" or
478
                      d_i = X"25" or
479
                      d_i = X"35" or
480
                      d_i = X"2D" or
481
                      d_i = X"3D" or
482
                      d_i = X"39" or
483
                      d_i = X"21" or
484
                      d_i = X"31" or
485
                      d_i = X"C9" or
486
                      d_i = X"C5" or
487
                      d_i = X"D5" or
488
                      d_i = X"CD" or
489
                      d_i = X"DD" or
490
                      d_i = X"D9" or
491
                      d_i = X"C1" or
492 8 fpga_is_fu
                      d_i = X"D1") and (rdy_i = '1')) then
493 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
494
                  reg_sel_reg <= "00";
495
                  reg_sel_rb_in <= "11";
496
                  sig_PC <= adr_nxt_pc_i;
497 8 fpga_is_fu
               elsif ((d_i = X"E6" or
498 6 fpga_is_fu
                      d_i = X"F6" or
499
                      d_i = X"EE" or
500 8 fpga_is_fu
                      d_i = X"FE") and (rdy_i = '1')) then
501 6 fpga_is_fu
                  zw_b4 <= X"01";
502
                  sig_PC <= adr_nxt_pc_i;
503 8 fpga_is_fu
               elsif ((d_i = X"E8") and (rdy_i = '1')) then
504 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
505
                  reg_sel_reg <= "01";
506
                  reg_sel_rb_in <= "11";
507
                  zw_b4 <= X"01";
508 8 fpga_is_fu
               elsif ((d_i = X"C8") and (rdy_i = '1')) then
509 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
510
                  reg_sel_reg <= "10";
511
                  reg_sel_rb_in <= "11";
512
                  zw_b4 <= X"01";
513 8 fpga_is_fu
               elsif ((d_i = X"4C" or
514
                      d_i = X"6C") and (rdy_i = '1')) then
515 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
516 8 fpga_is_fu
               elsif ((d_i = X"20") and (rdy_i = '1')) then
517 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
518 8 fpga_is_fu
               elsif ((d_i = X"A9" or
519 6 fpga_is_fu
                      d_i = X"A5" or
520
                      d_i = X"B5" or
521
                      d_i = X"AD" or
522
                      d_i = X"BD" or
523
                      d_i = X"B9" or
524
                      d_i = X"A1" or
525 8 fpga_is_fu
                      d_i = X"B1") and (rdy_i = '1')) then
526 6 fpga_is_fu
                  reg_sel_reg <= "00";
527
                  reg_sel_rb_in <= "11";
528
                  sig_PC <= adr_nxt_pc_i;
529 8 fpga_is_fu
               elsif ((d_i = X"A2" or
530 6 fpga_is_fu
                      d_i = X"A6" or
531
                      d_i = X"B6" or
532
                      d_i = X"AE" or
533 8 fpga_is_fu
                      d_i = X"BE") and (rdy_i = '1')) then
534 6 fpga_is_fu
                  reg_sel_reg <= "01";
535
                  reg_sel_rb_in <= "11";
536
                  sig_PC <= adr_nxt_pc_i;
537 8 fpga_is_fu
               elsif ((d_i = X"A0" or
538 6 fpga_is_fu
                      d_i = X"A4" or
539
                      d_i = X"B4" or
540
                      d_i = X"AC" or
541 8 fpga_is_fu
                      d_i = X"BC") and (rdy_i = '1')) then
542 6 fpga_is_fu
                  reg_sel_reg <= "10";
543
                  reg_sel_rb_in <= "11";
544
                  sig_PC <= adr_nxt_pc_i;
545 8 fpga_is_fu
               elsif ((d_i = X"46" or
546 6 fpga_is_fu
                      d_i = X"56" or
547
                      d_i = X"4E" or
548 8 fpga_is_fu
                      d_i = X"5E") and (rdy_i = '1')) then
549 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
550 8 fpga_is_fu
               elsif ((d_i = X"EA") and (rdy_i = '1')) then
551
               elsif ((d_i = X"48") and (rdy_i = '1')) then
552 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
553 8 fpga_is_fu
               elsif ((d_i = X"08") and (rdy_i = '1')) then
554 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
555 8 fpga_is_fu
               elsif ((d_i = X"68") and (rdy_i = '1')) then
556 6 fpga_is_fu
                  reg_sel_sp_in <= '0';
557
                  reg_sel_sp_as <= '0';
558
 
559
                  reg_sel_reg <= "00";
560
                  reg_sel_rb_in <= "11";
561 8 fpga_is_fu
               elsif ((d_i = X"28") and (rdy_i = '1')) then
562 6 fpga_is_fu
                  reg_sel_sp_in <= '0';
563
                  reg_sel_sp_as <= '0';
564 8 fpga_is_fu
               elsif ((d_i = X"26" or
565 6 fpga_is_fu
                      d_i = X"36" or
566
                      d_i = X"2E" or
567 8 fpga_is_fu
                      d_i = X"3E") and (rdy_i = '1')) then
568 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
569 8 fpga_is_fu
               elsif ((d_i = X"66" or
570 6 fpga_is_fu
                      d_i = X"76" or
571
                      d_i = X"6E" or
572 8 fpga_is_fu
                      d_i = X"7E") and (rdy_i = '1')) then
573 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
574 8 fpga_is_fu
               elsif ((d_i = X"40") and (rdy_i = '1')) then
575 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
576 8 fpga_is_fu
               elsif ((d_i = X"60") and (rdy_i = '1')) then
577 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
578
                  reg_sel_sp_in <= '0';
579
                  reg_sel_sp_as <= '0';
580 8 fpga_is_fu
               elsif ((d_i = X"E9" or
581 6 fpga_is_fu
                      d_i = X"E5" or
582
                      d_i = X"F5" or
583
                      d_i = X"ED" or
584
                      d_i = X"FD" or
585
                      d_i = X"F9" or
586
                      d_i = X"E1" or
587 8 fpga_is_fu
                      d_i = X"F1") and (rdy_i = '1')) then
588 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
589
                  reg_sel_reg <= "00";
590
                  reg_sel_rb_in <= "11";
591
                  zw_b1(0) <= reg_F(7);
592 8 fpga_is_fu
               elsif ((d_i = X"38") and (rdy_i = '1')) then
593
               elsif ((d_i = X"F8") and (rdy_i = '1')) then
594
               elsif ((d_i = X"78") and (rdy_i = '1')) then
595
               elsif ((d_i = X"85" or
596 6 fpga_is_fu
                      d_i = X"95" or
597
                      d_i = X"8D" or
598
                      d_i = X"9D" or
599
                      d_i = X"99" or
600
                      d_i = X"81" or
601 8 fpga_is_fu
                      d_i = X"91") and (rdy_i = '1')) then
602 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
603
                  sig_PC <= adr_nxt_pc_i;
604 8 fpga_is_fu
               elsif ((d_i = X"86" or
605 6 fpga_is_fu
                      d_i = X"96" or
606 8 fpga_is_fu
                      d_i = X"8E") and (rdy_i = '1')) then
607 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
608
                  sig_PC <= adr_nxt_pc_i;
609 8 fpga_is_fu
               elsif ((d_i = X"84" or
610 6 fpga_is_fu
                      d_i = X"94" or
611 8 fpga_is_fu
                      d_i = X"8C") and (rdy_i = '1')) then
612 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
613
                  sig_PC <= adr_nxt_pc_i;
614 8 fpga_is_fu
               elsif ((d_i = X"AA") and (rdy_i = '1')) then
615 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
616
                  reg_sel_reg <= "01";
617
                  reg_sel_rb_in <= "00";
618
                  reg_sel_sp_in <= '1';
619
                  reg_sel_sp_as <= '0';
620 8 fpga_is_fu
               elsif ((d_i = X"0A") and (rdy_i = '1')) then
621 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
622
                  reg_sel_reg <= "00";
623
                  reg_sel_rb_in <= "11";
624 8 fpga_is_fu
               elsif ((d_i = X"4A") and (rdy_i = '1')) then
625 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
626
                  reg_sel_reg <= "00";
627
                  reg_sel_rb_in <= "11";
628 8 fpga_is_fu
               elsif ((d_i = X"2A") and (rdy_i = '1')) then
629 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
630
                  reg_sel_reg <= "00";
631
                  reg_sel_rb_in <= "11";
632 8 fpga_is_fu
               elsif ((d_i = X"6A") and (rdy_i = '1')) then
633 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
634
                  reg_sel_reg <= "00";
635
                  reg_sel_rb_in <= "11";
636 8 fpga_is_fu
               elsif ((d_i = X"A8") and (rdy_i = '1')) then
637 6 fpga_is_fu
                  reg_sel_rb_out <= "00";
638
                  reg_sel_reg <= "10";
639
                  reg_sel_rb_in <= "00";
640
                  reg_sel_sp_in <= '1';
641
                  reg_sel_sp_as <= '0';
642 8 fpga_is_fu
               elsif ((d_i = X"98") and (rdy_i = '1')) then
643 6 fpga_is_fu
                  reg_sel_rb_out <= "10";
644
                  reg_sel_reg <= "00";
645
                  reg_sel_rb_in <= "01";
646
                  reg_sel_sp_in <= '1';
647
                  reg_sel_sp_as <= '0';
648 8 fpga_is_fu
               elsif ((d_i = X"BA") and (rdy_i = '1')) then
649 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
650
                  reg_sel_reg <= "01";
651
                  reg_sel_rb_in <= "11";
652
                  reg_sel_sp_in <= '1';
653
                  reg_sel_sp_as <= '0';
654 8 fpga_is_fu
               elsif ((d_i = X"8A") and (rdy_i = '1')) then
655 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
656
                  reg_sel_reg <= "00";
657
                  reg_sel_rb_in <= "10";
658
                  reg_sel_sp_in <= '1';
659
                  reg_sel_sp_as <= '0';
660 8 fpga_is_fu
               elsif ((d_i = X"9A") and (rdy_i = '1')) then
661 6 fpga_is_fu
                  reg_sel_rb_out <= "01";
662
                  reg_sel_reg <= "11";
663
                  reg_sel_rb_in <= "11";
664
                  reg_sel_sp_in <= '1';
665
                  reg_sel_sp_as <= '0';
666 8 fpga_is_fu
               end if;
667
            when s1 =>
668
               if (rdy_i = '1') then
669 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
670
                  reg_sel_pc_in <= '0';
671
                  reg_sel_pc_as <= '0';
672
                  reg_sel_pc_val <= "00";
673
                  reg_sel_sp_in <= '0';
674
                  reg_sel_sp_as <= '1';
675 8 fpga_is_fu
               end if;
676
            when s2 =>
677
               if (rdy_i = '1') then
678 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
679
                  reg_F(0) <= '1';
680
                  reg_sel_pc_in <= '0';
681
                  reg_sel_pc_as <= '0';
682
                  reg_sel_pc_val <= "00";
683
                  reg_sel_sp_in <= '0';
684
                  reg_sel_sp_as <= '1';
685 8 fpga_is_fu
               end if;
686
            when s5 =>
687
               if (rdy_i = '1') then
688 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
689
                  reg_F(3) <= '1';
690
                  reg_sel_pc_in <= '0';
691
                  reg_sel_pc_as <= '0';
692
                  reg_sel_pc_val <= "00";
693
                  reg_sel_sp_in <= '0';
694
                  reg_sel_sp_as <= '1';
695 8 fpga_is_fu
               end if;
696
            when s3 =>
697 6 fpga_is_fu
               sig_PC <= adr_pc_i;
698 8 fpga_is_fu
               if (rdy_i = '1') then
699 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
700
                  reg_F(2) <= '1';
701
                  reg_sel_pc_in <= '0';
702
                  reg_sel_pc_as <= '0';
703
                  reg_sel_pc_val <= "00";
704
                  reg_sel_sp_in <= '0';
705
                  reg_sel_sp_as <= '1';
706 8 fpga_is_fu
               end if;
707
            when s4 =>
708
               if (rdy_i = '1' and
709
                   zw_REG_OP = X"9A") then
710 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
711
                  reg_sel_pc_in <= '0';
712
                  reg_sel_pc_as <= '0';
713
                  reg_sel_pc_val <= "00";
714
                  reg_sel_sp_in <= '0';
715
                  reg_sel_sp_as <= '1';
716 8 fpga_is_fu
               elsif (rdy_i = '1' and
717
                      zw_REG_OP = X"BA") then
718 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
719
                  reg_F(7) <= reg_7flag_i;
720
                  reg_F(1) <= reg_1flag_i;
721
                  reg_sel_pc_in <= '0';
722
                  reg_sel_pc_as <= '0';
723
                  reg_sel_pc_val <= "00";
724
                  reg_sel_sp_in <= '0';
725
                  reg_sel_sp_as <= '1';
726 8 fpga_is_fu
               elsif (rdy_i = '1') then
727 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
728
                  reg_F(7) <= reg_7flag_i;
729
                  reg_F(1) <= reg_1flag_i;
730
                  reg_sel_pc_in <= '0';
731
                  reg_sel_pc_as <= '0';
732
                  reg_sel_pc_val <= "00";
733
                  reg_sel_sp_in <= '0';
734
                  reg_sel_sp_as <= '1';
735 8 fpga_is_fu
               end if;
736
            when s12 =>
737
               if (rdy_i = '1') then
738 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
739
                  reg_F(0) <= '0';
740
                  reg_sel_pc_in <= '0';
741
                  reg_sel_pc_as <= '0';
742
                  reg_sel_pc_val <= "00";
743
                  reg_sel_sp_in <= '0';
744
                  reg_sel_sp_as <= '1';
745 8 fpga_is_fu
               end if;
746
            when s16 =>
747
               if (rdy_i = '1') then
748 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
749
                  reg_F(3) <= '0';
750
                  reg_sel_pc_in <= '0';
751
                  reg_sel_pc_as <= '0';
752
                  reg_sel_pc_val <= "00";
753
                  reg_sel_sp_in <= '0';
754
                  reg_sel_sp_as <= '1';
755 8 fpga_is_fu
               end if;
756
            when s17 =>
757
               if (rdy_i = '1') then
758 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
759
                  reg_F(2) <= '0';
760
                  reg_sel_pc_in <= '0';
761
                  reg_sel_pc_as <= '0';
762
                  reg_sel_pc_val <= "00";
763
                  reg_sel_sp_in <= '0';
764
                  reg_sel_sp_as <= '1';
765 8 fpga_is_fu
               end if;
766
            when s24 =>
767
               if (rdy_i = '1') then
768 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
769
                  reg_F(6) <= '0';
770
                  reg_sel_pc_in <= '0';
771
                  reg_sel_pc_as <= '0';
772
                  reg_sel_pc_val <= "00";
773
                  reg_sel_sp_in <= '0';
774
                  reg_sel_sp_as <= '1';
775 8 fpga_is_fu
               end if;
776
            when s25 =>
777
               if (rdy_i = '1') then
778 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
779
                  reg_F(7) <= reg_7flag_i;
780
                  reg_F(1) <= reg_1flag_i;
781
                  reg_sel_pc_in <= '0';
782
                  reg_sel_pc_as <= '0';
783
                  reg_sel_pc_val <= "00";
784
                  reg_sel_sp_in <= '0';
785
                  reg_sel_sp_as <= '1';
786 8 fpga_is_fu
               end if;
787
            when s271 =>
788
               if (rdy_i = '1' and
789
                   zw_REG_OP = X"4C") then
790 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
791
                  reg_sel_pc_in <= '1';
792
                  reg_sel_pc_as <= '0';
793
                  reg_sel_pc_val <= "11";
794
                  zw_b1 <= d_i;
795 8 fpga_is_fu
               elsif (rdy_i = '1' and
796
                      zw_REG_OP = X"6C") then
797 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
798
                  reg_sel_pc_in <= '1';
799
                  reg_sel_pc_as <= '0';
800
                  reg_sel_pc_val <= "00";
801
                  zw_b1 <= d_i;
802 8 fpga_is_fu
               end if;
803
            when s273 =>
804
               if (rdy_i = '1') then
805 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
806
                  reg_sel_pc_in <= '0';
807
                  reg_sel_pc_as <= '0';
808
                  reg_sel_pc_val <= "00";
809
                  zw_b2 <= d_i;
810 8 fpga_is_fu
               end if;
811
            when s304 =>
812
               if (rdy_i = '1') then
813 6 fpga_is_fu
                  sig_PC <= zw_b2 & adr_pc_i(7 downto 0);
814
                  reg_sel_pc_in <= '1';
815
                  reg_sel_pc_as <= '0';
816
                  reg_sel_pc_val <= "11";
817
                  zw_b1 <= d_i;
818 8 fpga_is_fu
               end if;
819
            when s307 =>
820
               if (rdy_i = '1') then
821 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
822
                  reg_sel_pc_in <= '0';
823
                  reg_sel_pc_as <= '0';
824
                  reg_sel_pc_val <= "00";
825
                  reg_sel_sp_in <= '0';
826
                  reg_sel_sp_as <= '1';
827 8 fpga_is_fu
               end if;
828
            when s177 =>
829
               if (rdy_i = '1' and
830 6 fpga_is_fu
                   (zw_REG_OP = X"85" OR
831
                   zw_REG_OP = X"86" OR
832 8 fpga_is_fu
                   zw_REG_OP = X"84")) then
833 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
834 8 fpga_is_fu
               elsif (rdy_i = '1' and
835 6 fpga_is_fu
                      (zw_REG_OP = X"95" OR
836 8 fpga_is_fu
                      zw_REG_OP = X"94")) then
837 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
838
                  zw_b1 <= d_alu_i;
839 8 fpga_is_fu
               elsif (rdy_i = '1' and
840 6 fpga_is_fu
                      (zw_REG_OP = X"8D" OR
841
                      zw_REG_OP = X"8E" OR
842 8 fpga_is_fu
                      zw_REG_OP = X"8C")) then
843 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
844
                  zw_b1 <= d_i;
845 8 fpga_is_fu
               elsif (rdy_i = '1' and
846
                      zw_REG_OP = X"9D") then
847 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
848
                  zw_b1 <= d_alu_i;
849
                  zw_b2(0) <= reg_0flag_i;
850 8 fpga_is_fu
               elsif (rdy_i = '1' and
851
                      zw_REG_OP = X"99") then
852 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
853
                  zw_b1 <= d_alu_i;
854
                  zw_b2(0) <= reg_0flag_i;
855 8 fpga_is_fu
               elsif (rdy_i = '1' and
856
                      zw_REG_OP = X"91") then
857 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
858
                  zw_b1 <= d_alu_i;
859 8 fpga_is_fu
               elsif (rdy_i = '1' and
860
                      zw_REG_OP = X"81") then
861 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
862
                  zw_b1 <= d_alu_i;
863 8 fpga_is_fu
               elsif (rdy_i = '1' and
864
                      zw_REG_OP = X"96") then
865 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
866
                  zw_b1 <= d_alu_i;
867 8 fpga_is_fu
               end if;
868
            when s180 =>
869
               if (rdy_i = '1') then
870 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
871
                  zw_b3 <= d_alu_i;
872 8 fpga_is_fu
               end if;
873
            when s181 =>
874
               if (rdy_i = '1') then
875 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
876
                  zw_b1 <= d_alu_i;
877
                  zw_b2(0) <= reg_0flag_i;
878 8 fpga_is_fu
               end if;
879
            when s182 =>
880
               if (rdy_i = '1') then
881 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
882
                  zw_b3 <= d_alu_i;
883 8 fpga_is_fu
               end if;
884
            when s183 =>
885
               if (rdy_i = '1') then
886 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
887 8 fpga_is_fu
               end if;
888
            when s184 =>
889 6 fpga_is_fu
               sig_PC <= adr_pc_i;
890
               reg_sel_pc_in <= '0';
891
               reg_sel_pc_as <= '0';
892
               reg_sel_pc_val <= "00";
893
               reg_sel_sp_in <= '0';
894
               reg_sel_sp_as <= '1';
895 8 fpga_is_fu
            when s185 =>
896
               if (rdy_i = '1') then
897 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
898 8 fpga_is_fu
               end if;
899
            when s186 =>
900
               if (rdy_i = '1') then
901 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
902 8 fpga_is_fu
               end if;
903
            when s187 =>
904 6 fpga_is_fu
               sig_PC <= adr_pc_i;
905
               reg_sel_pc_in <= '0';
906
               reg_sel_pc_as <= '0';
907
               reg_sel_pc_val <= "00";
908
               reg_sel_sp_in <= '0';
909
               reg_sel_sp_as <= '1';
910 8 fpga_is_fu
            when s188 =>
911
               if (rdy_i = '1') then
912 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
913
                  zw_b1 <= d_i;
914 8 fpga_is_fu
               end if;
915
            when s189 =>
916
               if (rdy_i = '1') then
917 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
918
                  zw_b3 <= d_alu_i;
919 8 fpga_is_fu
               end if;
920
            when s190 =>
921 6 fpga_is_fu
               sig_PC <= adr_pc_i;
922
               reg_sel_pc_in <= '0';
923
               reg_sel_pc_as <= '0';
924
               reg_sel_pc_val <= "00";
925
               reg_sel_sp_in <= '0';
926
               reg_sel_sp_as <= '1';
927 8 fpga_is_fu
            when s191 =>
928 6 fpga_is_fu
               sig_PC <= zw_b3 & zw_b1;
929 8 fpga_is_fu
            when s192 =>
930 6 fpga_is_fu
               sig_PC <= d_i & zw_b1;
931 8 fpga_is_fu
            when s193 =>
932 6 fpga_is_fu
               sig_PC <= adr_pc_i;
933
               reg_sel_pc_in <= '0';
934
               reg_sel_pc_as <= '0';
935
               reg_sel_pc_val <= "00";
936
               reg_sel_sp_in <= '0';
937
               reg_sel_sp_as <= '1';
938 8 fpga_is_fu
            when s377 =>
939
               if (rdy_i = '1') then
940 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
941 8 fpga_is_fu
               end if;
942
            when s381 =>
943 6 fpga_is_fu
               sig_PC <= adr_pc_i;
944
               reg_sel_pc_in <= '0';
945
               reg_sel_pc_as <= '0';
946
               reg_sel_pc_val <= "00";
947
               reg_sel_sp_in <= '0';
948
               reg_sel_sp_as <= '1';
949 8 fpga_is_fu
            when s378 =>
950
               if (rdy_i = '1') then
951 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
952 8 fpga_is_fu
               end if;
953
            when s382 =>
954 6 fpga_is_fu
               sig_PC <= adr_pc_i;
955
               reg_sel_pc_in <= '0';
956
               reg_sel_pc_as <= '0';
957
               reg_sel_pc_val <= "00";
958
               reg_sel_sp_in <= '0';
959
               reg_sel_sp_as <= '1';
960 8 fpga_is_fu
            when s383 =>
961
               if (rdy_i = '1') then
962 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
963 8 fpga_is_fu
               end if;
964
            when s384 =>
965
               if (rdy_i = '1') then
966 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
967
                  reg_F(7) <= reg_7flag_i;
968
                  reg_F(1) <= reg_1flag_i;
969
                  reg_sel_pc_in <= '0';
970
                  reg_sel_pc_as <= '0';
971
                  reg_sel_pc_val <= "00";
972
                  reg_sel_sp_in <= '0';
973
                  reg_sel_sp_as <= '1';
974 8 fpga_is_fu
               end if;
975
            when s385 =>
976
               if (rdy_i = '1') then
977 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
978 8 fpga_is_fu
               end if;
979
            when s386 =>
980
               if (rdy_i = '1') then
981 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
982
                  reg_F <= d_i;
983
                  reg_sel_pc_in <= '0';
984
                  reg_sel_pc_as <= '0';
985
                  reg_sel_pc_val <= "00";
986
                  reg_sel_sp_in <= '0';
987
                  reg_sel_sp_as <= '1';
988 8 fpga_is_fu
               end if;
989
            when s387 =>
990
               if (rdy_i = '1') then
991 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
992 8 fpga_is_fu
               end if;
993
            when s388 =>
994
               if (rdy_i = '1') then
995 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
996 8 fpga_is_fu
               end if;
997
            when s389 =>
998
               if (rdy_i = '1') then
999 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1000
                  reg_F <= d_i;
1001
                  reg_sel_pc_in <= '1';
1002
                  reg_sel_pc_as <= '0';
1003
                  reg_sel_pc_val <= "11";
1004 8 fpga_is_fu
               end if;
1005
            when s391 =>
1006
               if (rdy_i = '1') then
1007 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1008
                  zw_b1 <= d_i;
1009 8 fpga_is_fu
               end if;
1010
            when s392 =>
1011
               if (rdy_i = '1') then
1012 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1013
                  reg_sel_pc_in <= '0';
1014
                  reg_sel_pc_as <= '0';
1015
                  reg_sel_pc_val <= "00";
1016
                  reg_sel_sp_in <= '0';
1017
                  reg_sel_sp_as <= '1';
1018 8 fpga_is_fu
               end if;
1019
            when s390 =>
1020
               if (rdy_i = '1') then
1021 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1022 8 fpga_is_fu
               end if;
1023
            when s393 =>
1024
               if (rdy_i = '1') then
1025 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1026 8 fpga_is_fu
               end if;
1027
            when s394 =>
1028
               if (rdy_i = '1') then
1029 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1030
                  zw_b1 <= d_i;
1031
                  reg_sel_pc_in <= '1';
1032
                  reg_sel_pc_as <= '0';
1033
                  reg_sel_pc_val <= "00";
1034 8 fpga_is_fu
               end if;
1035
            when s395 =>
1036
               if (rdy_i = '1') then
1037 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1038 8 fpga_is_fu
               end if;
1039
            when s396 =>
1040
               if (rdy_i = '1') then
1041 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1042
                  reg_sel_pc_in <= '0';
1043
                  reg_sel_pc_as <= '0';
1044
                  reg_sel_pc_val <= "00";
1045
                  reg_sel_sp_in <= '0';
1046
                  reg_sel_sp_as <= '1';
1047 8 fpga_is_fu
               end if;
1048
            when s397 =>
1049
               if (rdy_i = '1') then
1050 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1051
                  zw_b1 <= d_i;
1052 8 fpga_is_fu
               end if;
1053
            when s399 =>
1054 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1055 8 fpga_is_fu
            when s400 =>
1056 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1057
               reg_sel_pc_in <= '1';
1058
               reg_sel_pc_as <= '0';
1059
               reg_sel_pc_val <= "11";
1060 8 fpga_is_fu
            when s401 =>
1061
               if (rdy_i = '1') then
1062 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1 (7 downto 0);
1063
                  reg_sel_pc_in <= '0';
1064
                  reg_sel_pc_as <= '0';
1065
                  reg_sel_pc_val <= "00";
1066
                  reg_sel_sp_in <= '0';
1067
                  reg_sel_sp_as <= '1';
1068 8 fpga_is_fu
               end if;
1069
            when s526 =>
1070
               if (rdy_i = '1') then
1071 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
1072 8 fpga_is_fu
               end if;
1073
            when s527 =>
1074 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1075 8 fpga_is_fu
            when s528 =>
1076 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1077 8 fpga_is_fu
            when s529 =>
1078 6 fpga_is_fu
               sig_PC <= X"FFFE";
1079 8 fpga_is_fu
            when s530 =>
1080
               if (rdy_i = '1') then
1081 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1082
                  reg_F(2) <= '1';
1083
                  reg_sel_pc_in <= '0';
1084
                  reg_sel_pc_as <= '0';
1085
                  reg_sel_pc_val <= "00";
1086
                  reg_sel_sp_in <= '0';
1087
                  reg_sel_sp_as <= '1';
1088 8 fpga_is_fu
               end if;
1089
            when s531 =>
1090
               if (rdy_i = '1') then
1091 6 fpga_is_fu
                  sig_PC <= X"FFFF";
1092
                  reg_sel_pc_in <= '1';
1093
                  reg_sel_pc_as <= '0';
1094
                  reg_sel_pc_val <= "11";
1095
                  zw_b1 <= d_i;
1096 8 fpga_is_fu
               end if;
1097
            when s544 =>
1098 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1099 8 fpga_is_fu
            when s545 =>
1100 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1101
               reg_sel_pc_in <= '0';
1102
               reg_sel_pc_as <= '0';
1103
               reg_sel_pc_val <= "00";
1104 8 fpga_is_fu
            when s546 =>
1105 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1106 8 fpga_is_fu
            when s547 =>
1107
               if (rdy_i = '1') then
1108 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1109
                  zw_w1 (7 downto 0) <= d_i;
1110
                  reg_sel_pc_in <= '1';
1111
                  reg_sel_pc_as <= '0';
1112
                  reg_sel_pc_val <= "11";
1113 8 fpga_is_fu
               end if;
1114
            when s549 =>
1115
               if (rdy_i = '1') then
1116 6 fpga_is_fu
                  sig_PC  <= d_i & zw_w1 (7 downto 0);
1117
                  reg_sel_pc_in <= '0';
1118
                  reg_sel_pc_as <= '0';
1119
                  reg_sel_pc_val <= "00";
1120
                  reg_sel_sp_in <= '0';
1121
                  reg_sel_sp_as <= '1';
1122 8 fpga_is_fu
               end if;
1123
            when s550 =>
1124 6 fpga_is_fu
               sig_PC <= adr_sp_i;
1125
               reg_sel_pc_in <= '1';
1126
               reg_sel_pc_as <= '0';
1127
               reg_sel_pc_val <= "00";
1128 8 fpga_is_fu
            when s404 =>
1129
               if (rdy_i = '1') then
1130 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1131
                  reg_F(0) <= q_a_i(7);
1132
                  reg_F(7) <= reg_7flag_i;
1133
                  reg_F(1) <= reg_1flag_i;
1134
                  reg_sel_pc_in <= '0';
1135
                  reg_sel_pc_as <= '0';
1136
                  reg_sel_pc_val <= "00";
1137
                  reg_sel_sp_in <= '0';
1138
                  reg_sel_sp_as <= '1';
1139 8 fpga_is_fu
               end if;
1140
            when s556 =>
1141
               if (rdy_i = '1') then
1142 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1143
                  reg_F(0) <= q_a_i(0);
1144
                  reg_F(7) <= reg_7flag_i;
1145
                  reg_F(1) <= reg_1flag_i;
1146
                  reg_sel_pc_in <= '0';
1147
                  reg_sel_pc_as <= '0';
1148
                  reg_sel_pc_val <= "00";
1149
                  reg_sel_sp_in <= '0';
1150
                  reg_sel_sp_as <= '1';
1151 8 fpga_is_fu
               end if;
1152
            when s557 =>
1153
               if (rdy_i = '1') then
1154 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1155
                  reg_F(0) <= q_a_i(7);
1156
                  reg_F(0) <= q_a_i(7);
1157
                  reg_F(7) <= reg_7flag_i;
1158
                  reg_F(1) <= reg_1flag_i;
1159
                  reg_sel_pc_in <= '0';
1160
                  reg_sel_pc_as <= '0';
1161
                  reg_sel_pc_val <= "00";
1162
                  reg_sel_sp_in <= '0';
1163
                  reg_sel_sp_as <= '1';
1164 8 fpga_is_fu
               end if;
1165
            when s579 =>
1166
               if (rdy_i = '1') then
1167 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1168
                  reg_F(0) <= q_a_i(0);
1169
                  reg_F(7) <= reg_7flag_i;
1170
                  reg_F(1) <= reg_1flag_i;
1171
                  reg_sel_pc_in <= '0';
1172
                  reg_sel_pc_as <= '0';
1173
                  reg_sel_pc_val <= "00";
1174
                  reg_sel_sp_in <= '0';
1175
                  reg_sel_sp_as <= '1';
1176 8 fpga_is_fu
               end if;
1177
            when s201 =>
1178
               if (rdy_i = '1' and
1179 6 fpga_is_fu
                   (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
1180
                   zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
1181
                   zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
1182 8 fpga_is_fu
                   zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then
1183 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1184 8 fpga_is_fu
               elsif ((rdy_i = '1' and
1185 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1186 8 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1187 6 fpga_is_fu
                      zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1188
                      zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1189 8 fpga_is_fu
                      zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
1190 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1191
                  reg_F(7) <= reg_7flag_i;
1192
                  reg_F(1) <= reg_1flag_i;
1193
                  reg_sel_pc_in <= '0';
1194
                  reg_sel_pc_as <= '0';
1195
                  reg_sel_pc_val <= "00";
1196
                  reg_sel_sp_in <= '0';
1197
                  reg_sel_sp_as <= '1';
1198 8 fpga_is_fu
               elsif ((rdy_i = '1' and
1199 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1200 8 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1201 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1202
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1203 8 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
1204 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1205
                  reg_F(7) <= reg_7flag_i;
1206
                  reg_F(1) <= reg_1flag_i;
1207
                  reg_sel_pc_in <= '0';
1208
                  reg_sel_pc_as <= '0';
1209
                  reg_sel_pc_val <= "00";
1210
                  reg_sel_sp_in <= '0';
1211
                  reg_sel_sp_as <= '1';
1212 8 fpga_is_fu
               elsif ((rdy_i = '1' and
1213 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1214 8 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1215 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1216
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1217 8 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
1218 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1219
                  reg_F(7) <= reg_7flag_i;
1220
                  reg_F(1) <= reg_1flag_i;
1221
                  reg_sel_pc_in <= '0';
1222
                  reg_sel_pc_as <= '0';
1223
                  reg_sel_pc_val <= "00";
1224
                  reg_sel_sp_in <= '0';
1225
                  reg_sel_sp_as <= '1';
1226 8 fpga_is_fu
               elsif ((rdy_i = '1' and
1227 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1228 8 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1229 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1230
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1231
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1232
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1233
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1234 8 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
1235 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1236
                  reg_F(7) <= zw_ALU(7);
1237
                  reg_F(0) <= zw_ALU(8);
1238
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1239
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1240
                  (zw_ALU(0)));
1241
                  reg_sel_pc_in <= '0';
1242
                  reg_sel_pc_as <= '0';
1243
                  reg_sel_pc_val <= "00";
1244
                  reg_sel_sp_in <= '0';
1245
                  reg_sel_sp_as <= '1';
1246 8 fpga_is_fu
               elsif (rdy_i = '1' and
1247 6 fpga_is_fu
                      (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
1248 8 fpga_is_fu
                      zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then
1249 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1250
                  reg_F(7) <= reg_7flag_i;
1251
                  reg_F(1) <= reg_1flag_i;
1252
                  reg_sel_pc_in <= '0';
1253
                  reg_sel_pc_as <= '0';
1254
                  reg_sel_pc_val <= "00";
1255
                  reg_sel_sp_in <= '0';
1256
                  reg_sel_sp_as <= '1';
1257 8 fpga_is_fu
               elsif (rdy_i = '1' and
1258 6 fpga_is_fu
                      (zw_REG_OP = X"B5" OR
1259
                      zw_REG_OP = X"B4" OR
1260
                      zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
1261
                      zw_REG_OP = X"35" OR
1262 8 fpga_is_fu
                      zw_REG_OP = X"D5")) then
1263 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1264
                  zw_b1 <= d_alu_i;
1265 8 fpga_is_fu
               elsif (rdy_i = '1' and
1266 6 fpga_is_fu
                      (zw_REG_OP = X"AD" OR
1267
                      zw_REG_OP = X"AE" OR
1268
                      zw_REG_OP = X"AC" OR
1269
                      zw_REG_OP = X"4D" OR
1270
                      zw_REG_OP = X"0D" OR
1271
                      zw_REG_OP = X"2D" OR
1272
                      zw_REG_OP = X"CD" OR
1273
                      zw_REG_OP = X"EC" OR
1274 8 fpga_is_fu
                      zw_REG_OP = X"CC")) then
1275 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1276
                  zw_b1 <= d_i;
1277 8 fpga_is_fu
               elsif (rdy_i = '1' and
1278 6 fpga_is_fu
                      (zw_REG_OP = X"BD" OR
1279
                      zw_REG_OP = X"BC" OR
1280
                      zw_REG_OP = X"5D" OR
1281
                      zw_REG_OP = X"1D" OR
1282
                      zw_REG_OP = X"3D" OR
1283 8 fpga_is_fu
                      zw_REG_OP = X"DD")) then
1284 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1285
                  zw_b1 <= d_alu_i;
1286
                  zw_b2(0) <= reg_0flag_i;
1287 8 fpga_is_fu
               elsif (rdy_i = '1' and
1288 6 fpga_is_fu
                      (zw_REG_OP = X"B9" OR
1289
                      zw_REG_OP = X"BE" OR
1290
                      zw_REG_OP = X"59" OR
1291
                      zw_REG_OP = X"19" OR
1292
                      zw_REG_OP = X"39" OR
1293 8 fpga_is_fu
                      zw_REG_OP = X"D9")) then
1294 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1295
                  zw_b1 <= d_alu_i;
1296
                  zw_b2(0) <= reg_0flag_i;
1297 8 fpga_is_fu
               elsif (rdy_i = '1' and
1298 6 fpga_is_fu
                      (zw_REG_OP = X"B1" OR
1299
                      zw_REG_OP = X"51" OR
1300
                      zw_REG_OP = X"11" OR
1301
                      zw_REG_OP = X"31" OR
1302 8 fpga_is_fu
                      zw_REG_OP = X"D1")) then
1303 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1304
                  zw_b1 <= d_alu_i;
1305 8 fpga_is_fu
               elsif (rdy_i = '1' and
1306 6 fpga_is_fu
                      (zw_REG_OP = X"A1" OR
1307
                      zw_REG_OP = X"41" OR
1308
                      zw_REG_OP = X"01" OR
1309
                      zw_REG_OP = X"21" OR
1310 8 fpga_is_fu
                      zw_REG_OP = X"C1")) then
1311 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1312
                  zw_b1 <= d_alu_i;
1313 8 fpga_is_fu
               elsif (rdy_i = '1' and
1314
                      zw_REG_OP = X"B6") then
1315 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1316
                  zw_b1 <= d_alu_i;
1317 8 fpga_is_fu
               end if;
1318
            when s202 =>
1319
               if (rdy_i = '1') then
1320 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1321 8 fpga_is_fu
               end if;
1322
            when s210 =>
1323
               if (rdy_i = '1') then
1324 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1325
                  zw_b3 <= d_alu_i;
1326 8 fpga_is_fu
               end if;
1327
            when s211 =>
1328
               if (rdy_i = '1') then
1329 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1330
                  zw_b3 <= d_alu_i;
1331 8 fpga_is_fu
               end if;
1332
            when s215 =>
1333
               if (rdy_i = '1') then
1334 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1335
                  zw_b1 <= d_alu_i;
1336
                  zw_b2(0) <= reg_0flag_i;
1337 8 fpga_is_fu
               end if;
1338
            when s217 =>
1339
               if (rdy_i = '1') then
1340 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1341 8 fpga_is_fu
               end if;
1342
            when s218 =>
1343
               if (rdy_i = '1') then
1344 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1345 8 fpga_is_fu
               end if;
1346
            when s222 =>
1347
               if (rdy_i = '1') then
1348 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1349
                  zw_b1 <= d_i;
1350 8 fpga_is_fu
               end if;
1351
            when s223 =>
1352
               if (rdy_i = '1') then
1353 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1354
                  zw_b3 <= d_alu_i;
1355 8 fpga_is_fu
               end if;
1356
            when s224 =>
1357
               if ((rdy_i = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1358 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1359
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1360 8 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
1361 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1362
                  reg_F(7) <= reg_7flag_i;
1363
                  reg_F(1) <= reg_1flag_i;
1364
                  reg_sel_pc_in <= '0';
1365
                  reg_sel_pc_as <= '0';
1366
                  reg_sel_pc_val <= "00";
1367
                  reg_sel_sp_in <= '0';
1368
                  reg_sel_sp_as <= '1';
1369 8 fpga_is_fu
               elsif ((rdy_i = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1370 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1371
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1372 8 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
1373 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1374
                  reg_F(7) <= reg_7flag_i;
1375
                  reg_F(1) <= reg_1flag_i;
1376
                  reg_sel_pc_in <= '0';
1377
                  reg_sel_pc_as <= '0';
1378
                  reg_sel_pc_val <= "00";
1379
                  reg_sel_sp_in <= '0';
1380
                  reg_sel_sp_as <= '1';
1381 8 fpga_is_fu
               elsif ((rdy_i = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1382 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1383
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1384 8 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
1385 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1386
                  reg_F(7) <= reg_7flag_i;
1387
                  reg_F(1) <= reg_1flag_i;
1388
                  reg_sel_pc_in <= '0';
1389
                  reg_sel_pc_as <= '0';
1390
                  reg_sel_pc_val <= "00";
1391
                  reg_sel_sp_in <= '0';
1392
                  reg_sel_sp_as <= '1';
1393 8 fpga_is_fu
               elsif ((rdy_i = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1394 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1395
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1396
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1397
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1398
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1399 8 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
1400 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1401
                  reg_F(7) <= zw_ALU(7);
1402
                  reg_F(0) <= zw_ALU(8);
1403
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1404
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1405
                  (zw_ALU(0)));
1406
                  reg_sel_pc_in <= '0';
1407
                  reg_sel_pc_as <= '0';
1408
                  reg_sel_pc_val <= "00";
1409
                  reg_sel_sp_in <= '0';
1410
                  reg_sel_sp_as <= '1';
1411 8 fpga_is_fu
               elsif (rdy_i = '1') then
1412 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1413
                  reg_F(7) <= reg_7flag_i;
1414
                  reg_F(1) <= reg_1flag_i;
1415
                  reg_sel_pc_in <= '0';
1416
                  reg_sel_pc_as <= '0';
1417
                  reg_sel_pc_val <= "00";
1418
                  reg_sel_sp_in <= '0';
1419
                  reg_sel_sp_as <= '1';
1420 8 fpga_is_fu
               end if;
1421
            when s225 =>
1422
               if ((rdy_i = '1' AND
1423
                   zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
1424 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
1425
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
1426 8 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
1427 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1428
                  reg_F(7) <= reg_7flag_i;
1429
                  reg_F(1) <= reg_1flag_i;
1430
                  reg_sel_pc_in <= '0';
1431
                  reg_sel_pc_as <= '0';
1432
                  reg_sel_pc_val <= "00";
1433
                  reg_sel_sp_in <= '0';
1434
                  reg_sel_sp_as <= '1';
1435 8 fpga_is_fu
               elsif ((rdy_i = '1' AND
1436
                      zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
1437 6 fpga_is_fu
                      zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
1438
                      zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
1439 8 fpga_is_fu
                      zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
1440 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1441
                  reg_F(7) <= reg_7flag_i;
1442
                  reg_F(1) <= reg_1flag_i;
1443
                  reg_sel_pc_in <= '0';
1444
                  reg_sel_pc_as <= '0';
1445
                  reg_sel_pc_val <= "00";
1446
                  reg_sel_sp_in <= '0';
1447
                  reg_sel_sp_as <= '1';
1448 8 fpga_is_fu
               elsif ((rdy_i = '1' AND
1449
                      zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
1450 6 fpga_is_fu
                      zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
1451
                      zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
1452 8 fpga_is_fu
                       zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
1453 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1454
                  reg_F(7) <= reg_7flag_i;
1455
                  reg_F(1) <= reg_1flag_i;
1456
                  reg_sel_pc_in <= '0';
1457
                  reg_sel_pc_as <= '0';
1458
                  reg_sel_pc_val <= "00";
1459
                  reg_sel_sp_in <= '0';
1460
                  reg_sel_sp_as <= '1';
1461 8 fpga_is_fu
               elsif ((rdy_i = '1' AND
1462
                      zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
1463 6 fpga_is_fu
                      zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
1464
                      zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
1465
                      zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
1466
                       zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
1467
                       zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
1468 8 fpga_is_fu
                       zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
1469 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1470
                  reg_F(7) <= zw_ALU(7);
1471
                  reg_F(0) <= zw_ALU(8);
1472
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1473
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1474
                  (zw_ALU(0)));
1475
                  reg_sel_pc_in <= '0';
1476
                  reg_sel_pc_as <= '0';
1477
                  reg_sel_pc_val <= "00";
1478
                  reg_sel_sp_in <= '0';
1479
                  reg_sel_sp_as <= '1';
1480 8 fpga_is_fu
               elsif (rdy_i = '1' AND
1481
                      zw_b2(0) = '0') then
1482 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1483
                  reg_F(7) <= reg_7flag_i;
1484
                  reg_F(1) <= reg_1flag_i;
1485
                  reg_sel_pc_in <= '0';
1486
                  reg_sel_pc_as <= '0';
1487
                  reg_sel_pc_val <= "00";
1488
                  reg_sel_sp_in <= '0';
1489
                  reg_sel_sp_as <= '1';
1490 8 fpga_is_fu
               elsif (rdy_i = '1') then
1491 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1492 8 fpga_is_fu
               end if;
1493
            when s226 =>
1494
               if (rdy_i = '1' and
1495 6 fpga_is_fu
                   (zw_REG_OP = X"C6" OR
1496 8 fpga_is_fu
                   zw_REG_OP = X"E6")) then
1497 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1498 8 fpga_is_fu
               elsif (rdy_i = '1' and
1499 6 fpga_is_fu
                      (zw_REG_OP = X"D6" OR
1500 8 fpga_is_fu
                      zw_REG_OP = X"F6")) then
1501 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1502
                  zw_b1 <= d_alu_i;
1503 8 fpga_is_fu
               elsif (rdy_i = '1' and
1504 6 fpga_is_fu
                      (zw_REG_OP = X"CE" OR
1505 8 fpga_is_fu
                      zw_REG_OP = X"EE")) then
1506 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1507
                  zw_b1 <= d_i;
1508 8 fpga_is_fu
               elsif (rdy_i = '1' and
1509 6 fpga_is_fu
                      (zw_REG_OP = X"DE" OR
1510 8 fpga_is_fu
                      zw_REG_OP = X"FE")) then
1511 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1512
                  zw_b1 <= d_alu_i;
1513
                  zw_b2(0) <= reg_0flag_i;
1514 8 fpga_is_fu
               end if;
1515
            when s243 =>
1516
               if (rdy_i = '1') then
1517 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1518 8 fpga_is_fu
               end if;
1519
            when s244 =>
1520
               if (rdy_i = '1') then
1521 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1522
                  zw_b3 <= d_alu_i;
1523 8 fpga_is_fu
               end if;
1524
            when s247 =>
1525
               if (rdy_i = '1') then
1526 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1527 8 fpga_is_fu
               end if;
1528
            when s344 =>
1529
               if (rdy_i = '1') then
1530 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1531 8 fpga_is_fu
               end if;
1532
            when s343 =>
1533
               if (rdy_i = '1') then
1534 6 fpga_is_fu
                  zw_b1 <= d_alu_i;
1535 8 fpga_is_fu
               end if;
1536
            when s251 =>
1537 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1538
               reg_F(7) <= reg_7flag_i;
1539
               reg_F(1) <= reg_1flag_i;
1540
               reg_sel_pc_in <= '0';
1541
               reg_sel_pc_as <= '0';
1542
               reg_sel_pc_val <= "00";
1543
               reg_sel_sp_in <= '0';
1544
               reg_sel_sp_as <= '1';
1545 8 fpga_is_fu
            when s351 =>
1546
               if (rdy_i = '1' and
1547
                   zw_REG_OP = X"24") then
1548 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1549 8 fpga_is_fu
               elsif (rdy_i = '1' and
1550
                      zw_REG_OP = X"2C") then
1551 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1552
                  zw_b1 <= d_i;
1553 8 fpga_is_fu
               end if;
1554
            when s361 =>
1555
               if (rdy_i = '1') then
1556 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1557
                  reg_F(7) <= d_i(7);
1558
                  reg_F(6) <= d_i(6);
1559
                  reg_F(1) <= reg_1flag_i;
1560
                  reg_sel_pc_in <= '0';
1561
                  reg_sel_pc_as <= '0';
1562
                  reg_sel_pc_val <= "00";
1563
                  reg_sel_sp_in <= '0';
1564
                  reg_sel_sp_as <= '1';
1565 8 fpga_is_fu
               end if;
1566
            when s360 =>
1567
               if (rdy_i = '1') then
1568 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1569 8 fpga_is_fu
               end if;
1570
            when s403 =>
1571
               if (rdy_i = '1' and
1572 6 fpga_is_fu
                   (zw_REG_OP = X"1E" or
1573
                   zw_REG_OP = X"7E" or
1574
                   zw_REG_OP = X"3E" or
1575 8 fpga_is_fu
                   zw_REG_OP = X"5E")) then
1576 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1577
                  zw_b1 <= d_alu_i;
1578
                  zw_b2(0) <= reg_0flag_i;
1579 8 fpga_is_fu
               elsif (rdy_i = '1' and
1580 6 fpga_is_fu
                      (zw_REG_OP = X"06" or
1581
                      zw_REG_OP = X"66" or
1582
                      zw_REG_OP = X"26" or
1583 8 fpga_is_fu
                      zw_REG_OP = X"46")) then
1584 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1585 8 fpga_is_fu
               elsif (rdy_i = '1' and
1586 6 fpga_is_fu
                      (zw_REG_OP = X"16" or
1587
                      zw_REG_OP = X"76" or
1588
                      zw_REG_OP = X"36" or
1589 8 fpga_is_fu
                      zw_REG_OP = X"56")) then
1590 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1591
                  zw_b1 <= d_alu_i;
1592 8 fpga_is_fu
               elsif (rdy_i = '1' and
1593 6 fpga_is_fu
                      (zw_REG_OP = X"0E" or
1594
                      zw_REG_OP = X"6E" or
1595
                      zw_REG_OP = X"2E" or
1596 8 fpga_is_fu
                      zw_REG_OP = X"4E")) then
1597 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1598
                  zw_b1 <= d_i;
1599 8 fpga_is_fu
               end if;
1600
            when s406 =>
1601
               if (rdy_i = '1') then
1602 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1603 8 fpga_is_fu
               end if;
1604
            when s407 =>
1605
               if (rdy_i = '1') then
1606 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1607
                  zw_b3 <= d_alu_i;
1608 8 fpga_is_fu
               end if;
1609
            when s409 =>
1610
               if (rdy_i = '1') then
1611 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1612 8 fpga_is_fu
               end if;
1613
            when s412 =>
1614
               if (rdy_i = '1') then
1615 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1616 8 fpga_is_fu
               end if;
1617
            when s416 =>
1618
               if (rdy_i = '1' and
1619 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
1620
                   zw_REG_OP = X"16" or
1621
                   zw_REG_OP = X"0E" or
1622 8 fpga_is_fu
                   zw_REG_OP = X"1E")) then
1623 6 fpga_is_fu
                  zw_b1 <= d_i(6 downto 0) & '0';
1624
                  zw_b2(0) <= d_i(7);
1625 8 fpga_is_fu
               elsif (rdy_i = '1' and
1626 6 fpga_is_fu
                      (zw_REG_OP = X"46" or
1627
                      zw_REG_OP = X"56" or
1628
                      zw_REG_OP = X"4E" or
1629 8 fpga_is_fu
                      zw_REG_OP = X"5E")) then
1630 6 fpga_is_fu
                  zw_b1 <= '0' & d_i(7 downto 1);
1631
                  zw_b2(0) <= d_i(0);
1632 8 fpga_is_fu
               elsif (rdy_i = '1' and
1633 6 fpga_is_fu
                      (zw_REG_OP = X"26" or
1634
                      zw_REG_OP = X"36" or
1635
                      zw_REG_OP = X"2E" or
1636 8 fpga_is_fu
                      zw_REG_OP = X"3E")) then
1637 6 fpga_is_fu
                  zw_b1 <= d_i(6 downto 0) & reg_F(0);
1638
                  zw_b2(0) <= d_i(7);
1639 8 fpga_is_fu
               elsif (rdy_i = '1' and
1640 6 fpga_is_fu
                      (zw_REG_OP = X"66" or
1641
                      zw_REG_OP = X"76" or
1642
                      zw_REG_OP = X"6E" or
1643 8 fpga_is_fu
                      zw_REG_OP = X"7E")) then
1644 6 fpga_is_fu
                  zw_b1 <= reg_F(0) & d_i(7 downto 1);
1645
                  zw_b2(0) <= d_i(0);
1646 8 fpga_is_fu
               end if;
1647
            when s418 =>
1648 6 fpga_is_fu
               sig_PC <= adr_pc_i;
1649
               reg_F(0) <= zw_b2(0);
1650
               reg_F(7) <= reg_7flag_i;
1651
               reg_F(1) <= reg_1flag_i;
1652
               reg_sel_pc_in <= '0';
1653
               reg_sel_pc_as <= '0';
1654
               reg_sel_pc_val <= "00";
1655
               reg_sel_sp_in <= '0';
1656
               reg_sel_sp_as <= '1';
1657 8 fpga_is_fu
            when s510 =>
1658
               if (rdy_i = '1' and
1659
                   zw_REG_OP = X"65") then
1660 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1661 8 fpga_is_fu
               elsif (rdy_i = '1' and
1662 6 fpga_is_fu
                      zw_REG_OP = X"69" and
1663 8 fpga_is_fu
                      reg_F(3) = '0') then
1664 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1665
 
1666
                  reg_F(7) <= zw_ALU(7);
1667
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1668
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1669
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1670
                  (zw_ALU(0)));
1671
                  reg_F(0) <= zw_ALU(8);
1672
                  reg_sel_pc_in <= '0';
1673
                  reg_sel_pc_as <= '0';
1674
                  reg_sel_pc_val <= "00";
1675
                  reg_sel_sp_in <= '0';
1676
                  reg_sel_sp_as <= '1';
1677 8 fpga_is_fu
               elsif (rdy_i = '1' and
1678
                      zw_REG_OP = X"75") then
1679 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1680
                  zw_b1 <= d_alu_i;
1681 8 fpga_is_fu
               elsif (rdy_i = '1' and
1682
                      zw_REG_OP = X"6D") then
1683 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1684
                  zw_b1 <= d_i;
1685 8 fpga_is_fu
               elsif (rdy_i = '1' and
1686
                      zw_REG_OP = X"7D") then
1687 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1688
                  zw_b1 <= d_alu_i;
1689
                  zw_b2(0) <= reg_0flag_i;
1690 8 fpga_is_fu
               elsif (rdy_i = '1' and
1691
                      zw_REG_OP = X"79") then
1692 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1693
                  zw_b1 <= d_alu_i;
1694
                  zw_b2(0) <= reg_0flag_i;
1695 8 fpga_is_fu
               elsif (rdy_i = '1' and
1696
                      zw_REG_OP = X"71") then
1697 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1698
                  zw_b1 <= d_alu_i;
1699 8 fpga_is_fu
               elsif (rdy_i = '1' and
1700
                      zw_REG_OP = X"61") then
1701 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1702
                  zw_b1 <= d_alu_i;
1703 8 fpga_is_fu
               elsif (rdy_i = '1' and
1704 6 fpga_is_fu
                      zw_REG_OP = X"69" and
1705 8 fpga_is_fu
                      reg_F(3) = '1') then
1706 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1707
 
1708
                  reg_F(7) <= zw_ALU(7);
1709
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1710
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1711
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1712
                  (zw_ALU(0)));
1713
                  reg_F(0) <= zw_ALU4(4);
1714
                  reg_sel_pc_in <= '0';
1715
                  reg_sel_pc_as <= '0';
1716
                  reg_sel_pc_val <= "00";
1717
                  reg_sel_sp_in <= '0';
1718
                  reg_sel_sp_as <= '1';
1719 8 fpga_is_fu
               end if;
1720
            when s553 =>
1721
               if (rdy_i = '1') then
1722 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1723 8 fpga_is_fu
               end if;
1724
            when s555 =>
1725
               if (rdy_i = '1') then
1726 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1727
                  zw_b3 <= d_alu_i;
1728 8 fpga_is_fu
               end if;
1729
            when s558 =>
1730
               if (rdy_i = '1') then
1731 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1732
                  zw_b1 <= d_alu_i;
1733
                  zw_b2(0) <= reg_0flag_i;
1734 8 fpga_is_fu
               end if;
1735
            when s560 =>
1736
               if (rdy_i = '1') then
1737 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1738 8 fpga_is_fu
               end if;
1739
            when s561 =>
1740
               if (rdy_i = '1') then
1741 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1742 8 fpga_is_fu
               end if;
1743
            when s563 =>
1744
               if (rdy_i = '1') then
1745 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1746
                  zw_b1 <= d_i;
1747 8 fpga_is_fu
               end if;
1748
            when s564 =>
1749
               if (rdy_i = '1' AND
1750 6 fpga_is_fu
                   zw_b2(0) = '0' and
1751 8 fpga_is_fu
                   reg_F(3) = '0') then
1752 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1753
 
1754
                  reg_F(7) <= zw_ALU(7);
1755
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1756
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1757
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1758
                  (zw_ALU(0)));
1759
                  reg_F(0) <= zw_ALU(8);
1760
                  reg_sel_pc_in <= '0';
1761
                  reg_sel_pc_as <= '0';
1762
                  reg_sel_pc_val <= "00";
1763
                  reg_sel_sp_in <= '0';
1764
                  reg_sel_sp_as <= '1';
1765 8 fpga_is_fu
               elsif (rdy_i = '1' AND
1766 6 fpga_is_fu
                      zw_b2(0) = '0' and
1767 8 fpga_is_fu
                      reg_F(3) = '1') then
1768 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1769
 
1770
                  reg_F(7) <= zw_ALU(7);
1771
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1772
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1773
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1774
                  (zw_ALU(0)));
1775
                  reg_F(0) <= zw_ALU4(4);
1776
                  reg_sel_pc_in <= '0';
1777
                  reg_sel_pc_as <= '0';
1778
                  reg_sel_pc_val <= "00";
1779
                  reg_sel_sp_in <= '0';
1780
                  reg_sel_sp_as <= '1';
1781 8 fpga_is_fu
               elsif (rdy_i = '1') then
1782 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
1783 8 fpga_is_fu
               end if;
1784
            when s565 =>
1785
               if (rdy_i = '1' and
1786
                   reg_F(3) = '0') then
1787 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1788
 
1789
                  reg_F(7) <= zw_ALU(7);
1790
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1791
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1792
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1793
                  (zw_ALU(0)));
1794
                  reg_F(0) <= zw_ALU(8);
1795
                  reg_sel_pc_in <= '0';
1796
                  reg_sel_pc_as <= '0';
1797
                  reg_sel_pc_val <= "00";
1798
                  reg_sel_sp_in <= '0';
1799
                  reg_sel_sp_as <= '1';
1800 8 fpga_is_fu
               elsif (rdy_i = '1' and
1801
                      reg_F(3) = '1') then
1802 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1803
 
1804
                  reg_F(7) <= zw_ALU(7);
1805
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1806
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1807
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1808
                  (zw_ALU(0)));
1809
                  reg_F(0) <= zw_ALU4(4);
1810
                  reg_sel_pc_in <= '0';
1811
                  reg_sel_pc_as <= '0';
1812
                  reg_sel_pc_val <= "00";
1813
                  reg_sel_sp_in <= '0';
1814
                  reg_sel_sp_as <= '1';
1815 8 fpga_is_fu
               end if;
1816
            when s566 =>
1817
               if (rdy_i = '1') then
1818 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1819
                  zw_b3 <= d_alu_i;
1820 8 fpga_is_fu
               end if;
1821
            when s266 =>
1822
               if (rdy_i = '1' and (
1823 6 fpga_is_fu
                   (reg_F(0) = '1' and zw_REG_OP = X"90") or
1824
                   (reg_F(0) = '0' and zw_REG_OP = X"B0") or
1825
                   (reg_F(1) = '0' and zw_REG_OP = X"F0") or
1826
                   (reg_F(7) = '0' and zw_REG_OP = X"30") or
1827
                   (reg_F(1) = '1' and zw_REG_OP = X"D0") or
1828
                   (reg_F(7) = '1' and zw_REG_OP = X"10") or
1829
                   (reg_F(6) = '1' and zw_REG_OP = X"50") or
1830 8 fpga_is_fu
                   (reg_F(6) = '0' and zw_REG_OP = X"70"))) then
1831 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1832
                  reg_sel_pc_in <= '0';
1833
                  reg_sel_pc_as <= '0';
1834
                  reg_sel_pc_val <= "00";
1835
                  reg_sel_sp_in <= '0';
1836
                  reg_sel_sp_as <= '1';
1837 8 fpga_is_fu
               elsif (rdy_i = '1') then
1838 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1839
                  reg_sel_pc_in <= '0';
1840
                  reg_sel_pc_as <= '0';
1841
                  reg_sel_pc_val <= "10";
1842
                  zw_b2 <= d_i;
1843 8 fpga_is_fu
               end if;
1844
            when s301 =>
1845
               if (rdy_i = '1' and
1846
                   zw_b3 = adr_nxt_pc_i (15 downto 8)) then
1847 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1848
                  reg_sel_pc_in <= '0';
1849
                  reg_sel_pc_as <= '0';
1850
                  reg_sel_pc_val <= "00";
1851
                  reg_sel_sp_in <= '0';
1852
                  reg_sel_sp_as <= '1';
1853 8 fpga_is_fu
               elsif (rdy_i = '1') then
1854 6 fpga_is_fu
                  sig_PC <= zw_b3 & adr_nxt_pc_i (7 downto 0);
1855 8 fpga_is_fu
               end if;
1856
            when s302 =>
1857
               if (rdy_i = '1') then
1858 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1859
                  reg_sel_pc_in <= '0';
1860
                  reg_sel_pc_as <= '0';
1861
                  reg_sel_pc_val <= "00";
1862
                  reg_sel_sp_in <= '0';
1863
                  reg_sel_sp_as <= '1';
1864 8 fpga_is_fu
               end if;
1865
            when RES =>
1866 6 fpga_is_fu
               reg_sel_pc_in <= '0';
1867
               reg_sel_pc_val <= "00";
1868
               reg_sel_pc_as <= '0';
1869
               sig_PC <= adr_nxt_pc_i;
1870
               reg_sel_pc_in <= '0';
1871
               reg_sel_pc_as <= '0';
1872
               reg_sel_pc_val <= "00";
1873
               reg_sel_sp_in <= '0';
1874
               reg_sel_sp_as <= '1';
1875 8 fpga_is_fu
            when s511 =>
1876
               if (rdy_i = '1' and
1877
                   zw_REG_OP = X"E5") then
1878 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1879 8 fpga_is_fu
               elsif (rdy_i = '1' and
1880 6 fpga_is_fu
                      zw_REG_OP = X"E9" and
1881 8 fpga_is_fu
                      reg_F(3) = '0') then
1882 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1883
 
1884
                  reg_F(7) <= zw_ALU(7);
1885
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1886
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1887
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1888
                  (zw_ALU(0)));
1889
                  reg_F(0) <= zw_ALU(8);
1890
                  reg_sel_pc_in <= '0';
1891
                  reg_sel_pc_as <= '0';
1892
                  reg_sel_pc_val <= "00";
1893
                  reg_sel_sp_in <= '0';
1894
                  reg_sel_sp_as <= '1';
1895 8 fpga_is_fu
               elsif (rdy_i = '1' and
1896
                      zw_REG_OP = X"F5") then
1897 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1898
                  zw_b1 <= d_alu_i;
1899 8 fpga_is_fu
               elsif (rdy_i = '1' and
1900
                      zw_REG_OP = X"ED") then
1901 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1902
                  zw_b1 <= d_i;
1903 8 fpga_is_fu
               elsif (rdy_i = '1' and
1904
                      zw_REG_OP = X"FD") then
1905 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1906
                  zw_b1 <= d_alu_i;
1907
                  zw_b2(0) <= reg_0flag_i;
1908 8 fpga_is_fu
               elsif (rdy_i = '1' and
1909
                      zw_REG_OP = X"F9") then
1910 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1911
                  zw_b1 <= d_alu_i;
1912
                  zw_b2(0) <= reg_0flag_i;
1913 8 fpga_is_fu
               elsif (rdy_i = '1' and
1914
                      zw_REG_OP = X"F1") then
1915 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1916
                  zw_b1 <= d_alu_i;
1917 8 fpga_is_fu
               elsif (rdy_i = '1' and
1918
                      zw_REG_OP = X"E1") then
1919 6 fpga_is_fu
                  sig_PC <= X"00" & d_i;
1920
                  zw_b1 <= d_alu_i;
1921 8 fpga_is_fu
               elsif (rdy_i = '1' and
1922 6 fpga_is_fu
                      zw_REG_OP = X"E9" and
1923 8 fpga_is_fu
                      reg_F(3) = '1') then
1924 6 fpga_is_fu
                  sig_PC <= adr_nxt_pc_i;
1925
 
1926
                  reg_F(7) <= zw_ALU(7);
1927
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1928
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1929
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1930
                  (zw_ALU(0)));
1931
                  reg_F(0) <= zw_ALU2(4);
1932
                  reg_sel_pc_in <= '0';
1933
                  reg_sel_pc_as <= '0';
1934
                  reg_sel_pc_val <= "00";
1935
                  reg_sel_sp_in <= '0';
1936
                  reg_sel_sp_as <= '1';
1937 8 fpga_is_fu
               end if;
1938
            when s559 =>
1939
               if (rdy_i = '1') then
1940 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1941 8 fpga_is_fu
               end if;
1942
            when s562 =>
1943
               if (rdy_i = '1') then
1944 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1945
                  zw_b3 <= d_alu_i;
1946 8 fpga_is_fu
               end if;
1947
            when s567 =>
1948
               if (rdy_i = '1') then
1949 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1950
                  zw_b3 <= d_alu_i;
1951 8 fpga_is_fu
               end if;
1952
            when s568 =>
1953
               if (rdy_i = '1') then
1954 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1955
                  zw_b1 <= d_alu_i;
1956
                  zw_b2(0) <= reg_0flag_i;
1957 8 fpga_is_fu
               end if;
1958
            when s569 =>
1959
               if (rdy_i = '1') then
1960 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1961 8 fpga_is_fu
               end if;
1962
            when s570 =>
1963
               if (rdy_i = '1') then
1964 6 fpga_is_fu
                  sig_PC <= X"00" & zw_b1;
1965 8 fpga_is_fu
               end if;
1966
            when s571 =>
1967
               if (rdy_i = '1') then
1968 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
1969
                  zw_b3 <= d_alu_i;
1970 8 fpga_is_fu
               end if;
1971
            when s572 =>
1972
               if (rdy_i = '1') then
1973 6 fpga_is_fu
                  sig_PC <= X"00" & d_alu_i;
1974
                  zw_b1 <= d_i;
1975 8 fpga_is_fu
               end if;
1976
            when s573 =>
1977
               if (rdy_i = '1' AND
1978 6 fpga_is_fu
                   zw_b2(0) = '0' and
1979 8 fpga_is_fu
                   reg_F(3) = '0') then
1980 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1981
 
1982
                  reg_F(7) <= zw_ALU(7);
1983
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
1984
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
1985
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
1986
                  (zw_ALU(0)));
1987
                  reg_F(0) <= zw_ALU(8);
1988
                  reg_sel_pc_in <= '0';
1989
                  reg_sel_pc_as <= '0';
1990
                  reg_sel_pc_val <= "00";
1991
                  reg_sel_sp_in <= '0';
1992
                  reg_sel_sp_as <= '1';
1993 8 fpga_is_fu
               elsif (rdy_i = '1' AND
1994 6 fpga_is_fu
                      zw_b2(0) = '0' and
1995 8 fpga_is_fu
                      reg_F(3) = '1') then
1996 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
1997
 
1998
                  reg_F(7) <= zw_ALU(7);
1999
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
2000
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
2001
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
2002
                  (zw_ALU(0)));
2003
                  reg_F(0) <= zw_ALU2(4);
2004
                  reg_sel_pc_in <= '0';
2005
                  reg_sel_pc_as <= '0';
2006
                  reg_sel_pc_val <= "00";
2007
                  reg_sel_sp_in <= '0';
2008
                  reg_sel_sp_as <= '1';
2009 8 fpga_is_fu
               elsif (rdy_i = '1') then
2010 6 fpga_is_fu
                  sig_PC <= zw_b3 & zw_b1;
2011 8 fpga_is_fu
               end if;
2012
            when s574 =>
2013
               if (rdy_i = '1' and
2014
                   reg_F(3) = '0') then
2015 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
2016
 
2017
                  reg_F(7) <= zw_ALU(7);
2018
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
2019
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
2020
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
2021
                  (zw_ALU(0)));
2022
                  reg_F(0) <= zw_ALU(8);
2023
                  reg_sel_pc_in <= '0';
2024
                  reg_sel_pc_as <= '0';
2025
                  reg_sel_pc_val <= "00";
2026
                  reg_sel_sp_in <= '0';
2027
                  reg_sel_sp_as <= '1';
2028 8 fpga_is_fu
               elsif (rdy_i = '1' and
2029
                      reg_F(3) = '1') then
2030 6 fpga_is_fu
                  sig_PC <= adr_pc_i;
2031
 
2032
                  reg_F(7) <= zw_ALU(7);
2033
                  reg_F(6) <= zw_b1(0) XOR zw_ALU(7);
2034
                  reg_F(1) <= NOT ((zw_ALU(7)) OR (zw_ALU(6)) OR (zw_ALU(5)) OR
2035
                  (zw_ALU(4)) OR (zw_ALU(3)) OR (zw_ALU(2)) OR (zw_ALU(1)) OR
2036
                  (zw_ALU(0)));
2037
                  reg_F(0) <= zw_ALU2(4);
2038
                  reg_sel_pc_in <= '0';
2039
                  reg_sel_pc_as <= '0';
2040
                  reg_sel_pc_val <= "00";
2041
                  reg_sel_sp_in <= '0';
2042
                  reg_sel_sp_as <= '1';
2043 8 fpga_is_fu
               end if;
2044
            when s548 =>
2045
               if (rdy_i = '1') then
2046 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
2047 8 fpga_is_fu
               end if;
2048
            when s551 =>
2049 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2050 8 fpga_is_fu
            when s552 =>
2051 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2052 8 fpga_is_fu
            when s575 =>
2053
               if (rdy_i = '1') then
2054 6 fpga_is_fu
                  sig_PC <= X"FFFF";
2055
                  zw_b1 <= d_i;
2056 8 fpga_is_fu
               end if;
2057
            when s576 =>
2058 6 fpga_is_fu
               sig_PC <= X"FFFE";
2059 8 fpga_is_fu
            when s577 =>
2060
               if (rdy_i = '1') then
2061 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
2062
                  reg_F(2) <= '1';
2063
                  reg_sel_pc_in <= '0';
2064
                  reg_sel_pc_as <= '0';
2065
                  reg_sel_pc_val <= "00";
2066
                  reg_sel_sp_in <= '0';
2067
                  reg_sel_sp_as <= '1';
2068 8 fpga_is_fu
               end if;
2069
            when s532 =>
2070
               if (rdy_i = '1') then
2071 6 fpga_is_fu
                  sig_PC <= adr_sp_i;
2072 8 fpga_is_fu
               end if;
2073
            when s533 =>
2074 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2075 8 fpga_is_fu
            when s534 =>
2076 6 fpga_is_fu
               sig_PC <= adr_sp_i;
2077 8 fpga_is_fu
            when s535 =>
2078
               if (rdy_i = '1') then
2079 6 fpga_is_fu
                  sig_PC <= X"FFFB";
2080
                  reg_sel_pc_in <= '1';
2081
                  reg_sel_pc_as <= '0';
2082
                  reg_sel_pc_val <= "11";
2083
                  zw_b1 <= d_i;
2084 8 fpga_is_fu
               end if;
2085
            when s536 =>
2086 6 fpga_is_fu
               sig_PC <= X"FFFA";
2087 8 fpga_is_fu
            when s537 =>
2088
               if (rdy_i = '1') then
2089 6 fpga_is_fu
                  sig_PC <= d_i & zw_b1;
2090
                  reg_sel_pc_in <= '0';
2091
                  reg_sel_pc_as <= '0';
2092
                  reg_sel_pc_val <= "00";
2093
                  reg_sel_sp_in <= '0';
2094
                  reg_sel_sp_as <= '1';
2095 8 fpga_is_fu
               end if;
2096
            when others =>
2097
               null;
2098
         end case;
2099
      end if;
2100
   end process clocked_proc;
2101 6 fpga_is_fu
 
2102
   -----------------------------------------------------------------
2103 8 fpga_is_fu
   nextstate_proc : process (
2104 6 fpga_is_fu
      adr_nxt_pc_i,
2105
      current_state,
2106
      d_i,
2107
      irq_n_i,
2108
      nmi_i,
2109
      rdy_i,
2110
      reg_F,
2111
      zw_REG_OP,
2112
      zw_b2,
2113
      zw_b3
2114
   )
2115
   -----------------------------------------------------------------
2116 8 fpga_is_fu
   begin
2117
      case current_state is
2118
         when FETCH =>
2119
            if ((nmi_i = '1') and (rdy_i = '1')) then
2120 6 fpga_is_fu
               next_state <= s532;
2121 8 fpga_is_fu
            elsif ((irq_n_i = '0' and
2122
                   reg_F(2) = '0') and (rdy_i = '1')) then
2123 6 fpga_is_fu
               next_state <= s548;
2124 8 fpga_is_fu
            elsif ((d_i = X"69" or
2125 6 fpga_is_fu
                   d_i = X"65" or
2126
                   d_i = X"75" or
2127
                   d_i = X"6D" or
2128
                   d_i = X"7D" or
2129
                   d_i = X"79" or
2130
                   d_i = X"61" or
2131 8 fpga_is_fu
                   d_i = X"71") and (rdy_i = '1')) then
2132 6 fpga_is_fu
               next_state <= s510;
2133 8 fpga_is_fu
            elsif ((d_i = X"06" or
2134 6 fpga_is_fu
                   d_i = X"16" or
2135
                   d_i = X"0E" or
2136 8 fpga_is_fu
                   d_i = X"1E") and (rdy_i = '1')) then
2137 6 fpga_is_fu
               next_state <= s403;
2138 8 fpga_is_fu
            elsif ((d_i = X"90" or
2139 6 fpga_is_fu
                   d_i = X"B0" or
2140
                   d_i = X"F0" or
2141
                   d_i = X"30" or
2142
                   d_i = X"D0" or
2143
                   d_i = X"10" or
2144
                   d_i = X"50" or
2145 8 fpga_is_fu
                   d_i = X"70") and (rdy_i = '1')) then
2146 6 fpga_is_fu
               next_state <= s266;
2147 8 fpga_is_fu
            elsif ((d_i = X"24" or
2148
                   d_i = X"2C") and (rdy_i = '1')) then
2149 6 fpga_is_fu
               next_state <= s351;
2150 8 fpga_is_fu
            elsif ((d_i = X"00") and (rdy_i = '1')) then
2151 6 fpga_is_fu
               next_state <= s526;
2152 8 fpga_is_fu
            elsif ((d_i = X"18") and (rdy_i = '1')) then
2153 6 fpga_is_fu
               next_state <= s12;
2154 8 fpga_is_fu
            elsif ((d_i = X"D8") and (rdy_i = '1')) then
2155 6 fpga_is_fu
               next_state <= s16;
2156 8 fpga_is_fu
            elsif ((d_i = X"58") and (rdy_i = '1')) then
2157 6 fpga_is_fu
               next_state <= s17;
2158 8 fpga_is_fu
            elsif ((d_i = X"B8") and (rdy_i = '1')) then
2159 6 fpga_is_fu
               next_state <= s24;
2160 8 fpga_is_fu
            elsif ((d_i = X"E0" or
2161 6 fpga_is_fu
                   d_i = X"E4" or
2162 8 fpga_is_fu
                   d_i = X"EC") and (rdy_i = '1')) then
2163 6 fpga_is_fu
               next_state <= s201;
2164 8 fpga_is_fu
            elsif ((d_i = X"C0" or
2165 6 fpga_is_fu
                   d_i = X"C4" or
2166 8 fpga_is_fu
                   d_i = X"CC") and (rdy_i = '1')) then
2167 6 fpga_is_fu
               next_state <= s201;
2168 8 fpga_is_fu
            elsif ((d_i = X"C6" or
2169 6 fpga_is_fu
                   d_i = X"D6" or
2170
                   d_i = X"CE" or
2171 8 fpga_is_fu
                   d_i = X"DE") and (rdy_i = '1')) then
2172 6 fpga_is_fu
               next_state <= s226;
2173 8 fpga_is_fu
            elsif ((d_i = X"CA") and (rdy_i = '1')) then
2174 6 fpga_is_fu
               next_state <= s25;
2175 8 fpga_is_fu
            elsif ((d_i = X"88") and (rdy_i = '1')) then
2176 6 fpga_is_fu
               next_state <= s25;
2177 8 fpga_is_fu
            elsif ((d_i = X"49" or
2178 6 fpga_is_fu
                   d_i = X"45" or
2179
                   d_i = X"55" or
2180
                   d_i = X"4D" or
2181
                   d_i = X"5D" or
2182
                   d_i = X"59" or
2183
                   d_i = X"41" or
2184
                   d_i = X"51" or
2185
                   d_i = X"09" or
2186
                   d_i = X"05" or
2187
                   d_i = X"15" or
2188
                   d_i = X"0D" or
2189
                   d_i = X"1D" or
2190
                   d_i = X"19" or
2191
                   d_i = X"01" or
2192
                   d_i = X"11" or
2193
                   d_i = X"29" or
2194
                   d_i = X"25" or
2195
                   d_i = X"35" or
2196
                   d_i = X"2D" or
2197
                   d_i = X"3D" or
2198
                   d_i = X"39" or
2199
                   d_i = X"21" or
2200
                   d_i = X"31" or
2201
                   d_i = X"C9" or
2202
                   d_i = X"C5" or
2203
                   d_i = X"D5" or
2204
                   d_i = X"CD" or
2205
                   d_i = X"DD" or
2206
                   d_i = X"D9" or
2207
                   d_i = X"C1" or
2208 8 fpga_is_fu
                   d_i = X"D1") and (rdy_i = '1')) then
2209 6 fpga_is_fu
               next_state <= s201;
2210 8 fpga_is_fu
            elsif ((d_i = X"E6" or
2211 6 fpga_is_fu
                   d_i = X"F6" or
2212
                   d_i = X"EE" or
2213 8 fpga_is_fu
                   d_i = X"FE") and (rdy_i = '1')) then
2214 6 fpga_is_fu
               next_state <= s226;
2215 8 fpga_is_fu
            elsif ((d_i = X"E8") and (rdy_i = '1')) then
2216 6 fpga_is_fu
               next_state <= s25;
2217 8 fpga_is_fu
            elsif ((d_i = X"C8") and (rdy_i = '1')) then
2218 6 fpga_is_fu
               next_state <= s25;
2219 8 fpga_is_fu
            elsif ((d_i = X"4C" or
2220
                   d_i = X"6C") and (rdy_i = '1')) then
2221 6 fpga_is_fu
               next_state <= s271;
2222 8 fpga_is_fu
            elsif ((d_i = X"20") and (rdy_i = '1')) then
2223 6 fpga_is_fu
               next_state <= s397;
2224 8 fpga_is_fu
            elsif ((d_i = X"A9" or
2225 6 fpga_is_fu
                   d_i = X"A5" or
2226
                   d_i = X"B5" or
2227
                   d_i = X"AD" or
2228
                   d_i = X"BD" or
2229
                   d_i = X"B9" or
2230
                   d_i = X"A1" or
2231 8 fpga_is_fu
                   d_i = X"B1") and (rdy_i = '1')) then
2232 6 fpga_is_fu
               next_state <= s201;
2233 8 fpga_is_fu
            elsif ((d_i = X"A2" or
2234 6 fpga_is_fu
                   d_i = X"A6" or
2235
                   d_i = X"B6" or
2236
                   d_i = X"AE" or
2237 8 fpga_is_fu
                   d_i = X"BE") and (rdy_i = '1')) then
2238 6 fpga_is_fu
               next_state <= s201;
2239 8 fpga_is_fu
            elsif ((d_i = X"A0" or
2240 6 fpga_is_fu
                   d_i = X"A4" or
2241
                   d_i = X"B4" or
2242
                   d_i = X"AC" or
2243 8 fpga_is_fu
                   d_i = X"BC") and (rdy_i = '1')) then
2244 6 fpga_is_fu
               next_state <= s201;
2245 8 fpga_is_fu
            elsif ((d_i = X"46" or
2246 6 fpga_is_fu
                   d_i = X"56" or
2247
                   d_i = X"4E" or
2248 8 fpga_is_fu
                   d_i = X"5E") and (rdy_i = '1')) then
2249 6 fpga_is_fu
               next_state <= s403;
2250 8 fpga_is_fu
            elsif ((d_i = X"EA") and (rdy_i = '1')) then
2251 6 fpga_is_fu
               next_state <= s1;
2252 8 fpga_is_fu
            elsif ((d_i = X"48") and (rdy_i = '1')) then
2253 6 fpga_is_fu
               next_state <= s377;
2254 8 fpga_is_fu
            elsif ((d_i = X"08") and (rdy_i = '1')) then
2255 6 fpga_is_fu
               next_state <= s378;
2256 8 fpga_is_fu
            elsif ((d_i = X"68") and (rdy_i = '1')) then
2257 6 fpga_is_fu
               next_state <= s379;
2258 8 fpga_is_fu
            elsif ((d_i = X"28") and (rdy_i = '1')) then
2259 6 fpga_is_fu
               next_state <= s380;
2260 8 fpga_is_fu
            elsif ((d_i = X"26" or
2261 6 fpga_is_fu
                   d_i = X"36" or
2262
                   d_i = X"2E" or
2263 8 fpga_is_fu
                   d_i = X"3E") and (rdy_i = '1')) then
2264 6 fpga_is_fu
               next_state <= s403;
2265 8 fpga_is_fu
            elsif ((d_i = X"66" or
2266 6 fpga_is_fu
                   d_i = X"76" or
2267
                   d_i = X"6E" or
2268 8 fpga_is_fu
                   d_i = X"7E") and (rdy_i = '1')) then
2269 6 fpga_is_fu
               next_state <= s403;
2270 8 fpga_is_fu
            elsif ((d_i = X"40") and (rdy_i = '1')) then
2271 6 fpga_is_fu
               next_state <= s387;
2272 8 fpga_is_fu
            elsif ((d_i = X"60") and (rdy_i = '1')) then
2273 6 fpga_is_fu
               next_state <= s390;
2274 8 fpga_is_fu
            elsif ((d_i = X"E9" or
2275 6 fpga_is_fu
                   d_i = X"E5" or
2276
                   d_i = X"F5" or
2277
                   d_i = X"ED" or
2278
                   d_i = X"FD" or
2279
                   d_i = X"F9" or
2280
                   d_i = X"E1" or
2281 8 fpga_is_fu
                   d_i = X"F1") and (rdy_i = '1')) then
2282 6 fpga_is_fu
               next_state <= s511;
2283 8 fpga_is_fu
            elsif ((d_i = X"38") and (rdy_i = '1')) then
2284 6 fpga_is_fu
               next_state <= s2;
2285 8 fpga_is_fu
            elsif ((d_i = X"F8") and (rdy_i = '1')) then
2286 6 fpga_is_fu
               next_state <= s5;
2287 8 fpga_is_fu
            elsif ((d_i = X"78") and (rdy_i = '1')) then
2288 6 fpga_is_fu
               next_state <= s3;
2289 8 fpga_is_fu
            elsif ((d_i = X"85" or
2290 6 fpga_is_fu
                   d_i = X"95" or
2291
                   d_i = X"8D" or
2292
                   d_i = X"9D" or
2293
                   d_i = X"99" or
2294
                   d_i = X"81" or
2295 8 fpga_is_fu
                   d_i = X"91") and (rdy_i = '1')) then
2296 6 fpga_is_fu
               next_state <= s177;
2297 8 fpga_is_fu
            elsif ((d_i = X"86" or
2298 6 fpga_is_fu
                   d_i = X"96" or
2299 8 fpga_is_fu
                   d_i = X"8E") and (rdy_i = '1')) then
2300 6 fpga_is_fu
               next_state <= s177;
2301 8 fpga_is_fu
            elsif ((d_i = X"84" or
2302 6 fpga_is_fu
                   d_i = X"94" or
2303 8 fpga_is_fu
                   d_i = X"8C") and (rdy_i = '1')) then
2304 6 fpga_is_fu
               next_state <= s177;
2305 8 fpga_is_fu
            elsif ((d_i = X"AA") and (rdy_i = '1')) then
2306 6 fpga_is_fu
               next_state <= s4;
2307 8 fpga_is_fu
            elsif ((d_i = X"0A") and (rdy_i = '1')) then
2308 6 fpga_is_fu
               next_state <= s404;
2309 8 fpga_is_fu
            elsif ((d_i = X"4A") and (rdy_i = '1')) then
2310 6 fpga_is_fu
               next_state <= s556;
2311 8 fpga_is_fu
            elsif ((d_i = X"2A") and (rdy_i = '1')) then
2312 6 fpga_is_fu
               next_state <= s557;
2313 8 fpga_is_fu
            elsif ((d_i = X"6A") and (rdy_i = '1')) then
2314 6 fpga_is_fu
               next_state <= s579;
2315 8 fpga_is_fu
            elsif ((d_i = X"A8") and (rdy_i = '1')) then
2316 6 fpga_is_fu
               next_state <= s4;
2317 8 fpga_is_fu
            elsif ((d_i = X"98") and (rdy_i = '1')) then
2318 6 fpga_is_fu
               next_state <= s4;
2319 8 fpga_is_fu
            elsif ((d_i = X"BA") and (rdy_i = '1')) then
2320 6 fpga_is_fu
               next_state <= s4;
2321 8 fpga_is_fu
            elsif ((d_i = X"8A") and (rdy_i = '1')) then
2322 6 fpga_is_fu
               next_state <= s4;
2323 8 fpga_is_fu
            elsif ((d_i = X"9A") and (rdy_i = '1')) then
2324 6 fpga_is_fu
               next_state <= s4;
2325 8 fpga_is_fu
            elsif (rdy_i = '1') then
2326 6 fpga_is_fu
               next_state <= s1;
2327 8 fpga_is_fu
            else
2328 6 fpga_is_fu
               next_state <= FETCH;
2329 8 fpga_is_fu
            end if;
2330
         when s1 =>
2331
            if (rdy_i = '1') then
2332 6 fpga_is_fu
               next_state <= FETCH;
2333 8 fpga_is_fu
            else
2334 6 fpga_is_fu
               next_state <= s1;
2335 8 fpga_is_fu
            end if;
2336
         when s2 =>
2337
            if (rdy_i = '1') then
2338 6 fpga_is_fu
               next_state <= FETCH;
2339 8 fpga_is_fu
            else
2340 6 fpga_is_fu
               next_state <= s2;
2341 8 fpga_is_fu
            end if;
2342
         when s5 =>
2343
            if (rdy_i = '1') then
2344 6 fpga_is_fu
               next_state <= FETCH;
2345 8 fpga_is_fu
            else
2346 6 fpga_is_fu
               next_state <= s5;
2347 8 fpga_is_fu
            end if;
2348
         when s3 =>
2349
            if (rdy_i = '1') then
2350 6 fpga_is_fu
               next_state <= FETCH;
2351 8 fpga_is_fu
            else
2352 6 fpga_is_fu
               next_state <= s3;
2353 8 fpga_is_fu
            end if;
2354
         when s4 =>
2355
            if (rdy_i = '1' and
2356
                zw_REG_OP = X"9A") then
2357 6 fpga_is_fu
               next_state <= FETCH;
2358 8 fpga_is_fu
            elsif (rdy_i = '1' and
2359
                   zw_REG_OP = X"BA") then
2360 6 fpga_is_fu
               next_state <= FETCH;
2361 8 fpga_is_fu
            elsif (rdy_i = '1') then
2362 6 fpga_is_fu
               next_state <= FETCH;
2363 8 fpga_is_fu
            else
2364 6 fpga_is_fu
               next_state <= s4;
2365 8 fpga_is_fu
            end if;
2366
         when s12 =>
2367
            if (rdy_i = '1') then
2368 6 fpga_is_fu
               next_state <= FETCH;
2369 8 fpga_is_fu
            else
2370 6 fpga_is_fu
               next_state <= s12;
2371 8 fpga_is_fu
            end if;
2372
         when s16 =>
2373
            if (rdy_i = '1') then
2374 6 fpga_is_fu
               next_state <= FETCH;
2375 8 fpga_is_fu
            else
2376 6 fpga_is_fu
               next_state <= s16;
2377 8 fpga_is_fu
            end if;
2378
         when s17 =>
2379
            if (rdy_i = '1') then
2380 6 fpga_is_fu
               next_state <= FETCH;
2381 8 fpga_is_fu
            else
2382 6 fpga_is_fu
               next_state <= s17;
2383 8 fpga_is_fu
            end if;
2384
         when s24 =>
2385
            if (rdy_i = '1') then
2386 6 fpga_is_fu
               next_state <= FETCH;
2387 8 fpga_is_fu
            else
2388 6 fpga_is_fu
               next_state <= s24;
2389 8 fpga_is_fu
            end if;
2390
         when s25 =>
2391
            if (rdy_i = '1') then
2392 6 fpga_is_fu
               next_state <= FETCH;
2393 8 fpga_is_fu
            else
2394 6 fpga_is_fu
               next_state <= s25;
2395 8 fpga_is_fu
            end if;
2396
         when s271 =>
2397
            if (rdy_i = '1' and
2398
                zw_REG_OP = X"4C") then
2399 6 fpga_is_fu
               next_state <= s307;
2400 8 fpga_is_fu
            elsif (rdy_i = '1' and
2401
                   zw_REG_OP = X"6C") then
2402 6 fpga_is_fu
               next_state <= s273;
2403 8 fpga_is_fu
            else
2404 6 fpga_is_fu
               next_state <= s271;
2405 8 fpga_is_fu
            end if;
2406
         when s273 =>
2407
            if (rdy_i = '1') then
2408 6 fpga_is_fu
               next_state <= s304;
2409 8 fpga_is_fu
            else
2410 6 fpga_is_fu
               next_state <= s273;
2411 8 fpga_is_fu
            end if;
2412
         when s304 =>
2413
            if (rdy_i = '1') then
2414 6 fpga_is_fu
               next_state <= s307;
2415 8 fpga_is_fu
            else
2416 6 fpga_is_fu
               next_state <= s304;
2417 8 fpga_is_fu
            end if;
2418
         when s307 =>
2419
            if (rdy_i = '1') then
2420 6 fpga_is_fu
               next_state <= FETCH;
2421 8 fpga_is_fu
            else
2422 6 fpga_is_fu
               next_state <= s307;
2423 8 fpga_is_fu
            end if;
2424
         when s177 =>
2425
            if (rdy_i = '1' and
2426 6 fpga_is_fu
                (zw_REG_OP = X"85" OR
2427
                zw_REG_OP = X"86" OR
2428 8 fpga_is_fu
                zw_REG_OP = X"84")) then
2429 6 fpga_is_fu
               next_state <= s184;
2430 8 fpga_is_fu
            elsif (rdy_i = '1' and
2431 6 fpga_is_fu
                   (zw_REG_OP = X"95" OR
2432 8 fpga_is_fu
                   zw_REG_OP = X"94")) then
2433 6 fpga_is_fu
               next_state <= s185;
2434 8 fpga_is_fu
            elsif (rdy_i = '1' and
2435 6 fpga_is_fu
                   (zw_REG_OP = X"8D" OR
2436
                   zw_REG_OP = X"8E" OR
2437 8 fpga_is_fu
                   zw_REG_OP = X"8C")) then
2438 6 fpga_is_fu
               next_state <= s183;
2439 8 fpga_is_fu
            elsif (rdy_i = '1' and
2440
                   zw_REG_OP = X"9D") then
2441 6 fpga_is_fu
               next_state <= s182;
2442 8 fpga_is_fu
            elsif (rdy_i = '1' and
2443
                   zw_REG_OP = X"99") then
2444 6 fpga_is_fu
               next_state <= s180;
2445 8 fpga_is_fu
            elsif (rdy_i = '1' and
2446
                   zw_REG_OP = X"91") then
2447 6 fpga_is_fu
               next_state <= s181;
2448 8 fpga_is_fu
            elsif (rdy_i = '1' and
2449
                   zw_REG_OP = X"81") then
2450 6 fpga_is_fu
               next_state <= s186;
2451 8 fpga_is_fu
            elsif (rdy_i = '1' and
2452
                   zw_REG_OP = X"96") then
2453 6 fpga_is_fu
               next_state <= s185;
2454 8 fpga_is_fu
            else
2455 6 fpga_is_fu
               next_state <= s177;
2456 8 fpga_is_fu
            end if;
2457
         when s180 =>
2458
            if (rdy_i = '1') then
2459 6 fpga_is_fu
               next_state <= s191;
2460 8 fpga_is_fu
            else
2461 6 fpga_is_fu
               next_state <= s180;
2462 8 fpga_is_fu
            end if;
2463
         when s181 =>
2464
            if (rdy_i = '1') then
2465 6 fpga_is_fu
               next_state <= s189;
2466 8 fpga_is_fu
            else
2467 6 fpga_is_fu
               next_state <= s181;
2468 8 fpga_is_fu
            end if;
2469
         when s182 =>
2470
            if (rdy_i = '1') then
2471 6 fpga_is_fu
               next_state <= s191;
2472 8 fpga_is_fu
            else
2473 6 fpga_is_fu
               next_state <= s182;
2474 8 fpga_is_fu
            end if;
2475
         when s183 =>
2476
            if (rdy_i = '1') then
2477 6 fpga_is_fu
               next_state <= s187;
2478 8 fpga_is_fu
            else
2479 6 fpga_is_fu
               next_state <= s183;
2480 8 fpga_is_fu
            end if;
2481
         when s184 =>
2482 6 fpga_is_fu
            next_state <= FETCH;
2483 8 fpga_is_fu
         when s185 =>
2484
            if (rdy_i = '1') then
2485 6 fpga_is_fu
               next_state <= s190;
2486 8 fpga_is_fu
            else
2487 6 fpga_is_fu
               next_state <= s185;
2488 8 fpga_is_fu
            end if;
2489
         when s186 =>
2490
            if (rdy_i = '1') then
2491 6 fpga_is_fu
               next_state <= s188;
2492 8 fpga_is_fu
            else
2493 6 fpga_is_fu
               next_state <= s186;
2494 8 fpga_is_fu
            end if;
2495
         when s187 =>
2496 6 fpga_is_fu
            next_state <= FETCH;
2497 8 fpga_is_fu
         when s188 =>
2498
            if (rdy_i = '1') then
2499 6 fpga_is_fu
               next_state <= s192;
2500 8 fpga_is_fu
            else
2501 6 fpga_is_fu
               next_state <= s188;
2502 8 fpga_is_fu
            end if;
2503
         when s189 =>
2504
            if (rdy_i = '1') then
2505 6 fpga_is_fu
               next_state <= s191;
2506 8 fpga_is_fu
            else
2507 6 fpga_is_fu
               next_state <= s189;
2508 8 fpga_is_fu
            end if;
2509
         when s190 =>
2510 6 fpga_is_fu
            next_state <= FETCH;
2511 8 fpga_is_fu
         when s191 =>
2512 6 fpga_is_fu
            next_state <= s193;
2513 8 fpga_is_fu
         when s192 =>
2514 6 fpga_is_fu
            next_state <= s193;
2515 8 fpga_is_fu
         when s193 =>
2516 6 fpga_is_fu
            next_state <= FETCH;
2517 8 fpga_is_fu
         when s377 =>
2518
            if (rdy_i = '1') then
2519 6 fpga_is_fu
               next_state <= s381;
2520 8 fpga_is_fu
            else
2521 6 fpga_is_fu
               next_state <= s377;
2522 8 fpga_is_fu
            end if;
2523
         when s381 =>
2524 6 fpga_is_fu
            next_state <= FETCH;
2525 8 fpga_is_fu
         when s378 =>
2526
            if (rdy_i = '1') then
2527 6 fpga_is_fu
               next_state <= s382;
2528 8 fpga_is_fu
            else
2529 6 fpga_is_fu
               next_state <= s378;
2530 8 fpga_is_fu
            end if;
2531
         when s382 =>
2532 6 fpga_is_fu
            next_state <= FETCH;
2533 8 fpga_is_fu
         when s379 =>
2534
            if (rdy_i = '1') then
2535 6 fpga_is_fu
               next_state <= s383;
2536 8 fpga_is_fu
            else
2537 6 fpga_is_fu
               next_state <= s379;
2538 8 fpga_is_fu
            end if;
2539
         when s383 =>
2540
            if (rdy_i = '1') then
2541 6 fpga_is_fu
               next_state <= s384;
2542 8 fpga_is_fu
            else
2543 6 fpga_is_fu
               next_state <= s383;
2544 8 fpga_is_fu
            end if;
2545
         when s384 =>
2546
            if (rdy_i = '1') then
2547 6 fpga_is_fu
               next_state <= FETCH;
2548 8 fpga_is_fu
            else
2549 6 fpga_is_fu
               next_state <= s384;
2550 8 fpga_is_fu
            end if;
2551
         when s380 =>
2552
            if (rdy_i = '1') then
2553 6 fpga_is_fu
               next_state <= s385;
2554 8 fpga_is_fu
            else
2555 6 fpga_is_fu
               next_state <= s380;
2556 8 fpga_is_fu
            end if;
2557
         when s385 =>
2558
            if (rdy_i = '1') then
2559 6 fpga_is_fu
               next_state <= s386;
2560 8 fpga_is_fu
            else
2561 6 fpga_is_fu
               next_state <= s385;
2562 8 fpga_is_fu
            end if;
2563
         when s386 =>
2564
            if (rdy_i = '1') then
2565 6 fpga_is_fu
               next_state <= FETCH;
2566 8 fpga_is_fu
            else
2567 6 fpga_is_fu
               next_state <= s386;
2568 8 fpga_is_fu
            end if;
2569
         when s387 =>
2570
            if (rdy_i = '1') then
2571 6 fpga_is_fu
               next_state <= s388;
2572 8 fpga_is_fu
            else
2573 6 fpga_is_fu
               next_state <= s387;
2574 8 fpga_is_fu
            end if;
2575
         when s388 =>
2576
            if (rdy_i = '1') then
2577 6 fpga_is_fu
               next_state <= s389;
2578 8 fpga_is_fu
            else
2579 6 fpga_is_fu
               next_state <= s388;
2580 8 fpga_is_fu
            end if;
2581
         when s389 =>
2582
            if (rdy_i = '1') then
2583 6 fpga_is_fu
               next_state <= s391;
2584 8 fpga_is_fu
            else
2585 6 fpga_is_fu
               next_state <= s389;
2586 8 fpga_is_fu
            end if;
2587
         when s391 =>
2588
            if (rdy_i = '1') then
2589 6 fpga_is_fu
               next_state <= s392;
2590 8 fpga_is_fu
            else
2591 6 fpga_is_fu
               next_state <= s391;
2592 8 fpga_is_fu
            end if;
2593
         when s392 =>
2594
            if (rdy_i = '1') then
2595 6 fpga_is_fu
               next_state <= FETCH;
2596 8 fpga_is_fu
            else
2597 6 fpga_is_fu
               next_state <= s392;
2598 8 fpga_is_fu
            end if;
2599
         when s390 =>
2600
            if (rdy_i = '1') then
2601 6 fpga_is_fu
               next_state <= s393;
2602 8 fpga_is_fu
            else
2603 6 fpga_is_fu
               next_state <= s390;
2604 8 fpga_is_fu
            end if;
2605
         when s393 =>
2606
            if (rdy_i = '1') then
2607 6 fpga_is_fu
               next_state <= s394;
2608 8 fpga_is_fu
            else
2609 6 fpga_is_fu
               next_state <= s393;
2610 8 fpga_is_fu
            end if;
2611
         when s394 =>
2612
            if (rdy_i = '1') then
2613 6 fpga_is_fu
               next_state <= s395;
2614 8 fpga_is_fu
            else
2615 6 fpga_is_fu
               next_state <= s394;
2616 8 fpga_is_fu
            end if;
2617
         when s395 =>
2618
            if (rdy_i = '1') then
2619 6 fpga_is_fu
               next_state <= s396;
2620 8 fpga_is_fu
            else
2621 6 fpga_is_fu
               next_state <= s395;
2622 8 fpga_is_fu
            end if;
2623
         when s396 =>
2624
            if (rdy_i = '1') then
2625 6 fpga_is_fu
               next_state <= FETCH;
2626 8 fpga_is_fu
            else
2627 6 fpga_is_fu
               next_state <= s396;
2628 8 fpga_is_fu
            end if;
2629
         when s397 =>
2630
            if (rdy_i = '1') then
2631 6 fpga_is_fu
               next_state <= s398;
2632 8 fpga_is_fu
            else
2633 6 fpga_is_fu
               next_state <= s397;
2634 8 fpga_is_fu
            end if;
2635
         when s398 =>
2636
            if (rdy_i = '1') then
2637 6 fpga_is_fu
               next_state <= s399;
2638 8 fpga_is_fu
            else
2639 6 fpga_is_fu
               next_state <= s398;
2640 8 fpga_is_fu
            end if;
2641
         when s399 =>
2642 6 fpga_is_fu
            next_state <= s400;
2643 8 fpga_is_fu
         when s400 =>
2644 6 fpga_is_fu
            next_state <= s401;
2645 8 fpga_is_fu
         when s401 =>
2646
            if (rdy_i = '1') then
2647 6 fpga_is_fu
               next_state <= FETCH;
2648 8 fpga_is_fu
            else
2649 6 fpga_is_fu
               next_state <= s401;
2650 8 fpga_is_fu
            end if;
2651
         when s526 =>
2652
            if (rdy_i = '1') then
2653 6 fpga_is_fu
               next_state <= s527;
2654 8 fpga_is_fu
            else
2655 6 fpga_is_fu
               next_state <= s526;
2656 8 fpga_is_fu
            end if;
2657
         when s527 =>
2658 6 fpga_is_fu
            next_state <= s528;
2659 8 fpga_is_fu
         when s528 =>
2660 6 fpga_is_fu
            next_state <= s529;
2661 8 fpga_is_fu
         when s529 =>
2662 6 fpga_is_fu
            next_state <= s531;
2663 8 fpga_is_fu
         when s530 =>
2664
            if (rdy_i = '1') then
2665 6 fpga_is_fu
               next_state <= FETCH;
2666 8 fpga_is_fu
            else
2667 6 fpga_is_fu
               next_state <= s530;
2668 8 fpga_is_fu
            end if;
2669
         when s531 =>
2670
            if (rdy_i = '1') then
2671 6 fpga_is_fu
               next_state <= s530;
2672 8 fpga_is_fu
            else
2673 6 fpga_is_fu
               next_state <= s531;
2674 8 fpga_is_fu
            end if;
2675
         when s544 =>
2676 6 fpga_is_fu
            next_state <= s550;
2677 8 fpga_is_fu
         when s545 =>
2678 6 fpga_is_fu
            next_state <= s546;
2679 8 fpga_is_fu
         when s546 =>
2680 6 fpga_is_fu
            next_state <= s547;
2681 8 fpga_is_fu
         when s547 =>
2682
            if (rdy_i = '1') then
2683 6 fpga_is_fu
               next_state <= s549;
2684 8 fpga_is_fu
            else
2685 6 fpga_is_fu
               next_state <= s547;
2686 8 fpga_is_fu
            end if;
2687
         when s549 =>
2688
            if (rdy_i = '1') then
2689 6 fpga_is_fu
               next_state <= FETCH;
2690 8 fpga_is_fu
            else
2691 6 fpga_is_fu
               next_state <= s549;
2692 8 fpga_is_fu
            end if;
2693
         when s550 =>
2694 6 fpga_is_fu
            next_state <= s545;
2695 8 fpga_is_fu
         when s404 =>
2696
            if (rdy_i = '1') then
2697 6 fpga_is_fu
               next_state <= FETCH;
2698 8 fpga_is_fu
            else
2699 6 fpga_is_fu
               next_state <= s404;
2700 8 fpga_is_fu
            end if;
2701
         when s556 =>
2702
            if (rdy_i = '1') then
2703 6 fpga_is_fu
               next_state <= FETCH;
2704 8 fpga_is_fu
            else
2705 6 fpga_is_fu
               next_state <= s556;
2706 8 fpga_is_fu
            end if;
2707
         when s557 =>
2708
            if (rdy_i = '1') then
2709 6 fpga_is_fu
               next_state <= FETCH;
2710 8 fpga_is_fu
            else
2711 6 fpga_is_fu
               next_state <= s557;
2712 8 fpga_is_fu
            end if;
2713
         when s579 =>
2714
            if (rdy_i = '1') then
2715 6 fpga_is_fu
               next_state <= FETCH;
2716 8 fpga_is_fu
            else
2717 6 fpga_is_fu
               next_state <= s579;
2718 8 fpga_is_fu
            end if;
2719
         when s201 =>
2720
            if (rdy_i = '1' and
2721 6 fpga_is_fu
                (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
2722
                zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
2723
                zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
2724 8 fpga_is_fu
                zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then
2725 6 fpga_is_fu
               next_state <= s224;
2726 8 fpga_is_fu
            elsif ((rdy_i = '1' and
2727 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2728 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2729 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2730
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2731 8 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
2732 6 fpga_is_fu
               next_state <= FETCH;
2733 8 fpga_is_fu
            elsif ((rdy_i = '1' and
2734 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2735 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2736 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2737
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2738 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
2739 6 fpga_is_fu
               next_state <= FETCH;
2740 8 fpga_is_fu
            elsif ((rdy_i = '1' and
2741 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2742 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2743 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2744
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2745 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
2746 6 fpga_is_fu
               next_state <= FETCH;
2747 8 fpga_is_fu
            elsif ((rdy_i = '1' and
2748 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2749 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2750 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2751
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2752
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2753
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2754
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2755 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
2756 6 fpga_is_fu
               next_state <= FETCH;
2757 8 fpga_is_fu
            elsif (rdy_i = '1' and
2758 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
2759 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then
2760 6 fpga_is_fu
               next_state <= FETCH;
2761 8 fpga_is_fu
            elsif (rdy_i = '1' and
2762 6 fpga_is_fu
                   (zw_REG_OP = X"B5" OR
2763
                   zw_REG_OP = X"B4" OR
2764
                   zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
2765
                   zw_REG_OP = X"35" OR
2766 8 fpga_is_fu
                   zw_REG_OP = X"D5")) then
2767 6 fpga_is_fu
               next_state <= s217;
2768 8 fpga_is_fu
            elsif (rdy_i = '1' and
2769 6 fpga_is_fu
                   (zw_REG_OP = X"AD" OR
2770
                   zw_REG_OP = X"AE" OR
2771
                   zw_REG_OP = X"AC" OR
2772
                   zw_REG_OP = X"4D" OR
2773
                   zw_REG_OP = X"0D" OR
2774
                   zw_REG_OP = X"2D" OR
2775
                   zw_REG_OP = X"CD" OR
2776
                   zw_REG_OP = X"EC" OR
2777 8 fpga_is_fu
                   zw_REG_OP = X"CC")) then
2778 6 fpga_is_fu
               next_state <= s202;
2779 8 fpga_is_fu
            elsif (rdy_i = '1' and
2780 6 fpga_is_fu
                   (zw_REG_OP = X"BD" OR
2781
                   zw_REG_OP = X"BC" OR
2782
                   zw_REG_OP = X"5D" OR
2783
                   zw_REG_OP = X"1D" OR
2784
                   zw_REG_OP = X"3D" OR
2785 8 fpga_is_fu
                   zw_REG_OP = X"DD")) then
2786 6 fpga_is_fu
               next_state <= s210;
2787 8 fpga_is_fu
            elsif (rdy_i = '1' and
2788 6 fpga_is_fu
                   (zw_REG_OP = X"B9" OR
2789
                   zw_REG_OP = X"BE" OR
2790
                   zw_REG_OP = X"59" OR
2791
                   zw_REG_OP = X"19" OR
2792
                   zw_REG_OP = X"39" OR
2793 8 fpga_is_fu
                   zw_REG_OP = X"D9")) then
2794 6 fpga_is_fu
               next_state <= s211;
2795 8 fpga_is_fu
            elsif (rdy_i = '1' and
2796 6 fpga_is_fu
                   (zw_REG_OP = X"B1" OR
2797
                   zw_REG_OP = X"51" OR
2798
                   zw_REG_OP = X"11" OR
2799
                   zw_REG_OP = X"31" OR
2800 8 fpga_is_fu
                   zw_REG_OP = X"D1")) then
2801 6 fpga_is_fu
               next_state <= s215;
2802 8 fpga_is_fu
            elsif (rdy_i = '1' and
2803 6 fpga_is_fu
                   (zw_REG_OP = X"A1" OR
2804
                   zw_REG_OP = X"41" OR
2805
                   zw_REG_OP = X"01" OR
2806
                   zw_REG_OP = X"21" OR
2807 8 fpga_is_fu
                   zw_REG_OP = X"C1")) then
2808 6 fpga_is_fu
               next_state <= s218;
2809 8 fpga_is_fu
            elsif (rdy_i = '1' and
2810
                   zw_REG_OP = X"B6") then
2811 6 fpga_is_fu
               next_state <= s217;
2812 8 fpga_is_fu
            else
2813 6 fpga_is_fu
               next_state <= s201;
2814 8 fpga_is_fu
            end if;
2815
         when s202 =>
2816
            if (rdy_i = '1') then
2817 6 fpga_is_fu
               next_state <= s224;
2818 8 fpga_is_fu
            else
2819 6 fpga_is_fu
               next_state <= s202;
2820 8 fpga_is_fu
            end if;
2821
         when s210 =>
2822
            if (rdy_i = '1') then
2823 6 fpga_is_fu
               next_state <= s225;
2824 8 fpga_is_fu
            else
2825 6 fpga_is_fu
               next_state <= s210;
2826 8 fpga_is_fu
            end if;
2827
         when s211 =>
2828
            if (rdy_i = '1') then
2829 6 fpga_is_fu
               next_state <= s225;
2830 8 fpga_is_fu
            else
2831 6 fpga_is_fu
               next_state <= s211;
2832 8 fpga_is_fu
            end if;
2833
         when s215 =>
2834
            if (rdy_i = '1') then
2835 6 fpga_is_fu
               next_state <= s223;
2836 8 fpga_is_fu
            else
2837 6 fpga_is_fu
               next_state <= s215;
2838 8 fpga_is_fu
            end if;
2839
         when s217 =>
2840
            if (rdy_i = '1') then
2841 6 fpga_is_fu
               next_state <= s224;
2842 8 fpga_is_fu
            else
2843 6 fpga_is_fu
               next_state <= s217;
2844 8 fpga_is_fu
            end if;
2845
         when s218 =>
2846
            if (rdy_i = '1') then
2847 6 fpga_is_fu
               next_state <= s222;
2848 8 fpga_is_fu
            else
2849 6 fpga_is_fu
               next_state <= s218;
2850 8 fpga_is_fu
            end if;
2851
         when s222 =>
2852
            if (rdy_i = '1') then
2853 6 fpga_is_fu
               next_state <= s202;
2854 8 fpga_is_fu
            else
2855 6 fpga_is_fu
               next_state <= s222;
2856 8 fpga_is_fu
            end if;
2857
         when s223 =>
2858
            if (rdy_i = '1') then
2859 6 fpga_is_fu
               next_state <= s225;
2860 8 fpga_is_fu
            else
2861 6 fpga_is_fu
               next_state <= s223;
2862 8 fpga_is_fu
            end if;
2863
         when s224 =>
2864
            if ((rdy_i = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2865 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2866
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2867 8 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
2868 6 fpga_is_fu
               next_state <= FETCH;
2869 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2870 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2871
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2872 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
2873 6 fpga_is_fu
               next_state <= FETCH;
2874 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2875 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2876
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2877 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
2878 6 fpga_is_fu
               next_state <= FETCH;
2879 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2880 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2881
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2882
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2883
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2884
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2885 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
2886 6 fpga_is_fu
               next_state <= FETCH;
2887 8 fpga_is_fu
            elsif (rdy_i = '1') then
2888 6 fpga_is_fu
               next_state <= FETCH;
2889 8 fpga_is_fu
            else
2890 6 fpga_is_fu
               next_state <= s224;
2891 8 fpga_is_fu
            end if;
2892
         when s225 =>
2893
            if ((rdy_i = '1' AND
2894
                zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
2895 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
2896
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
2897 8 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
2898 6 fpga_is_fu
               next_state <= FETCH;
2899 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
2900
                   zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
2901 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
2902
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
2903 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
2904 6 fpga_is_fu
               next_state <= FETCH;
2905 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
2906
                   zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
2907 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
2908
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
2909 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
2910 6 fpga_is_fu
               next_state <= FETCH;
2911 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
2912
                   zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
2913 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
2914
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
2915
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
2916
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
2917
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
2918 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
2919 6 fpga_is_fu
               next_state <= FETCH;
2920 8 fpga_is_fu
            elsif (rdy_i = '1' AND
2921
                   zw_b2(0) = '0') then
2922 6 fpga_is_fu
               next_state <= FETCH;
2923 8 fpga_is_fu
            elsif (rdy_i = '1') then
2924 6 fpga_is_fu
               next_state <= s224;
2925 8 fpga_is_fu
            else
2926 6 fpga_is_fu
               next_state <= s225;
2927 8 fpga_is_fu
            end if;
2928
         when s226 =>
2929
            if (rdy_i = '1' and
2930 6 fpga_is_fu
                (zw_REG_OP = X"C6" OR
2931 8 fpga_is_fu
                zw_REG_OP = X"E6")) then
2932 6 fpga_is_fu
               next_state <= s343;
2933 8 fpga_is_fu
            elsif (rdy_i = '1' and
2934 6 fpga_is_fu
                   (zw_REG_OP = X"D6" OR
2935 8 fpga_is_fu
                   zw_REG_OP = X"F6")) then
2936 6 fpga_is_fu
               next_state <= s247;
2937 8 fpga_is_fu
            elsif (rdy_i = '1' and
2938 6 fpga_is_fu
                   (zw_REG_OP = X"CE" OR
2939 8 fpga_is_fu
                   zw_REG_OP = X"EE")) then
2940 6 fpga_is_fu
               next_state <= s243;
2941 8 fpga_is_fu
            elsif (rdy_i = '1' and
2942 6 fpga_is_fu
                   (zw_REG_OP = X"DE" OR
2943 8 fpga_is_fu
                   zw_REG_OP = X"FE")) then
2944 6 fpga_is_fu
               next_state <= s244;
2945 8 fpga_is_fu
            else
2946 6 fpga_is_fu
               next_state <= s226;
2947 8 fpga_is_fu
            end if;
2948
         when s243 =>
2949
            if (rdy_i = '1') then
2950 6 fpga_is_fu
               next_state <= s343;
2951 8 fpga_is_fu
            else
2952 6 fpga_is_fu
               next_state <= s243;
2953 8 fpga_is_fu
            end if;
2954
         when s244 =>
2955
            if (rdy_i = '1') then
2956 6 fpga_is_fu
               next_state <= s344;
2957 8 fpga_is_fu
            else
2958 6 fpga_is_fu
               next_state <= s244;
2959 8 fpga_is_fu
            end if;
2960
         when s247 =>
2961
            if (rdy_i = '1') then
2962 6 fpga_is_fu
               next_state <= s343;
2963 8 fpga_is_fu
            else
2964 6 fpga_is_fu
               next_state <= s247;
2965 8 fpga_is_fu
            end if;
2966
         when s344 =>
2967
            if (rdy_i = '1') then
2968 6 fpga_is_fu
               next_state <= s343;
2969 8 fpga_is_fu
            else
2970 6 fpga_is_fu
               next_state <= s344;
2971 8 fpga_is_fu
            end if;
2972
         when s343 =>
2973
            if (rdy_i = '1') then
2974 6 fpga_is_fu
               next_state <= s250;
2975 8 fpga_is_fu
            else
2976 6 fpga_is_fu
               next_state <= s343;
2977 8 fpga_is_fu
            end if;
2978
         when s250 =>
2979
            if (rdy_i = '1') then
2980 6 fpga_is_fu
               next_state <= s251;
2981 8 fpga_is_fu
            else
2982 6 fpga_is_fu
               next_state <= s250;
2983 8 fpga_is_fu
            end if;
2984
         when s251 =>
2985 6 fpga_is_fu
            next_state <= FETCH;
2986 8 fpga_is_fu
         when s351 =>
2987
            if (rdy_i = '1' and
2988
                zw_REG_OP = X"24") then
2989 6 fpga_is_fu
               next_state <= s361;
2990 8 fpga_is_fu
            elsif (rdy_i = '1' and
2991
                   zw_REG_OP = X"2C") then
2992 6 fpga_is_fu
               next_state <= s360;
2993 8 fpga_is_fu
            else
2994 6 fpga_is_fu
               next_state <= s351;
2995 8 fpga_is_fu
            end if;
2996
         when s361 =>
2997
            if (rdy_i = '1') then
2998 6 fpga_is_fu
               next_state <= FETCH;
2999 8 fpga_is_fu
            else
3000 6 fpga_is_fu
               next_state <= s361;
3001 8 fpga_is_fu
            end if;
3002
         when s360 =>
3003
            if (rdy_i = '1') then
3004 6 fpga_is_fu
               next_state <= s361;
3005 8 fpga_is_fu
            else
3006 6 fpga_is_fu
               next_state <= s360;
3007 8 fpga_is_fu
            end if;
3008
         when s403 =>
3009
            if (rdy_i = '1' and
3010 6 fpga_is_fu
                (zw_REG_OP = X"1E" or
3011
                zw_REG_OP = X"7E" or
3012
                zw_REG_OP = X"3E" or
3013 8 fpga_is_fu
                zw_REG_OP = X"5E")) then
3014 6 fpga_is_fu
               next_state <= s407;
3015 8 fpga_is_fu
            elsif (rdy_i = '1' and
3016 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
3017
                   zw_REG_OP = X"66" or
3018
                   zw_REG_OP = X"26" or
3019 8 fpga_is_fu
                   zw_REG_OP = X"46")) then
3020 6 fpga_is_fu
               next_state <= s413;
3021 8 fpga_is_fu
            elsif (rdy_i = '1' and
3022 6 fpga_is_fu
                   (zw_REG_OP = X"16" or
3023
                   zw_REG_OP = X"76" or
3024
                   zw_REG_OP = X"36" or
3025 8 fpga_is_fu
                   zw_REG_OP = X"56")) then
3026 6 fpga_is_fu
               next_state <= s409;
3027 8 fpga_is_fu
            elsif (rdy_i = '1' and
3028 6 fpga_is_fu
                   (zw_REG_OP = X"0E" or
3029
                   zw_REG_OP = X"6E" or
3030
                   zw_REG_OP = X"2E" or
3031 8 fpga_is_fu
                   zw_REG_OP = X"4E")) then
3032 6 fpga_is_fu
               next_state <= s406;
3033 8 fpga_is_fu
            else
3034 6 fpga_is_fu
               next_state <= s403;
3035 8 fpga_is_fu
            end if;
3036
         when s406 =>
3037
            if (rdy_i = '1') then
3038 6 fpga_is_fu
               next_state <= s413;
3039 8 fpga_is_fu
            else
3040 6 fpga_is_fu
               next_state <= s406;
3041 8 fpga_is_fu
            end if;
3042
         when s407 =>
3043
            if (rdy_i = '1') then
3044 6 fpga_is_fu
               next_state <= s412;
3045 8 fpga_is_fu
            else
3046 6 fpga_is_fu
               next_state <= s407;
3047 8 fpga_is_fu
            end if;
3048
         when s409 =>
3049
            if (rdy_i = '1') then
3050 6 fpga_is_fu
               next_state <= s413;
3051 8 fpga_is_fu
            else
3052 6 fpga_is_fu
               next_state <= s409;
3053 8 fpga_is_fu
            end if;
3054
         when s412 =>
3055
            if (rdy_i = '1') then
3056 6 fpga_is_fu
               next_state <= s413;
3057 8 fpga_is_fu
            else
3058 6 fpga_is_fu
               next_state <= s412;
3059 8 fpga_is_fu
            end if;
3060
         when s413 =>
3061
            if (rdy_i = '1') then
3062 6 fpga_is_fu
               next_state <= s416;
3063 8 fpga_is_fu
            else
3064 6 fpga_is_fu
               next_state <= s413;
3065 8 fpga_is_fu
            end if;
3066
         when s416 =>
3067
            if (rdy_i = '1' and
3068 6 fpga_is_fu
                (zw_REG_OP = X"06" or
3069
                zw_REG_OP = X"16" or
3070
                zw_REG_OP = X"0E" or
3071 8 fpga_is_fu
                zw_REG_OP = X"1E")) then
3072 6 fpga_is_fu
               next_state <= s418;
3073 8 fpga_is_fu
            elsif (rdy_i = '1' and
3074 6 fpga_is_fu
                   (zw_REG_OP = X"46" or
3075
                   zw_REG_OP = X"56" or
3076
                   zw_REG_OP = X"4E" or
3077 8 fpga_is_fu
                   zw_REG_OP = X"5E")) then
3078 6 fpga_is_fu
               next_state <= s418;
3079 8 fpga_is_fu
            elsif (rdy_i = '1' and
3080 6 fpga_is_fu
                   (zw_REG_OP = X"26" or
3081
                   zw_REG_OP = X"36" or
3082
                   zw_REG_OP = X"2E" or
3083 8 fpga_is_fu
                   zw_REG_OP = X"3E")) then
3084 6 fpga_is_fu
               next_state <= s418;
3085 8 fpga_is_fu
            elsif (rdy_i = '1' and
3086 6 fpga_is_fu
                   (zw_REG_OP = X"66" or
3087
                   zw_REG_OP = X"76" or
3088
                   zw_REG_OP = X"6E" or
3089 8 fpga_is_fu
                   zw_REG_OP = X"7E")) then
3090 6 fpga_is_fu
               next_state <= s418;
3091 8 fpga_is_fu
            else
3092 6 fpga_is_fu
               next_state <= s416;
3093 8 fpga_is_fu
            end if;
3094
         when s418 =>
3095 6 fpga_is_fu
            next_state <= FETCH;
3096 8 fpga_is_fu
         when s510 =>
3097
            if (rdy_i = '1' and
3098
                zw_REG_OP = X"65") then
3099 6 fpga_is_fu
               next_state <= s565;
3100 8 fpga_is_fu
            elsif (rdy_i = '1' and
3101 6 fpga_is_fu
                   zw_REG_OP = X"69" and
3102 8 fpga_is_fu
                   reg_F(3) = '0') then
3103 6 fpga_is_fu
               next_state <= FETCH;
3104 8 fpga_is_fu
            elsif (rdy_i = '1' and
3105
                   zw_REG_OP = X"75") then
3106 6 fpga_is_fu
               next_state <= s560;
3107 8 fpga_is_fu
            elsif (rdy_i = '1' and
3108
                   zw_REG_OP = X"6D") then
3109 6 fpga_is_fu
               next_state <= s553;
3110 8 fpga_is_fu
            elsif (rdy_i = '1' and
3111
                   zw_REG_OP = X"7D") then
3112 6 fpga_is_fu
               next_state <= s555;
3113 8 fpga_is_fu
            elsif (rdy_i = '1' and
3114
                   zw_REG_OP = X"79") then
3115 6 fpga_is_fu
               next_state <= s555;
3116 8 fpga_is_fu
            elsif (rdy_i = '1' and
3117
                   zw_REG_OP = X"71") then
3118 6 fpga_is_fu
               next_state <= s558;
3119 8 fpga_is_fu
            elsif (rdy_i = '1' and
3120
                   zw_REG_OP = X"61") then
3121 6 fpga_is_fu
               next_state <= s561;
3122 8 fpga_is_fu
            elsif (rdy_i = '1' and
3123 6 fpga_is_fu
                   zw_REG_OP = X"69" and
3124 8 fpga_is_fu
                   reg_F(3) = '1') then
3125 6 fpga_is_fu
               next_state <= FETCH;
3126 8 fpga_is_fu
            else
3127 6 fpga_is_fu
               next_state <= s510;
3128 8 fpga_is_fu
            end if;
3129
         when s553 =>
3130
            if (rdy_i = '1') then
3131 6 fpga_is_fu
               next_state <= s565;
3132 8 fpga_is_fu
            else
3133 6 fpga_is_fu
               next_state <= s553;
3134 8 fpga_is_fu
            end if;
3135
         when s555 =>
3136
            if (rdy_i = '1') then
3137 6 fpga_is_fu
               next_state <= s564;
3138 8 fpga_is_fu
            else
3139 6 fpga_is_fu
               next_state <= s555;
3140 8 fpga_is_fu
            end if;
3141
         when s558 =>
3142
            if (rdy_i = '1') then
3143 6 fpga_is_fu
               next_state <= s566;
3144 8 fpga_is_fu
            else
3145 6 fpga_is_fu
               next_state <= s558;
3146 8 fpga_is_fu
            end if;
3147
         when s560 =>
3148
            if (rdy_i = '1') then
3149 6 fpga_is_fu
               next_state <= s565;
3150 8 fpga_is_fu
            else
3151 6 fpga_is_fu
               next_state <= s560;
3152 8 fpga_is_fu
            end if;
3153
         when s561 =>
3154
            if (rdy_i = '1') then
3155 6 fpga_is_fu
               next_state <= s563;
3156 8 fpga_is_fu
            else
3157 6 fpga_is_fu
               next_state <= s561;
3158 8 fpga_is_fu
            end if;
3159
         when s563 =>
3160
            if (rdy_i = '1') then
3161 6 fpga_is_fu
               next_state <= s553;
3162 8 fpga_is_fu
            else
3163 6 fpga_is_fu
               next_state <= s563;
3164 8 fpga_is_fu
            end if;
3165
         when s564 =>
3166
            if (rdy_i = '1' AND
3167 6 fpga_is_fu
                zw_b2(0) = '0' and
3168 8 fpga_is_fu
                reg_F(3) = '0') then
3169 6 fpga_is_fu
               next_state <= FETCH;
3170 8 fpga_is_fu
            elsif (rdy_i = '1' AND
3171 6 fpga_is_fu
                   zw_b2(0) = '0' and
3172 8 fpga_is_fu
                   reg_F(3) = '1') then
3173 6 fpga_is_fu
               next_state <= FETCH;
3174 8 fpga_is_fu
            elsif (rdy_i = '1') then
3175 6 fpga_is_fu
               next_state <= s565;
3176 8 fpga_is_fu
            else
3177 6 fpga_is_fu
               next_state <= s564;
3178 8 fpga_is_fu
            end if;
3179
         when s565 =>
3180
            if (rdy_i = '1' and
3181
                reg_F(3) = '0') then
3182 6 fpga_is_fu
               next_state <= FETCH;
3183 8 fpga_is_fu
            elsif (rdy_i = '1' and
3184
                   reg_F(3) = '1') then
3185 6 fpga_is_fu
               next_state <= FETCH;
3186 8 fpga_is_fu
            else
3187 6 fpga_is_fu
               next_state <= s565;
3188 8 fpga_is_fu
            end if;
3189
         when s566 =>
3190
            if (rdy_i = '1') then
3191 6 fpga_is_fu
               next_state <= s564;
3192 8 fpga_is_fu
            else
3193 6 fpga_is_fu
               next_state <= s566;
3194 8 fpga_is_fu
            end if;
3195
         when s266 =>
3196
            if (rdy_i = '1' and (
3197 6 fpga_is_fu
                (reg_F(0) = '1' and zw_REG_OP = X"90") or
3198
                (reg_F(0) = '0' and zw_REG_OP = X"B0") or
3199
                (reg_F(1) = '0' and zw_REG_OP = X"F0") or
3200
                (reg_F(7) = '0' and zw_REG_OP = X"30") or
3201
                (reg_F(1) = '1' and zw_REG_OP = X"D0") or
3202
                (reg_F(7) = '1' and zw_REG_OP = X"10") or
3203
                (reg_F(6) = '1' and zw_REG_OP = X"50") or
3204 8 fpga_is_fu
                (reg_F(6) = '0' and zw_REG_OP = X"70"))) then
3205 6 fpga_is_fu
               next_state <= FETCH;
3206 8 fpga_is_fu
            elsif (rdy_i = '1') then
3207 6 fpga_is_fu
               next_state <= s301;
3208 8 fpga_is_fu
            else
3209 6 fpga_is_fu
               next_state <= s266;
3210 8 fpga_is_fu
            end if;
3211
         when s301 =>
3212
            if (rdy_i = '1' and
3213
                zw_b3 = adr_nxt_pc_i (15 downto 8)) then
3214 6 fpga_is_fu
               next_state <= FETCH;
3215 8 fpga_is_fu
            elsif (rdy_i = '1') then
3216 6 fpga_is_fu
               next_state <= s302;
3217 8 fpga_is_fu
            else
3218 6 fpga_is_fu
               next_state <= s301;
3219 8 fpga_is_fu
            end if;
3220
         when s302 =>
3221
            if (rdy_i = '1') then
3222 6 fpga_is_fu
               next_state <= FETCH;
3223 8 fpga_is_fu
            else
3224 6 fpga_is_fu
               next_state <= s302;
3225 8 fpga_is_fu
            end if;
3226
         when RES =>
3227 6 fpga_is_fu
            next_state <= s544;
3228 8 fpga_is_fu
         when s511 =>
3229
            if (rdy_i = '1' and
3230
                zw_REG_OP = X"E5") then
3231 6 fpga_is_fu
               next_state <= s574;
3232 8 fpga_is_fu
            elsif (rdy_i = '1' and
3233 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
3234 8 fpga_is_fu
                   reg_F(3) = '0') then
3235 6 fpga_is_fu
               next_state <= FETCH;
3236 8 fpga_is_fu
            elsif (rdy_i = '1' and
3237
                   zw_REG_OP = X"F5") then
3238 6 fpga_is_fu
               next_state <= s569;
3239 8 fpga_is_fu
            elsif (rdy_i = '1' and
3240
                   zw_REG_OP = X"ED") then
3241 6 fpga_is_fu
               next_state <= s559;
3242 8 fpga_is_fu
            elsif (rdy_i = '1' and
3243
                   zw_REG_OP = X"FD") then
3244 6 fpga_is_fu
               next_state <= s562;
3245 8 fpga_is_fu
            elsif (rdy_i = '1' and
3246
                   zw_REG_OP = X"F9") then
3247 6 fpga_is_fu
               next_state <= s567;
3248 8 fpga_is_fu
            elsif (rdy_i = '1' and
3249
                   zw_REG_OP = X"F1") then
3250 6 fpga_is_fu
               next_state <= s568;
3251 8 fpga_is_fu
            elsif (rdy_i = '1' and
3252
                   zw_REG_OP = X"E1") then
3253 6 fpga_is_fu
               next_state <= s570;
3254 8 fpga_is_fu
            elsif (rdy_i = '1' and
3255 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
3256 8 fpga_is_fu
                   reg_F(3) = '1') then
3257 6 fpga_is_fu
               next_state <= FETCH;
3258 8 fpga_is_fu
            else
3259 6 fpga_is_fu
               next_state <= s511;
3260 8 fpga_is_fu
            end if;
3261
         when s559 =>
3262
            if (rdy_i = '1') then
3263 6 fpga_is_fu
               next_state <= s574;
3264 8 fpga_is_fu
            else
3265 6 fpga_is_fu
               next_state <= s559;
3266 8 fpga_is_fu
            end if;
3267
         when s562 =>
3268
            if (rdy_i = '1') then
3269 6 fpga_is_fu
               next_state <= s573;
3270 8 fpga_is_fu
            else
3271 6 fpga_is_fu
               next_state <= s562;
3272 8 fpga_is_fu
            end if;
3273
         when s567 =>
3274
            if (rdy_i = '1') then
3275 6 fpga_is_fu
               next_state <= s573;
3276 8 fpga_is_fu
            else
3277 6 fpga_is_fu
               next_state <= s567;
3278 8 fpga_is_fu
            end if;
3279
         when s568 =>
3280
            if (rdy_i = '1') then
3281 6 fpga_is_fu
               next_state <= s571;
3282 8 fpga_is_fu
            else
3283 6 fpga_is_fu
               next_state <= s568;
3284 8 fpga_is_fu
            end if;
3285
         when s569 =>
3286
            if (rdy_i = '1') then
3287 6 fpga_is_fu
               next_state <= s574;
3288 8 fpga_is_fu
            else
3289 6 fpga_is_fu
               next_state <= s569;
3290 8 fpga_is_fu
            end if;
3291
         when s570 =>
3292
            if (rdy_i = '1') then
3293 6 fpga_is_fu
               next_state <= s572;
3294 8 fpga_is_fu
            else
3295 6 fpga_is_fu
               next_state <= s570;
3296 8 fpga_is_fu
            end if;
3297
         when s571 =>
3298
            if (rdy_i = '1') then
3299 6 fpga_is_fu
               next_state <= s573;
3300 8 fpga_is_fu
            else
3301 6 fpga_is_fu
               next_state <= s571;
3302 8 fpga_is_fu
            end if;
3303
         when s572 =>
3304
            if (rdy_i = '1') then
3305 6 fpga_is_fu
               next_state <= s559;
3306 8 fpga_is_fu
            else
3307 6 fpga_is_fu
               next_state <= s572;
3308 8 fpga_is_fu
            end if;
3309
         when s573 =>
3310
            if (rdy_i = '1' AND
3311 6 fpga_is_fu
                zw_b2(0) = '0' and
3312 8 fpga_is_fu
                reg_F(3) = '0') then
3313 6 fpga_is_fu
               next_state <= FETCH;
3314 8 fpga_is_fu
            elsif (rdy_i = '1' AND
3315 6 fpga_is_fu
                   zw_b2(0) = '0' and
3316 8 fpga_is_fu
                   reg_F(3) = '1') then
3317 6 fpga_is_fu
               next_state <= FETCH;
3318 8 fpga_is_fu
            elsif (rdy_i = '1') then
3319 6 fpga_is_fu
               next_state <= s574;
3320 8 fpga_is_fu
            else
3321 6 fpga_is_fu
               next_state <= s573;
3322 8 fpga_is_fu
            end if;
3323
         when s574 =>
3324
            if (rdy_i = '1' and
3325
                reg_F(3) = '0') then
3326 6 fpga_is_fu
               next_state <= FETCH;
3327 8 fpga_is_fu
            elsif (rdy_i = '1' and
3328
                   reg_F(3) = '1') then
3329 6 fpga_is_fu
               next_state <= FETCH;
3330 8 fpga_is_fu
            else
3331 6 fpga_is_fu
               next_state <= s574;
3332 8 fpga_is_fu
            end if;
3333
         when s548 =>
3334
            if (rdy_i = '1') then
3335 6 fpga_is_fu
               next_state <= s551;
3336 8 fpga_is_fu
            else
3337 6 fpga_is_fu
               next_state <= s548;
3338 8 fpga_is_fu
            end if;
3339
         when s551 =>
3340 6 fpga_is_fu
            next_state <= s552;
3341 8 fpga_is_fu
         when s552 =>
3342 6 fpga_is_fu
            next_state <= s576;
3343 8 fpga_is_fu
         when s575 =>
3344
            if (rdy_i = '1') then
3345 6 fpga_is_fu
               next_state <= s577;
3346 8 fpga_is_fu
            else
3347 6 fpga_is_fu
               next_state <= s575;
3348 8 fpga_is_fu
            end if;
3349
         when s576 =>
3350 6 fpga_is_fu
            next_state <= s575;
3351 8 fpga_is_fu
         when s577 =>
3352
            if (rdy_i = '1') then
3353 6 fpga_is_fu
               next_state <= FETCH;
3354 8 fpga_is_fu
            else
3355 6 fpga_is_fu
               next_state <= s577;
3356 8 fpga_is_fu
            end if;
3357
         when s532 =>
3358
            if (rdy_i = '1') then
3359 6 fpga_is_fu
               next_state <= s533;
3360 8 fpga_is_fu
            else
3361 6 fpga_is_fu
               next_state <= s532;
3362 8 fpga_is_fu
            end if;
3363
         when s533 =>
3364 6 fpga_is_fu
            next_state <= s534;
3365 8 fpga_is_fu
         when s534 =>
3366 6 fpga_is_fu
            next_state <= s536;
3367 8 fpga_is_fu
         when s535 =>
3368
            if (rdy_i = '1') then
3369 6 fpga_is_fu
               next_state <= s537;
3370 8 fpga_is_fu
            else
3371 6 fpga_is_fu
               next_state <= s535;
3372 8 fpga_is_fu
            end if;
3373
         when s536 =>
3374 6 fpga_is_fu
            next_state <= s535;
3375 8 fpga_is_fu
         when s537 =>
3376
            if (rdy_i = '1') then
3377 6 fpga_is_fu
               next_state <= FETCH;
3378 8 fpga_is_fu
            else
3379 6 fpga_is_fu
               next_state <= s537;
3380 8 fpga_is_fu
            end if;
3381
         when others =>
3382 6 fpga_is_fu
            next_state <= RES;
3383 8 fpga_is_fu
      end case;
3384
   end process nextstate_proc;
3385 6 fpga_is_fu
 
3386
   -----------------------------------------------------------------
3387 8 fpga_is_fu
   output_proc : process (
3388 6 fpga_is_fu
      adr_nxt_pc_i,
3389
      adr_pc_i,
3390
      adr_sp_i,
3391
      current_state,
3392
      d_alu_i,
3393
      d_i,
3394
      d_regs_out_i,
3395
      irq_n_i,
3396
      nmi_i,
3397
      q_a_i,
3398
      q_x_i,
3399
      q_y_i,
3400
      rdy_i,
3401
      reg_F,
3402
      reg_sel_pc_as,
3403
      reg_sel_pc_in,
3404
      reg_sel_pc_val,
3405
      reg_sel_rb_in,
3406
      reg_sel_rb_out,
3407
      reg_sel_reg,
3408
      reg_sel_sp_as,
3409
      reg_sel_sp_in,
3410
      sig_PC,
3411
      zw_ALU,
3412
      zw_ALU1,
3413
      zw_ALU2,
3414
      zw_ALU3,
3415
      zw_ALU4,
3416
      zw_ALU5,
3417
      zw_ALU6,
3418
      zw_REG_OP,
3419
      zw_b1,
3420
      zw_b2,
3421
      zw_b3,
3422
      zw_b4,
3423
      zw_w1
3424
   )
3425
   -----------------------------------------------------------------
3426 8 fpga_is_fu
   begin
3427 6 fpga_is_fu
      -- Default Assignment
3428
      a_o <= sig_PC;
3429
      adr_o <= X"0000";
3430
      ch_a_o <= X"00";
3431
      ch_b_o <= X"00";
3432
      d_regs_in_o <= X"00";
3433
      fetch_o <= '0';
3434
      ld_o <= "00";
3435
      ld_pc_o <= '0';
3436
      ld_sp_o <= '0';
3437
      load_regs_o <= '0';
3438
      offset_o <= X"0000";
3439
      sel_pc_as_o <= reg_sel_pc_as;
3440
      sel_pc_in_o <= reg_sel_pc_in;
3441
      sel_pc_val_o <= reg_sel_pc_val;
3442
      sel_rb_in_o <= reg_sel_rb_in;
3443
      sel_rb_out_o <= reg_sel_rb_out;
3444
      sel_reg_o <= reg_sel_reg;
3445
      sel_sp_as_o <= reg_sel_sp_as;
3446
      sel_sp_in_o <= reg_sel_sp_in;
3447
      -- Default Assignment To Internals
3448
      sig_D_OUT <= X"00";
3449
      sig_RD <= '1';
3450
      sig_RWn <= '1';
3451
      sig_SYNC <= '0';
3452
      sig_WR <= '0';
3453
      zw_ALU <= '0' & X"00";
3454
      zw_ALU1 <= '0' & X"00";
3455
      zw_ALU2 <= '0' & X"00";
3456
      zw_ALU3 <= '0' & X"00";
3457
      zw_ALU4 <= '0' & X"00";
3458
      zw_ALU5 <= '0' & X"00";
3459
      zw_ALU6 <= '0' & X"00";
3460
 
3461
      -- Combined Actions
3462 8 fpga_is_fu
      case current_state is
3463
         when FETCH =>
3464 6 fpga_is_fu
            sig_RWn <= '1';
3465
            sig_RD <= '1';
3466
            sig_SYNC <= NOT (rdy_i);
3467 8 fpga_is_fu
            if ((nmi_i = '1') and (rdy_i = '1')) then
3468 6 fpga_is_fu
               ld_o <= "11";
3469
               ld_pc_o <= '1';
3470 8 fpga_is_fu
            elsif ((irq_n_i = '0' and
3471
                   reg_F(2) = '0') and (rdy_i = '1')) then
3472 6 fpga_is_fu
               ld_o <= "11";
3473
               ld_pc_o <= '1';
3474 8 fpga_is_fu
            elsif ((d_i = X"69" or
3475 6 fpga_is_fu
                   d_i = X"65" or
3476
                   d_i = X"75" or
3477
                   d_i = X"6D" or
3478
                   d_i = X"7D" or
3479
                   d_i = X"79" or
3480
                   d_i = X"61" or
3481 8 fpga_is_fu
                   d_i = X"71") and (rdy_i = '1')) then
3482 6 fpga_is_fu
               ld_o <= "11";
3483
               ld_pc_o <= '1';
3484 8 fpga_is_fu
            elsif ((d_i = X"06" or
3485 6 fpga_is_fu
                   d_i = X"16" or
3486
                   d_i = X"0E" or
3487 8 fpga_is_fu
                   d_i = X"1E") and (rdy_i = '1')) then
3488 6 fpga_is_fu
               ld_o <= "11";
3489
               ld_pc_o <= '1';
3490 8 fpga_is_fu
            elsif ((d_i = X"90" or
3491 6 fpga_is_fu
                   d_i = X"B0" or
3492
                   d_i = X"F0" or
3493
                   d_i = X"30" or
3494
                   d_i = X"D0" or
3495
                   d_i = X"10" or
3496
                   d_i = X"50" or
3497 8 fpga_is_fu
                   d_i = X"70") and (rdy_i = '1')) then
3498 6 fpga_is_fu
               ld_o <= "11";
3499
               ld_pc_o <= '1';
3500 8 fpga_is_fu
            elsif ((d_i = X"24" or
3501
                   d_i = X"2C") and (rdy_i = '1')) then
3502 6 fpga_is_fu
               ld_o <= "11";
3503
               ld_pc_o <= '1';
3504 8 fpga_is_fu
            elsif ((d_i = X"00") and (rdy_i = '1')) then
3505 6 fpga_is_fu
               ld_o <= "11";
3506
               ld_pc_o <= '1';
3507 8 fpga_is_fu
            elsif ((d_i = X"18") and (rdy_i = '1')) then
3508 6 fpga_is_fu
               ld_o <= "11";
3509
               ld_pc_o <= '1';
3510 8 fpga_is_fu
            elsif ((d_i = X"D8") and (rdy_i = '1')) then
3511 6 fpga_is_fu
               ld_o <= "11";
3512
               ld_pc_o <= '1';
3513 8 fpga_is_fu
            elsif ((d_i = X"58") and (rdy_i = '1')) then
3514 6 fpga_is_fu
               ld_o <= "11";
3515
               ld_pc_o <= '1';
3516 8 fpga_is_fu
            elsif ((d_i = X"B8") and (rdy_i = '1')) then
3517 6 fpga_is_fu
               ld_o <= "11";
3518
               ld_pc_o <= '1';
3519 8 fpga_is_fu
            elsif ((d_i = X"E0" or
3520 6 fpga_is_fu
                   d_i = X"E4" or
3521 8 fpga_is_fu
                   d_i = X"EC") and (rdy_i = '1')) then
3522 6 fpga_is_fu
               ld_o <= "11";
3523
               ld_pc_o <= '1';
3524 8 fpga_is_fu
            elsif ((d_i = X"C0" or
3525 6 fpga_is_fu
                   d_i = X"C4" or
3526 8 fpga_is_fu
                   d_i = X"CC") and (rdy_i = '1')) then
3527 6 fpga_is_fu
               ld_o <= "11";
3528
               ld_pc_o <= '1';
3529 8 fpga_is_fu
            elsif ((d_i = X"C6" or
3530 6 fpga_is_fu
                   d_i = X"D6" or
3531
                   d_i = X"CE" or
3532 8 fpga_is_fu
                   d_i = X"DE") and (rdy_i = '1')) then
3533 6 fpga_is_fu
               ld_o <= "11";
3534
               ld_pc_o <= '1';
3535 8 fpga_is_fu
            elsif ((d_i = X"CA") and (rdy_i = '1')) then
3536 6 fpga_is_fu
               ld_o <= "11";
3537
               ld_pc_o <= '1';
3538 8 fpga_is_fu
            elsif ((d_i = X"88") and (rdy_i = '1')) then
3539 6 fpga_is_fu
               ld_o <= "11";
3540
               ld_pc_o <= '1';
3541 8 fpga_is_fu
            elsif ((d_i = X"49" or
3542 6 fpga_is_fu
                   d_i = X"45" or
3543
                   d_i = X"55" or
3544
                   d_i = X"4D" or
3545
                   d_i = X"5D" or
3546
                   d_i = X"59" or
3547
                   d_i = X"41" or
3548
                   d_i = X"51" or
3549
                   d_i = X"09" or
3550
                   d_i = X"05" or
3551
                   d_i = X"15" or
3552
                   d_i = X"0D" or
3553
                   d_i = X"1D" or
3554
                   d_i = X"19" or
3555
                   d_i = X"01" or
3556
                   d_i = X"11" or
3557
                   d_i = X"29" or
3558
                   d_i = X"25" or
3559
                   d_i = X"35" or
3560
                   d_i = X"2D" or
3561
                   d_i = X"3D" or
3562
                   d_i = X"39" or
3563
                   d_i = X"21" or
3564
                   d_i = X"31" or
3565
                   d_i = X"C9" or
3566
                   d_i = X"C5" or
3567
                   d_i = X"D5" or
3568
                   d_i = X"CD" or
3569
                   d_i = X"DD" or
3570
                   d_i = X"D9" or
3571
                   d_i = X"C1" or
3572 8 fpga_is_fu
                   d_i = X"D1") and (rdy_i = '1')) then
3573 6 fpga_is_fu
               ld_o <= "11";
3574
               ld_pc_o <= '1';
3575 8 fpga_is_fu
            elsif ((d_i = X"E6" or
3576 6 fpga_is_fu
                   d_i = X"F6" or
3577
                   d_i = X"EE" or
3578 8 fpga_is_fu
                   d_i = X"FE") and (rdy_i = '1')) then
3579 6 fpga_is_fu
               ld_o <= "11";
3580
               ld_pc_o <= '1';
3581 8 fpga_is_fu
            elsif ((d_i = X"E8") and (rdy_i = '1')) then
3582 6 fpga_is_fu
               ld_o <= "11";
3583
               ld_pc_o <= '1';
3584 8 fpga_is_fu
            elsif ((d_i = X"C8") and (rdy_i = '1')) then
3585 6 fpga_is_fu
               ld_o <= "11";
3586
               ld_pc_o <= '1';
3587 8 fpga_is_fu
            elsif ((d_i = X"4C" or
3588
                   d_i = X"6C") and (rdy_i = '1')) then
3589 6 fpga_is_fu
               ld_o <= "11";
3590
               ld_pc_o <= '1';
3591 8 fpga_is_fu
            elsif ((d_i = X"20") and (rdy_i = '1')) then
3592 6 fpga_is_fu
               ld_o <= "11";
3593
               ld_pc_o <= '1';
3594 8 fpga_is_fu
            elsif ((d_i = X"A9" or
3595 6 fpga_is_fu
                   d_i = X"A5" or
3596
                   d_i = X"B5" or
3597
                   d_i = X"AD" or
3598
                   d_i = X"BD" or
3599
                   d_i = X"B9" or
3600
                   d_i = X"A1" or
3601 8 fpga_is_fu
                   d_i = X"B1") and (rdy_i = '1')) then
3602 6 fpga_is_fu
               ld_o <= "11";
3603
               ld_pc_o <= '1';
3604 8 fpga_is_fu
            elsif ((d_i = X"A2" or
3605 6 fpga_is_fu
                   d_i = X"A6" or
3606
                   d_i = X"B6" or
3607
                   d_i = X"AE" or
3608 8 fpga_is_fu
                   d_i = X"BE") and (rdy_i = '1')) then
3609 6 fpga_is_fu
               ld_o <= "11";
3610
               ld_pc_o <= '1';
3611 8 fpga_is_fu
            elsif ((d_i = X"A0" or
3612 6 fpga_is_fu
                   d_i = X"A4" or
3613
                   d_i = X"B4" or
3614
                   d_i = X"AC" or
3615 8 fpga_is_fu
                   d_i = X"BC") and (rdy_i = '1')) then
3616 6 fpga_is_fu
               ld_o <= "11";
3617
               ld_pc_o <= '1';
3618 8 fpga_is_fu
            elsif ((d_i = X"46" or
3619 6 fpga_is_fu
                   d_i = X"56" or
3620
                   d_i = X"4E" or
3621 8 fpga_is_fu
                   d_i = X"5E") and (rdy_i = '1')) then
3622 6 fpga_is_fu
               ld_o <= "11";
3623
               ld_pc_o <= '1';
3624 8 fpga_is_fu
            elsif ((d_i = X"EA") and (rdy_i = '1')) then
3625 6 fpga_is_fu
               ld_o <= "11";
3626
               ld_pc_o <= '1';
3627 8 fpga_is_fu
            elsif ((d_i = X"48") and (rdy_i = '1')) then
3628 6 fpga_is_fu
               ld_o <= "11";
3629
               ld_pc_o <= '1';
3630 8 fpga_is_fu
            elsif ((d_i = X"08") and (rdy_i = '1')) then
3631 6 fpga_is_fu
               ld_o <= "11";
3632
               ld_pc_o <= '1';
3633 8 fpga_is_fu
            elsif ((d_i = X"68") and (rdy_i = '1')) then
3634 6 fpga_is_fu
               ld_o <= "11";
3635
               ld_pc_o <= '1';
3636 8 fpga_is_fu
            elsif ((d_i = X"28") and (rdy_i = '1')) then
3637 6 fpga_is_fu
               ld_o <= "11";
3638
               ld_pc_o <= '1';
3639 8 fpga_is_fu
            elsif ((d_i = X"26" or
3640 6 fpga_is_fu
                   d_i = X"36" or
3641
                   d_i = X"2E" or
3642 8 fpga_is_fu
                   d_i = X"3E") and (rdy_i = '1')) then
3643 6 fpga_is_fu
               ld_o <= "11";
3644
               ld_pc_o <= '1';
3645 8 fpga_is_fu
            elsif ((d_i = X"66" or
3646 6 fpga_is_fu
                   d_i = X"76" or
3647
                   d_i = X"6E" or
3648 8 fpga_is_fu
                   d_i = X"7E") and (rdy_i = '1')) then
3649 6 fpga_is_fu
               ld_o <= "11";
3650
               ld_pc_o <= '1';
3651 8 fpga_is_fu
            elsif ((d_i = X"40") and (rdy_i = '1')) then
3652 6 fpga_is_fu
               ld_o <= "11";
3653
               ld_pc_o <= '1';
3654 8 fpga_is_fu
            elsif ((d_i = X"60") and (rdy_i = '1')) then
3655 6 fpga_is_fu
               ld_o <= "11";
3656
               ld_pc_o <= '1';
3657 8 fpga_is_fu
            elsif ((d_i = X"E9" or
3658 6 fpga_is_fu
                   d_i = X"E5" or
3659
                   d_i = X"F5" or
3660
                   d_i = X"ED" or
3661
                   d_i = X"FD" or
3662
                   d_i = X"F9" or
3663
                   d_i = X"E1" or
3664 8 fpga_is_fu
                   d_i = X"F1") and (rdy_i = '1')) then
3665 6 fpga_is_fu
               ld_o <= "11";
3666
               ld_pc_o <= '1';
3667 8 fpga_is_fu
            elsif ((d_i = X"38") and (rdy_i = '1')) then
3668 6 fpga_is_fu
               ld_o <= "11";
3669
               ld_pc_o <= '1';
3670 8 fpga_is_fu
            elsif ((d_i = X"F8") and (rdy_i = '1')) then
3671 6 fpga_is_fu
               ld_o <= "11";
3672
               ld_pc_o <= '1';
3673 8 fpga_is_fu
            elsif ((d_i = X"78") and (rdy_i = '1')) then
3674 6 fpga_is_fu
               ld_o <= "11";
3675
               ld_pc_o <= '1';
3676 8 fpga_is_fu
            elsif ((d_i = X"85" or
3677 6 fpga_is_fu
                   d_i = X"95" or
3678
                   d_i = X"8D" or
3679
                   d_i = X"9D" or
3680
                   d_i = X"99" or
3681
                   d_i = X"81" or
3682 8 fpga_is_fu
                   d_i = X"91") and (rdy_i = '1')) then
3683 6 fpga_is_fu
               ld_o <= "11";
3684
               ld_pc_o <= '1';
3685 8 fpga_is_fu
            elsif ((d_i = X"86" or
3686 6 fpga_is_fu
                   d_i = X"96" or
3687 8 fpga_is_fu
                   d_i = X"8E") and (rdy_i = '1')) then
3688 6 fpga_is_fu
               ld_o <= "11";
3689
               ld_pc_o <= '1';
3690 8 fpga_is_fu
            elsif ((d_i = X"84" or
3691 6 fpga_is_fu
                   d_i = X"94" or
3692 8 fpga_is_fu
                   d_i = X"8C") and (rdy_i = '1')) then
3693 6 fpga_is_fu
               ld_o <= "11";
3694
               ld_pc_o <= '1';
3695 8 fpga_is_fu
            elsif ((d_i = X"AA") and (rdy_i = '1')) then
3696 6 fpga_is_fu
 
3697
               ld_o <= "11";
3698
               ld_pc_o <= '1';
3699 8 fpga_is_fu
            elsif ((d_i = X"0A") and (rdy_i = '1')) then
3700 6 fpga_is_fu
               ld_o <= "11";
3701
               ld_pc_o <= '1';
3702 8 fpga_is_fu
            elsif ((d_i = X"4A") and (rdy_i = '1')) then
3703 6 fpga_is_fu
               ld_o <= "11";
3704
               ld_pc_o <= '1';
3705 8 fpga_is_fu
            elsif ((d_i = X"2A") and (rdy_i = '1')) then
3706 6 fpga_is_fu
               ld_o <= "11";
3707
               ld_pc_o <= '1';
3708 8 fpga_is_fu
            elsif ((d_i = X"6A") and (rdy_i = '1')) then
3709 6 fpga_is_fu
               ld_o <= "11";
3710
               ld_pc_o <= '1';
3711 8 fpga_is_fu
            elsif ((d_i = X"A8") and (rdy_i = '1')) then
3712 6 fpga_is_fu
 
3713
               ld_o <= "11";
3714
               ld_pc_o <= '1';
3715 8 fpga_is_fu
            elsif ((d_i = X"98") and (rdy_i = '1')) then
3716 6 fpga_is_fu
 
3717
               ld_o <= "11";
3718
               ld_pc_o <= '1';
3719 8 fpga_is_fu
            elsif ((d_i = X"BA") and (rdy_i = '1')) then
3720 6 fpga_is_fu
 
3721
               ld_o <= "11";
3722
               ld_pc_o <= '1';
3723 8 fpga_is_fu
            elsif ((d_i = X"8A") and (rdy_i = '1')) then
3724 6 fpga_is_fu
 
3725
               ld_o <= "11";
3726
               ld_pc_o <= '1';
3727 8 fpga_is_fu
            elsif ((d_i = X"9A") and (rdy_i = '1')) then
3728 6 fpga_is_fu
 
3729
               ld_o <= "11";
3730
               ld_pc_o <= '1';
3731 8 fpga_is_fu
            elsif (rdy_i = '1') then
3732 6 fpga_is_fu
               ld_o <= "11";
3733
               ld_pc_o <= '1';
3734 8 fpga_is_fu
            end if;
3735
         when s1 =>
3736
            if (rdy_i = '1') then
3737 6 fpga_is_fu
               sig_SYNC <= '1';
3738
               fetch_o <= '1';
3739 8 fpga_is_fu
            end if;
3740
         when s2 =>
3741
            if (rdy_i = '1') then
3742 6 fpga_is_fu
               sig_SYNC <= '1';
3743
               fetch_o <= '1';
3744 8 fpga_is_fu
            end if;
3745
         when s5 =>
3746
            if (rdy_i = '1') then
3747 6 fpga_is_fu
               sig_SYNC <= '1';
3748
               fetch_o <= '1';
3749 8 fpga_is_fu
            end if;
3750
         when s3 =>
3751
            if (rdy_i = '1') then
3752 6 fpga_is_fu
               sig_SYNC <= '1';
3753
               fetch_o <= '1';
3754 8 fpga_is_fu
            end if;
3755
         when s4 =>
3756
            if (rdy_i = '1' and
3757
                zw_REG_OP = X"9A") then
3758 6 fpga_is_fu
               adr_o <= X"01" & d_regs_out_i;
3759
               ld_o <= "11";
3760
               ld_sp_o <= '1';
3761
               sig_SYNC <= '1';
3762
               fetch_o <= '1';
3763 8 fpga_is_fu
            elsif (rdy_i = '1' and
3764
                   zw_REG_OP = X"BA") then
3765 6 fpga_is_fu
               d_regs_in_o <= adr_sp_i (7 downto 0);
3766
               ch_a_o <= adr_sp_i (7 downto 0);
3767
               ch_b_o <= X"00";
3768
               load_regs_o <= '1';
3769
               sig_SYNC <= '1';
3770
               fetch_o <= '1';
3771 8 fpga_is_fu
            elsif (rdy_i = '1') then
3772 6 fpga_is_fu
               ch_a_o <= d_regs_out_i;
3773
               ch_b_o <= X"00";
3774
               load_regs_o <= '1';
3775
               sig_SYNC <= '1';
3776
               fetch_o <= '1';
3777 8 fpga_is_fu
            end if;
3778
         when s12 =>
3779
            if (rdy_i = '1') then
3780 6 fpga_is_fu
               sig_SYNC <= '1';
3781
               fetch_o <= '1';
3782 8 fpga_is_fu
            end if;
3783
         when s16 =>
3784
            if (rdy_i = '1') then
3785 6 fpga_is_fu
               sig_SYNC <= '1';
3786
               fetch_o <= '1';
3787 8 fpga_is_fu
            end if;
3788
         when s17 =>
3789
            if (rdy_i = '1') then
3790 6 fpga_is_fu
               sig_SYNC <= '1';
3791
               fetch_o <= '1';
3792 8 fpga_is_fu
            end if;
3793
         when s24 =>
3794
            if (rdy_i = '1') then
3795 6 fpga_is_fu
               sig_SYNC <= '1';
3796
               fetch_o <= '1';
3797 8 fpga_is_fu
            end if;
3798
         when s25 =>
3799
            if (rdy_i = '1') then
3800 6 fpga_is_fu
               d_regs_in_o <= d_alu_i;
3801
               ch_a_o <= d_regs_out_i;
3802
               ch_b_o <= zw_b4;
3803
               load_regs_o <= '1';
3804
               sig_SYNC <= '1';
3805
               fetch_o <= '1';
3806 8 fpga_is_fu
            end if;
3807
         when s273 =>
3808
            if (rdy_i = '1') then
3809 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3810
               ld_o <= "11";
3811
               ld_pc_o <= '1';
3812 8 fpga_is_fu
            end if;
3813
         when s307 =>
3814
            if (rdy_i = '1') then
3815 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
3816
               ld_o <= "11";
3817
               ld_pc_o <= '1';
3818
               sig_SYNC <= '1';
3819
               fetch_o <= '1';
3820 8 fpga_is_fu
            end if;
3821
         when s177 =>
3822
            if (rdy_i = '1' and
3823 6 fpga_is_fu
                (zw_REG_OP = X"85" OR
3824
                zw_REG_OP = X"86" OR
3825 8 fpga_is_fu
                zw_REG_OP = X"84")) then
3826 6 fpga_is_fu
               sig_RWn <= '0';
3827
               sig_RD <= '0';
3828
               sig_WR <= '1';
3829
               sig_D_OUT <= d_regs_out_i;
3830
               ld_o <= "11";
3831
               ld_pc_o <= '1';
3832 8 fpga_is_fu
            elsif (rdy_i = '1' and
3833 6 fpga_is_fu
                   (zw_REG_OP = X"95" OR
3834 8 fpga_is_fu
                   zw_REG_OP = X"94")) then
3835 6 fpga_is_fu
               ch_a_o <=  d_i;
3836
               ch_b_o <= q_x_i;
3837 8 fpga_is_fu
            elsif (rdy_i = '1' and
3838 6 fpga_is_fu
                   (zw_REG_OP = X"8D" OR
3839
                   zw_REG_OP = X"8E" OR
3840 8 fpga_is_fu
                   zw_REG_OP = X"8C")) then
3841 6 fpga_is_fu
               ld_o <= "11";
3842
               ld_pc_o <= '1';
3843 8 fpga_is_fu
            elsif (rdy_i = '1' and
3844
                   zw_REG_OP = X"9D") then
3845 6 fpga_is_fu
               ld_o <= "11";
3846
               ld_pc_o <= '1';
3847
               ch_a_o <= d_i;
3848
               ch_b_o <= q_x_i;
3849 8 fpga_is_fu
            elsif (rdy_i = '1' and
3850
                   zw_REG_OP = X"99") then
3851 6 fpga_is_fu
               ld_o <= "11";
3852
               ld_pc_o <= '1';
3853
               ch_a_o <= d_i;
3854
               ch_b_o <= q_y_i;
3855 8 fpga_is_fu
            elsif (rdy_i = '1' and
3856
                   zw_REG_OP = X"91") then
3857 6 fpga_is_fu
               ch_a_o <= d_i;
3858
               ch_b_o <= X"01";
3859 8 fpga_is_fu
            elsif (rdy_i = '1' and
3860
                   zw_REG_OP = X"81") then
3861 6 fpga_is_fu
               ch_a_o <=  d_i;
3862
               ch_b_o <= q_x_i;
3863 8 fpga_is_fu
            elsif (rdy_i = '1' and
3864
                   zw_REG_OP = X"96") then
3865 6 fpga_is_fu
               ch_a_o <=  d_i;
3866
               ch_b_o <= q_y_i;
3867 8 fpga_is_fu
            end if;
3868
         when s180 =>
3869
            if (rdy_i = '1') then
3870 6 fpga_is_fu
               ch_a_o <= d_i;
3871
               ch_b_o <= "0000000" & zw_b2(0);
3872
               ld_o <= "11";
3873
               ld_pc_o <= '1';
3874 8 fpga_is_fu
            end if;
3875
         when s181 =>
3876
            if (rdy_i = '1') then
3877 6 fpga_is_fu
               ch_a_o <= d_i;
3878
               ch_b_o <= q_y_i;
3879 8 fpga_is_fu
            end if;
3880
         when s182 =>
3881 6 fpga_is_fu
            sig_RWn <= '1';
3882
            sig_RD <= '1';
3883 8 fpga_is_fu
            if (rdy_i = '1') then
3884 6 fpga_is_fu
               ch_a_o <= d_i;
3885
               ch_b_o <= "0000000" & zw_b2(0);
3886
               ld_o <= "11";
3887
               ld_pc_o <= '1';
3888 8 fpga_is_fu
            end if;
3889
         when s183 =>
3890
            if (rdy_i = '1') then
3891 6 fpga_is_fu
               sig_RWn <= '0';
3892
               sig_RD <= '0';
3893
               sig_WR <= '1';
3894
               sig_D_OUT <= d_regs_out_i;
3895
               ld_o <= "11";
3896
               ld_pc_o <= '1';
3897 8 fpga_is_fu
            end if;
3898
         when s184 =>
3899 6 fpga_is_fu
            sig_SYNC <= '1';
3900
            fetch_o <= '1';
3901 8 fpga_is_fu
         when s185 =>
3902
            if (rdy_i = '1') then
3903 6 fpga_is_fu
               sig_RWn <= '0';
3904
               sig_RD <= '0';
3905
               sig_WR <= '1';
3906
               sig_D_OUT <= d_regs_out_i;
3907
               ld_o <= "11";
3908
               ld_pc_o <= '1';
3909 8 fpga_is_fu
            end if;
3910
         when s187 =>
3911 6 fpga_is_fu
            sig_SYNC <= '1';
3912
            fetch_o <= '1';
3913 8 fpga_is_fu
         when s188 =>
3914
            if (rdy_i = '1') then
3915 6 fpga_is_fu
               ch_a_o <=  zw_b1;
3916
               ch_b_o <= X"01";
3917 8 fpga_is_fu
            end if;
3918
         when s189 =>
3919
            if (rdy_i = '1') then
3920 6 fpga_is_fu
               ch_a_o <= d_i;
3921
               ch_b_o <= "0000000" & zw_b2(0);
3922
               ld_o <= "11";
3923
               ld_pc_o <= '1';
3924 8 fpga_is_fu
            end if;
3925
         when s190 =>
3926 6 fpga_is_fu
            sig_SYNC <= '1';
3927
            fetch_o <= '1';
3928 8 fpga_is_fu
         when s191 =>
3929 6 fpga_is_fu
            sig_RWn <= '0';
3930
            sig_RD <= '0';
3931
            sig_WR <= '1';
3932
            sig_D_OUT <= d_regs_out_i;
3933 8 fpga_is_fu
         when s192 =>
3934 6 fpga_is_fu
            sig_RWn <= '0';
3935
            sig_RD <= '0';
3936
            sig_WR <= '1';
3937
            sig_D_OUT <= d_regs_out_i;
3938
            ld_o <= "11";
3939
            ld_pc_o <= '1';
3940 8 fpga_is_fu
         when s193 =>
3941 6 fpga_is_fu
            sig_SYNC <= '1';
3942
            fetch_o <= '1';
3943 8 fpga_is_fu
         when s377 =>
3944
            if (rdy_i = '1') then
3945 6 fpga_is_fu
               sig_RWn <= '0';
3946
               sig_RD <= '0';
3947
               sig_WR <= '1';
3948
               sig_D_OUT <= q_a_i;
3949
               ld_o <= "11";
3950
               ld_sp_o <= '1';
3951 8 fpga_is_fu
            end if;
3952
         when s381 =>
3953 6 fpga_is_fu
            sig_SYNC <= '1';
3954
            fetch_o <= '1';
3955 8 fpga_is_fu
         when s378 =>
3956
            if (rdy_i = '1') then
3957 6 fpga_is_fu
               sig_RWn <= '0';
3958
               sig_RD <= '0';
3959
               sig_WR <= '1';
3960
               sig_D_OUT <= reg_F;
3961
               ld_o <= "11";
3962
               ld_sp_o <= '1';
3963 8 fpga_is_fu
            end if;
3964
         when s382 =>
3965 6 fpga_is_fu
            sig_SYNC <= '1';
3966
            fetch_o <= '1';
3967 8 fpga_is_fu
         when s379 =>
3968
            if (rdy_i = '1') then
3969 6 fpga_is_fu
               ld_o <= "11";
3970
               ld_sp_o <= '1';
3971 8 fpga_is_fu
            end if;
3972
         when s384 =>
3973
            if (rdy_i = '1') then
3974 6 fpga_is_fu
               d_regs_in_o <= d_i;
3975
               load_regs_o <= '1';
3976
               ch_a_o <= d_i;
3977
               ch_b_o <= X"00";
3978
               sig_SYNC <= '1';
3979
               fetch_o <= '1';
3980 8 fpga_is_fu
            end if;
3981
         when s380 =>
3982
            if (rdy_i = '1') then
3983 6 fpga_is_fu
               ld_o <= "11";
3984
               ld_sp_o <= '1';
3985 8 fpga_is_fu
            end if;
3986
         when s386 =>
3987
            if (rdy_i = '1') then
3988 6 fpga_is_fu
               sig_SYNC <= '1';
3989
               fetch_o <= '1';
3990 8 fpga_is_fu
            end if;
3991
         when s387 =>
3992
            if (rdy_i = '1') then
3993 6 fpga_is_fu
               ld_o <= "11";
3994
               ld_sp_o <= '1';
3995 8 fpga_is_fu
            end if;
3996
         when s388 =>
3997
            if (rdy_i = '1') then
3998 6 fpga_is_fu
               ld_o <= "11";
3999
               ld_sp_o <= '1';
4000 8 fpga_is_fu
            end if;
4001
         when s389 =>
4002
            if (rdy_i = '1') then
4003 6 fpga_is_fu
               ld_o <= "11";
4004
               ld_sp_o <= '1';
4005 8 fpga_is_fu
            end if;
4006
         when s392 =>
4007
            if (rdy_i = '1') then
4008 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4009
               ld_o <= "11";
4010
               ld_pc_o <= '1';
4011
               sig_SYNC <= '1';
4012
               fetch_o <= '1';
4013 8 fpga_is_fu
            end if;
4014
         when s390 =>
4015
            if (rdy_i = '1') then
4016 6 fpga_is_fu
               ld_o <= "11";
4017
               ld_sp_o <= '1';
4018 8 fpga_is_fu
            end if;
4019
         when s393 =>
4020
            if (rdy_i = '1') then
4021 6 fpga_is_fu
               ld_o <= "11";
4022
               ld_sp_o <= '1';
4023 8 fpga_is_fu
            end if;
4024
         when s395 =>
4025
            if (rdy_i = '1') then
4026 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4027
               ld_o <= "11";
4028
               ld_pc_o <= '1';
4029 8 fpga_is_fu
            end if;
4030
         when s396 =>
4031
            if (rdy_i = '1') then
4032 6 fpga_is_fu
               sig_SYNC <= '1';
4033
               fetch_o <= '1';
4034 8 fpga_is_fu
            end if;
4035
         when s397 =>
4036
            if (rdy_i = '1') then
4037 6 fpga_is_fu
               ld_o <= "11";
4038
               ld_sp_o <= '1';
4039
               ld_pc_o <= '1';
4040 8 fpga_is_fu
            end if;
4041
         when s398 =>
4042
            if (rdy_i = '1') then
4043 6 fpga_is_fu
               sig_RWn <= '0';
4044
               sig_RD <= '0';
4045
               sig_WR <= '1';
4046
               sig_D_OUT <= adr_pc_i (15 downto 8);
4047 8 fpga_is_fu
            end if;
4048
         when s399 =>
4049 6 fpga_is_fu
            ld_o <= "11";
4050
            ld_sp_o <= '1';
4051
            sig_RWn <= '0';
4052
            sig_RD <= '0';
4053
            sig_WR <= '1';
4054
            sig_D_OUT <= adr_pc_i (7 downto 0);
4055 8 fpga_is_fu
         when s401 =>
4056
            if (rdy_i = '1') then
4057 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4058
               ld_o <= "11";
4059
               ld_pc_o <= '1';
4060
               sig_SYNC <= '1';
4061
               fetch_o <= '1';
4062 8 fpga_is_fu
            end if;
4063
         when s526 =>
4064
            if (rdy_i = '1') then
4065 6 fpga_is_fu
               ld_o <= "11";
4066
               ld_sp_o <= '1';
4067
               ld_pc_o <= '1';
4068
               sig_RWn <= '0';
4069
               sig_RD <= '0';
4070
               sig_WR <= '1';
4071
               sig_D_OUT <= adr_pc_i (15 downto 8);
4072 8 fpga_is_fu
            end if;
4073
         when s527 =>
4074 6 fpga_is_fu
            ld_o <= "11";
4075
            ld_sp_o <= '1';
4076
            sig_RWn <= '0';
4077
            sig_RD <= '0';
4078
            sig_WR <= '1';
4079
            sig_D_OUT <= adr_pc_i (7 downto 0);
4080 8 fpga_is_fu
         when s528 =>
4081 6 fpga_is_fu
            ld_o <= "11";
4082
            ld_sp_o <= '1';
4083
            sig_RWn <= '0';
4084
            sig_RD <= '0';
4085
            sig_WR <= '1';
4086
            sig_D_OUT <= reg_F OR X"10";
4087 8 fpga_is_fu
         when s530 =>
4088
            if (rdy_i = '1') then
4089 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
4090
               ld_o <= "11";
4091
               ld_pc_o <= '1';
4092
               sig_SYNC <= '1';
4093
               fetch_o <= '1';
4094 8 fpga_is_fu
            end if;
4095
         when s544 =>
4096 6 fpga_is_fu
            ld_o <= "11";
4097
            ld_sp_o <= '1';
4098 8 fpga_is_fu
         when s545 =>
4099 6 fpga_is_fu
            adr_o <= X"FFFB";
4100
            ld_o <= "11";
4101
            ld_pc_o <= '1';
4102 8 fpga_is_fu
         when s546 =>
4103 6 fpga_is_fu
            ld_o <= "11";
4104
            ld_pc_o <= '1';
4105 8 fpga_is_fu
         when s549 =>
4106
            if (rdy_i = '1') then
4107 6 fpga_is_fu
               adr_o <= d_i & zw_w1 (7 downto 0);
4108
               ld_o <= "11";
4109
               ld_pc_o <= '1';
4110
               sig_SYNC <= '1';
4111
               fetch_o <= '1';
4112 8 fpga_is_fu
            end if;
4113
         when s550 =>
4114 6 fpga_is_fu
            ld_o <= "11";
4115
            ld_sp_o <= '1';
4116 8 fpga_is_fu
         when s404 =>
4117
            if (rdy_i = '1') then
4118 6 fpga_is_fu
               ch_a_o <= q_a_i (6 downto 0) & '0';
4119
               ch_b_o <= X"00";
4120
               d_regs_in_o <= q_a_i (6 downto 0) & '0';
4121
               load_regs_o <= '1';
4122
               sig_SYNC <= '1';
4123
               fetch_o <= '1';
4124 8 fpga_is_fu
            end if;
4125
         when s556 =>
4126
            if (rdy_i = '1') then
4127 6 fpga_is_fu
               ch_a_o <= '0' & q_a_i (7 downto 1);
4128
               ch_b_o <= X"00";
4129
               d_regs_in_o <= '0' & q_a_i (7 downto 1);
4130
               load_regs_o <= '1';
4131
               sig_SYNC <= '1';
4132
               fetch_o <= '1';
4133 8 fpga_is_fu
            end if;
4134
         when s557 =>
4135
            if (rdy_i = '1') then
4136 6 fpga_is_fu
               ch_a_o <= q_a_i (6 downto 0) & reg_F(0);
4137
               ch_b_o <= X"00";
4138
               d_regs_in_o <= q_a_i (6 downto 0) & reg_F(0);
4139
               load_regs_o <= '1';
4140
               sig_SYNC <= '1';
4141
               fetch_o <= '1';
4142 8 fpga_is_fu
            end if;
4143
         when s579 =>
4144
            if (rdy_i = '1') then
4145 6 fpga_is_fu
               ch_a_o <= reg_F(0) & q_a_i (7 downto 1);
4146
               ch_b_o <= X"00";
4147
               d_regs_in_o <= reg_F(0) & q_a_i (7 downto 1);
4148
               load_regs_o <= '1';
4149
               sig_SYNC <= '1';
4150
               fetch_o <= '1';
4151 8 fpga_is_fu
            end if;
4152
         when s201 =>
4153
            if (rdy_i = '1' and
4154 6 fpga_is_fu
                (zw_REG_OP = X"A5" OR zw_REG_OP = X"A6" OR
4155
                zw_REG_OP = X"A4" OR zw_REG_OP = X"45" OR
4156
                zw_REG_OP = X"05" OR zw_REG_OP = X"25" OR
4157 8 fpga_is_fu
                zw_REG_OP = X"C5" OR zw_REG_OP = X"E4" OR zw_REG_OP = X"C4")) then
4158 6 fpga_is_fu
               ld_o <= "11";
4159
               ld_pc_o <= '1';
4160 8 fpga_is_fu
            elsif ((rdy_i = '1' and
4161 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4162 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4163 6 fpga_is_fu
                   zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4164
                   zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4165 8 fpga_is_fu
                   zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
4166 6 fpga_is_fu
               ld_o <= "11";
4167
               ld_pc_o <= '1';
4168
               d_regs_in_o <= d_i OR q_a_i;
4169
               load_regs_o <= '1';
4170
               ch_a_o <= d_i OR q_a_i;
4171
               ch_b_o <= X"00";
4172
               sig_SYNC <= '1';
4173
               fetch_o <= '1';
4174 8 fpga_is_fu
            elsif ((rdy_i = '1' and
4175 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4176 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4177 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4178
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4179 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
4180 6 fpga_is_fu
               ld_o <= "11";
4181
               ld_pc_o <= '1';
4182
               d_regs_in_o <= d_i XOR q_a_i;
4183
               load_regs_o <= '1';
4184
               ch_a_o <= d_i XOR q_a_i;
4185
               ch_b_o <= X"00";
4186
               sig_SYNC <= '1';
4187
               fetch_o <= '1';
4188 8 fpga_is_fu
            elsif ((rdy_i = '1' and
4189 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4190 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4191 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4192
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4193 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
4194 6 fpga_is_fu
               ld_o <= "11";
4195
               ld_pc_o <= '1';
4196
               d_regs_in_o <= d_i AND q_a_i;
4197
               load_regs_o <= '1';
4198
               ch_a_o <= d_i AND q_a_i;
4199
               ch_b_o <= X"00";
4200
               sig_SYNC <= '1';
4201
               fetch_o <= '1';
4202 8 fpga_is_fu
            elsif ((rdy_i = '1' and
4203 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4204 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4205 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4206
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4207
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4208
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4209
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4210 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
4211 6 fpga_is_fu
               ld_o <= "11";
4212
               ld_pc_o <= '1';
4213
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4214
               sig_SYNC <= '1';
4215
               fetch_o <= '1';
4216 8 fpga_is_fu
            elsif (rdy_i = '1' and
4217 6 fpga_is_fu
                   (zw_REG_OP = X"A9" OR zw_REG_OP = X"A2" OR zw_REG_OP = X"A0" OR zw_REG_OP = X"E0" OR zw_REG_OP = X"C0" OR
4218 8 fpga_is_fu
                   zw_REG_OP = X"49" or zw_REG_OP = X"09" or zw_REG_OP = X"29" or zw_REG_OP = X"C9")) then
4219 6 fpga_is_fu
               ld_o <= "11";
4220
               ld_pc_o <= '1';
4221
               d_regs_in_o <= d_i;
4222
               load_regs_o <= '1';
4223
               ch_a_o <= d_i;
4224
               ch_b_o <= X"00";
4225
               sig_SYNC <= '1';
4226
               fetch_o <= '1';
4227 8 fpga_is_fu
            elsif (rdy_i = '1' and
4228 6 fpga_is_fu
                   (zw_REG_OP = X"B5" OR
4229
                   zw_REG_OP = X"B4" OR
4230
                   zw_REG_OP = X"55" OR zw_REG_OP = X"15" OR
4231
                   zw_REG_OP = X"35" OR
4232 8 fpga_is_fu
                   zw_REG_OP = X"D5")) then
4233 6 fpga_is_fu
               ch_a_o <=  d_i;
4234
               ch_b_o <= q_x_i;
4235 8 fpga_is_fu
            elsif (rdy_i = '1' and
4236 6 fpga_is_fu
                   (zw_REG_OP = X"AD" OR
4237
                   zw_REG_OP = X"AE" OR
4238
                   zw_REG_OP = X"AC" OR
4239
                   zw_REG_OP = X"4D" OR
4240
                   zw_REG_OP = X"0D" OR
4241
                   zw_REG_OP = X"2D" OR
4242
                   zw_REG_OP = X"CD" OR
4243
                   zw_REG_OP = X"EC" OR
4244 8 fpga_is_fu
                   zw_REG_OP = X"CC")) then
4245 6 fpga_is_fu
               ld_o <= "11";
4246
               ld_pc_o <= '1';
4247 8 fpga_is_fu
            elsif (rdy_i = '1' and
4248 6 fpga_is_fu
                   (zw_REG_OP = X"BD" OR
4249
                   zw_REG_OP = X"BC" OR
4250
                   zw_REG_OP = X"5D" OR
4251
                   zw_REG_OP = X"1D" OR
4252
                   zw_REG_OP = X"3D" OR
4253 8 fpga_is_fu
                   zw_REG_OP = X"DD")) then
4254 6 fpga_is_fu
               ld_o <= "11";
4255
               ld_pc_o <= '1';
4256
               ch_a_o <= d_i;
4257
               ch_b_o <= q_x_i;
4258 8 fpga_is_fu
            elsif (rdy_i = '1' and
4259 6 fpga_is_fu
                   (zw_REG_OP = X"B9" OR
4260
                   zw_REG_OP = X"BE" OR
4261
                   zw_REG_OP = X"59" OR
4262
                   zw_REG_OP = X"19" OR
4263
                   zw_REG_OP = X"39" OR
4264 8 fpga_is_fu
                   zw_REG_OP = X"D9")) then
4265 6 fpga_is_fu
               ld_o <= "11";
4266
               ld_pc_o <= '1';
4267
               ch_a_o <= d_i;
4268
               ch_b_o <= q_y_i;
4269 8 fpga_is_fu
            elsif (rdy_i = '1' and
4270 6 fpga_is_fu
                   (zw_REG_OP = X"B1" OR
4271
                   zw_REG_OP = X"51" OR
4272
                   zw_REG_OP = X"11" OR
4273
                   zw_REG_OP = X"31" OR
4274 8 fpga_is_fu
                   zw_REG_OP = X"D1")) then
4275 6 fpga_is_fu
               ch_a_o <= d_i;
4276
               ch_b_o <= X"01";
4277 8 fpga_is_fu
            elsif (rdy_i = '1' and
4278 6 fpga_is_fu
                   (zw_REG_OP = X"A1" OR
4279
                   zw_REG_OP = X"41" OR
4280
                   zw_REG_OP = X"01" OR
4281
                   zw_REG_OP = X"21" OR
4282 8 fpga_is_fu
                   zw_REG_OP = X"C1")) then
4283 6 fpga_is_fu
               ch_a_o <=  d_i;
4284
               ch_b_o <= q_x_i;
4285 8 fpga_is_fu
            elsif (rdy_i = '1' and
4286
                   zw_REG_OP = X"B6") then
4287 6 fpga_is_fu
               ch_a_o <=  d_i;
4288
               ch_b_o <= q_y_i;
4289 8 fpga_is_fu
            end if;
4290
         when s202 =>
4291
            if (rdy_i = '1') then
4292 6 fpga_is_fu
               ld_o <= "11";
4293
               ld_pc_o <= '1';
4294 8 fpga_is_fu
            end if;
4295
         when s210 =>
4296
            if (rdy_i = '1') then
4297 6 fpga_is_fu
               ch_a_o <= d_i;
4298
               ch_b_o <= "0000000" & zw_b2(0);
4299
               ld_o <= "11";
4300
               ld_pc_o <= '1';
4301 8 fpga_is_fu
            end if;
4302
         when s211 =>
4303
            if (rdy_i = '1') then
4304 6 fpga_is_fu
               ch_a_o <= d_i;
4305
               ch_b_o <= "0000000" & zw_b2(0);
4306
               ld_o <= "11";
4307
               ld_pc_o <= '1';
4308 8 fpga_is_fu
            end if;
4309
         when s215 =>
4310
            if (rdy_i = '1') then
4311 6 fpga_is_fu
               ch_a_o <= d_i;
4312
               ch_b_o <= q_y_i;
4313 8 fpga_is_fu
            end if;
4314
         when s217 =>
4315
            if (rdy_i = '1') then
4316 6 fpga_is_fu
               ld_o <= "11";
4317
               ld_pc_o <= '1';
4318 8 fpga_is_fu
            end if;
4319
         when s222 =>
4320
            if (rdy_i = '1') then
4321 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4322
               ch_b_o <= X"01";
4323 8 fpga_is_fu
            end if;
4324
         when s223 =>
4325
            if (rdy_i = '1') then
4326 6 fpga_is_fu
               ch_a_o <= d_i;
4327
               ch_b_o <= "0000000" & zw_b2(0);
4328
               ld_o <= "11";
4329
               ld_pc_o <= '1';
4330 8 fpga_is_fu
            end if;
4331
         when s224 =>
4332
            if ((rdy_i = '1') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4333 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4334
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4335 8 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
4336 6 fpga_is_fu
               d_regs_in_o <= d_i OR q_a_i;
4337
               load_regs_o <= '1';
4338
               ch_a_o <= d_i OR q_a_i;
4339
               ch_b_o <= X"00";
4340
               sig_SYNC <= '1';
4341
               fetch_o <= '1';
4342 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4343 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4344
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4345 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
4346 6 fpga_is_fu
               d_regs_in_o <= d_i XOR q_a_i;
4347
               load_regs_o <= '1';
4348
               ch_a_o <= d_i XOR q_a_i;
4349
               ch_b_o <= X"00";
4350
               sig_SYNC <= '1';
4351
               fetch_o <= '1';
4352 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4353 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4354
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4355 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
4356 6 fpga_is_fu
               d_regs_in_o <= d_i AND q_a_i;
4357
               load_regs_o <= '1';
4358
               ch_a_o <= d_i AND q_a_i;
4359
               ch_b_o <= X"00";
4360
               sig_SYNC <= '1';
4361
               fetch_o <= '1';
4362 8 fpga_is_fu
            elsif ((rdy_i = '1') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4363 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4364
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4365
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4366
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4367
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4368 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
4369 6 fpga_is_fu
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4370
               sig_SYNC <= '1';
4371
               fetch_o <= '1';
4372 8 fpga_is_fu
            elsif (rdy_i = '1') then
4373 6 fpga_is_fu
               d_regs_in_o <= d_i;
4374
               load_regs_o <= '1';
4375
               ch_a_o <= d_i;
4376
               ch_b_o <= X"00";
4377
               sig_SYNC <= '1';
4378
               fetch_o <= '1';
4379 8 fpga_is_fu
            end if;
4380
         when s225 =>
4381
            if ((rdy_i = '1' AND
4382
                zw_b2(0) = '0') and (zw_REG_OP = X"09" or zw_REG_OP = X"05" or
4383 6 fpga_is_fu
                zw_REG_OP = X"15" or zw_REG_OP = X"0D" or
4384
                zw_REG_OP = X"1D" or zw_REG_OP = X"19" or
4385 8 fpga_is_fu
                zw_REG_OP = X"01" or zw_REG_OP = X"11")) then
4386 6 fpga_is_fu
               d_regs_in_o <= d_i OR q_a_i;
4387
               load_regs_o <= '1';
4388
               ch_a_o <= d_i OR q_a_i;
4389
               ch_b_o <= X"00";
4390
               sig_SYNC <= '1';
4391
               fetch_o <= '1';
4392 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
4393
                   zw_b2(0) = '0') and (zw_REG_OP = X"49" or zw_REG_OP = X"45" or
4394 6 fpga_is_fu
                   zw_REG_OP = X"55" or zw_REG_OP = X"4D" or
4395
                   zw_REG_OP = X"5D" or zw_REG_OP = X"59" or
4396 8 fpga_is_fu
                   zw_REG_OP = X"41" or zw_REG_OP = X"51")) then
4397 6 fpga_is_fu
               d_regs_in_o <= d_i XOR q_a_i;
4398
               load_regs_o <= '1';
4399
               ch_a_o <= d_i XOR q_a_i;
4400
               ch_b_o <= X"00";
4401
               sig_SYNC <= '1';
4402
               fetch_o <= '1';
4403 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
4404
                   zw_b2(0) = '0') and (zw_REG_OP = X"29" or zw_REG_OP = X"25" or
4405 6 fpga_is_fu
                   zw_REG_OP = X"35" or zw_REG_OP = X"2D" or
4406
                   zw_REG_OP = X"3D" or zw_REG_OP = X"39" or
4407 8 fpga_is_fu
                    zw_REG_OP = X"21" or zw_REG_OP = X"31")) then
4408 6 fpga_is_fu
               d_regs_in_o <= d_i AND q_a_i;
4409
               load_regs_o <= '1';
4410
               ch_a_o <= d_i AND q_a_i;
4411
               ch_b_o <= X"00";
4412
               sig_SYNC <= '1';
4413
               fetch_o <= '1';
4414 8 fpga_is_fu
            elsif ((rdy_i = '1' AND
4415
                   zw_b2(0) = '0') and (zw_REG_OP = X"C9" or zw_REG_OP = X"C5" or
4416 6 fpga_is_fu
                   zw_REG_OP = X"D5" or zw_REG_OP = X"CD" or
4417
                   zw_REG_OP = X"DD" or zw_REG_OP = X"D9" or
4418
                   zw_REG_OP = X"C1" or zw_REG_OP = X"D1" or
4419
                    zw_REG_OP = X"C0" or zw_REG_OP = X"E0" or
4420
                    zw_REG_OP = X"C4" or zw_REG_OP = X"E4" or
4421 8 fpga_is_fu
                    zw_REG_OP = X"CC" or zw_REG_OP = X"EC")) then
4422 6 fpga_is_fu
               zw_ALU <= unsigned ('0' & d_regs_out_i) + unsigned ('0' & NOT (d_i)) + 1;
4423
               sig_SYNC <= '1';
4424
               fetch_o <= '1';
4425 8 fpga_is_fu
            elsif (rdy_i = '1' AND
4426
                   zw_b2(0) = '0') then
4427 6 fpga_is_fu
               d_regs_in_o <= d_i;
4428
               load_regs_o <= '1';
4429
               ch_a_o <= d_i;
4430
               ch_b_o <= X"00";
4431
               sig_SYNC <= '1';
4432
               fetch_o <= '1';
4433 8 fpga_is_fu
            end if;
4434
         when s226 =>
4435
            if (rdy_i = '1' and
4436 6 fpga_is_fu
                (zw_REG_OP = X"C6" OR
4437 8 fpga_is_fu
                zw_REG_OP = X"E6")) then
4438 6 fpga_is_fu
               ld_o <= "11";
4439
               ld_pc_o <= '1';
4440 8 fpga_is_fu
            elsif (rdy_i = '1' and
4441 6 fpga_is_fu
                   (zw_REG_OP = X"D6" OR
4442 8 fpga_is_fu
                   zw_REG_OP = X"F6")) then
4443 6 fpga_is_fu
               ch_a_o <=  d_i;
4444
               ch_b_o <= q_x_i;
4445 8 fpga_is_fu
            elsif (rdy_i = '1' and
4446 6 fpga_is_fu
                   (zw_REG_OP = X"CE" OR
4447 8 fpga_is_fu
                   zw_REG_OP = X"EE")) then
4448 6 fpga_is_fu
               ld_o <= "11";
4449
               ld_pc_o <= '1';
4450 8 fpga_is_fu
            elsif (rdy_i = '1' and
4451 6 fpga_is_fu
                   (zw_REG_OP = X"DE" OR
4452 8 fpga_is_fu
                   zw_REG_OP = X"FE")) then
4453 6 fpga_is_fu
               ld_o <= "11";
4454
               ld_pc_o <= '1';
4455
               ch_a_o <= d_i;
4456
               ch_b_o <= q_x_i;
4457 8 fpga_is_fu
            end if;
4458
         when s243 =>
4459
            if (rdy_i = '1') then
4460 6 fpga_is_fu
               ld_o <= "11";
4461
               ld_pc_o <= '1';
4462 8 fpga_is_fu
            end if;
4463
         when s244 =>
4464
            if (rdy_i = '1') then
4465 6 fpga_is_fu
               ch_a_o <= d_i;
4466
               ch_b_o <= "0000000" & zw_b2(0);
4467
               ld_o <= "11";
4468
               ld_pc_o <= '1';
4469 8 fpga_is_fu
            end if;
4470
         when s247 =>
4471
            if (rdy_i = '1') then
4472 6 fpga_is_fu
               ld_o <= "11";
4473
               ld_pc_o <= '1';
4474 8 fpga_is_fu
            end if;
4475
         when s343 =>
4476
            if (rdy_i = '1') then
4477 6 fpga_is_fu
               ch_a_o <= d_i;
4478
               ch_b_o <= zw_b4;
4479 8 fpga_is_fu
            end if;
4480
         when s250 =>
4481
            if (rdy_i = '1') then
4482 6 fpga_is_fu
               sig_RWn <= '0';
4483
               sig_RD <= '0';
4484
               sig_WR <= '1';
4485
               sig_D_OUT <= zw_b1;
4486 8 fpga_is_fu
            end if;
4487
         when s251 =>
4488 6 fpga_is_fu
            ch_a_o <= zw_b1;
4489
            ch_b_o <= X"00";
4490
            sig_SYNC <= '1';
4491
            fetch_o <= '1';
4492 8 fpga_is_fu
         when s351 =>
4493
            if (rdy_i = '1' and
4494
                zw_REG_OP = X"24") then
4495 6 fpga_is_fu
               ld_o <= "11";
4496
               ld_pc_o <= '1';
4497 8 fpga_is_fu
            elsif (rdy_i = '1' and
4498
                   zw_REG_OP = X"2C") then
4499 6 fpga_is_fu
               ld_o <= "11";
4500
               ld_pc_o <= '1';
4501 8 fpga_is_fu
            end if;
4502
         when s361 =>
4503
            if (rdy_i = '1') then
4504 6 fpga_is_fu
               ch_a_o <= q_a_i AND d_i;
4505
               ch_b_o <= X"00";
4506
               sig_SYNC <= '1';
4507
               fetch_o <= '1';
4508 8 fpga_is_fu
            end if;
4509
         when s360 =>
4510
            if (rdy_i = '1') then
4511 6 fpga_is_fu
               ld_o <= "11";
4512
               ld_pc_o <= '1';
4513 8 fpga_is_fu
            end if;
4514
         when s403 =>
4515
            if (rdy_i = '1' and
4516 6 fpga_is_fu
                (zw_REG_OP = X"1E" or
4517
                zw_REG_OP = X"7E" or
4518
                zw_REG_OP = X"3E" or
4519 8 fpga_is_fu
                zw_REG_OP = X"5E")) then
4520 6 fpga_is_fu
               ld_o <= "11";
4521
               ld_pc_o <= '1';
4522
               ch_a_o <= d_i;
4523
               ch_b_o <= q_x_i;
4524 8 fpga_is_fu
            elsif (rdy_i = '1' and
4525 6 fpga_is_fu
                   (zw_REG_OP = X"06" or
4526
                   zw_REG_OP = X"66" or
4527
                   zw_REG_OP = X"26" or
4528 8 fpga_is_fu
                   zw_REG_OP = X"46")) then
4529 6 fpga_is_fu
               ld_o <= "11";
4530
               ld_pc_o <= '1';
4531 8 fpga_is_fu
            elsif (rdy_i = '1' and
4532 6 fpga_is_fu
                   (zw_REG_OP = X"16" or
4533
                   zw_REG_OP = X"76" or
4534
                   zw_REG_OP = X"36" or
4535 8 fpga_is_fu
                   zw_REG_OP = X"56")) then
4536 6 fpga_is_fu
               ch_a_o <=  d_i;
4537
               ch_b_o <= q_x_i;
4538 8 fpga_is_fu
            elsif (rdy_i = '1' and
4539 6 fpga_is_fu
                   (zw_REG_OP = X"0E" or
4540
                   zw_REG_OP = X"6E" or
4541
                   zw_REG_OP = X"2E" or
4542 8 fpga_is_fu
                   zw_REG_OP = X"4E")) then
4543 6 fpga_is_fu
               ld_o <= "11";
4544
               ld_pc_o <= '1';
4545 8 fpga_is_fu
            end if;
4546
         when s406 =>
4547
            if (rdy_i = '1') then
4548 6 fpga_is_fu
               ld_o <= "11";
4549
               ld_pc_o <= '1';
4550 8 fpga_is_fu
            end if;
4551
         when s407 =>
4552
            if (rdy_i = '1') then
4553 6 fpga_is_fu
               ch_a_o <= d_i;
4554
               ch_b_o <= "0000000" & zw_b2(0);
4555
               ld_o <= "11";
4556
               ld_pc_o <= '1';
4557 8 fpga_is_fu
            end if;
4558
         when s409 =>
4559
            if (rdy_i = '1') then
4560 6 fpga_is_fu
               ld_o <= "11";
4561
               ld_pc_o <= '1';
4562 8 fpga_is_fu
            end if;
4563
         when s416 =>
4564
            if (rdy_i = '1' and
4565 6 fpga_is_fu
                (zw_REG_OP = X"06" or
4566
                zw_REG_OP = X"16" or
4567
                zw_REG_OP = X"0E" or
4568 8 fpga_is_fu
                zw_REG_OP = X"1E")) then
4569 6 fpga_is_fu
               sig_D_OUT <= d_i(6 downto 0) & '0';
4570
               sig_RWn <= '0';
4571
               sig_RD <= '0';
4572
               sig_WR <= '1';
4573 8 fpga_is_fu
            elsif (rdy_i = '1' and
4574 6 fpga_is_fu
                   (zw_REG_OP = X"46" or
4575
                   zw_REG_OP = X"56" or
4576
                   zw_REG_OP = X"4E" or
4577 8 fpga_is_fu
                   zw_REG_OP = X"5E")) then
4578 6 fpga_is_fu
               sig_D_OUT <= '0' & d_i(7 downto 1);
4579
               sig_RWn <= '0';
4580
               sig_RD <= '0';
4581
               sig_WR <= '1';
4582 8 fpga_is_fu
            elsif (rdy_i = '1' and
4583 6 fpga_is_fu
                   (zw_REG_OP = X"26" or
4584
                   zw_REG_OP = X"36" or
4585
                   zw_REG_OP = X"2E" or
4586 8 fpga_is_fu
                   zw_REG_OP = X"3E")) then
4587 6 fpga_is_fu
               sig_D_OUT <= d_i(6 downto 0) & reg_F(0);
4588
               sig_RWn <= '0';
4589
               sig_RD <= '0';
4590
               sig_WR <= '1';
4591 8 fpga_is_fu
            elsif (rdy_i = '1' and
4592 6 fpga_is_fu
                   (zw_REG_OP = X"66" or
4593
                   zw_REG_OP = X"76" or
4594
                   zw_REG_OP = X"6E" or
4595 8 fpga_is_fu
                   zw_REG_OP = X"7E")) then
4596 6 fpga_is_fu
               sig_D_OUT <= reg_F(0) & d_i(7 downto 1);
4597
               sig_RWn <= '0';
4598
               sig_RD <= '0';
4599
               sig_WR <= '1';
4600 8 fpga_is_fu
            end if;
4601
         when s418 =>
4602 6 fpga_is_fu
            ch_a_o <= zw_b1;
4603
            ch_b_o <= X"00";
4604
            sig_SYNC <= '1';
4605
            fetch_o <= '1';
4606 8 fpga_is_fu
         when s510 =>
4607
            if (rdy_i = '1' and
4608
                zw_REG_OP = X"65") then
4609 6 fpga_is_fu
               ld_o <= "11";
4610
               ld_pc_o <= '1';
4611 8 fpga_is_fu
            elsif (rdy_i = '1' and
4612 6 fpga_is_fu
                   zw_REG_OP = X"69" and
4613 8 fpga_is_fu
                   reg_F(3) = '0') then
4614 6 fpga_is_fu
               ld_o <= "11";
4615
               ld_pc_o <= '1';
4616
               d_regs_in_o <= zw_ALU(7 downto 0);
4617
               load_regs_o <= '1';
4618
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4619
               sig_SYNC <= '1';
4620
               fetch_o <= '1';
4621 8 fpga_is_fu
            elsif (rdy_i = '1' and
4622
                   zw_REG_OP = X"75") then
4623 6 fpga_is_fu
               ch_a_o <=  d_i;
4624
               ch_b_o <= q_x_i;
4625 8 fpga_is_fu
            elsif (rdy_i = '1' and
4626
                   zw_REG_OP = X"6D") then
4627 6 fpga_is_fu
               ld_o <= "11";
4628
               ld_pc_o <= '1';
4629 8 fpga_is_fu
            elsif (rdy_i = '1' and
4630
                   zw_REG_OP = X"7D") then
4631 6 fpga_is_fu
               ld_o <= "11";
4632
               ld_pc_o <= '1';
4633
               ch_a_o <= d_i;
4634
               ch_b_o <= q_x_i;
4635 8 fpga_is_fu
            elsif (rdy_i = '1' and
4636
                   zw_REG_OP = X"79") then
4637 6 fpga_is_fu
               ld_o <= "11";
4638
               ld_pc_o <= '1';
4639
               ch_a_o <= d_i;
4640
               ch_b_o <= q_y_i;
4641 8 fpga_is_fu
            elsif (rdy_i = '1' and
4642
                   zw_REG_OP = X"71") then
4643 6 fpga_is_fu
               ch_a_o <= d_i;
4644
               ch_b_o <= X"01";
4645 8 fpga_is_fu
            elsif (rdy_i = '1' and
4646
                   zw_REG_OP = X"61") then
4647 6 fpga_is_fu
               ch_a_o <=  d_i;
4648
               ch_b_o <= q_x_i;
4649 8 fpga_is_fu
            elsif (rdy_i = '1' and
4650 6 fpga_is_fu
                   zw_REG_OP = X"69" and
4651 8 fpga_is_fu
                   reg_F(3) = '1') then
4652 6 fpga_is_fu
               ld_o <= "11";
4653
               ld_pc_o <= '1';
4654
               d_regs_in_o <= zw_ALU(7 downto 0);
4655
               load_regs_o <= '1';
4656
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(7 downto 5));
4657
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(7 downto 5));
4658
 
4659
               zw_ALU6(7 downto 5) <=  (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0';
4660
               zw_ALU5(7 downto 5) <=  (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0';
4661
 
4662
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4663
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4664
               ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4665
 
4666
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4667
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4668
               ('0' & d_i(3 downto 0)) + reg_F(0);
4669
               sig_SYNC <= '1';
4670
               fetch_o <= '1';
4671 8 fpga_is_fu
            end if;
4672
         when s553 =>
4673
            if (rdy_i = '1') then
4674 6 fpga_is_fu
               ld_o <= "11";
4675
               ld_pc_o <= '1';
4676 8 fpga_is_fu
            end if;
4677
         when s555 =>
4678
            if (rdy_i = '1') then
4679 6 fpga_is_fu
               ch_a_o <= d_i;
4680
               ch_b_o <= X"01";
4681
               ld_o <= "11";
4682
               ld_pc_o <= '1';
4683 8 fpga_is_fu
            end if;
4684
         when s558 =>
4685
            if (rdy_i = '1') then
4686 6 fpga_is_fu
               ch_a_o <= d_i;
4687
               ch_b_o <= q_y_i;
4688 8 fpga_is_fu
            end if;
4689
         when s560 =>
4690
            if (rdy_i = '1') then
4691 6 fpga_is_fu
               ld_o <= "11";
4692
               ld_pc_o <= '1';
4693 8 fpga_is_fu
            end if;
4694
         when s563 =>
4695
            if (rdy_i = '1') then
4696 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4697
               ch_b_o <= X"01";
4698 8 fpga_is_fu
            end if;
4699
         when s564 =>
4700
            if (rdy_i = '1' AND
4701 6 fpga_is_fu
                zw_b2(0) = '0' and
4702 8 fpga_is_fu
                reg_F(3) = '0') then
4703 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4704
               load_regs_o <= '1';
4705
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4706
               sig_SYNC <= '1';
4707
               fetch_o <= '1';
4708 8 fpga_is_fu
            elsif (rdy_i = '1' AND
4709 6 fpga_is_fu
                   zw_b2(0) = '0' and
4710 8 fpga_is_fu
                   reg_F(3) = '1') then
4711 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4712
               load_regs_o <= '1';
4713
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(7 downto 5));
4714
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(7 downto 5));
4715
 
4716
               zw_ALU6(7 downto 5) <=  (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0';
4717
               zw_ALU5(7 downto 5) <=  (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0';
4718
 
4719
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4720
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4721
               ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4722
 
4723
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4724
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4725
               ('0' & d_i(3 downto 0)) + reg_F(0);
4726
               sig_SYNC <= '1';
4727
               fetch_o <= '1';
4728 8 fpga_is_fu
            end if;
4729
         when s565 =>
4730
            if (rdy_i = '1' and
4731
                reg_F(3) = '0') then
4732 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4733
               load_regs_o <= '1';
4734
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & d_i) + reg_F(0);
4735
               sig_SYNC <= '1';
4736
               fetch_o <= '1';
4737 8 fpga_is_fu
            elsif (rdy_i = '1' and
4738
                   reg_F(3) = '1') then
4739 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4740
               load_regs_o <= '1';
4741
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) + unsigned (zw_ALU6(7 downto 5));
4742
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) + unsigned (zw_ALU5(7 downto 5));
4743
 
4744
               zw_ALU6(7 downto 5) <=  (zw_ALU2(4) OR zw_ALU4(4)) & (zw_ALU2(4) OR zw_ALU4(4)) & '0';
4745
               zw_ALU5(7 downto 5) <=  (zw_ALU1(4) OR zw_ALU3(4)) & (zw_ALU1(4) OR zw_ALU3(4)) & '0';
4746
 
4747
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4748
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4749
               ('0' & d_i(7 downto 4)) + (zw_ALU1(4) OR zw_ALU3(4));
4750
 
4751
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4752
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4753
               ('0' & d_i(3 downto 0)) + reg_F(0);
4754
               sig_SYNC <= '1';
4755
               fetch_o <= '1';
4756 8 fpga_is_fu
            end if;
4757
         when s566 =>
4758
            if (rdy_i = '1') then
4759 6 fpga_is_fu
               ch_a_o <= d_i;
4760
               ch_b_o <= X"01";
4761
               ld_o <= "11";
4762
               ld_pc_o <= '1';
4763 8 fpga_is_fu
            end if;
4764
         when s266 =>
4765
            if (rdy_i = '1' and (
4766 6 fpga_is_fu
                (reg_F(0) = '1' and zw_REG_OP = X"90") or
4767
                (reg_F(0) = '0' and zw_REG_OP = X"B0") or
4768
                (reg_F(1) = '0' and zw_REG_OP = X"F0") or
4769
                (reg_F(7) = '0' and zw_REG_OP = X"30") or
4770
                (reg_F(1) = '1' and zw_REG_OP = X"D0") or
4771
                (reg_F(7) = '1' and zw_REG_OP = X"10") or
4772
                (reg_F(6) = '1' and zw_REG_OP = X"50") or
4773 8 fpga_is_fu
                (reg_F(6) = '0' and zw_REG_OP = X"70"))) then
4774 6 fpga_is_fu
               ld_o <= "11";
4775
               ld_pc_o <= '1';
4776
               sig_SYNC <= '1';
4777
               fetch_o <= '1';
4778 8 fpga_is_fu
            elsif (rdy_i = '1') then
4779 6 fpga_is_fu
               ld_o <= "11";
4780
               ld_pc_o <= '1';
4781 8 fpga_is_fu
            end if;
4782
         when s301 =>
4783
            if (rdy_i = '1' and
4784
                zw_b3 = adr_nxt_pc_i (15 downto 8)) then
4785 6 fpga_is_fu
               offset_o <= (zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) &
4786
               zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(6 downto 0));
4787
               ld_o <= "11";
4788
               ld_pc_o <= '1';
4789
               sig_SYNC <= '1';
4790
               fetch_o <= '1';
4791 8 fpga_is_fu
            elsif (rdy_i = '1') then
4792 6 fpga_is_fu
               offset_o <= (zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) &
4793
               zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(7) & zw_b2(6 downto 0));
4794
               ld_o <= "11";
4795
               ld_pc_o <= '1';
4796 8 fpga_is_fu
            end if;
4797
         when s302 =>
4798
            if (rdy_i = '1') then
4799 6 fpga_is_fu
               sig_SYNC <= '1';
4800
               fetch_o <= '1';
4801 8 fpga_is_fu
            end if;
4802
         when RES =>
4803 6 fpga_is_fu
            sig_RWn <= '1';
4804
            sig_RD <= '1';
4805
            ld_o <= "11";
4806
            ld_pc_o <= '1';
4807
 
4808
            ld_sp_o <= '1';
4809
            sig_RWn <= '1';
4810
            sig_RD <= '1';
4811 8 fpga_is_fu
         when s511 =>
4812
            if (rdy_i = '1' and
4813
                zw_REG_OP = X"E5") then
4814 6 fpga_is_fu
               ld_o <= "11";
4815
               ld_pc_o <= '1';
4816 8 fpga_is_fu
            elsif (rdy_i = '1' and
4817 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
4818 8 fpga_is_fu
                   reg_F(3) = '0') then
4819 6 fpga_is_fu
               ld_o <= "11";
4820
               ld_pc_o <= '1';
4821
               d_regs_in_o <= zw_ALU(7 downto 0);
4822
               load_regs_o <= '1';
4823
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4824
               sig_SYNC <= '1';
4825
               fetch_o <= '1';
4826 8 fpga_is_fu
            elsif (rdy_i = '1' and
4827
                   zw_REG_OP = X"F5") then
4828 6 fpga_is_fu
               ch_a_o <=  d_i;
4829
               ch_b_o <= q_x_i;
4830 8 fpga_is_fu
            elsif (rdy_i = '1' and
4831
                   zw_REG_OP = X"ED") then
4832 6 fpga_is_fu
               ld_o <= "11";
4833
               ld_pc_o <= '1';
4834 8 fpga_is_fu
            elsif (rdy_i = '1' and
4835
                   zw_REG_OP = X"FD") then
4836 6 fpga_is_fu
               ld_o <= "11";
4837
               ld_pc_o <= '1';
4838
               ch_a_o <= d_i;
4839
               ch_b_o <= q_x_i;
4840 8 fpga_is_fu
            elsif (rdy_i = '1' and
4841
                   zw_REG_OP = X"F9") then
4842 6 fpga_is_fu
               ld_o <= "11";
4843
               ld_pc_o <= '1';
4844
               ch_a_o <= d_i;
4845
               ch_b_o <= q_y_i;
4846 8 fpga_is_fu
            elsif (rdy_i = '1' and
4847
                   zw_REG_OP = X"F1") then
4848 6 fpga_is_fu
               ch_a_o <= d_i;
4849
               ch_b_o <= X"01";
4850 8 fpga_is_fu
            elsif (rdy_i = '1' and
4851
                   zw_REG_OP = X"E1") then
4852 6 fpga_is_fu
               ch_a_o <=  d_i;
4853
               ch_b_o <= q_x_i;
4854 8 fpga_is_fu
            elsif (rdy_i = '1' and
4855 6 fpga_is_fu
                   zw_REG_OP = X"E9" and
4856 8 fpga_is_fu
                   reg_F(3) = '1') then
4857 6 fpga_is_fu
               ld_o <= "11";
4858
               ld_pc_o <= '1';
4859
               d_regs_in_o <= zw_ALU(7 downto 0);
4860
               load_regs_o <= '1';
4861
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) +
4862
               unsigned ((zw_ALU6(8 downto 5)));
4863
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) +
4864
               unsigned ((zw_ALU5(8 downto 5)));
4865
 
4866
               zw_ALU6(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' &
4867
               (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4868
               zw_ALU5(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' &
4869
               (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4870
 
4871
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4872
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4873
               ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4874
 
4875
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4876
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4877
               ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4878
               sig_SYNC <= '1';
4879
               fetch_o <= '1';
4880 8 fpga_is_fu
            end if;
4881
         when s559 =>
4882
            if (rdy_i = '1') then
4883 6 fpga_is_fu
               ld_o <= "11";
4884
               ld_pc_o <= '1';
4885 8 fpga_is_fu
            end if;
4886
         when s562 =>
4887
            if (rdy_i = '1') then
4888 6 fpga_is_fu
               ch_a_o <= d_i;
4889
               ch_b_o <= X"01";
4890
               ld_o <= "11";
4891
               ld_pc_o <= '1';
4892 8 fpga_is_fu
            end if;
4893
         when s567 =>
4894
            if (rdy_i = '1') then
4895 6 fpga_is_fu
               ch_a_o <= d_i;
4896
               ch_b_o <= X"01";
4897
               ld_o <= "11";
4898
               ld_pc_o <= '1';
4899 8 fpga_is_fu
            end if;
4900
         when s568 =>
4901
            if (rdy_i = '1') then
4902 6 fpga_is_fu
               ch_a_o <= d_i;
4903
               ch_b_o <= q_y_i;
4904 8 fpga_is_fu
            end if;
4905
         when s569 =>
4906
            if (rdy_i = '1') then
4907 6 fpga_is_fu
               ld_o <= "11";
4908
               ld_pc_o <= '1';
4909 8 fpga_is_fu
            end if;
4910
         when s571 =>
4911
            if (rdy_i = '1') then
4912 6 fpga_is_fu
               ch_a_o <= d_i;
4913
               ch_b_o <= X"01";
4914
               ld_o <= "11";
4915
               ld_pc_o <= '1';
4916 8 fpga_is_fu
            end if;
4917
         when s572 =>
4918
            if (rdy_i = '1') then
4919 6 fpga_is_fu
               ch_a_o <=  zw_b1;
4920
               ch_b_o <= X"01";
4921 8 fpga_is_fu
            end if;
4922
         when s573 =>
4923
            if (rdy_i = '1' AND
4924 6 fpga_is_fu
                zw_b2(0) = '0' and
4925 8 fpga_is_fu
                reg_F(3) = '0') then
4926 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4927
               load_regs_o <= '1';
4928
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4929
               sig_SYNC <= '1';
4930
               fetch_o <= '1';
4931 8 fpga_is_fu
            elsif (rdy_i = '1' AND
4932 6 fpga_is_fu
                   zw_b2(0) = '0' and
4933 8 fpga_is_fu
                   reg_F(3) = '1') then
4934 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4935
               load_regs_o <= '1';
4936
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) +
4937
               unsigned ((zw_ALU6(8 downto 5)));
4938
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) +
4939
               unsigned ((zw_ALU5(8 downto 5)));
4940
 
4941
               zw_ALU6(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' &
4942
               (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4943
               zw_ALU5(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' &
4944
               (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4945
 
4946
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4947
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4948
               ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4949
 
4950
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4951
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4952
               ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4953
               sig_SYNC <= '1';
4954
               fetch_o <= '1';
4955 8 fpga_is_fu
            end if;
4956
         when s574 =>
4957
            if (rdy_i = '1' and
4958
                reg_F(3) = '0') then
4959 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4960
               load_regs_o <= '1';
4961
               zw_ALU <= unsigned ('0' & q_a_i) + unsigned ('0' & NOT (d_i)) + reg_F(0);
4962
               sig_SYNC <= '1';
4963
               fetch_o <= '1';
4964 8 fpga_is_fu
            elsif (rdy_i = '1' and
4965
                   reg_F(3) = '1') then
4966 6 fpga_is_fu
               d_regs_in_o <= zw_ALU(7 downto 0);
4967
               load_regs_o <= '1';
4968
               zw_ALU(7 downto 4) <= unsigned (zw_ALU2(3 downto 0)) +
4969
               unsigned ((zw_ALU6(8 downto 5)));
4970
               zw_ALU(3 downto 0) <= unsigned (zw_ALU1(3 downto 0)) +
4971
               unsigned ((zw_ALU5(8 downto 5)));
4972
 
4973
               zw_ALU6(8 downto 5) <= (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0' &
4974
               (zw_ALU4(4) OR NOT (zw_ALU2(4))) & '0';
4975
               zw_ALU5(8 downto 5) <= (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' &
4976
               (zw_ALU3(4) OR NOT (zw_ALU1(4))) & '0' ;
4977
 
4978
               zw_ALU4(4 downto 0) <= unsigned ('0' & zw_ALU2(3 downto 0)) + 6;
4979
               zw_ALU2(4 downto 0) <= unsigned ('0' & q_a_i(7 downto 4)) + unsigned
4980
               ('0' & NOT (d_i(7 downto 4))) + zw_ALU1(4);
4981
 
4982
               zw_ALU3(4 downto 0) <= unsigned ('0' & zw_ALU1(3 downto 0)) + 6;
4983
               zw_ALU1(4 downto 0) <= unsigned ('0' & q_a_i(3 downto 0)) + unsigned
4984
               ('0' & NOT (d_i(3 downto 0))) + reg_F(0);
4985
               sig_SYNC <= '1';
4986
               fetch_o <= '1';
4987 8 fpga_is_fu
            end if;
4988
         when s548 =>
4989
            if (rdy_i = '1') then
4990 6 fpga_is_fu
               ld_o <= "11";
4991
               ld_sp_o <= '1';
4992
               ld_pc_o <= '1';
4993
               sig_RWn <= '0';
4994
               sig_RD <= '0';
4995
               sig_WR <= '1';
4996
               sig_D_OUT <= adr_pc_i (15 downto 8);
4997 8 fpga_is_fu
            end if;
4998
         when s551 =>
4999 6 fpga_is_fu
            ld_o <= "11";
5000
            ld_sp_o <= '1';
5001
            sig_RWn <= '0';
5002
            sig_RD <= '0';
5003
            sig_WR <= '1';
5004
            sig_D_OUT <= adr_pc_i (7 downto 0);
5005 8 fpga_is_fu
         when s552 =>
5006 6 fpga_is_fu
            ld_o <= "11";
5007
            ld_sp_o <= '1';
5008
            sig_RWn <= '0';
5009
            sig_RD <= '0';
5010
            sig_WR <= '1';
5011
            sig_D_OUT <= reg_F;
5012 8 fpga_is_fu
         when s577 =>
5013
            if (rdy_i = '1') then
5014 6 fpga_is_fu
               sig_SYNC <= '1';
5015
               fetch_o <= '1';
5016 8 fpga_is_fu
            end if;
5017
         when s532 =>
5018
            if (rdy_i = '1') then
5019 6 fpga_is_fu
               ld_o <= "11";
5020
               ld_sp_o <= '1';
5021
               ld_pc_o <= '1';
5022
               sig_RWn <= '0';
5023
               sig_RD <= '0';
5024
               sig_WR <= '1';
5025
               sig_D_OUT <= adr_pc_i (15 downto 8);
5026 8 fpga_is_fu
            end if;
5027
         when s533 =>
5028 6 fpga_is_fu
            ld_o <= "11";
5029
            ld_sp_o <= '1';
5030
            sig_RWn <= '0';
5031
            sig_RD <= '0';
5032
            sig_WR <= '1';
5033
            sig_D_OUT <= adr_pc_i (7 downto 0);
5034 8 fpga_is_fu
         when s534 =>
5035 6 fpga_is_fu
            ld_o <= "11";
5036
            ld_sp_o <= '1';
5037
            sig_RWn <= '0';
5038
            sig_RD <= '0';
5039
            sig_WR <= '1';
5040
            sig_D_OUT <= reg_F;
5041 8 fpga_is_fu
         when s537 =>
5042
            if (rdy_i = '1') then
5043 6 fpga_is_fu
               adr_o <= d_i & zw_b1;
5044
               ld_o <= "11";
5045
               ld_pc_o <= '1';
5046
               sig_SYNC <= '1';
5047
               fetch_o <= '1';
5048 8 fpga_is_fu
            end if;
5049
         when others =>
5050
            null;
5051
      end case;
5052
   end process output_proc;
5053 6 fpga_is_fu
 
5054
   -- Concurrent Statements
5055
   -- Clocked output assignments
5056
   d_o <= d_o_cld;
5057
   rd_o <= rd_o_cld;
5058
   sync_o <= sync_o_cld;
5059
   wr_n_o <= wr_n_o_cld;
5060
   wr_o <= wr_o_cld;
5061 8 fpga_is_fu
end fsm;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.