-- "blowfishvhdl" is a free synthesizable VHDL Blowfish implementation
-- Copyright (C) 2000  Wesley J. Landaker <wjl@mindless.com>

-- 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
-- the Free Software Foundation; either version 2 of the License, or
-- (at your option) any later version.

-- This program is distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-- GNU General Public License for more details.

-- You should have received a copy of the GNU General Public License
-- along with this program; if not, write to the Free Software
-- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

-- See http://blowfishvhdl.sourceforge.net for more information.

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity sbox is
port (
  clk : in std_logic;

  address  : in  std_logic_vector(7 downto 0);
  data_in  : in  std_logic_vector(31 downto 0);
  data_out : out std_logic_vector(31 downto 0);

  we : in bit
);
end sbox;

architecture fishy of sbox is
  type sbox_data is array (0 to 255) of std_logic_vector(31 downto 0); 
  signal contents : sbox_data;
begin

  process(clk,we,address,data_in,contents)
  begin
    if (clk'event and clk = '1') then
      if (we = '1') then
        case address is
          when x"00" => contents(0) <= data_in;
          when x"01" => contents(1) <= data_in;
          when x"02" => contents(2) <= data_in;
          when x"03" => contents(3) <= data_in;
          when x"04" => contents(4) <= data_in;
          when x"05" => contents(5) <= data_in;
          when x"06" => contents(6) <= data_in;
          when x"07" => contents(7) <= data_in;
          when x"08" => contents(8) <= data_in;
          when x"09" => contents(9) <= data_in;
          when x"0a" => contents(10) <= data_in;
          when x"0b" => contents(11) <= data_in;
          when x"0c" => contents(12) <= data_in;
          when x"0d" => contents(13) <= data_in;
          when x"0e" => contents(14) <= data_in;
          when x"0f" => contents(15) <= data_in;
          when x"10" => contents(16) <= data_in;
          when x"11" => contents(17) <= data_in;
          when x"12" => contents(18) <= data_in;
          when x"13" => contents(19) <= data_in;
          when x"14" => contents(20) <= data_in;
          when x"15" => contents(21) <= data_in;
          when x"16" => contents(22) <= data_in;
          when x"17" => contents(23) <= data_in;
          when x"18" => contents(24) <= data_in;
          when x"19" => contents(25) <= data_in;
          when x"1a" => contents(26) <= data_in;
          when x"1b" => contents(27) <= data_in;
          when x"1c" => contents(28) <= data_in;
          when x"1d" => contents(29) <= data_in;
          when x"1e" => contents(30) <= data_in;
          when x"1f" => contents(31) <= data_in;
          when x"20" => contents(32) <= data_in;
          when x"21" => contents(33) <= data_in;
          when x"22" => contents(34) <= data_in;
          when x"23" => contents(35) <= data_in;
          when x"24" => contents(36) <= data_in;
          when x"25" => contents(37) <= data_in;
          when x"26" => contents(38) <= data_in;
          when x"27" => contents(39) <= data_in;
          when x"28" => contents(40) <= data_in;
          when x"29" => contents(41) <= data_in;
          when x"2a" => contents(42) <= data_in;
          when x"2b" => contents(43) <= data_in;
          when x"2c" => contents(44) <= data_in;
          when x"2d" => contents(45) <= data_in;
          when x"2e" => contents(46) <= data_in;
          when x"2f" => contents(47) <= data_in;
          when x"30" => contents(48) <= data_in;
          when x"31" => contents(49) <= data_in;
          when x"32" => contents(50) <= data_in;
          when x"33" => contents(51) <= data_in;
          when x"34" => contents(52) <= data_in;
          when x"35" => contents(53) <= data_in;
          when x"36" => contents(54) <= data_in;
          when x"37" => contents(55) <= data_in;
          when x"38" => contents(56) <= data_in;
          when x"39" => contents(57) <= data_in;
          when x"3a" => contents(58) <= data_in;
          when x"3b" => contents(59) <= data_in;
          when x"3c" => contents(60) <= data_in;
          when x"3d" => contents(61) <= data_in;
          when x"3e" => contents(62) <= data_in;
          when x"3f" => contents(63) <= data_in;
          when x"40" => contents(64) <= data_in;
          when x"41" => contents(65) <= data_in;
          when x"42" => contents(66) <= data_in;
          when x"43" => contents(67) <= data_in;
          when x"44" => contents(68) <= data_in;
          when x"45" => contents(69) <= data_in;
          when x"46" => contents(70) <= data_in;
          when x"47" => contents(71) <= data_in;
          when x"48" => contents(72) <= data_in;
          when x"49" => contents(73) <= data_in;
          when x"4a" => contents(74) <= data_in;
          when x"4b" => contents(75) <= data_in;
          when x"4c" => contents(76) <= data_in;
          when x"4d" => contents(77) <= data_in;
          when x"4e" => contents(78) <= data_in;
          when x"4f" => contents(79) <= data_in;
          when x"50" => contents(80) <= data_in;
          when x"51" => contents(81) <= data_in;
          when x"52" => contents(82) <= data_in;
          when x"53" => contents(83) <= data_in;
          when x"54" => contents(84) <= data_in;
          when x"55" => contents(85) <= data_in;
          when x"56" => contents(86) <= data_in;
          when x"57" => contents(87) <= data_in;
          when x"58" => contents(88) <= data_in;
          when x"59" => contents(89) <= data_in;
          when x"5a" => contents(90) <= data_in;
          when x"5b" => contents(91) <= data_in;
          when x"5c" => contents(92) <= data_in;
          when x"5d" => contents(93) <= data_in;
          when x"5e" => contents(94) <= data_in;
          when x"5f" => contents(95) <= data_in;
          when x"60" => contents(96) <= data_in;
          when x"61" => contents(97) <= data_in;
          when x"62" => contents(98) <= data_in;
          when x"63" => contents(99) <= data_in;
          when x"64" => contents(100) <= data_in;
          when x"65" => contents(101) <= data_in;
          when x"66" => contents(102) <= data_in;
          when x"67" => contents(103) <= data_in;
          when x"68" => contents(104) <= data_in;
          when x"69" => contents(105) <= data_in;
          when x"6a" => contents(106) <= data_in;
          when x"6b" => contents(107) <= data_in;
          when x"6c" => contents(108) <= data_in;
          when x"6d" => contents(109) <= data_in;
          when x"6e" => contents(110) <= data_in;
          when x"6f" => contents(111) <= data_in;
          when x"70" => contents(112) <= data_in;
          when x"71" => contents(113) <= data_in;
          when x"72" => contents(114) <= data_in;
          when x"73" => contents(115) <= data_in;
          when x"74" => contents(116) <= data_in;
          when x"75" => contents(117) <= data_in;
          when x"76" => contents(118) <= data_in;
          when x"77" => contents(119) <= data_in;
          when x"78" => contents(120) <= data_in;
          when x"79" => contents(121) <= data_in;
          when x"7a" => contents(122) <= data_in;
          when x"7b" => contents(123) <= data_in;
          when x"7c" => contents(124) <= data_in;
          when x"7d" => contents(125) <= data_in;
          when x"7e" => contents(126) <= data_in;
          when x"7f" => contents(127) <= data_in;
          when x"80" => contents(128) <= data_in;
          when x"81" => contents(129) <= data_in;
          when x"82" => contents(130) <= data_in;
          when x"83" => contents(131) <= data_in;
          when x"84" => contents(132) <= data_in;
          when x"85" => contents(133) <= data_in;
          when x"86" => contents(134) <= data_in;
          when x"87" => contents(135) <= data_in;
          when x"88" => contents(136) <= data_in;
          when x"89" => contents(137) <= data_in;
          when x"8a" => contents(138) <= data_in;
          when x"8b" => contents(139) <= data_in;
          when x"8c" => contents(140) <= data_in;
          when x"8d" => contents(141) <= data_in;
          when x"8e" => contents(142) <= data_in;
          when x"8f" => contents(143) <= data_in;
          when x"90" => contents(144) <= data_in;
          when x"91" => contents(145) <= data_in;
          when x"92" => contents(146) <= data_in;
          when x"93" => contents(147) <= data_in;
          when x"94" => contents(148) <= data_in;
          when x"95" => contents(149) <= data_in;
          when x"96" => contents(150) <= data_in;
          when x"97" => contents(151) <= data_in;
          when x"98" => contents(152) <= data_in;
          when x"99" => contents(153) <= data_in;
          when x"9a" => contents(154) <= data_in;
          when x"9b" => contents(155) <= data_in;
          when x"9c" => contents(156) <= data_in;
          when x"9d" => contents(157) <= data_in;
          when x"9e" => contents(158) <= data_in;
          when x"9f" => contents(159) <= data_in;
          when x"a0" => contents(160) <= data_in;
          when x"a1" => contents(161) <= data_in;
          when x"a2" => contents(162) <= data_in;
          when x"a3" => contents(163) <= data_in;
          when x"a4" => contents(164) <= data_in;
          when x"a5" => contents(165) <= data_in;
          when x"a6" => contents(166) <= data_in;
          when x"a7" => contents(167) <= data_in;
          when x"a8" => contents(168) <= data_in;
          when x"a9" => contents(169) <= data_in;
          when x"aa" => contents(170) <= data_in;
          when x"ab" => contents(171) <= data_in;
          when x"ac" => contents(172) <= data_in;
          when x"ad" => contents(173) <= data_in;
          when x"ae" => contents(174) <= data_in;
          when x"af" => contents(175) <= data_in;
          when x"b0" => contents(176) <= data_in;
          when x"b1" => contents(177) <= data_in;
          when x"b2" => contents(178) <= data_in;
          when x"b3" => contents(179) <= data_in;
          when x"b4" => contents(180) <= data_in;
          when x"b5" => contents(181) <= data_in;
          when x"b6" => contents(182) <= data_in;
          when x"b7" => contents(183) <= data_in;
          when x"b8" => contents(184) <= data_in;
          when x"b9" => contents(185) <= data_in;
          when x"ba" => contents(186) <= data_in;
          when x"bb" => contents(187) <= data_in;
          when x"bc" => contents(188) <= data_in;
          when x"bd" => contents(189) <= data_in;
          when x"be" => contents(190) <= data_in;
          when x"bf" => contents(191) <= data_in;
          when x"c0" => contents(192) <= data_in;
          when x"c1" => contents(193) <= data_in;
          when x"c2" => contents(194) <= data_in;
          when x"c3" => contents(195) <= data_in;
          when x"c4" => contents(196) <= data_in;
          when x"c5" => contents(197) <= data_in;
          when x"c6" => contents(198) <= data_in;
          when x"c7" => contents(199) <= data_in;
          when x"c8" => contents(200) <= data_in;
          when x"c9" => contents(201) <= data_in;
          when x"ca" => contents(202) <= data_in;
          when x"cb" => contents(203) <= data_in;
          when x"cc" => contents(204) <= data_in;
          when x"cd" => contents(205) <= data_in;
          when x"ce" => contents(206) <= data_in;
          when x"cf" => contents(207) <= data_in;
          when x"d0" => contents(208) <= data_in;
          when x"d1" => contents(209) <= data_in;
          when x"d2" => contents(210) <= data_in;
          when x"d3" => contents(211) <= data_in;
          when x"d4" => contents(212) <= data_in;
          when x"d5" => contents(213) <= data_in;
          when x"d6" => contents(214) <= data_in;
          when x"d7" => contents(215) <= data_in;
          when x"d8" => contents(216) <= data_in;
          when x"d9" => contents(217) <= data_in;
          when x"da" => contents(218) <= data_in;
          when x"db" => contents(219) <= data_in;
          when x"dc" => contents(220) <= data_in;
          when x"dd" => contents(221) <= data_in;
          when x"de" => contents(222) <= data_in;
          when x"df" => contents(223) <= data_in;
          when x"e0" => contents(224) <= data_in;
          when x"e1" => contents(225) <= data_in;
          when x"e2" => contents(226) <= data_in;
          when x"e3" => contents(227) <= data_in;
          when x"e4" => contents(228) <= data_in;
          when x"e5" => contents(229) <= data_in;
          when x"e6" => contents(230) <= data_in;
          when x"e7" => contents(231) <= data_in;
          when x"e8" => contents(232) <= data_in;
          when x"e9" => contents(233) <= data_in;
          when x"ea" => contents(234) <= data_in;
          when x"eb" => contents(235) <= data_in;
          when x"ec" => contents(236) <= data_in;
          when x"ed" => contents(237) <= data_in;
          when x"ee" => contents(238) <= data_in;
          when x"ef" => contents(239) <= data_in;
          when x"f0" => contents(240) <= data_in;
          when x"f1" => contents(241) <= data_in;
          when x"f2" => contents(242) <= data_in;
          when x"f3" => contents(243) <= data_in;
          when x"f4" => contents(244) <= data_in;
          when x"f5" => contents(245) <= data_in;
          when x"f6" => contents(246) <= data_in;
          when x"f7" => contents(247) <= data_in;
          when x"f8" => contents(248) <= data_in;
          when x"f9" => contents(249) <= data_in;
          when x"fa" => contents(250) <= data_in;
          when x"fb" => contents(251) <= data_in;
          when x"fc" => contents(252) <= data_in;
          when x"fd" => contents(253) <= data_in;
          when x"fe" => contents(254) <= data_in;
	  when x"ff" => contents(255) <= data_in;
	  when others => null;
        end case;
      else -- we = '0'
        case address is
          when x"00" => data_out <= contents(0);
          when x"01" => data_out <= contents(1);
          when x"02" => data_out <= contents(2);
          when x"03" => data_out <= contents(3);
          when x"04" => data_out <= contents(4);
          when x"05" => data_out <= contents(5);
          when x"06" => data_out <= contents(6);
          when x"07" => data_out <= contents(7);
          when x"08" => data_out <= contents(8);
          when x"09" => data_out <= contents(9);
          when x"0a" => data_out <= contents(10);
          when x"0b" => data_out <= contents(11);
          when x"0c" => data_out <= contents(12);
          when x"0d" => data_out <= contents(13);
          when x"0e" => data_out <= contents(14);
          when x"0f" => data_out <= contents(15);
          when x"10" => data_out <= contents(16);
          when x"11" => data_out <= contents(17);
          when x"12" => data_out <= contents(18);
          when x"13" => data_out <= contents(19);
          when x"14" => data_out <= contents(20);
          when x"15" => data_out <= contents(21);
          when x"16" => data_out <= contents(22);
          when x"17" => data_out <= contents(23);
          when x"18" => data_out <= contents(24);
          when x"19" => data_out <= contents(25);
          when x"1a" => data_out <= contents(26);
          when x"1b" => data_out <= contents(27);
          when x"1c" => data_out <= contents(28);
          when x"1d" => data_out <= contents(29);
          when x"1e" => data_out <= contents(30);
          when x"1f" => data_out <= contents(31);
          when x"20" => data_out <= contents(32);
          when x"21" => data_out <= contents(33);
          when x"22" => data_out <= contents(34);
          when x"23" => data_out <= contents(35);
          when x"24" => data_out <= contents(36);
          when x"25" => data_out <= contents(37);
          when x"26" => data_out <= contents(38);
          when x"27" => data_out <= contents(39);
          when x"28" => data_out <= contents(40);
          when x"29" => data_out <= contents(41);
          when x"2a" => data_out <= contents(42);
          when x"2b" => data_out <= contents(43);
          when x"2c" => data_out <= contents(44);
          when x"2d" => data_out <= contents(45);
          when x"2e" => data_out <= contents(46);
          when x"2f" => data_out <= contents(47);
          when x"30" => data_out <= contents(48);
          when x"31" => data_out <= contents(49);
          when x"32" => data_out <= contents(50);
          when x"33" => data_out <= contents(51);
          when x"34" => data_out <= contents(52);
          when x"35" => data_out <= contents(53);
          when x"36" => data_out <= contents(54);
          when x"37" => data_out <= contents(55);
          when x"38" => data_out <= contents(56);
          when x"39" => data_out <= contents(57);
          when x"3a" => data_out <= contents(58);
          when x"3b" => data_out <= contents(59);
          when x"3c" => data_out <= contents(60);
          when x"3d" => data_out <= contents(61);
          when x"3e" => data_out <= contents(62);
          when x"3f" => data_out <= contents(63);
          when x"40" => data_out <= contents(64);
          when x"41" => data_out <= contents(65);
          when x"42" => data_out <= contents(66);
          when x"43" => data_out <= contents(67);
          when x"44" => data_out <= contents(68);
          when x"45" => data_out <= contents(69);
          when x"46" => data_out <= contents(70);
          when x"47" => data_out <= contents(71);
          when x"48" => data_out <= contents(72);
          when x"49" => data_out <= contents(73);
          when x"4a" => data_out <= contents(74);
          when x"4b" => data_out <= contents(75);
          when x"4c" => data_out <= contents(76);
          when x"4d" => data_out <= contents(77);
          when x"4e" => data_out <= contents(78);
          when x"4f" => data_out <= contents(79);
          when x"50" => data_out <= contents(80);
          when x"51" => data_out <= contents(81);
          when x"52" => data_out <= contents(82);
          when x"53" => data_out <= contents(83);
          when x"54" => data_out <= contents(84);
          when x"55" => data_out <= contents(85);
          when x"56" => data_out <= contents(86);
          when x"57" => data_out <= contents(87);
          when x"58" => data_out <= contents(88);
          when x"59" => data_out <= contents(89);
          when x"5a" => data_out <= contents(90);
          when x"5b" => data_out <= contents(91);
          when x"5c" => data_out <= contents(92);
          when x"5d" => data_out <= contents(93);
          when x"5e" => data_out <= contents(94);
          when x"5f" => data_out <= contents(95);
          when x"60" => data_out <= contents(96);
          when x"61" => data_out <= contents(97);
          when x"62" => data_out <= contents(98);
          when x"63" => data_out <= contents(99);
          when x"64" => data_out <= contents(100);
          when x"65" => data_out <= contents(101);
          when x"66" => data_out <= contents(102);
          when x"67" => data_out <= contents(103);
          when x"68" => data_out <= contents(104);
          when x"69" => data_out <= contents(105);
          when x"6a" => data_out <= contents(106);
          when x"6b" => data_out <= contents(107);
          when x"6c" => data_out <= contents(108);
          when x"6d" => data_out <= contents(109);
          when x"6e" => data_out <= contents(110);
          when x"6f" => data_out <= contents(111);
          when x"70" => data_out <= contents(112);
          when x"71" => data_out <= contents(113);
          when x"72" => data_out <= contents(114);
          when x"73" => data_out <= contents(115);
          when x"74" => data_out <= contents(116);
          when x"75" => data_out <= contents(117);
          when x"76" => data_out <= contents(118);
          when x"77" => data_out <= contents(119);
          when x"78" => data_out <= contents(120);
          when x"79" => data_out <= contents(121);
          when x"7a" => data_out <= contents(122);
          when x"7b" => data_out <= contents(123);
          when x"7c" => data_out <= contents(124);
          when x"7d" => data_out <= contents(125);
          when x"7e" => data_out <= contents(126);
          when x"7f" => data_out <= contents(127);
          when x"80" => data_out <= contents(128);
          when x"81" => data_out <= contents(129);
          when x"82" => data_out <= contents(130);
          when x"83" => data_out <= contents(131);
          when x"84" => data_out <= contents(132);
          when x"85" => data_out <= contents(133);
          when x"86" => data_out <= contents(134);
          when x"87" => data_out <= contents(135);
          when x"88" => data_out <= contents(136);
          when x"89" => data_out <= contents(137);
          when x"8a" => data_out <= contents(138);
          when x"8b" => data_out <= contents(139);
          when x"8c" => data_out <= contents(140);
          when x"8d" => data_out <= contents(141);
          when x"8e" => data_out <= contents(142);
          when x"8f" => data_out <= contents(143);
          when x"90" => data_out <= contents(144);
          when x"91" => data_out <= contents(145);
          when x"92" => data_out <= contents(146);
          when x"93" => data_out <= contents(147);
          when x"94" => data_out <= contents(148);
          when x"95" => data_out <= contents(149);
          when x"96" => data_out <= contents(150);
          when x"97" => data_out <= contents(151);
          when x"98" => data_out <= contents(152);
          when x"99" => data_out <= contents(153);
          when x"9a" => data_out <= contents(154);
          when x"9b" => data_out <= contents(155);
          when x"9c" => data_out <= contents(156);
          when x"9d" => data_out <= contents(157);
          when x"9e" => data_out <= contents(158);
          when x"9f" => data_out <= contents(159);
          when x"a0" => data_out <= contents(160);
          when x"a1" => data_out <= contents(161);
          when x"a2" => data_out <= contents(162);
          when x"a3" => data_out <= contents(163);
          when x"a4" => data_out <= contents(164);
          when x"a5" => data_out <= contents(165);
          when x"a6" => data_out <= contents(166);
          when x"a7" => data_out <= contents(167);
          when x"a8" => data_out <= contents(168);
          when x"a9" => data_out <= contents(169);
          when x"aa" => data_out <= contents(170);
          when x"ab" => data_out <= contents(171);
          when x"ac" => data_out <= contents(172);
          when x"ad" => data_out <= contents(173);
          when x"ae" => data_out <= contents(174);
          when x"af" => data_out <= contents(175);
          when x"b0" => data_out <= contents(176);
          when x"b1" => data_out <= contents(177);
          when x"b2" => data_out <= contents(178);
          when x"b3" => data_out <= contents(179);
          when x"b4" => data_out <= contents(180);
          when x"b5" => data_out <= contents(181);
          when x"b6" => data_out <= contents(182);
          when x"b7" => data_out <= contents(183);
          when x"b8" => data_out <= contents(184);
          when x"b9" => data_out <= contents(185);
          when x"ba" => data_out <= contents(186);
          when x"bb" => data_out <= contents(187);
          when x"bc" => data_out <= contents(188);
          when x"bd" => data_out <= contents(189);
          when x"be" => data_out <= contents(190);
          when x"bf" => data_out <= contents(191);
          when x"c0" => data_out <= contents(192);
          when x"c1" => data_out <= contents(193);
          when x"c2" => data_out <= contents(194);
          when x"c3" => data_out <= contents(195);
          when x"c4" => data_out <= contents(196);
          when x"c5" => data_out <= contents(197);
          when x"c6" => data_out <= contents(198);
          when x"c7" => data_out <= contents(199);
          when x"c8" => data_out <= contents(200);
          when x"c9" => data_out <= contents(201);
          when x"ca" => data_out <= contents(202);
          when x"cb" => data_out <= contents(203);
          when x"cc" => data_out <= contents(204);
          when x"cd" => data_out <= contents(205);
          when x"ce" => data_out <= contents(206);
          when x"cf" => data_out <= contents(207);
          when x"d0" => data_out <= contents(208);
          when x"d1" => data_out <= contents(209);
          when x"d2" => data_out <= contents(210);
          when x"d3" => data_out <= contents(211);
          when x"d4" => data_out <= contents(212);
          when x"d5" => data_out <= contents(213);
          when x"d6" => data_out <= contents(214);
          when x"d7" => data_out <= contents(215);
          when x"d8" => data_out <= contents(216);
          when x"d9" => data_out <= contents(217);
          when x"da" => data_out <= contents(218);
          when x"db" => data_out <= contents(219);
          when x"dc" => data_out <= contents(220);
          when x"dd" => data_out <= contents(221);
          when x"de" => data_out <= contents(222);
          when x"df" => data_out <= contents(223);
          when x"e0" => data_out <= contents(224);
          when x"e1" => data_out <= contents(225);
          when x"e2" => data_out <= contents(226);
          when x"e3" => data_out <= contents(227);
          when x"e4" => data_out <= contents(228);
          when x"e5" => data_out <= contents(229);
          when x"e6" => data_out <= contents(230);
          when x"e7" => data_out <= contents(231);
          when x"e8" => data_out <= contents(232);
          when x"e9" => data_out <= contents(233);
          when x"ea" => data_out <= contents(234);
          when x"eb" => data_out <= contents(235);
          when x"ec" => data_out <= contents(236);
          when x"ed" => data_out <= contents(237);
          when x"ee" => data_out <= contents(238);
          when x"ef" => data_out <= contents(239);
          when x"f0" => data_out <= contents(240);
          when x"f1" => data_out <= contents(241);
          when x"f2" => data_out <= contents(242);
          when x"f3" => data_out <= contents(243);
          when x"f4" => data_out <= contents(244);
          when x"f5" => data_out <= contents(245);
          when x"f6" => data_out <= contents(246);
          when x"f7" => data_out <= contents(247);
          when x"f8" => data_out <= contents(248);
          when x"f9" => data_out <= contents(249);
          when x"fa" => data_out <= contents(250);
          when x"fb" => data_out <= contents(251);
          when x"fc" => data_out <= contents(252);
          when x"fd" => data_out <= contents(253);
          when x"fe" => data_out <= contents(254);
          when x"ff" => data_out <= contents(255);
	  when others => null;
        end case;
      end if; -- we
    end if; -- clk
  end process;

end;
